Ana içeriğe atla
ERP veya başka bir sistemdeki satırları Excel dosyası yüklemeden doğrudan Azalt’a gönderin. Mevcut bir kaynak adaptörünü ID ile seçin; beklediği sayfa adlarını, sütun adlarını ve değerleri iletin. Azalt, /data sayfasındaki içe aktarmalarla aynı eşleme, doğrulama, hesaplama, onay ve kaynak satırı geçmişi akışını kullanır. Yinelenen kimliklerin nasıl işleneceğini API uç noktası belirler: /source-imports yalnızca yeni kimlikleri ekler, /source-imports/amendments yalnızca mevcut kimlikleri günceller. Dosya aktarımı varsayılanları bu kuralları değiştirmez. Bu kılavuz kaynak adaptörü REST API’sini anlatır; MCP sunucusunu veya doğrudan aktivite oluşturmayı değil.

Başlamadan önce

Kurulumunuz, JSON kaynak içe aktarma API’sinin güncel sürümünü ve veritabanı migrasyonlarını kullanmalıdır. Kendi kurulumunuzun /api/v1/openapi.json dosyasında /source-adapters, /source-imports ve /source-imports/amendments yollarını, yanıtlardaki outcomes ve satır results alanlarıyla birlikte kontrol edin. Önceki API sürümleri bu sözleşmenin yalnızca bir bölümünü sunabilir. Bu kılavuzun yayımlanması kurulumu güncellemez. Aşağıdaki Şirket içi ve Helm split kurulumu bölümüne bakın. Gereksinimler:
  • Organizasyon sahibi tarafından JSON API girdi sözleşmesi tanımlanmış, aktif bir kaynak adaptörü.
  • İlgili organizasyonda Ayarlar → API anahtarları (/settings/api-keys) üzerinden alınmış bir API anahtarı. Entegrasyon için ayrı bir kullanıcı kullanın; anahtarı kaynak kodunda veya paylaşılan günlüklerde değil, bir gizli bilgi yönetim sisteminde saklayın.
  • İçe aktarma göndermek ve çalıştırmak için Collector, Approver, Manager veya Owner rolü ve hedef lokasyonlara erişim. Adaptör keşfi ve izin verilen çalıştırmaları okumak için Viewer erişimi yeterlidir.
  • Örnekleri uygulamak için curl ve jq.
İstekler Authorization: Bearer YOUR_API_KEY kullanır. Organizasyonu ve kullanıcıyı anahtar belirler; tarayıcıda organizasyonu değiştirmek anahtarın hedefini değiştirmez. Rol, aktif üyelik ve lokasyon erişimi güncel izinlere göre kontrol edilir. AZALT_API_KEY ortam değişkenini güvenli biçimde ayarlayın. Temel URL olarak kendi kurulumunuzu kullanın; sonuna eğik çizgi veya /api/v1 eklemeyin:
Azalt Cloud için https://app.azalt.co kullanılır. Şirket içi entegrasyonlarda müşterinin kendi Azalt adresi kullanılır.

1. Adaptörü etkinleştirin

Organizasyon sahibi Özelleştirme → Kaynak adaptörleri bölümünden adaptörü düzenler ve JSON API girdi sözleşmesi alanını doldurur. Adaptörü aktif tutun ve yapılandırmayı kaydedin. Aşağıdaki örnek kurgusal fatura değerleri içeren bir şablondur; tüm faturalar için ortak bir format değildir. Sözleşme, adaptör betiğinin kullandığı sayfa ve sütun adlarıyla eşleşmelidir. Sözleşme girdiyi tanımlar ve doğrular; betiği veya hedef eşlemelerini değiştirmez.
Mevcut adaptörlerde JSON içe aktarma otomatik olarak açılmaz. Sözleşmeyi kaldırmak veya enabled değerini false yapmak, dosya yüklemelerini kapatmadan yeni JSON içe aktarmalarını durdurur. Daha önce kaydedilmiş önizlemeler eşlenmiş taslaklarını korur. Yeni satır veya güncelleme göndermeden önce Satır kimliği alanları seçimini yapın ya da adaptör betiğinin sabit satır kimlikleri ürettiğinden emin olun. Girdi sözleşmesinde invoice_id ve line_id tanımlamak, bu alanları satır kimliği olarak seçmez. Aşağıdaki kimlik yapılandırmasına bakın. apiReady: true, adaptörün aktif ve sözleşmenin etkin olduğunu belirtir; verileriniz için geçerli satır kimliklerini veya hedef eşlemelerini garanti etmez.

