POST/v1/uploads/{upload_id}/complete
Dokončiť nahrávanie
complete_upload
Keď sú prijaté všetky časti, Sursa zloží súbor, porovná SHA-256 celého súboru so sha256 v tele a vykoná rovnaké kontroly ako pri nahrávaní jednou požiadavkou: formát podľa signatúry obsahu a antivírusovú kontrolu. Výsledkom je ready alebo rejected s reject_reason (checksum_mismatch, type_mismatch, unsupported_format, infected, scan_unavailable, unsafe_content). Každé odmietnutie kontrolou formátu alebo antivírusovou kontrolou sa zapíše do auditného logu ako file.rejected.
Odpoveď 200 znamená, že výsledok je hotový; 202 znamená, že sa súbor ešte kontroluje (processing), a výsledok vráti GET /v1/uploads/{upload_id}. Ak sa stav vráti na pending (kontrolu prerušil reštart inštancie API), pošlite complete znova. Opakovanie complete po výsledku vráti ten istý výsledok. Chýbajúce časti vrátia 409 uploads.incomplete (details.missing). sha256, ktoré sa líši od hodnoty deklarovanej pri vytvorení, alebo parts[].etag, ktoré sa líši od prijatej časti, vráti 422 uploads.checksum_mismatch. Hotové nahrávanie, ktoré sa nepoužije, existuje 24 hodín. Pridané vo verzii 1.62.0.
Autentifikácia
Odošlite kľúč API v hlavičke Authorization: Authorization: Bearer <kľúč>.
Parametre cesty
upload_idstringpovinnéID nahrávania (
upl_a za ním 32 hexadecimálnych znakov).length ≤ 64
Parametre hlavičky
Idempotency-KeystringKľúč na bezpečné opakovanie zápisu: 1 až 255 tlačiteľných znakov ASCII; odporúča sa UUID v4 pre každú logickú operáciu. Opakovanie s tým istým kľúčom do 24 hodín operáciu znova nespustí: vráti uloženú odpoveď (stav, hlavičky a telo) s hlavičkou
Idempotency-Replayed: true. Ten istý kľúč s inou metódou, cestou,Content-Typealebo telom vráti409 api.idempotency_mismatch; kým prvá požiadavka ešte prebieha, vráti409 api.idempotency_in_progresssRetry-After: 1. Po odpovedi 5xx alebo 429 sa kľúč uvoľní a opakovanie operáciu spustí znova. Kľúč platí v rámci organizácie a volajúceho (kľúč API, používateľ alebo kľúč vlastného zdroja).length ≥ 1, length ≤ 255
Telo požiadavky
application/json
sha256stringpovinnéSHA-256 celého súboru.
partsarray of UploadPartRefNepovinná kontrola častí: ETag každej časti, ako ho vrátilo
PUT …/parts/{n}.items ≤ 1000
Odpovede
200Výsledok je hotový: `ready` alebo `rejected`.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
Idempotency-Replayedtrueznamená, že odpoveď bola zopakovaná z uloženej odpovede pre tentoIdempotency-Key: operácia sa znova nespustila.
application/json
idstringpovinnéID nahrávania (
upl_a za ním 32 hexadecimálnych znakov).filenamestringpovinnéNázov súboru (bez priečinkov).
content_typestringpovinnéDeklarovaný typ obsahu; prázdne, ak nebol deklarovaný.
sizeinteger (int64)povinnéVeľkosť súboru v bajtoch.
sha256string | nullpovinnéSHA-256 súboru deklarovaný pri vytvorení alebo pri
complete;null, ak ešte nie je známy.part_sizeinteger (int64)povinnéVeľkosť každej časti okrem poslednej (od 5 do 100 MiB).
part_countintegerpovinnéPočet častí.
≥ 1, ≤ 1000
parts_receivedintegerpovinnéPočet prijatých častí.
≥ 0
Prijaté časti podľa čísla (v odpovedi
POST /v1/uploadsprázdne).reject_reasonstring | nullpovinnéDôvod zamietnutia (
rejected):checksum_mismatch,type_mismatch,unsupported_format,infected,scan_unavailable,unsafe_content. Výčet sa môže rozširovať;null, ak nahrávanie nebolo zamietnuté.reject_detailsobject | nullpovinnéPodrobnosti zamietnutia (prípona, deklarovaný a zistený formát, kontrolné súčty);
null, ak nahrávanie nebolo zamietnuté.created_atstring (date-time)povinnéKedy bolo nahrávanie vytvorené.
expires_atstring (date-time)povinnéTermín na dokončenie nahrávania a, keď je pripravené, aj na jeho použitie.
completed_atstring (date-time) | nullpovinnéKedy sa kontrola skončila (
readyaleborejected).consumed_atstring (date-time) | nullpovinnéKedy bolo nahrávanie použité (kartou, archívom alebo importom).
202Súbor sa ešte kontroluje (`processing`).
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
Idempotency-Replayedtrueznamená, že odpoveď bola zopakovaná z uloženej odpovede pre tentoIdempotency-Key: operácia sa znova nespustila.
application/json
idstringpovinnéID nahrávania (
upl_a za ním 32 hexadecimálnych znakov).filenamestringpovinnéNázov súboru (bez priečinkov).
content_typestringpovinnéDeklarovaný typ obsahu; prázdne, ak nebol deklarovaný.
sizeinteger (int64)povinnéVeľkosť súboru v bajtoch.
sha256string | nullpovinnéSHA-256 súboru deklarovaný pri vytvorení alebo pri
complete;null, ak ešte nie je známy.part_sizeinteger (int64)povinnéVeľkosť každej časti okrem poslednej (od 5 do 100 MiB).
part_countintegerpovinnéPočet častí.
≥ 1, ≤ 1000
parts_receivedintegerpovinnéPočet prijatých častí.
≥ 0
Prijaté časti podľa čísla (v odpovedi
POST /v1/uploadsprázdne).reject_reasonstring | nullpovinnéDôvod zamietnutia (
rejected):checksum_mismatch,type_mismatch,unsupported_format,infected,scan_unavailable,unsafe_content. Výčet sa môže rozširovať;null, ak nahrávanie nebolo zamietnuté.reject_detailsobject | nullpovinnéPodrobnosti zamietnutia (prípona, deklarovaný a zistený formát, kontrolné súčty);
null, ak nahrávanie nebolo zamietnuté.created_atstring (date-time)povinnéKedy bolo nahrávanie vytvorené.
expires_atstring (date-time)povinnéTermín na dokončenie nahrávania a, keď je pripravené, aj na jeho použitie.
completed_atstring (date-time) | nullpovinnéKedy sa kontrola skončila (
readyaleborejected).consumed_atstring (date-time) | nullpovinnéKedy bolo nahrávanie použité (kartou, archívom alebo importom).
401Neboli odoslané žiadne prihlasovacie údaje (ani cookie relácie, ani kľúč API) alebo sa kľúč nenašiel.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
403Akcia nie je povolená: rola nestačí, chýba prístup ku kolekcii alebo karte, požiadavka beží v režime „View as“ alebo je organizácia pozastavená či odstránená (`detail` je objekt s `code: org_suspended | org_deleted`).
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
404Objekt neexistuje alebo vám nie je dostupný. API nepotvrdzuje, že objekt s obmedzeným prístupom existuje.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
409Stav objektu akciu nedovoľuje, napríklad duplicita, prebiehajúce indexovanie alebo úloha, ktorá je už spracovaná.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
410Objekt existoval, ale už nie je dostupný: odkaz bol použitý alebo mu vypršala platnosť, prípadne bol súbor odstránený na konci doby uchovávania.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
422Chyba validácie: telo alebo parametre nezodpovedajú schéme (`detail` je zoznam chýb validácie) alebo je hodnota parametra mimo rozsahu (`detail` je správa).
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
429Príliš veľa požiadaviek (`api.rate_limited`), vyčerpaná kvóta organizácie na minútu, deň alebo mesiac (`api.quota_exceeded`; `error.details` obsahuje `quota`, `limit` a `reset_at`), dosiahnutý limit organizácie alebo zaneprázdnená služba odpovedí (`answers.engine_busy`). Počkajte čas uvedený v hlavičke `Retry-After`.
Hlavičky odpovede
Retry-AfterPočet sekúnd, ktoré treba počkať pred opakovaním požiadavky.
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
Chybové kódy
Kódy, ktoré táto operácia môže vrátiť v error.code, okrem všeobecných kódov každej požiadavky.
Bezpečné opakovanie
S každou požiadavkou POST a PATCH odošlite hlavičku Idempotency-Key (napríklad UUID). Opakovaná požiadavka s rovnakým kľúčom do 24 hodín vráti uloženú odpoveď namiesto toho, aby sa požiadavka vykonala znova.
Limity frekvencie
Odpovede obsahujú hlavičky RateLimit a RateLimit-Policy a staršie X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset. Odpoveď 429 má hlavičku Retry-After v sekundách: počkajte a požiadavku zopakujte.