Preskoči na sadržaj
Sursa Developers

POST/v1/uploads/{upload_id}/complete

Dovršetak učitavanja

complete_upload

Kad su svi dijelovi primljeni, Sursa sastavlja datoteku, uspoređuje SHA-256 cijele datoteke sa sha256 u tijelu i izvodi iste provjere kao za učitavanje jednim zahtjevom: format prema potpisu sadržaja i antivirusnu provjeru. Rezultat je ready ili rejected s reject_reason (checksum_mismatch, type_mismatch, unsupported_format, infected, scan_unavailable, unsafe_content). Svako odbijanje pri provjeri formata ili antivirusnoj provjeri upisuje se u revizijski zapisnik kao file.rejected.

Odgovor 200 znači da je rezultat spreman; 202 znači da se datoteka još provjerava (processing), a rezultat se dobiva iz GET /v1/uploads/{upload_id}. Ako se status vrati na pending (ponovno pokretanje instance API-ja prekinulo je provjeru), ponovno pošaljite complete. Ponavljanje complete nakon rezultata vraća isti rezultat. Dijelovi koji nedostaju vraćaju 409 uploads.incomplete (details.missing). sha256 koji se razlikuje od onog deklariranog pri stvaranju ili parts[].etag koji se razlikuje od primljenog dijela vraća 422 uploads.checksum_mismatch. Spremno učitavanje koje se ne iskoristi traje 24 sata. Dodano u verziji 1.62.0.

Autentifikacija

Pošaljite API ključ u zaglavlju Authorization: Authorization: Bearer <ključ>.

Parametri putanje

  • upload_idstringobavezno

    ID učitavanja (upl_ i zatim 32 heksadecimalna znaka).

    length ≤ 64

Parametri zaglavlja

  • Idempotency-Keystring

    Ključ za siguran ponovni pokušaj upisa: od 1 do 255 ispisivih ASCII znakova; preporučuje se UUID v4 po logičkoj operaciji. Ponovni pokušaj s istim ključem unutar 24 sata ne izvodi operaciju ponovno: vraća spremljeni odgovor (status, zaglavlja i tijelo) sa zaglavljem Idempotency-Replayed: true. Isti ključ s drugom metodom, putanjom, Content-Type ili tijelom vraća 409 api.idempotency_mismatch; dok se prvi zahtjev još izvodi – 409 api.idempotency_in_progress s Retry-After: 1. Nakon odgovora 5xx ili 429 ključ se oslobađa i ponovni pokušaj ponovno izvodi operaciju. Ključ vrijedi u okviru organizacije i pozivatelja (API ključ, korisnik ili ključ vlastitog izvora).

    length ≥ 1, length ≤ 255

Tijelo zahtjeva

application/json

Objekt: UploadComplete

  • sha256stringobavezno

    SHA-256 cijele datoteke.

  • partsarray of UploadPartRef

    Neobavezna provjera dijelova: ETag svakog dijela kako ga vraća PUT …/parts/{n}.

    items ≤ 1000

Odgovori

200Rezultat je spreman: `ready` ili `rejected`.

Zaglavlja odgovora

  • RateLimit-Policy

    Ograničenja na snazi, u formatu IETF nacrta draft-ietf-httpapi-ratelimit-headers: stavke odvojene zarezima "<name>";q=<quota>;w=<window in seconds>. key je učestalost zahtjeva API ključa (kvota je nalet, prozor je vrijeme do njegova potpunog obnavljanja; za sesiju je to user, bez vjerodajnica ip); minute, day i month su kvote organizacije za kalendarsku minutu, dan i mjesec po UTC-u.

  • RateLimit

    Što je preostalo od svakog ograničenja u RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Ograničenje najstrože stavke u RateLimit-Policy (one s najmanje preostalih zahtjeva).

  • X-RateLimit-Remaining

    Preostali zahtjevi u okviru najstrožeg ograničenja.

  • X-RateLimit-Reset

    Broj sekundi do obnove najstrožeg ograničenja.

  • Idempotency-Replayed

    true znači da je odgovor ponovljen iz spremljenog odgovora za ovaj Idempotency-Key: operacija se nije ponovno izvela.

application/json