Kabul edilen veri türleri

Alanlarda description, example, required (varsayılan false) ve nullable (varsayılan false) bulunabilir. required, anahtarın bulunmasını zorunlu kılar; metnin boş olmamasını değil. Açıkça null göndermek için nullable: true gerekir; gönderilmeyen isteğe bağlı alanlar doldurulmaz. Tarihler metin olarak kalır ve türler arasında otomatik dönüşüm yapılmaz. "1.234,50" gibi yerel biçimli tutarları yalnızca adaptörünüz bu biçimi ayrıştırıyorsa string olarak tanımlayın. Sayfa ve sütun adları tam eşleşir, büyük/küçük harfe duyarlıdır. Bilinmeyen sayfalar reddedilir. Sayfada additionalColumns: true yoksa bilinmeyen sütunlar da reddedilir. Zorunlu sayfada en az bir satır bulunmalıdır. Adların başında/sonunda boşluk veya ayrılmış nesne anahtarları bulunamaz. Hücreler iç içe nesne veya dizi, NUL karakteri ya da geçersiz Unicode içeremez. Boşluklar, sıfır, mantıksal değerler, null ve negatif sayılar dahil kaynak değerler korunur. Hedef tutarların pozitif olması gerekiyorsa dönüşümü adaptörde uygulayın; API otomatik olarak mutlak değer almaz. Kaydedilen kaynakta gönderilen negatif değer görünmeye devam eder.

2. Adaptörleri ve sözleşmelerini listeleyin

Yanıt, her adaptörün id, name, description, isActive, apiReady ve adapterVersion alanlarını içeren bir dizidir. apiReady: true olan bir adaptör seçin. Sonraki sayfa için offset değerini artırın; limit varsayılan olarak 50’dir ve 100’ü geçemez. Aşağıdaki ID’yi seçtiğiniz adaptörün ID’siyle değiştirin:
Detay uç noktası kabul edilen sayfaları, sütunları, türleri, sınırları ve örnek isteği döndürür; adaptör betiğini döndürmez. Örneği bir çalışma dosyasına kopyalayın:
Göndermeden önce submission.json dosyasını düzenleyin: örnek satırları gerçek verilerle değiştirin, doğru context.year ve gerekiyorsa context.siteId değerlerini girin. Örnek değerler iş kurallarına uygun eşleme garantisi vermez. Yıl 1900–2200 arasında bir tamsayı olmalı, lokasyon ID’si entegrasyon kullanıcısının erişebildiği bir lokasyona ait olmalıdır. İstek yapısı aşağıdaki gibidir. ADAPTER_ID ve COPY_VERSION_FROM_ADAPTER_RESPONSE yer tutucudur: uç noktadan dönen gerçek ID’yi ve 64 karakterlik adapterVersion değerini aynen kullanın. Üretilen exampleRequest bunları zaten içerir.

3. Önizleme gönderin

