POST/v1/uploads
Çok parçalı yükleme başlatma
create_upload
Büyük bir dosya için bir yükleme oturumu açar (kurulumun çok parçalı yükleme limitine kadar, varsayılan 5 GB): ad, içerik türü, boyut ve yüklemeyi neyin kullanacağını belirten purpose: card_file (POST /v1/cards), archive (POST /v1/cards/archive) ya da import_attachment (özel kaynak belgesinin eki). Yanıtta id (upl_ ve ardından 32 onaltılık karakter), part_size parça boyutu ve part_count parça sayısı bulunur. Sonuncusu dışındaki her parça tam olarak part_size bayttır (5–100 MiB) ve son parça kalan kısımdır. Tamamlanmamış bir yükleme 24 saat yaşar (expires_at).
Amacın biçimleri dışındaki bir dosya adı uzantısı 415 uploads.unsupported_format döndürür (içe aktarma eki her uzantıyı kabul eder). Kurulumun limitinden ya da kuruluşun planına göre toplam depolama alanından büyük bir dosya 413 uploads.too_large döndürür. Kuruluşun tamamlanmamış yüklemeleri de sayıldığında yeterli depolama alanı kalmamışsa 402 limits.storage döner.
Parçalar Sursa üzerinden gider (PUT /v1/uploads/{upload_id}/parts/{n}) ve dosya depolamasında kuruluşun anahtarıyla şifrelenir; depolamaya doğrudan bağlantı yoktur. Yüklemeyi yalnızca onu oluşturan API anahtarı ya da kullanıcı görebilir ve kullanabilir. 1.62.0 sürümünde eklendi.
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
İstek gövdesi
application/json
filenamestringzorunluUzantısıyla birlikte dosya adı; biçimi uzantı belirler.
length ≥ 1, length ≤ 255
content_typestringBildirilen içerik türü (MIME); dosya imzasıyla karşılaştırılır.
length ≤ 255
sizeinteger (int64)zorunluBayt cinsinden dosya boyutu.
≥ 1
sha256stringÖnceden biliniyorsa dosyanın SHA-256 değeri;
completesağlama toplamını bu değerle karşılaştırır.
Yanıtlar
201Yükleme oturumu oluşturuldu.
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
idstringzorunluYüklemenin kimliği (
upl_ve ardından 32 onaltılık karakter).filenamestringzorunluDosya adı (klasörler olmadan).
content_typestringzorunluBildirilen içerik türü; bildirilmediyse boş.
sizeinteger (int64)zorunluBayt cinsinden dosya boyutu.
sha256string | nullzorunluOluşturmada ya da
completesırasında bildirilen, dosyanın SHA-256 değeri; henüz bilinmiyorsanull.part_sizeinteger (int64)zorunluSonuncusu dışındaki her parçanın boyutu (5 ile 100 MiB arası).
part_countintegerzorunluParça sayısı.
≥ 1, ≤ 1000
parts_receivedintegerzorunluAlınan parça sayısı.
≥ 0
Numaraya göre alınan parçalar (
POST /v1/uploadsyanıtında boş).reject_reasonstring | nullzorunluRet nedeni (
rejected):checksum_mismatch,type_mismatch,unsupported_format,infected,scan_unavailable,unsafe_content. Değer listesi genişleyebilir; reddedilmediysenull.reject_detailsobject | nullzorunluRet ayrıntıları (uzantı, bildirilen ve algılanan biçim, sağlama toplamları); reddedilmediyse
null.created_atstring (date-time)zorunluYüklemenin oluşturulma zamanı.
expires_atstring (date-time)zorunluYüklemeyi tamamlamak ve hazır olduğunda kullanmak için son tarih.
completed_atstring (date-time) | nullzorunluDenetimin bittiği zaman (
readyya darejected).consumed_atstring (date-time) | nullzorunluYüklemenin kullanıldığı zaman (bir kart, bir arşiv ya da bir içe aktarma tarafından).
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
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
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.
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.