/data sayfasındaki içe aktarmalarla aynı eşleme, doğrulama, yinelenen veri işleme, hesaplama, onay ve kaynak satırı geçmişi akışını kullanır.
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’sini içeren sürümü ve veritabanı migrasyonunu kullanmalıdır. Kendi kurulumunuzun/api/v1/openapi.json dosyasında /source-adapters ve /source-imports yollarını kontrol edin; eski sürümlerde bu uç noktalar bulunmaz. 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
curlvejq.
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:
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.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.
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
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:
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.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:
rows ve total içerir. Her satırda sheetName, rowIndex, rawRow, status, warnings ve error bulunur. Sayfalama varsayılan olarak 100 satırdır, en fazla 200 olabilir. Yalnızca hataları almak için status=failed ekleyin; bu durumda total yalnızca eşleşen satırları sayar.
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: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.
Eksik form açılışlarını ancak inceleyip onayladıktan sonra, çalıştırma isteğini şu gövdeyle tekrarlayın:
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, hattarun.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ı ve ayrı ayrı uyarı/hataları kontrol edin.
Bir kaynak satırı birden fazla taslak üretebilir. 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.
Yeniden denemeler ve adaptör değişiklikleri
POST /source-importsiçinIdempotency-Keyzorunludur: 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: trueile 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ğinmodedeğ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ı içe aktarmalar oluşturur. Paketler arasında iş verisinin yinelenmesini önlemek hâlâ adaptörün
idempotencyKeyve yinelenen veri stratejisine bağlıdır. Strateji bunu karşılamıyorsa başarılı satırları yeni anahtarla tekrar göndermeyin. - Betik veya girdi sözleşmesi değişikliği
adapterVersiondeğ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.
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. 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:- Hedef veritabanını yedeklemeli ve normal Helm migrasyon işi/süreciyle sürümün ekleme yapan
20260908000000_add_source_import_api_requests.tsmigrasyonunu uygulamalıdır. Bu migrasyon isteklerin yinelenmesini önleyen tabloyu oluşturur. - 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.
- Ingress/proxy üzerinde
/api/v1yönlendirmesini veAuthorization,Content-Type,Idempotency-Keybaşlıklarını korumalıdır. Kimlik doğrulamalı yanıtlar önbelleğe alınmamalıdır. - İ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.