Her mantıksal veri paketi için sabit bir idempotency anahtarı belirleyin. Yeniden denemeler için hem anahtarı hem istek gövdesini saklayın; zaman aşımından sonra yeni bir anahtar üretmeyin.
Varsayılan mod preview’dur. Kaynak satırlarını ve eşlenmiş taslakları kaydeder, ancak hedef kayıtları yazmaz. Her sayfanın ilk veri satırı rowIndex: 2 alır; 1. satır Excel başlık düzeni için ayrılmıştır. Satır bazındaki sonuçları okuyun ve çalıştırma için ek onay gerekip gerekmediğini kontrol edin:
Satır yanıtı rows ve total içerir. Her satırda sheetName, rowIndex, rawRow, status, warnings, error, externalRowIds ve results bulunur. Sayfalama varsayılan olarak 100 satırdır, en fazla 200 olabilir. total kadar satır okuyana kadar offset değerini aldığınız satır sayısı kadar artırın. İsteğe bağlı status=failed filtresi yalnızca kayıtlı satır durumlarını seçer; bu durumda total yalnızca eşleşen satırları sayar. Önizlemede çakışan satırların durumu hâlâ status: "ready" olabilir. Satırları durum filtresi olmadan alın; satır hatalarının yanı sıra results içinde phase: "planned" ve action: "failed" olan sonuçları inceleyin. Çalıştırma yanıtındaki outcomes.planned.failed alanını da kontrol edin. readiness eksik form/lokasyon/yıl açılışlarını kontrol eder. İş kaydı kimliklerinin eşleşmesini doğrulamaz veya başarılı çalıştırmayı garanti etmez. Güncellemeler eksik hedefleri oluşturamadığı için güncelleme taslakları bu açılış kontrolüne dahil edilmez. Önizlemede execution.attempted: false ve execution.blocked: false olması satırların geçerli olduğu anlamına gelmez.

4. Kaydedilen önizlemeyi çalıştırın

Eşleme sonuçlarını ve hazırlık durumunu inceledikten sonra aynı çalıştırma ID’sini kullanın:
Ekleme işlemlerinde hedef form gerekli lokasyon ve yıl için açılmamışsa çalıştırma onay bekler. Yanıt, çalıştırma ID’sini korur ve execution.blocked: true ile execution.readiness.missingFormSites döndürür. Hazırlık uç noktası da etkilenen formları, lokasyonları, yılları ve kaynak satırlarını listeler. Bu onay eksik form açılışlarını oluşturmaya izin verir; eşleşmeyen bir güncellemenin başarılı olmasını sağlamaz. Eksik form açılışlarını ancak inceleyip onayladıktan sonra, çalıştırma isteğini şu gövdeyle tekrarlayın:
Yerleşik bir otomatik entegrasyonda ilk gönderimde mode: "execute" kullanmak tek istekte önizleme oluşturur ve çalıştırır. İşlem eşzamanlıdır; arka plan kuyruğuna bırakılmaz. İlk gövdede açıkça allowMissingFormSiteCreation: true belirtilmedikçe eksik form açılışları yine onay gerektirir.

Sonucu yorumlama

HTTP 200, hatta run.status: "completed" bile her satırın içe aktarıldığını garanti etmez. Bazı satırlar hata verirken geçerli taslaklar işlenebilir. Her zaman execution.blocked, satır sayıları, outcomes ve satır bazında results, uyarı ve hataları kontrol edin. Bir kaynak satırı birden fazla taslak üretebilir. failed durumundaki bir satırda başarılı taslaklar da bulunabilir; neyin düzeltilmesi gerektiğine karar vermeden önce her sonucu inceleyin. Gerçek yazım sayıları run.activityWriteCount ve run.formValueWriteCount alanlarındadır. Aktarılan değerler normal onay ve raporlama yapılandırmasına tabidir; içe aktarmanın tamamlanması onayı atlamaz veya her kayıt görünümünde görünmeyi garanti etmez. JSON içe aktarmaları normal içe aktarma geçmişinde “API submission” içeren bir adla görünür. Kayıtlar tablosunda yapılandırılmış kaynak belge bağlantıları, kaydedilen satırlarda arama yapmayı ve bunları uygulama içinde veya tam ekran açmayı destekler. Yalnızca JSON gönderiminde indirilebilecek orijinal bir Excel dosyası yoktur.

Önceden aktarılan satırları güncelleyin

