POST/v1/uploads/{upload_id}/complete
Fullfør en opplasting
complete_upload
Når alle delene er mottatt, setter Sursa sammen filen, sammenligner SHA-256 av hele filen med sha256 i brødteksten og kjører de samme kontrollene som for en opplasting i én forespørsel: formatet etter innholdets signatur og virusskanning. Resultatet er ready, eller rejected med reject_reason (checksum_mismatch, type_mismatch, unsupported_format, infected, scan_unavailable, unsafe_content). Hver avvisning fra format- eller viruskontrollen skrives til revisjonsloggen som file.rejected.
Et 200-svar betyr at resultatet er klart; 202 betyr at filen fortsatt kontrolleres (processing), og resultatet hentes med GET /v1/uploads/{upload_id}. Hvis statusen går tilbake til pending (en omstart av en API-instans avbrøt kontrollen), sender du complete på nytt. Når complete gjentas etter resultatet, returneres det samme resultatet. Manglende deler returnerer 409 uploads.incomplete (details.missing). En sha256 som avviker fra den som ble oppgitt ved opprettelsen, eller en parts[].etag som avviker fra en mottatt del, returnerer 422 uploads.checksum_mismatch. En klar opplasting som ikke brukes, lever i 24 timer. Lagt til i 1.62.0.
Autentisering
Send en API-nøkkel i headeren Authorization: Authorization: Bearer <nøkkel>.
Baneparametere
upload_idstringobligatoriskOpplastingens ID (
upl_etterfulgt av 32 heksadesimale tegn).length ≤ 64
Headerparametere
Idempotency-KeystringNøkkel for et trygt nytt forsøk på en skriveoperasjon: 1 til 255 utskrivbare ASCII-tegn; en UUID v4 per logisk operasjon anbefales. Et nytt forsøk med samme nøkkel innen 24 timer kjører ikke operasjonen på nytt: det returnerer det lagrede svaret (status, headere og brødtekst) med headeren
Idempotency-Replayed: true. Samme nøkkel med en annen metode, bane,Content-Typeeller brødtekst returnerer409 api.idempotency_mismatch; mens den første forespørselen fortsatt kjører,409 api.idempotency_in_progressmedRetry-After: 1. Etter et 5xx- eller 429-svar frigjøres nøkkelen, og et nytt forsøk kjører operasjonen på nytt. Nøkkelen gjelder per organisasjon og per kaller (API-nøkkel, bruker eller nøkkel for en egendefinert kilde).length ≥ 1, length ≤ 255
Forespørselens brødtekst
application/json
sha256stringobligatoriskSHA-256 for hele filen.
partsarray of UploadPartRefValgfri kontroll av delene: ETag for hver del slik
PUT …/parts/{n}returnerte den.items ≤ 1000
Svar
200Resultatet er klart: `ready` eller `rejected`.
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
Idempotency-Replayedtruebetyr at svaret ble gjentatt fra det lagrede svaret for denneIdempotency-Key: operasjonen ble ikke kjørt på nytt.
application/json
idstringobligatoriskOpplastingens ID (
upl_etterfulgt av 32 heksadesimale tegn).filenamestringobligatoriskFilnavnet (uten mapper).
content_typestringobligatoriskDen oppgitte innholdstypen; tom hvis den ikke er oppgitt.
sizeinteger (int64)obligatoriskFilstørrelsen i byte.
sha256string | nullobligatoriskFilens SHA-256, oppgitt ved opprettelsen eller ved
complete;nullhvis den ikke er kjent ennå.part_sizeinteger (int64)obligatoriskStørrelsen på hver del unntatt den siste (fra 5 til 100 MiB).
part_countintegerobligatoriskAntall deler.
≥ 1, ≤ 1000
parts_receivedintegerobligatoriskAntall mottatte deler.
≥ 0
De mottatte delene etter nummer (tom i svaret på
POST /v1/uploads).reject_reasonstring | nullobligatoriskÅrsaken til avvisningen (
rejected):checksum_mismatch,type_mismatch,unsupported_format,infected,scan_unavailable,unsafe_content. Enumen kan utvides;nullhvis opplastingen ikke er avvist.reject_detailsobject | nullobligatoriskDetaljer om avvisningen (filtypen, det oppgitte og det oppdagede formatet, sjekksummer);
nullhvis opplastingen ikke er avvist.created_atstring (date-time)obligatoriskNår opplastingen ble opprettet.
expires_atstring (date-time)obligatoriskFristen for å fullføre opplastingen og, når den er klar, for å bruke den.
completed_atstring (date-time) | nullobligatoriskNår kontrollen ble fullført (
readyellerrejected).consumed_atstring (date-time) | nullobligatoriskNår opplastingen ble brukt (av et kort, et arkiv eller en import).
202Filen kontrolleres fortsatt (`processing`).
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
Idempotency-Replayedtruebetyr at svaret ble gjentatt fra det lagrede svaret for denneIdempotency-Key: operasjonen ble ikke kjørt på nytt.
application/json
idstringobligatoriskOpplastingens ID (
upl_etterfulgt av 32 heksadesimale tegn).filenamestringobligatoriskFilnavnet (uten mapper).
content_typestringobligatoriskDen oppgitte innholdstypen; tom hvis den ikke er oppgitt.
sizeinteger (int64)obligatoriskFilstørrelsen i byte.
sha256string | nullobligatoriskFilens SHA-256, oppgitt ved opprettelsen eller ved
complete;nullhvis den ikke er kjent ennå.part_sizeinteger (int64)obligatoriskStørrelsen på hver del unntatt den siste (fra 5 til 100 MiB).
part_countintegerobligatoriskAntall deler.
≥ 1, ≤ 1000
parts_receivedintegerobligatoriskAntall mottatte deler.
≥ 0
De mottatte delene etter nummer (tom i svaret på
POST /v1/uploads).reject_reasonstring | nullobligatoriskÅrsaken til avvisningen (
rejected):checksum_mismatch,type_mismatch,unsupported_format,infected,scan_unavailable,unsafe_content. Enumen kan utvides;nullhvis opplastingen ikke er avvist.reject_detailsobject | nullobligatoriskDetaljer om avvisningen (filtypen, det oppgitte og det oppdagede formatet, sjekksummer);
nullhvis opplastingen ikke er avvist.created_atstring (date-time)obligatoriskNår opplastingen ble opprettet.
expires_atstring (date-time)obligatoriskFristen for å fullføre opplastingen og, når den er klar, for å bruke den.
completed_atstring (date-time) | nullobligatoriskNår kontrollen ble fullført (
readyellerrejected).consumed_atstring (date-time) | nullobligatoriskNår opplastingen ble brukt (av et kort, et arkiv eller en import).
401Ingen påloggingsinformasjon ble sendt (verken øktinformasjonskapsel eller API-nøkkel), eller nøkkelen ble ikke funnet.
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
403Handlingen er ikke tillatt: rollen er utilstrekkelig, det finnes ingen tilgang til samlingen eller kortet, forespørselen kjører i modusen «View as», eller organisasjonen er suspendert eller slettet (`detail` er et objekt med `code: org_suspended | org_deleted`).
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
404Objektet finnes ikke eller er ikke tilgjengelig for deg. API-et bekrefter ikke at et objekt med begrenset tilgang finnes.
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
409Objektets tilstand tillater ikke handlingen, for eksempel et duplikat, en indeksering som pågår, eller en jobb som allerede er behandlet.
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
410Objektet fantes, men er ikke lenger tilgjengelig: lenken er brukt eller har utløpt, eller filen ble slettet ved slutten av lagringstiden.
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
422Valideringsfeil: brødteksten eller parameterne samsvarer ikke med skjemaet (`detail` er en liste over valideringsfeil), eller en parameterverdi er utenfor tillatt område (`detail` er en melding).
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
429For mange forespørsler (`api.rate_limited`), organisasjonens kvote for minuttet, døgnet eller måneden er brukt opp (`api.quota_exceeded`; `error.details` inneholder `quota`, `limit` og `reset_at`), organisasjonens grense er nådd, eller svartjenesten er opptatt (`answers.engine_busy`). Vent så lenge som headeren `Retry-After` angir.
Headere i svaret
Retry-AfterAntall sekunder du skal vente før du prøver forespørselen på nytt.
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
Feilkoder
Kodene denne operasjonen kan returnere i error.code, i tillegg til de generelle kodene for alle forespørsler.
Trygge nye forsøk
Send en Idempotency-Key-header (for eksempel en UUID) med hver POST og PATCH. Et nytt forsøk med samme nøkkel innen 24 timer returnerer det lagrede svaret i stedet for å kjøre forespørselen på nytt.
Hastighetsgrenser
Svarene har headerne RateLimit og RateLimit-Policy og de eldre X-RateLimit-Limit, X-RateLimit-Remaining og X-RateLimit-Reset. Et 429-svar har Retry-After i sekunder: Vent, og prøv på nytt.