Objekt: Upload

  • idstringobavezno

    ID učitavanja (upl_ i 32 heksadecimalna znaka).

  • purposeUploadPurposeobavezno
  • filenamestringobavezno

    Naziv datoteke (bez mapa).

  • content_typestringobavezno

    Deklarirana vrsta sadržaja; prazno ako nije deklarirana.

  • sizeinteger (int64)obavezno

    Veličina datoteke u bajtovima.

  • sha256string | nullobavezno

    SHA-256 datoteke, deklariran pri stvaranju ili pri complete; null ako još nije poznat.

  • statusUploadStatusobavezno
  • part_sizeinteger (int64)obavezno

    Veličina svakog dijela osim posljednjeg (od 5 do 100 MiB).

  • part_countintegerobavezno

    Broj dijelova.

    ≥ 1, ≤ 1000

  • parts_receivedintegerobavezno

    Broj primljenih dijelova.

    ≥ 0

  • partsarray of UploadPartobavezno

    Primljeni dijelovi prema broju (prazno u odgovoru na POST /v1/uploads).

  • reject_reasonstring | nullobavezno

    Razlog odbijanja (rejected): checksum_mismatch, type_mismatch, unsupported_format, infected, scan_unavailable, unsafe_content. Nabrajanje se može proširiti; null ako učitavanje nije odbijeno.

  • reject_detailsobject | nullobavezno

    Pojedinosti odbijanja (nastavak, deklarirani i utvrđeni format, kontrolni zbrojevi); null ako učitavanje nije odbijeno.

  • created_atstring (date-time)obavezno

    Kada je učitavanje stvoreno.

  • expires_atstring (date-time)obavezno

    Rok za dovršetak učitavanja i, kad je spremno, za njegovu upotrebu.

  • completed_atstring (date-time) | nullobavezno

    Kada je provjera završila (ready ili rejected).

  • consumed_atstring (date-time) | nullobavezno

    Kada je učitavanje iskorišteno (za karticu, arhivu ili uvoz).

202Datoteka se još provjerava (`processing`).

Zaglavlja odgovora

  • RateLimit-Policy

    Ograničenja na snazi, u formatu IETF nacrta draft-ietf-httpapi-ratelimit-headers: stavke odvojene zarezima "<name>";q=<quota>;w=<window in seconds>. key je učestalost zahtjeva API ključa (kvota je nalet, prozor je vrijeme do njegova potpunog obnavljanja; za sesiju je to user, bez vjerodajnica ip); minute, day i month su kvote organizacije za kalendarsku minutu, dan i mjesec po UTC-u.

  • RateLimit

    Što je preostalo od svakog ograničenja u RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Ograničenje najstrože stavke u RateLimit-Policy (one s najmanje preostalih zahtjeva).

  • X-RateLimit-Remaining

    Preostali zahtjevi u okviru najstrožeg ograničenja.

  • X-RateLimit-Reset

    Broj sekundi do obnove najstrožeg ograničenja.

  • Idempotency-Replayed

    true znači da je odgovor ponovljen iz spremljenog odgovora za ovaj Idempotency-Key: operacija se nije ponovno izvela.

application/json

Objekt: Upload

  • idstringobavezno

    ID učitavanja (upl_ i 32 heksadecimalna znaka).

  • purposeUploadPurposeobavezno
  • filenamestringobavezno

    Naziv datoteke (bez mapa).

  • content_typestringobavezno

    Deklarirana vrsta sadržaja; prazno ako nije deklarirana.

  • sizeinteger (int64)obavezno

    Veličina datoteke u bajtovima.

  • sha256string | nullobavezno

    SHA-256 datoteke, deklariran pri stvaranju ili pri complete; null ako još nije poznat.

  • statusUploadStatusobavezno
  • part_sizeinteger (int64)obavezno

    Veličina svakog dijela osim posljednjeg (od 5 do 100 MiB).

  • part_countintegerobavezno

    Broj dijelova.

    ≥ 1, ≤ 1000

  • parts_receivedintegerobavezno

    Broj primljenih dijelova.

    ≥ 0

  • partsarray of UploadPartobavezno

    Primljeni dijelovi prema broju (prazno u odgovoru na POST /v1/uploads).

  • reject_reasonstring | nullobavezno

    Razlog odbijanja (rejected): checksum_mismatch, type_mismatch, unsupported_format, infected, scan_unavailable, unsafe_content. Nabrajanje se može proširiti; null ako učitavanje nije odbijeno.

  • reject_detailsobject | nullobavezno

    Pojedinosti odbijanja (nastavak, deklarirani i utvrđeni format, kontrolni zbrojevi); null ako učitavanje nije odbijeno.

  • created_atstring (date-time)obavezno

    Kada je učitavanje stvoreno.

  • expires_atstring (date-time)obavezno

    Rok za dovršetak učitavanja i, kad je spremno, za njegovu upotrebu.

  • completed_atstring (date-time) | nullobavezno

    Kada je provjera završila (ready ili rejected).

  • consumed_atstring (date-time) | nullobavezno

    Kada je učitavanje iskorišteno (za karticu, arhivu ili uvoz).