Sahipler Özelleştirme → Kaynak adaptörleri bölümünde Satır kimliği alanları ayarını aranabilir sütun listesinden seçer. Liste API sözleşmesinden, adaptör sütun ayarlarından veya Örnek dosyadan sütunları yükle seçeneğinden gelir (CSV/Excel, tüm sayfalar; yalnızca başlıklar kaydedilir). Bilinmeyen sütun adları eklenemez veya kaydedilemez. Kaynağınızda bir satırı benzersiz olarak tanımlayan sabit alanları seçin. Örneğin, fatura satırları için invoice_id ve line_id birlikte kullanılabilir. Adaptör yapılandırması (inputFormat): Bu ayarları adaptöre kaydedin. Bu blok, /source-imports veya /source-imports/amendments için istek gövdesi değildir.
Yukarıdaki sourceColumns listesi örnek dosyadan okunan başlıkları temsil eder; alanlar API sözleşmesinde veya adaptör sütun ayarlarında zaten tanımlıysa gerekli değildir. Örnek alan adlarını kaynağınızdaki başlıklarla değiştirin. Seçtiğiniz kimlik sütunlarını JSON API girdi sözleşmesine de ekleyin. Baştaki sıfırları korumak için kimlikleri metin olarak gönderin. match: "all" tüm alanları zorunlu kılar. match: "first" yapılandırılmış sırayı izler; eksik değerleri, null ve boş metinleri atlar. Yalnızca boşluk içeren metinler ile metin veya güvenli tamsayı dışındaki değerler atlanmaz, geçersiz sayılır. Önce sözleşme doğrulaması yapılır: eksik zorunlu sütunlar veya geçersiz alan türleri isteğin HTTP 400 ile reddedilmesine yol açar. Bundan sonra eksik veya geçersiz iş kaydı kimlikleri önizleme eşlemesinde satır hatası olarak bildirilir. Bu ayarlar adaptörün inputFormat alanına aittir. GET /source-adapters/{id}, yapılandırılmış rowIdentity ve dosya aktarımının varsayılan onExistingRow değerini döndürür. Yazma işlemini API uç noktası belirler; adaptörün varsayılanı bu davranışı değiştiremez. Tüm yollar /api/v1 altındadır. İki uç nokta da istek gövdesinde onExistingRow kabul etmez. Gönderilirse güncelleme uç noktasını açıklayan HTTP 400 yanıtı döner. Her iki uç nokta da yapılandırılmış kimlik alanları veya adaptörün ürettiği sabit kimlikler gerektirir. Kimlikler ve hedef eşlemesi kaynak adaptöründen gelir; planlanan sonuçların yanı sıra satır hatalarını da inceleyin. Dosya aktarımlarında Mevcut satırla karşılaşıldığında seçeneği korunur: insert_only mevcut kimlikleri, update_only eşleşmeyen kimlikleri reddeder; update eşleşenleri güncelleyip yeni kimlikleri ekler, skip eşleşenleri koruyup yeni kimlikleri ekler. append önceki davranışı sürdürür (yeni faaliyetler veya form değeri toplamlarının değiştirilmesi). Bu dosya aktarımı seçenekleri API uç noktasının davranışını değiştirmez. Eşleştirme adaptör ve hedef kapsamında yapılır: form, eleman, tesis, yıl ve dönem. Düzeltmeler bu hedefteki veriyi değiştirir. Kimliği veya hedefi değiştirmek yeni satırı temsil eder; yalnızca güncelleme modunda bu satır reddedilir. Faaliyet güncellemeleri iç kimlikleri korur, değerleri yeniden hesaplar ve onay kurallarını uygular. Form değeri güncellemeleri eşleşen satırın katkısını değiştirip diğer satırları koruyarak toplamı yeniden hesaplar. Güncelleme paketinde her iş kaydı kimliğini hedef başına yalnızca bir kez gönderin. Yinelenen eşleşen kimlikler tek güncelleme ve atlanan taslaklar üretebilir; sayfalar arasında hangi tekrarın kullanılacağına güvenmeyin. Mevcut kayıtlardaki belirsiz yinelenen kimlikler reddedilir. GET /source-imports/{id}/rows, iş kaydı kimliklerini incelemek için externalRowIds döndürür. Eski faaliyetler kaydedilen kaynak hücreleriyle; eski form değerleri kayıtlı taslak geçmişiyle eşleştirilir. Düzeltmeler için bu kaynak bilgilerinin korunmuş olması gerekir. Düzeltmeleri yeni bir Idempotency-Key ile gönderin. Bu başlık aktarım isteğini, satır kimlikleri ise aktarımlar arasındaki iş kayıtlarını tanımlar. Kimlik ayarları ve varsayılan davranış adapterVersion kapsamındadır. Kaydedilmiş önizlemeler, adaptör sonradan düzenlense de kendi kimlik ayarlarını ve davranışlarını korur.

