Gå til indholdet
Sursa Developers

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ævet

    Uploadens id (upl_ efterfulgt af 32 hexadecimale tegn).

    length ≤ 64

Headerparametre

  • Idempotency-Keystring

    Nø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-Type eller brødtekst returnerer 409 api.idempotency_mismatch; mens den første anmodning stadig kører, 409 api.idempotency_in_progress med Retry-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

Objekt: UploadComplete

  • sha256stringpåkrævet

    SHA-256 for hele filen.

  • partsarray of UploadPartRef

    Valgfri 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-Policy

    Gældende grænser i formatet fra IETF-udkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer "<name>";q=<quota>;w=<window in seconds>. key er API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er det user, uden legitimationsoplysninger ip); minute, day og month er organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.

  • RateLimit

    Hvad der er tilbage af hver grænse i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grænsen for den strengeste post i RateLimit-Policy (den med færrest resterende anmodninger).

  • X-RateLimit-Remaining

    Resterende anmodninger under den strengeste grænse.

  • X-RateLimit-Reset

    Sekunder, til den strengeste grænse nulstilles.

  • Idempotency-Replayed

    true betyder, at svaret blev afspillet igen fra det gemte svar for denne Idempotency-Key: operationen blev ikke udført igen.

application/json

Objekt: Upload

  • idstringpåkrævet

    Uploadens id (upl_ efterfulgt af 32 hexadecimale tegn).

  • purposeUploadPurposepåkrævet
  • filenamestringpåkrævet

    Filnavnet (uden mapper).

  • content_typestringpåkrævet

    Den angivne indholdstype; tom, hvis den ikke er angivet.

  • sizeinteger (int64)påkrævet

    Filens størrelse i byte.

  • sha256string | nullpåkrævet

    Filens SHA-256, angivet ved oprettelsen eller ved complete; null, hvis den endnu ikke kendes.

  • statusUploadStatuspåkrævet
  • part_sizeinteger (int64)påkrævet

    Størrelsen på hver del undtagen den sidste (fra 5 til 100 MiB).

  • part_countintegerpåkrævet

    Antal dele.

    ≥ 1, ≤ 1000

  • parts_receivedintegerpåkrævet

    Antal modtagne dele.

    ≥ 0

  • partsarray of UploadPartpåkrævet

    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ævet

    Detaljer om afvisningen (filtypenavnet, det angivne og det registrerede format, kontrolsummer); null, hvis uploaden ikke er afvist.

  • created_atstring (date-time)påkrævet

    Tidspunkt for oprettelsen af uploaden.

  • expires_atstring (date-time)påkrævet

    Fristen for at afslutte uploaden og, når den er klar, for at bruge den.

  • completed_atstring (date-time) | nullpåkrævet

    Tidspunkt, hvor kontrollen blev afsluttet (ready eller rejected).

  • consumed_atstring (date-time) | nullpåkrævet

    Tidspunkt, hvor uploaden blev brugt (af et kort, et arkiv eller en import).

202Filen kontrolleres stadig (`processing`).

Svarets headere

  • RateLimit-Policy

    Gældende grænser i formatet fra IETF-udkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer "<name>";q=<quota>;w=<window in seconds>. key er API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er det user, uden legitimationsoplysninger ip); minute, day og month er organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.

  • RateLimit

    Hvad der er tilbage af hver grænse i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grænsen for den strengeste post i RateLimit-Policy (den med færrest resterende anmodninger).

  • X-RateLimit-Remaining

    Resterende anmodninger under den strengeste grænse.

  • X-RateLimit-Reset

    Sekunder, til den strengeste grænse nulstilles.

  • Idempotency-Replayed

    true betyder, at svaret blev afspillet igen fra det gemte svar for denne Idempotency-Key: operationen blev ikke udført igen.

application/json

Objekt: Upload

  • idstringpåkrævet

    Uploadens id (upl_ efterfulgt af 32 hexadecimale tegn).

  • purposeUploadPurposepåkrævet
  • filenamestringpåkrævet

    Filnavnet (uden mapper).

  • content_typestringpåkrævet

    Den angivne indholdstype; tom, hvis den ikke er angivet.

  • sizeinteger (int64)påkrævet

    Filens størrelse i byte.

  • sha256string | nullpåkrævet

    Filens SHA-256, angivet ved oprettelsen eller ved complete; null, hvis den endnu ikke kendes.

  • statusUploadStatuspåkrævet
  • part_sizeinteger (int64)påkrævet

    Størrelsen på hver del undtagen den sidste (fra 5 til 100 MiB).

  • part_countintegerpåkrævet

    Antal dele.

    ≥ 1, ≤ 1000

  • parts_receivedintegerpåkrævet

    Antal modtagne dele.

    ≥ 0

  • partsarray of UploadPartpåkrævet

    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ævet

    Detaljer om afvisningen (filtypenavnet, det angivne og det registrerede format, kontrolsummer); null, hvis uploaden ikke er afvist.

  • created_atstring (date-time)påkrævet

    Tidspunkt for oprettelsen af uploaden.

  • expires_atstring (date-time)påkrævet

    Fristen for at afslutte uploaden og, når den er klar, for at bruge den.

  • completed_atstring (date-time) | nullpåkrævet

    Tidspunkt, hvor kontrollen blev afsluttet (ready eller rejected).

  • consumed_atstring (date-time) | nullpåkrævet

    Tidspunkt, 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-Policy

    Gældende grænser i formatet fra IETF-udkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer "<name>";q=<quota>;w=<window in seconds>. key er API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er det user, uden legitimationsoplysninger ip); minute, day og month er organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.

  • RateLimit

    Hvad der er tilbage af hver grænse i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grænsen for den strengeste post i RateLimit-Policy (den med færrest resterende anmodninger).

  • X-RateLimit-Remaining

    Resterende anmodninger under den strengeste grænse.

  • X-RateLimit-Reset

    Sekunder, til den strengeste grænse nulstilles.

