POST/v1/uploads/{upload_id}/complete
Afslut en upload
complete_upload
Når alle dele er modtaget, samler Sursa filen, sammenligner SHA-256 for hele filen med sha256 i brødteksten og udfører de samme kontroller som ved upload i én anmodning: formatet ud fra indholdets signatur og antivirusscanning. Resultatet er ready eller rejected med reject_reason (checksum_mismatch, type_mismatch, unsupported_format, infected, scan_unavailable, unsafe_content). Hver afvisning fra kontrollen af format eller antivirus skrives i revisionsloggen som file.rejected.
Et svar 200 betyder, at resultatet er klar; 202 betyder, at filen stadig kontrolleres (processing), og resultatet hentes med GET /v1/uploads/{upload_id}. Vender status tilbage til pending (en genstart af en API-instans afbrød kontrollen), så send complete igen. Gentages complete efter resultatet, returneres det samme resultat. Manglende dele returnerer 409 uploads.incomplete (details.missing). En sha256, der afviger fra den, der blev angivet ved oprettelsen, eller en parts[].etag, der afviger fra en modtaget del, returnerer 422 uploads.checksum_mismatch. En klar upload, der ikke bruges, lever i 24 timer. Tilføjet i 1.62.0.
Autentificering
Send en API-nøgle i headeren Authorization: Authorization: Bearer <nøgle>.
Stiparametre
upload_idstringpåkrævetUploadens id (
upl_efterfulgt af 32 hexadecimale tegn).length ≤ 64
Headerparametre
Idempotency-KeystringNøgle til et sikkert nyt forsøg på en skrivning: 1 til 255 printbare ASCII-tegn; en UUID v4 pr. logisk operation anbefales. Et nyt forsøg med samme nøgle inden for 24 timer udfører ikke operationen igen: det returnerer det gemte svar (status, headere og brødtekst) med headeren
Idempotency-Replayed: true. Samme nøgle med en anden metode, sti,Content-Typeeller brødtekst returnerer409 api.idempotency_mismatch; mens den første anmodning stadig kører,409 api.idempotency_in_progressmedRetry-After: 1. Efter et 5xx- eller 429-svar frigives nøglen, og et nyt forsøg udfører operationen igen. Nøglen gælder for organisationen og den kaldende part (API-nøgle, bruger eller nøgle til en brugerdefineret kilde).length ≥ 1, length ≤ 255
Anmodningens brødtekst
application/json
sha256stringpåkrævetSHA-256 for hele filen.
partsarray of UploadPartRefValgfri kontrol af delene: ETag for hver del, som returneret af
PUT …/parts/{n}.items ≤ 1000
Svar
200Resultatet er klar: `ready` eller `rejected`.
Svarets headere
RateLimit-PolicyGældende grænser i formatet fra IETF-udkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer"<name>";q=<quota>;w=<window in seconds>.keyer API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er detuser, uden legitimationsoplysningerip);minute,dayogmonther organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.RateLimitHvad der er tilbage af hver grænse i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrænsen for den strengeste post i
RateLimit-Policy(den med færrest resterende anmodninger).X-RateLimit-RemainingResterende anmodninger under den strengeste grænse.
X-RateLimit-ResetSekunder, til den strengeste grænse nulstilles.
Idempotency-Replayedtruebetyder, at svaret blev afspillet igen fra det gemte svar for denneIdempotency-Key: operationen blev ikke udført igen.
application/json
idstringpåkrævetUploadens id (
upl_efterfulgt af 32 hexadecimale tegn).filenamestringpåkrævetFilnavnet (uden mapper).
content_typestringpåkrævetDen angivne indholdstype; tom, hvis den ikke er angivet.
sizeinteger (int64)påkrævetFilens størrelse i byte.
sha256string | nullpåkrævetFilens SHA-256, angivet ved oprettelsen eller ved
complete;null, hvis den endnu ikke kendes.part_sizeinteger (int64)påkrævetStørrelsen på hver del undtagen den sidste (fra 5 til 100 MiB).
part_countintegerpåkrævetAntal dele.
≥ 1, ≤ 1000
parts_receivedintegerpåkrævetAntal modtagne dele.
≥ 0
De modtagne dele efter nummer (tom i svaret på
POST /v1/uploads).reject_reasonstring | nullpåkrævetÅrsagen til afvisningen (
rejected):checksum_mismatch,type_mismatch,unsupported_format,infected,scan_unavailable,unsafe_content. Listen kan blive udvidet;null, hvis uploaden ikke er afvist.reject_detailsobject | nullpåkrævetDetaljer om afvisningen (filtypenavnet, det angivne og det registrerede format, kontrolsummer);
null, hvis uploaden ikke er afvist.created_atstring (date-time)påkrævetTidspunkt for oprettelsen af uploaden.
expires_atstring (date-time)påkrævetFristen for at afslutte uploaden og, når den er klar, for at bruge den.
completed_atstring (date-time) | nullpåkrævetTidspunkt, hvor kontrollen blev afsluttet (
readyellerrejected).consumed_atstring (date-time) | nullpåkrævetTidspunkt, hvor uploaden blev brugt (af et kort, et arkiv eller en import).
202Filen kontrolleres stadig (`processing`).
Svarets headere
RateLimit-PolicyGældende grænser i formatet fra IETF-udkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer"<name>";q=<quota>;w=<window in seconds>.keyer API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er detuser, uden legitimationsoplysningerip);minute,dayogmonther organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.RateLimitHvad der er tilbage af hver grænse i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrænsen for den strengeste post i
RateLimit-Policy(den med færrest resterende anmodninger).X-RateLimit-RemainingResterende anmodninger under den strengeste grænse.
X-RateLimit-ResetSekunder, til den strengeste grænse nulstilles.
Idempotency-Replayedtruebetyder, at svaret blev afspillet igen fra det gemte svar for denneIdempotency-Key: operationen blev ikke udført igen.
application/json
idstringpåkrævetUploadens id (
upl_efterfulgt af 32 hexadecimale tegn).filenamestringpåkrævetFilnavnet (uden mapper).
content_typestringpåkrævetDen angivne indholdstype; tom, hvis den ikke er angivet.
sizeinteger (int64)påkrævetFilens størrelse i byte.
sha256string | nullpåkrævetFilens SHA-256, angivet ved oprettelsen eller ved
complete;null, hvis den endnu ikke kendes.part_sizeinteger (int64)påkrævetStørrelsen på hver del undtagen den sidste (fra 5 til 100 MiB).
part_countintegerpåkrævetAntal dele.
≥ 1, ≤ 1000
parts_receivedintegerpåkrævetAntal modtagne dele.
≥ 0
De modtagne dele efter nummer (tom i svaret på
POST /v1/uploads).reject_reasonstring | nullpåkrævetÅrsagen til afvisningen (
rejected):checksum_mismatch,type_mismatch,unsupported_format,infected,scan_unavailable,unsafe_content. Listen kan blive udvidet;null, hvis uploaden ikke er afvist.reject_detailsobject | nullpåkrævetDetaljer om afvisningen (filtypenavnet, det angivne og det registrerede format, kontrolsummer);
null, hvis uploaden ikke er afvist.created_atstring (date-time)påkrævetTidspunkt for oprettelsen af uploaden.
expires_atstring (date-time)påkrævetFristen for at afslutte uploaden og, når den er klar, for at bruge den.
completed_atstring (date-time) | nullpåkrævetTidspunkt, hvor kontrollen blev afsluttet (
readyellerrejected).consumed_atstring (date-time) | nullpåkrævetTidspunkt, hvor uploaden blev brugt (af et kort, et arkiv eller en import).
401Der blev ikke sendt legitimationsoplysninger (hverken en sessionscookie eller en API-nøgle), eller nøglen blev ikke fundet.
Svarets headere
RateLimit-PolicyGældende grænser i formatet fra IETF-udkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer"<name>";q=<quota>;w=<window in seconds>.keyer API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er detuser, uden legitimationsoplysningerip);minute,dayogmonther organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.RateLimitHvad der er tilbage af hver grænse i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrænsen for den strengeste post i
RateLimit-Policy(den med færrest resterende anmodninger).X-RateLimit-RemainingResterende anmodninger under den strengeste grænse.
X-RateLimit-ResetSekunder, til den strengeste grænse nulstilles.
application/json
403Handlingen er ikke tilladt: rollen er utilstrækkelig, der er ingen adgang til samlingen eller kortet, anmodningen kører i tilstanden »View as«, eller organisationen er suspenderet eller slettet (`detail` er et objekt med `code: org_suspended | org_deleted`).
Svarets headere
RateLimit-PolicyGældende grænser i formatet fra IETF-udkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer"<name>";q=<quota>;w=<window in seconds>.keyer API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er detuser, uden legitimationsoplysningerip);minute,dayogmonther organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.RateLimitHvad der er tilbage af hver grænse i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrænsen for den strengeste post i
RateLimit-Policy(den med færrest resterende anmodninger).X-RateLimit-RemainingResterende anmodninger under den strengeste grænse.
X-RateLimit-ResetSekunder, til den strengeste grænse nulstilles.
application/json
404Objektet findes ikke eller er ikke tilgængeligt for dig. API’et bekræfter ikke, at et begrænset objekt findes.
Svarets headere
RateLimit-PolicyGældende grænser i formatet fra IETF-udkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer"<name>";q=<quota>;w=<window in seconds>.keyer API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er detuser, uden legitimationsoplysningerip);minute,dayogmonther organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.RateLimitHvad der er tilbage af hver grænse i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrænsen for den strengeste post i
RateLimit-Policy(den med færrest resterende anmodninger).X-RateLimit-RemainingResterende anmodninger under den strengeste grænse.
X-RateLimit-ResetSekunder, til den strengeste grænse nulstilles.
application/json
409Objektets tilstand tillader ikke handlingen, fx en dublet, en igangværende indeksering eller et job, der allerede er behandlet.
Svarets headere
RateLimit-PolicyGældende grænser i formatet fra IETF-udkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer"<name>";q=<quota>;w=<window in seconds>.keyer API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er detuser, uden legitimationsoplysningerip);minute,dayogmonther organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.RateLimitHvad der er tilbage af hver grænse i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrænsen for den strengeste post i
RateLimit-Policy(den med færrest resterende anmodninger).X-RateLimit-RemainingResterende anmodninger under den strengeste grænse.
X-RateLimit-ResetSekunder, til den strengeste grænse nulstilles.
application/json
410Objektet fandtes, men er ikke længere tilgængeligt: linket er brugt eller udløbet, eller filen blev slettet ved udgangen af dens opbevaringsperiode.
Svarets headere
RateLimit-PolicyGældende grænser i formatet fra IETF-udkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer"<name>";q=<quota>;w=<window in seconds>.keyer API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er detuser, uden legitimationsoplysningerip);minute,dayogmonther organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.RateLimitHvad der er tilbage af hver grænse i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrænsen for den strengeste post i
RateLimit-Policy(den med færrest resterende anmodninger).X-RateLimit-RemainingResterende anmodninger under den strengeste grænse.
X-RateLimit-ResetSekunder, til den strengeste grænse nulstilles.
application/json
422Valideringsfejl: brødteksten eller parametrene svarer ikke til skemaet (`detail` er en liste over valideringsfejl), eller en parameterværdi ligger uden for det tilladte interval (`detail` er en meddelelse).
Svarets headere
RateLimit-PolicyGældende grænser i formatet fra IETF-udkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer"<name>";q=<quota>;w=<window in seconds>.keyer API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er detuser, uden legitimationsoplysningerip);minute,dayogmonther organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.RateLimitHvad der er tilbage af hver grænse i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrænsen for den strengeste post i
RateLimit-Policy(den med færrest resterende anmodninger).X-RateLimit-RemainingResterende anmodninger under den strengeste grænse.
X-RateLimit-ResetSekunder, til den strengeste grænse nulstilles.
application/json
429For mange anmodninger (`api.rate_limited`), organisationens kvote for minuttet, dagen eller måneden er brugt op (`api.quota_exceeded`; `error.details` indeholder `quota`, `limit` og `reset_at`), organisationens grænse er nået, eller svartjenesten er optaget (`answers.engine_busy`). Vent den tid, der står i headeren `Retry-After`.
Svarets headere
Retry-AfterAntal sekunder, du skal vente, før du prøver anmodningen igen.
RateLimit-PolicyGældende grænser i formatet fra IETF-udkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer"<name>";q=<quota>;w=<window in seconds>.keyer API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er detuser, uden legitimationsoplysningerip);minute,dayogmonther organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.RateLimitHvad der er tilbage af hver grænse i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrænsen for den strengeste post i
RateLimit-Policy(den med færrest resterende anmodninger).X-RateLimit-RemainingResterende anmodninger under den strengeste grænse.
X-RateLimit-ResetSekunder, til den strengeste grænse nulstilles.
application/json
Fejlkoder
Koder, som denne operation kan returnere i error.code, ud over de generelle koder for alle anmodninger.
Sikre nye forsøg
Send en Idempotency-Key-header (fx et UUID) med hver POST og PATCH. Et nyt forsøg med den samme nøgle inden for 24 timer returnerer det gemte svar i stedet for at køre anmodningen igen.
Hastighedsgrænser
Svarene har headerne RateLimit og RateLimit-Policy samt de tidligere X-RateLimit-Limit, X-RateLimit-Remaining og X-RateLimit-Reset. Et 429-svar har Retry-After i sekunder: Vent, og forsøg igen.