Yalnızca yeni satırları ekleyin

POST /source-imports, mevcut bir kaynak satırının katkısını güncellemez. Eşleşen kimlik için errorCode: "ROW_ALREADY_EXISTS" döner; message, düzeltmelerin POST /api/v1/source-imports/amendments ile gönderilmesi gerektiğini açıklar. Satır sonuçları iş kaydı kimliğini, kaynak satırı kimliğini ve hedefi de içerir. Bir ekleme paketinde aynı hedef için kimlik tekrarlanırsa tüm tekrarlar DUPLICATE_ROW_ID ile reddedilir. Her yeni satırı bir kez gönderin. Kimlik zaten mevcutsa ROW_ALREADY_EXISTS önceliklidir. Aynı Idempotency-Key ve gövdeyle tekrarlanan paket isteği kaydedilmiş çalıştırmayı döndürür; yeni ekleme sayılmaz. Form değerlerinde yeni bir kaynak katkısı eklemek mevcut toplam kaydını yeniden hesaplayabilir. Önceden aktarılan katkılar korunur, değerleri değiştirilmez. Hedefte bir değer varsa ancak bu adaptörün kaynak katkı geçmişi yoksa UNTRACKED_FORM_VALUE yanlışlıkla üzerine yazmayı önler. Yeni katkılar eklemeden önce hedefin kaynak geçmişini uzlaştırın. Önizleme çakışmaları outcomes.planned.failed ve her satırın results alanında görünür. Eşleme başarılı olduğu için satırın status alanı hâlâ ready olabilir. Çalıştırmada çakışan taslaklar başarısız olurken geçerli taslaklar eklenebilir. HTTP 200 tüm satırların başarılı olduğu anlamına gelmez; outcomes.actual.failed ve GET /source-imports/{id}/rows sonuçlarını kontrol edin. Önizlemeden sonra başka bir paket kimliği eklemiş olsa bile eşleşmeler çalıştırmada adaptör kilidi altında yeniden kontrol edilir.

Mevcut API istemcisini yeni sözleşmeye taşıma

JSON isteklerinden onExistingRow alanını kaldırın. Yeni satırları /source-imports, tam düzeltilmiş satırları /source-imports/amendments ile gönderin. Karma ekleme ve güncelleme paketlerini işleme göre ayırın. Yeniden denemelerde uç nokta ve gövde aynı kalmalıdır; aynı anahtarı hem ekleme hem güncelleme için kullanmak 409 döndürür. Önceden kaydedilmiş önizlemeler özgün davranışlarını korur. Çalıştırmadan önce inceleyin veya amaçlanan uç noktayla yeni bir önizleme oluşturun. Önceki sözleşmeyle kaydedilen istekler, değiştirilmiş gövdeyle yeniden kullanılamayabilir. Başarılı veriyi tekrar göndermek yerine kaydedilmiş çalıştırma kimliğiyle durumunu inceleyin.

Yalnızca mevcut satırları güncelleyin