401Vjerodajnice nisu poslane (ni kolačić sesije ni API ključ) ili ključ nije pronađen.

Zaglavlja odgovora

  • RateLimit-Policy

    Ograničenja na snazi, u formatu IETF nacrta draft-ietf-httpapi-ratelimit-headers: stavke odvojene zarezima "<name>";q=<quota>;w=<window in seconds>. key je učestalost zahtjeva API ključa (kvota je nalet, prozor je vrijeme do njegova potpunog obnavljanja; za sesiju je to user, bez vjerodajnica ip); minute, day i month su kvote organizacije za kalendarsku minutu, dan i mjesec po UTC-u.

  • RateLimit

    Što je preostalo od svakog ograničenja u RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Ograničenje najstrože stavke u RateLimit-Policy (one s najmanje preostalih zahtjeva).

  • X-RateLimit-Remaining

    Preostali zahtjevi u okviru najstrožeg ograničenja.

  • X-RateLimit-Reset

    Broj sekundi do obnove najstrožeg ograničenja.

application/json

Objekt: Error

403Radnja nije dopuštena: uloga nije dovoljna, nema pristupa zbirci ili kartici, zahtjev se izvodi u načinu „View as” ili je organizacija suspendirana ili izbrisana (`detail` je objekt s `code: org_suspended | org_deleted`).

Zaglavlja odgovora

  • RateLimit-Policy

    Ograničenja na snazi, u formatu IETF nacrta draft-ietf-httpapi-ratelimit-headers: stavke odvojene zarezima "<name>";q=<quota>;w=<window in seconds>. key je učestalost zahtjeva API ključa (kvota je nalet, prozor je vrijeme do njegova potpunog obnavljanja; za sesiju je to user, bez vjerodajnica ip); minute, day i month su kvote organizacije za kalendarsku minutu, dan i mjesec po UTC-u.

  • RateLimit

    Što je preostalo od svakog ograničenja u RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Ograničenje najstrože stavke u RateLimit-Policy (one s najmanje preostalih zahtjeva).

  • X-RateLimit-Remaining

    Preostali zahtjevi u okviru najstrožeg ograničenja.

  • X-RateLimit-Reset

    Broj sekundi do obnove najstrožeg ograničenja.

application/json

Objekt: Error

404Objekt ne postoji ili vam nije dostupan. API ne potvrđuje postojanje ograničenog objekta.

Zaglavlja odgovora

  • RateLimit-Policy

    Ograničenja na snazi, u formatu IETF nacrta draft-ietf-httpapi-ratelimit-headers: stavke odvojene zarezima "<name>";q=<quota>;w=<window in seconds>. key je učestalost zahtjeva API ključa (kvota je nalet, prozor je vrijeme do njegova potpunog obnavljanja; za sesiju je to user, bez vjerodajnica ip); minute, day i month su kvote organizacije za kalendarsku minutu, dan i mjesec po UTC-u.

  • RateLimit

    Što je preostalo od svakog ograničenja u RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Ograničenje najstrože stavke u RateLimit-Policy (one s najmanje preostalih zahtjeva).

  • X-RateLimit-Remaining

    Preostali zahtjevi u okviru najstrožeg ograničenja.

  • X-RateLimit-Reset

    Broj sekundi do obnove najstrožeg ograničenja.

application/json

Objekt: Error

409Stanje objekta ne dopušta radnju, na primjer duplikat, indeksiranje u tijeku ili posao koji je već obrađen.

Zaglavlja odgovora

  • RateLimit-Policy

    Ograničenja na snazi, u formatu IETF nacrta draft-ietf-httpapi-ratelimit-headers: stavke odvojene zarezima "<name>";q=<quota>;w=<window in seconds>. key je učestalost zahtjeva API ključa (kvota je nalet, prozor je vrijeme do njegova potpunog obnavljanja; za sesiju je to user, bez vjerodajnica ip); minute, day i month su kvote organizacije za kalendarsku minutu, dan i mjesec po UTC-u.

  • RateLimit

    Što je preostalo od svakog ograničenja u RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Ograničenje najstrože stavke u RateLimit-Policy (one s najmanje preostalih zahtjeva).

  • X-RateLimit-Remaining

    Preostali zahtjevi u okviru najstrožeg ograničenja.

  • X-RateLimit-Reset

    Broj sekundi do obnove najstrožeg ograničenja.

