POST/v1/cards
Dosyayı kart olarak yükleme
upload_card
Belgeyi bir multipart/form-data formunun file alanında gönderin. Kaydetmeden önce Sursa dosya adı uzantısının, parçanın bildirilen Content-Type değerinin ve içerik imzasının birbiriyle uyuştuğunu denetler:
- PDF;
- DOCX, XLSX, XLSM, PPTX: bildirilen ana belge türünü içeren bir ZIP;
- ODS: mimetype girdisi olan bir ZIP;
- XLS: çalışma kitabı akışı olan bir OLE2 belgesi;
- TXT, MD, CSV, TSV, HTML, AsciiDoc, EML: UTF-8 ya da tek baytlık bir kodlamada, boş (null) bayt içermeyen metin; e-posta için başta başlıklar;
- PNG, JPEG, TIFF, WebP, BMP: imzaya göre.
Uyuşmazlık 415 files.type_mismatch döndürür; biçim listesinin dışındaki bir uzantı 415 cards.unsupported_format döndürür. Kurulumun yükleme limitinden ya da kuruluşun planına göre toplam depolama alanından büyük bir dosya 413 files.too_large döndürür. Virüs taraması etkinse virüslü bir dosya 422 files.infected döndürür; tarayıcı kullanılamıyorsa ve “reject” (reddet) ilkesi geçerliyse istek 503 files.scan_unavailable döndürür. Her ret denetim kaydına file.rejected olarak yazılır.
Form yerine bir application/json gövdesi gönderebilirsiniz (CardUploadFromUpload, 1.62.0 sürümünden beri): dosya, hazır bir çok parçalı yüklemedir, upload_id (card_file amacıyla POST /v1/uploads); alanlar formdakiyle aynıdır ve tags bir dize listesidir. Yüklemenin dosyası complete adımında zaten denetlenmiştir (biçim, virüs taraması) ve boyut limiti olarak tek istekle yükleme limiti yerine çok parçalı yükleme limiti geçerlidir. Yükleme, kartın oluşturulduğu atomik adımda bir kez kullanılır: daha önce kullanılmış bir yükleme 409 uploads.already_used, henüz hazır olmayan bir yükleme 409 uploads.not_ready, reddedilmiş bir yükleme 422 uploads.rejected, başka amaçlı bir yükleme 422 uploads.purpose_mismatch, süresi dolmuş bir yükleme 410 uploads.expired, başka bir çağırana ait ya da bilinmeyen bir yükleme 404 uploads.not_found döndürür. Kart denetimleri (koleksiyon, kategori, limitler) başarısız olursa yükleme harcanmaz.
Kimlik doğrulama
API anahtarını Authorization başlığında gönderin: Authorization: Bearer <anahtar>.
Başlık parametreleri
Idempotency-KeystringBir yazma işleminin güvenli yeniden denenmesi için idempotency anahtarı (aynı isteğin tekrarı işlemi ikinci kez çalıştırmaz): 1–255 yazdırılabilir ASCII karakteri; her mantıksal işlem için bir UUID v4 önerilir. 24 saat içinde aynı anahtarla yapılan yeniden deneme işlemi tekrar çalıştırmaz: kaydedilmiş yanıtı (durum, başlıklar ve gövde)
Idempotency-Replayed: truebaşlığıyla döndürür. Aynı anahtar farklı bir yöntem, yol,Content-Typeya da gövdeyle kullanılırsa409 api.idempotency_mismatchdöner; ilk istek hâlâ çalışırkenRetry-After: 1ile birlikte409 api.idempotency_in_progressdöner. 5xx ya da 429 yanıtından sonra anahtar serbest bırakılır ve yeniden deneme işlemi tekrar çalıştırır. Anahtar kuruluşa ve çağırana özgüdür (API anahtarı, kullanıcı ya da özel kaynak anahtarı).length ≥ 1, length ≤ 255
X-View-AsstringYalnızca
adminrolündeki API anahtarları için. İsteği<profile>[:viewer|verifier|editor]veri profili adına yapar, örneğinemployee:viewer. Kurulum anahtarı bu başlığı kullanamaz (403).
Çerez parametreleri
kb_view_asstringBir oturum için “View as” modunun (başka bir kullanıcı gibi görüntüleme) çerezi.
POST /auth/view-asbu çerezi ayarlar,DELETE /auth/view-astemizler.
İstek gövdesi
multipart/form-data
filestring (application/octet-stream)zorunlucollectionstringVarsayılan: "default"
tagsstringVarsayılan: ""
forcebooleanVarsayılan: false
owner_idinteger | nullverify_interval_daysinteger | nullcategorystring | nullsensitiveboolean | nullasyncbooleanVarsayılan: false
reviewbooleanVarsayılan: false
folder_idstring | nullYeni kartın konulacağı,
collectionkoleksiyonundaki klasör. Başka bir koleksiyonun klasörü400 folders.card_collection_mismatch, var olmayan bir klasör404 folders.not_found, klasördeCOLLECTION_EDIT_CARDSizninin olmaması403 authz.forbiddendöndürür. Denetim, dosya kaydedilmeden önce yapılır. Zaten yüklenmiş bir dosyanın kopyası (skipped) klasöre taşınmaz.length ≤ 64
collection_idinteger | nullKimliğe göre koleksiyon.
collectionda gönderilirsecollection_idgeçerli olur. Kuruluşta var olmayan ya da görünmeyen bir koleksiyon404 collections.not_founddöndürür.external_idstring | nullYeni kartın
external_iddeğeri. Bu değerle, koleksiyonda aynı dosya zaten olsa bile kart oluşturulur. Kuruluşun başka bir kartı bu değeri kullanıyorsa istek409 cards.external_id_takendöndürür. Bir kartıexternal_iddeğerine göre oluşturmak ya da değiştirmek içinPUT /v1/cards-by-external-id/{external_id}kullanın.length ≤ 512
metadatastring | nullYeni kartın
metadataalanı: form alanının değeri olarak bir JSON nesnesi. KurallarMetadataPatchile aynıdır.
application/json
upload_idstringzorunlucard_fileamaçlı, hazır bir yükleme (ready); bir kez kullanılır.collectionstringVarsayılan: "default"
collection_idinteger | nullKimliğe göre koleksiyon.
collectionde gönderildiğindecollection_idgeçerli olur. Kuruluşta bulunmayan, çağırana görünmeyen ya da anahtarın koleksiyonları dışında kalan bir koleksiyon404 collections.not_founddöndürür.tagsarray of stringitems ≤ 30
forcebooleanVarsayılan: false
owner_idinteger | nullverify_interval_daysinteger | nullcategorystring | nullsensitiveboolean | nullasyncbooleanVarsayılan: false
reviewbooleanVarsayılan: false
folder_idstring | nulllength ≤ 64
external_idstring | nullForm alanındaki gibi yeni kartın
external_iddeğeri. Bu değerle, koleksiyonda aynı dosya zaten bulunsa bile kart oluşturulur. Kuruluşun başka bir kartı bu değeri kullanıyorsa istek409 cards.external_id_takendöndürür.length ≤ 512
metadataMetadataPatch
Yanıtlar
200`queued` (eşzamansız), `skipped` (yinelenen), `ready` ya da `error` (eşzamanlı).
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
Idempotency-Replayedtrue: yanıt buIdempotency-Keyiçin kaydedilmiş yanıttan yeniden verildi; işlem tekrar çalışmadı.
application/json
400İstek geçersiz: bir parametre değeri ya da nesnenin durumu işleme izin vermiyor (`detail` bir iletidir).
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
401Kimlik bilgisi gönderilmedi (ne oturum çerezi ne de API anahtarı) ya da anahtar bulunamadı.
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
402Kuruluş bir plan limitine ulaştı (kartlar, depolama ya da kullanıcılar). `error.details` alanında `kind`, `limit` ve `used` bulunur.
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
403İşleme izin verilmiyor: rol yetersiz, koleksiyona ya da karta erişim yok, istek “View as” modunda çalışıyor ya da kuruluş askıya alınmış veya silinmiş (`detail`, `code: org_suspended | org_deleted` içeren bir nesnedir).
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
404Nesne yok ya da size açık değil. API, erişimi kısıtlı bir nesnenin var olduğunu belli etmez.
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
409Nesnenin durumu işleme izin vermiyor; örneğin yinelenen bir kayıt, süren bir dizinleme ya da zaten işlenmiş bir iş.
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
410Nesne vardı ama artık kullanılamıyor: bağlantı kullanıldı ya da süresi doldu veya dosya saklama süresinin sonunda silindi.
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
413İstek gövdesi izin verilen en büyük boyutu aşıyor.
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
415Dosya biçimi desteklenmiyor.
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
422Geçerlilik hatası: gövde ya da parametreler şemaya uymuyor (`detail` geçerlilik hatalarının listesidir) ya da bir parametre değeri aralığın dışında (`detail` bir iletidir).
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
429Çok fazla istek (`api.rate_limited`), kuruluşun dakika, gün ya da ay kotası doldu (`api.quota_exceeded`; `error.details` alanında `quota`, `limit` ve `reset_at` bulunur), kuruluşun limitine ulaşıldı ya da yanıt hizmeti meşgul (`answers.engine_busy`). `Retry-After` başlığındaki süre kadar bekleyin.
Yanıt başlıkları
Retry-Afterİsteği yeniden denemeden önce beklenmesi gereken saniye sayısı.
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
503Bu isteğin bağlı olduğu bir hizmet geçici olarak kullanılamıyor. Daha sonra yeniden deneyin.
Yanıt başlıkları
RateLimit-PolicyGeçerli limitler, IETF taslağı
draft-ietf-httpapi-ratelimit-headersbiçiminde: virgülle ayrılmış"<name>";q=<quota>;w=<window in seconds>öğeleri.key, API anahtarının istek hızıdır (kota ani artış payıdır, zaman penceresi bu payın tamamen dolma süresidir; oturum içinuser, kimlik bilgisi olmadanip);minute,dayvemonth, kuruluşun UTC’ye göre takvim dakikası, günü ve ayı için kotalarıdır.RateLimitRateLimit-Policyiçindeki her limitten kalan:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitRateLimit-Policyiçindeki en sıkı girdinin limiti (en az istek hakkı kalan girdi).X-RateLimit-RemainingEn sıkı limitte kalan istek sayısı.
X-RateLimit-ResetEn sıkı limitin sıfırlanmasına kalan saniye.
application/json
Hata kodları
Bu uç noktanın, her isteğin genel kodlarının yanı sıra error.code alanında döndürebileceği kodlar.
- 400api.metadata_invalid
- 409api.idempotency_in_progress
- 400api.idempotency_key_invalid
- 409api.idempotency_mismatch
- 401auth.not_authenticated
- 403auth.system_scope
- 403authz.forbidden
- 403cards.duplicate_restricted
- 409cards.external_id_taken
- 403cards.no_access
- 404cards.not_found
- 400cards.review_requires_async
- 403cards.sensitivity_admin_only
- 415cards.unsupported_format
- 400categories.unknown
- 409collections.index_outdated
- 400collections.invalid_name
- 403collections.no_write_access
- 404collections.not_found
- 422files.infected
- 503files.scan_unavailable
- 413files.too_large
- 415files.type_mismatch
- 400folders.card_collection_mismatch
- 404folders.not_found
- 404jobs.not_found
- 402limits.cards
- 403org.deleted
- 403org.suspended
- 409uploads.already_used
- 410uploads.expired
- 404uploads.not_found
- 409uploads.not_ready
- 422uploads.purpose_mismatch
- 422uploads.rejected
- 400users.not_in_org
- 422validation.failed
- 403view_as.read_only
Güvenli yeniden denemeler
Her POST ve PATCH isteğiyle bir Idempotency-Key başlığı (örneğin bir UUID) gönderin. Aynı anahtarla 24 saat içinde yapılan yeniden deneme, isteği yeniden çalıştırmak yerine kaydedilmiş yanıtı döndürür.
Hız sınırları
Yanıtlarda RateLimit ve RateLimit-Policy başlıklarıyla birlikte daha eski X-RateLimit-Limit, X-RateLimit-Remaining ve X-RateLimit-Reset başlıkları bulunur. 429 yanıtında saniye cinsinden Retry-After başlığı vardır: bekleyin ve yeniden deneyin.