Yapılandırılmış iş kaydı kimliklerini ve hedef alanlarını koruyarak düzeltilmiş kaynak satırlarının tamamını POST /source-imports/amendments uç noktasına gönderin. Gövde normal gönderimle aynı kaynak satırı sözleşmesini kullanır; onExistingRow kabul etmez ve allowMissingFormSiteCreation yalnızca false olabilir. Adaptörün varsayılanı eklemeye izin verse bile sunucu yalnızca güncelleme uygular.
Her düzeltme için yeni bir Idempotency-Key kullanın; yeniden denemelerde aynı anahtar ve gövdeyi koruyun. Uç nokta varsayılan olarak bir düzeltme önizlemesi oluşturur. İncelemeden sonra dönen çalıştırmayı POST /source-imports/{id}/execute ile çalıştırın veya ilk istekte mode: "execute" gönderin. Özgün hedef satırı önceden içe aktarılmış olmalıdır; yalnızca önizleme oluşturmak güncellenecek bir hedef kaydı oluşturmaz. Eşleşmeyen kimlik veya hedef, ilgili eşlenmiş satırda hata oluşturur. Yeni faaliyet, form değeri katkısı veya hedef kaydı eklenmez. Paketin diğer geçerli satırları başarılı olabilir; HTTP 200 yanıtında da sonuçları kontrol edin. Hedefler çalıştırma sırasında yeniden kontrol edilir. Adaptörün varsayılanı değişse bile kaydedilmiş önizlemeler yalnızca güncelleme kuralını korur. Bu uç nokta, geçmiş ve satır bazında sonuçları olan bir toplu işlem oluşturduğu için POST kullanır. Kısmi JSON Patch belgesi kabul etmez. Belirli bir kaydı PATCH ile değiştirmek farklı bir sözleşmedir ve HTTP PATCH belirtiminin gerektirdiği atomik uygulamayı sağlamalıdır.

Eklenen ve güncellenen satırları ayırt etme

Gönderim, çalıştırma ve GET /source-imports/{id} yanıtları şu alanları içerir: GET /source-imports/{id}/rows, her kaynak satırı için bir results dizisi döndürür. Her sonuç phase (planned veya actual), action, externalRowId, draftId, sourceImportRowId, hedef alanları (kind, formId, targetKey, siteId, year, periodUnit), activityId, formElementSubmissionId, errorCode ve varsa hata message alanını içerir. Belirli bir hata kodu yoksa errorCode null olur; her zaman message alanını inceleyin. Planlanan eylemler de updated gibi aynı adları kullanır, ancak tahmindir. Yeni bir hedef kayda planlanan eklemede henüz oluşturulmuş kayıt kimliği yoktur. Mevcut bir toplam kaydına eklenecek yeni form değeri katkısı, o toplamın formElementSubmissionId değerini zaten içerebilir. Tahminler salt okunurdur ve hedef veriler değiştikçe değişebilir; çalıştırma eşleşmeleri yeniden kontrol eder. Sonuç sayıları eşlenmiş taslak başınadır. Bir kaynak satırı, aynı hedef için birden fazla taslak dahil, birçok taslak üretebilir. Bu sayılar benzersiz kaynak satırlarını veya hedef kayıtlarını saymaz. Form değeri aktarımlarında inserted/updated satırın katkısını tanımlar; birden fazla katkı aynı toplam kaydını paylaşabilir. run.activityWriteCount ve run.formValueWriteCount hedef yazımlarını sayar. counts.imported başarılı ekleme ve güncellemeleri birlikte saymaya devam eder; counts.reduced başka bir satırın toplamında birleştirilen katkıları tanımlar. Taslak üretmeyen kaynak satırları mevcut satır sayıları, durum ve hatalarla görünür. Güncellenmiş satırları belirlemek için replayed kullanmayın; bu alan paket isteğinin yeniden denendiğini belirtir. Eylem ve hedef kimlikleri, veri yazımıyla aynı veritabanı işleminde kaydedilir. Hedef daha sonra değişse de bu sonuçlar korunur. Dosya aktarımı önizlemeleri ve geçmişi aynı beklenen ve kaydedilmiş sonuçları gösterir.

Veri aktardıktan sonra satır kimliği kuralını değiştirme