application/json

Objekt: Error

410Objekt je postojao, ali više nije dostupan: poveznica je iskorištena ili je istekla, ili je datoteka izbrisana na kraju razdoblja čuvanja.

Zaglavlja odgovora

  • RateLimit-Policy

    Ograničenja na snazi, u formatu IETF nacrta draft-ietf-httpapi-ratelimit-headers: stavke odvojene zarezima "<name>";q=<quota>;w=<window in seconds>. key je učestalost zahtjeva API ključa (kvota je nalet, prozor je vrijeme do njegova potpunog obnavljanja; za sesiju je to user, bez vjerodajnica ip); minute, day i month su kvote organizacije za kalendarsku minutu, dan i mjesec po UTC-u.

  • RateLimit

    Što je preostalo od svakog ograničenja u RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Ograničenje najstrože stavke u RateLimit-Policy (one s najmanje preostalih zahtjeva).

  • X-RateLimit-Remaining

    Preostali zahtjevi u okviru najstrožeg ograničenja.

  • X-RateLimit-Reset

    Broj sekundi do obnove najstrožeg ograničenja.

application/json

Objekt: Error

422Pogreška provjere valjanosti: tijelo ili parametri ne odgovaraju shemi (`detail` je popis pogrešaka provjere valjanosti) ili je vrijednost parametra izvan raspona (`detail` je poruka).

Zaglavlja odgovora

  • RateLimit-Policy

    Ograničenja na snazi, u formatu IETF nacrta draft-ietf-httpapi-ratelimit-headers: stavke odvojene zarezima "<name>";q=<quota>;w=<window in seconds>. key je učestalost zahtjeva API ključa (kvota je nalet, prozor je vrijeme do njegova potpunog obnavljanja; za sesiju je to user, bez vjerodajnica ip); minute, day i month su kvote organizacije za kalendarsku minutu, dan i mjesec po UTC-u.

  • RateLimit

    Što je preostalo od svakog ograničenja u RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Ograničenje najstrože stavke u RateLimit-Policy (one s najmanje preostalih zahtjeva).

  • X-RateLimit-Remaining

    Preostali zahtjevi u okviru najstrožeg ograničenja.

  • X-RateLimit-Reset

    Broj sekundi do obnove najstrožeg ograničenja.

application/json

Objekt: Error

429Previše zahtjeva (`api.rate_limited`), kvota organizacije za minutu, dan ili mjesec je potrošena (`api.quota_exceeded`; `error.details` sadrži `quota`, `limit` i `reset_at`), dosegnuto je ograničenje organizacije ili je usluga odgovora zauzeta (`answers.engine_busy`). Pričekajte vrijeme navedeno u zaglavlju `Retry-After`.

Zaglavlja odgovora

  • Retry-After

    Broj sekundi koje treba pričekati prije ponovnog pokušaja zahtjeva.

  • RateLimit-Policy

    Ograničenja na snazi, u formatu IETF nacrta draft-ietf-httpapi-ratelimit-headers: stavke odvojene zarezima "<name>";q=<quota>;w=<window in seconds>. key je učestalost zahtjeva API ključa (kvota je nalet, prozor je vrijeme do njegova potpunog obnavljanja; za sesiju je to user, bez vjerodajnica ip); minute, day i month su kvote organizacije za kalendarsku minutu, dan i mjesec po UTC-u.

  • RateLimit

    Što je preostalo od svakog ograničenja u RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Ograničenje najstrože stavke u RateLimit-Policy (one s najmanje preostalih zahtjeva).

  • X-RateLimit-Remaining

    Preostali zahtjevi u okviru najstrožeg ograničenja.

  • X-RateLimit-Reset

    Broj sekundi do obnove najstrožeg ograničenja.

application/json

Objekt: Error

Kodovi pogrešaka

Kodovi koje ova operacija može vratiti u error.code, uz opće kodove svakog zahtjeva.

Sigurni ponovni pokušaji

Uz svaki POST i PATCH pošaljite zaglavlje Idempotency-Key (na primjer UUID). Ponovni pokušaj s istim ključem unutar 24 sata vraća spremljeni odgovor umjesto da ponovno izvrši zahtjev.

Ograničenja učestalosti

Odgovori sadrže zaglavlja RateLimit i RateLimit-Policy te ranija zaglavlja X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset. Odgovor 429 sadrži zaglavlje Retry-After u sekundama: pričekajte i pokušajte ponovno.

← uploads · Referenca API-ja