POST/v1/uploads
Începe o încărcare în părți
create_upload
Deschide o sesiune de încărcare pentru un fișier mare (până la limita instalării pentru încărcările în părți, implicit 5 GB): numele, tipul conținutului, dimensiunea și purpose, care spune ce va folosi încărcarea: card_file (POST /v1/cards), archive (POST /v1/cards/archive) sau import_attachment (un atașament al unui document dintr-o sursă personalizată). Răspunsul conține id (upl_ urmat de 32 de caractere hexazecimale), dimensiunea părții part_size și numărul de părți part_count. Fiecare parte, cu excepția ultimei, are exact part_size octeți (între 5 și 100 MiB), iar ultima parte este restul. O încărcare nefinalizată există timp de 24 de ore (expires_at).
O extensie a numelui fișierului din afara formatelor scopului returnează 415 uploads.unsupported_format (un atașament de import acceptă orice extensie). Un fișier mai mare decât limita instalării sau decât spațiul de stocare total al organizației conform planului returnează 413 uploads.too_large. Spațiul de stocare rămas insuficient, socotind și încărcările nefinalizate ale organizației, returnează 402 limits.storage.
Părțile trec prin Sursa (PUT /v1/uploads/{upload_id}/parts/{n}) și sunt criptate cu cheia organizației în spațiul de stocare a fișierelor; nu există linkuri directe către spațiul de stocare. Doar cheia API sau utilizatorul care a creat încărcarea o poate vedea și folosi. Adăugat în 1.62.0.
Autentificare
Trimiteți o cheie API în antetul Authorization: Authorization: Bearer <cheie>.
Parametri de antet
Idempotency-KeystringCheie pentru reîncercarea sigură a unei scrieri: 1–255 de caractere ASCII imprimabile; se recomandă un UUID v4 pentru fiecare operație logică. O reîncercare cu aceeași cheie în decurs de 24 de ore nu execută din nou operația: returnează răspunsul salvat (status, antete și corp) cu antetul
Idempotency-Replayed: true. Aceeași cheie cu altă metodă, altă cale, altContent-Typesau alt corp returnează409 api.idempotency_mismatch; cât timp prima cerere încă rulează –409 api.idempotency_in_progresscuRetry-After: 1. După un răspuns 5xx sau 429, cheia este eliberată, iar o reîncercare execută din nou operația. Cheia este valabilă în cadrul organizației și al apelantului (cheie API, utilizator sau cheie de sursă personalizată).length ≥ 1, length ≤ 255
Corpul cererii
application/json
filenamestringobligatoriuNumele fișierului cu extensie; extensia determină formatul.
length ≥ 1, length ≤ 255
content_typestringTipul de conținut declarat (MIME); se compară cu semnătura fișierului.
length ≤ 255
sizeinteger (int64)obligatoriuDimensiunea fișierului în octeți.
≥ 1
sha256stringSHA-256 al fișierului, dacă este cunoscut dinainte;
completecompară cu el suma de control.
Răspunsuri
201Sesiunea de încărcare este creată.
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
Idempotency-Replayedtrueînseamnă că răspunsul a fost redat din cel salvat pentru această cheieIdempotency-Key: operația nu a rulat din nou.
application/json
idstringobligatoriuID-ul încărcării (
upl_urmat de 32 de caractere hexazecimale).filenamestringobligatoriuNumele fișierului (fără dosare).
content_typestringobligatoriuTipul de conținut declarat; gol dacă nu a fost declarat.
sizeinteger (int64)obligatoriuDimensiunea fișierului în octeți.
sha256string | nullobligatoriuSHA-256 al fișierului, declarat la creare sau la
complete;nulldacă nu este încă cunoscut.part_sizeinteger (int64)obligatoriuDimensiunea fiecărei părți, cu excepția ultimei (de la 5 la 100 MiB).
part_countintegerobligatoriuNumărul de părți.
≥ 1, ≤ 1000
parts_receivedintegerobligatoriuNumărul de părți primite.
≥ 0
Părțile primite, după număr (gol în răspunsul
POST /v1/uploads).reject_reasonstring | nullobligatoriuMotivul respingerii (
rejected):checksum_mismatch,type_mismatch,unsupported_format,infected,scan_unavailable,unsafe_content. Enumerarea se poate extinde;nulldacă nu a fost respinsă.reject_detailsobject | nullobligatoriuDetaliile respingerii (extensia, formatul declarat și cel detectat, sumele de control);
nulldacă nu a fost respinsă.created_atstring (date-time)obligatoriuMomentul creării încărcării.
expires_atstring (date-time)obligatoriuTermenul pentru finalizarea încărcării și, după ce este gata, pentru folosirea ei.
completed_atstring (date-time) | nullobligatoriuMomentul încheierii verificării (
readysaurejected).consumed_atstring (date-time) | nullobligatoriuMomentul folosirii încărcării (de o fișă, o arhivă sau un import).
401Nu au fost trimise date de autentificare (nici cookie de sesiune, nici cheie API) sau cheia nu a fost găsită.
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
402Organizația a atins o limită a planului (fișe, spațiu de stocare sau utilizatori). `error.details` conține `kind`, `limit` și `used`.
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
403Acțiunea nu este permisă: rolul este insuficient, nu există acces la colecție sau la fișă, cererea rulează în modul „View as” (vizualizare ca alt utilizator) sau organizația este suspendată ori ștearsă (`detail` este un obiect cu `code: org_suspended | org_deleted`).
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
413Corpul cererii depășește dimensiunea permisă.
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
415Formatul fișierului nu este acceptat.
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
422Eroare de validare: corpul sau parametrii nu corespund schemei (`detail` este o listă de erori de validare) ori valoarea unui parametru este în afara intervalului permis (`detail` este un mesaj).
Antetele răspunsului
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
429Prea multe cereri (`api.rate_limited`), cota organizației pentru minut, zi sau lună este epuizată (`api.quota_exceeded`; `error.details` conține `quota`, `limit` și `reset_at`), limita organizației este atinsă sau serviciul de răspunsuri este ocupat (`answers.engine_busy`). Așteptați timpul indicat în antetul `Retry-After`.
Antetele răspunsului
Retry-AfterNumărul de secunde de așteptat înainte de a reîncerca cererea.
RateLimit-PolicyLimitele în vigoare, în formatul proiectului IETF
draft-ietf-httpapi-ratelimit-headers: elemente separate prin virgulă"<name>";q=<quota>;w=<window in seconds>.keyeste frecvența cererilor cheii API (cota este rafala, fereastra este timpul în care rafala se reface complet; pentru o sesiune esteuser, fără date de autentificareip);minute,dayșimonthsunt cotele organizației pentru minutul, ziua și luna calendaristice în UTC.RateLimitCât a rămas din fiecare limită din
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimita celei mai stricte intrări din
RateLimit-Policy(cea cu cele mai puține cereri rămase).X-RateLimit-RemainingCereri rămase în cadrul celei mai stricte limite.
X-RateLimit-ResetSecunde până la resetarea celei mai stricte limite.
application/json
Coduri de eroare
Codurile pe care acest endpoint le poate returna în error.code, pe lângă codurile generale ale oricărei cereri.
Reîncercări sigure
Trimiteți un antet Idempotency-Key (de exemplu, un UUID) cu fiecare POST și PATCH. O reîncercare cu aceeași cheie în decurs de 24 de ore returnează răspunsul salvat, fără să execute din nou cererea.
Limite de frecvență
Răspunsurile conțin antetele RateLimit și RateLimit-Policy, precum și antetele anterioare X-RateLimit-Limit, X-RateLimit-Remaining și X-RateLimit-Reset. Un răspuns 429 conține Retry-After în secunde: așteptați și reîncercați.