Kimlik alanlarını, sıralarını veya all/first seçimini değiştirmek mevcut satırları ya da geçmiş aktarımlardaki kimlikleri yeniden yazmaz. Kalıcı veritabanı kimlikleri korunur. Yeni kural kaydedilirken otomatik kimlik geçişi veya mevcut satırlar için uyumluluk kontrolü yapılmaz.
  • Faaliyetler: Sonraki update/skip gönderiminde Azalt, mevcut faaliyetlerin kayıtlı kaynak hücrelerinden yeni kuralla eşleştirme kimlikleri üretir. Tek bir eşleşme bulunursa veritabanı kimliği korunarak güncellenebilir. Kayıtlı kaynakta gerekli alanlar yoksa faaliyet eşleşemez. Güncelleme uç noktası eşleşmeyen satırı reddeder. Yalnızca ekleme yapan API gönderimleri ve eklemeye izin veren dosya aktarımları bu satırı yeni sayıp yinelenen kayıt oluşturabilir. Birden fazla mevcut eşleşme reddedilir.
  • Form değerleri: Eski aktarımlar kayıtlı kaynak taslaklarıyla eşleştirilebilir. Bir hedefin kaydedilmiş güncelleme katkı listesi varsa kimlik kuralını değiştirmek sonraki güncellemeleri engeller. Yeni kuralla güncellemeye başlamadan önce ilgili form değeri hedefine katkı yapan tüm satırları dosya aktarımı akışında append seçeneğiyle tam değiştirme olarak içe aktarın. JSON API bu değiştirme işlemini desteklemez ve istek gövdesindeki onExistingRow alanını reddeder. Bu değiştirme davranışı form değerleri içindir; append faaliyetlerde yeni kayıt oluşturur.
  • API sürümleri ve önizlemeler: Kural değişince güncel adapterVersion değerini alın. Eski sürümle yapılan yeni gönderimler 409 döndürür. Kaydedilmiş önizlemeler özgün kurallarını kullanmaya devam eder.

Yeniden denemeler ve adaptör değişiklikleri

  • POST /source-imports ve POST /source-imports/amendments için Idempotency-Key zorunludur: boşluk içermeyen 1–200 yazdırılabilir ASCII karakteri. Kapsamı organizasyon ve API anahtarı sahibidir.
  • Aynı anahtar ve gövde tekrar gönderilirse aynı çalıştırma replayed: true ile döner. Nesne anahtarlarının sırası önemsizdir; sayfa ve satır dizilerinin sırası önemlidir. Aynı anahtarla farklı veri, mod, sürüm veya onay ayarı göndermek 409 döndürür.
  • Önizlemeyi çalıştırmak için /source-imports/{id}/execute çağrısını kullanın. İlk isteğin mode değerini aynı anahtar altında değiştirmeyin. Çalıştırma uç noktası idempotency başlığı gerektirmez ve aynı çalıştırma için güvenle tekrarlanabilir.
  • Zaman aşımı veya geçici hata sonrasında aynı isteği/çalıştırmayı tekrarlayın. Veritabanı kilitleri farklı replikalardan ve arayüzden gelen eşzamanlı denemeleri koordine eder. Bazı yazımlar tamamlanmış olabilir; aynı çalıştırmayı tekrarlamak yeni içe aktarma başlatmak yerine kalan hazır taslakları tamamlar.
  • Farklı anahtarlar farklı aktarımlar oluşturur. Genel POST eşleşen iş kaydı kimliklerini reddeder; amendments bunları günceller. Değişmemiş paketi yeni aktarım olarak göndermek yerine özgün anahtarıyla yeniden deneyin.
  • Betik veya girdi sözleşmesi değişikliği adapterVersion değerini günceller. Eski sürümle yapılan yeni gönderimler 409 döndürür. Güncel sözleşmeyi alın, değişiklikleri inceleyin ve yeni bir paket hazırlayın. Mevcut önizlemeler, düzenlenmiş adaptör betiğini yeniden çalıştırmadan kaydedilmiş taslaklarını işler.
  • Adaptör hata verirse kaydedilen satır hatalarını inceleyin, girdiyi veya adaptörü düzeltin ve düzeltilmiş paketi yeni anahtarla gönderin. Hatalı isteği değiştirmeden tekrarlamak eşlemeyi yeniden çalıştırmaz.
  • Silinmiş çalıştırmalara bu uç noktalardan erişilemez. Kalıcı silme idempotency rezervasyonunu korur; aynı anahtarı tekrar kullanmak yeni içe aktarma değil 409 döndürür.