application/json

Objekt: Error

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-Policy

    Gældende grænser i formatet fra IETF-udkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer "<name>";q=<quota>;w=<window in seconds>. key er API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er det user, uden legitimationsoplysninger ip); minute, day og month er organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.

  • RateLimit

    Hvad der er tilbage af hver grænse i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grænsen for den strengeste post i RateLimit-Policy (den med færrest resterende anmodninger).

  • X-RateLimit-Remaining

    Resterende anmodninger under den strengeste grænse.

  • X-RateLimit-Reset

    Sekunder, til den strengeste grænse nulstilles.

application/json

Objekt: Error

404Objektet findes ikke eller er ikke tilgængeligt for dig. API’et bekræfter ikke, at et begrænset objekt findes.

Svarets headere

  • RateLimit-Policy

    Gældende grænser i formatet fra IETF-udkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer "<name>";q=<quota>;w=<window in seconds>. key er API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er det user, uden legitimationsoplysninger ip); minute, day og month er organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.

  • RateLimit

    Hvad der er tilbage af hver grænse i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grænsen for den strengeste post i RateLimit-Policy (den med færrest resterende anmodninger).

  • X-RateLimit-Remaining

    Resterende anmodninger under den strengeste grænse.

  • X-RateLimit-Reset

    Sekunder, til den strengeste grænse nulstilles.

application/json

Objekt: Error

409Objektets tilstand tillader ikke handlingen, fx en dublet, en igangværende indeksering eller et job, der allerede er behandlet.

Svarets headere

  • RateLimit-Policy

    Gældende grænser i formatet fra IETF-udkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer "<name>";q=<quota>;w=<window in seconds>. key er API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er det user, uden legitimationsoplysninger ip); minute, day og month er organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.

  • RateLimit

    Hvad der er tilbage af hver grænse i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grænsen for den strengeste post i RateLimit-Policy (den med færrest resterende anmodninger).

  • X-RateLimit-Remaining

    Resterende anmodninger under den strengeste grænse.

  • X-RateLimit-Reset

    Sekunder, til den strengeste grænse nulstilles.

application/json

Objekt: Error

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-Policy

    Gældende grænser i formatet fra IETF-udkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer "<name>";q=<quota>;w=<window in seconds>. key er API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er det user, uden legitimationsoplysninger ip); minute, day og month er organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.

  • RateLimit

    Hvad der er tilbage af hver grænse i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grænsen for den strengeste post i RateLimit-Policy (den med færrest resterende anmodninger).

  • X-RateLimit-Remaining

    Resterende anmodninger under den strengeste grænse.

  • X-RateLimit-Reset

    Sekunder, til den strengeste grænse nulstilles.

application/json

Objekt: Error

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-Policy

    Gældende grænser i formatet fra IETF-udkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer "<name>";q=<quota>;w=<window in seconds>. key er API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er det user, uden legitimationsoplysninger ip); minute, day og month er organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.

  • RateLimit

    Hvad der er tilbage af hver grænse i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grænsen for den strengeste post i RateLimit-Policy (den med færrest resterende anmodninger).

  • X-RateLimit-Remaining

    Resterende anmodninger under den strengeste grænse.

  • X-RateLimit-Reset

    Sekunder, til den strengeste grænse nulstilles.

application/json

Objekt: Error

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-After

    Antal sekunder, du skal vente, før du prøver anmodningen igen.

  • RateLimit-Policy

    Gældende grænser i formatet fra IETF-udkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerede elementer "<name>";q=<quota>;w=<window in seconds>. key er API-nøglens anmodningshastighed (kvoten er burst, vinduet er tiden til fuld genopfyldning; for en session er det user, uden legitimationsoplysninger ip); minute, day og month er organisationens kvoter for kalenderminuttet, kalenderdagen og kalendermåneden i UTC.

  • RateLimit

    Hvad der er tilbage af hver grænse i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grænsen for den strengeste post i RateLimit-Policy (den med færrest resterende anmodninger).

  • X-RateLimit-Remaining

    Resterende anmodninger under den strengeste grænse.

  • X-RateLimit-Reset

    Sekunder, til den strengeste grænse nulstilles.

application/json

Objekt: Error

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.

← uploads · API-reference