Çalıştırma okuma ve yürütme işlemleri, yöneticiler dahil, aynı organizasyonda aynı API anahtarı sahibinin oluşturduğu JSON içe aktarmalarıyla sınırlıdır. Aynı kullanıcı için anahtar yenilemek erişimi korur. Üyelik veya lokasyon erişiminin kaldırılması mevcut bir çalıştırmaya erişimi engelleyebilir. Bu uç noktalar diğer kullanıcıların çalıştırmalarını veya eski dosya yüklemelerini açmaz; yetkili çalışanlar arayüzdeki içe aktarma geçmişini kullanmaya devam edebilir.

Uç nokta referansı

Aşağıdaki tüm yollar kendi kurulumunuzdaki /api/v1 önekine göredir. Kurulumun /api/v1/openapi.json dosyası dağıtılmış sürümün istek ve yanıt şemalarını sunar.

Sınırlar ve hatalar

Her istek en fazla 10 MiB JSON, toplam 10.000 satır, 50 sayfa, satır başına 200 sütun ve metin hücresi başına 16.000 karakter destekler. Metin uzunluğu UTF-16 kod birimi olarak ölçülür; emoji gibi karakterler iki birim sayılabilir. Daha büyük veri kümelerini farklı anahtarlara sahip ayrı paketlere bölün. Ingress veya barındırma sağlayıcınız daha düşük gövde boyutu ya da zaman aşımı sınırı uygulayabilir. İş kuralı doğrulama hataları HTTP hatası yerine satır sonucu olarak dönebilir. Bir paketi başarılı saymadan önce her zaman yanıt gövdesini inceleyin.

Şirket içi ve Helm split kurulumu

API hem birleşik Next.js uygulamasında hem de Helm split kurulumlarının bağımsız backend servisinde çalışır. Normal frontend adresinizi veya kurulum yöneticisinin özellikle dışarı açtığı bir backend adresini kullanın. Entegrasyonu etkinleştirmeden önce kurulum yöneticisi:
  1. Hedef veritabanını yedeklemeli ve normal Helm migrasyon işi/süreciyle sürümdeki tüm bekleyen migrasyonları uygulamalıdır. Bunlar, isteklerin yinelenmesini önleyen tabloyu oluşturan 20260908000000_add_source_import_api_requests.ts migrasyonunu da içerir.
  2. Split kurulumda birbirine uyumlu güncel frontend ve backend imajlarını dağıtmalıdır. Yalnızca frontend’i güncellemek backend uç noktalarını eklemez.
  3. Ingress/proxy üzerinde /api/v1 yönlendirmesini ve Authorization, Content-Type, Idempotency-Key başlıklarını korumalıdır. Kimlik doğrulamalı yanıtlar önbelleğe alınmamalıdır.
  4. İstek gövdesi ve eşzamanlı istek zaman aşımı sınırlarını kontrol etmeli; ardından dağıtılmış OpenAPI belgesini doğrulayıp çalıştırma öncesinde küçük, incelenmiş bir önizleme denemelidir.
JSON içe aktarmaları ve kaydedilmiş kaynak veri önizlemesi için S3, MinIO, orijinal dosya yükleme, yeni depolama ortam değişkenleri veya arka plan kuyruğu gerekmez. Mevcut dosya içe aktarmaları kendi depolama gereksinimlerini korur. Uygulama imajlarını geri alırken yeniden deneme geçmişini korumak için yeni istek tablosunu tutun. Tabloyu kaldırmak hedef kayıtlar ve kaynak anlık görüntüleri kalsa bile API üzerinden çalıştırma erişimini ve yinelenme önleme geçmişini siler. Bu geçmiş kaldırıldıktan sonra eski paketleri yeniden göndermeyin.