Hopp til innholdet
Sursa Developers

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_idstringobligatorisk

    Opplastingens ID (upl_ etterfulgt av 32 heksadesimale tegn).

    length ≤ 64

Headerparametere

  • Idempotency-Keystring

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

Objekt: UploadComplete

  • sha256stringobligatorisk

    SHA-256 for hele filen.

  • partsarray of UploadPartRef

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

    Gjeldende grenser i formatet fra IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer "<name>";q=<quota>;w=<window in seconds>. key er forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er det user, uten påloggingsinformasjon ip); minute, day og month er organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.

  • RateLimit

    Hva som gjenstår av hver grense i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grensen for den strengeste oppføringen i RateLimit-Policy (den med færrest gjenværende forespørsler).

  • X-RateLimit-Remaining

    Gjenværende forespørsler under den strengeste grensen.

  • X-RateLimit-Reset

    Sekunder til den strengeste grensen nullstilles.

  • Idempotency-Replayed

    true betyr at svaret ble gjentatt fra det lagrede svaret for denne Idempotency-Key: operasjonen ble ikke kjørt på nytt.

application/json

Objekt: Upload

  • idstringobligatorisk

    Opplastingens ID (upl_ etterfulgt av 32 heksadesimale tegn).

  • purposeUploadPurposeobligatorisk
  • filenamestringobligatorisk

    Filnavnet (uten mapper).

  • content_typestringobligatorisk

    Den oppgitte innholdstypen; tom hvis den ikke er oppgitt.

  • sizeinteger (int64)obligatorisk

    Filstørrelsen i byte.

  • sha256string | nullobligatorisk

    Filens SHA-256, oppgitt ved opprettelsen eller ved complete; null hvis den ikke er kjent ennå.

  • statusUploadStatusobligatorisk
  • part_sizeinteger (int64)obligatorisk

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

  • part_countintegerobligatorisk

    Antall deler.

    ≥ 1, ≤ 1000

  • parts_receivedintegerobligatorisk

    Antall mottatte deler.

    ≥ 0

  • partsarray of UploadPartobligatorisk

    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; null hvis opplastingen ikke er avvist.

  • reject_detailsobject | nullobligatorisk

    Detaljer om avvisningen (filtypen, det oppgitte og det oppdagede formatet, sjekksummer); null hvis opplastingen ikke er avvist.

  • created_atstring (date-time)obligatorisk

    Når opplastingen ble opprettet.

  • expires_atstring (date-time)obligatorisk

    Fristen for å fullføre opplastingen og, når den er klar, for å bruke den.

  • completed_atstring (date-time) | nullobligatorisk

    Når kontrollen ble fullført (ready eller rejected).

  • consumed_atstring (date-time) | nullobligatorisk

    Når opplastingen ble brukt (av et kort, et arkiv eller en import).

202Filen kontrolleres fortsatt (`processing`).

Headere i svaret

  • RateLimit-Policy

    Gjeldende grenser i formatet fra IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer "<name>";q=<quota>;w=<window in seconds>. key er forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er det user, uten påloggingsinformasjon ip); minute, day og month er organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.

  • RateLimit

    Hva som gjenstår av hver grense i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grensen for den strengeste oppføringen i RateLimit-Policy (den med færrest gjenværende forespørsler).

  • X-RateLimit-Remaining

    Gjenværende forespørsler under den strengeste grensen.

  • X-RateLimit-Reset

    Sekunder til den strengeste grensen nullstilles.

  • Idempotency-Replayed

    true betyr at svaret ble gjentatt fra det lagrede svaret for denne Idempotency-Key: operasjonen ble ikke kjørt på nytt.

application/json

Objekt: Upload

  • idstringobligatorisk

    Opplastingens ID (upl_ etterfulgt av 32 heksadesimale tegn).

  • purposeUploadPurposeobligatorisk
  • filenamestringobligatorisk

    Filnavnet (uten mapper).

  • content_typestringobligatorisk

    Den oppgitte innholdstypen; tom hvis den ikke er oppgitt.

  • sizeinteger (int64)obligatorisk

    Filstørrelsen i byte.

  • sha256string | nullobligatorisk

    Filens SHA-256, oppgitt ved opprettelsen eller ved complete; null hvis den ikke er kjent ennå.

  • statusUploadStatusobligatorisk
  • part_sizeinteger (int64)obligatorisk

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

  • part_countintegerobligatorisk

    Antall deler.

    ≥ 1, ≤ 1000

  • parts_receivedintegerobligatorisk

    Antall mottatte deler.

    ≥ 0

  • partsarray of UploadPartobligatorisk

    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; null hvis opplastingen ikke er avvist.

  • reject_detailsobject | nullobligatorisk

    Detaljer om avvisningen (filtypen, det oppgitte og det oppdagede formatet, sjekksummer); null hvis opplastingen ikke er avvist.

  • created_atstring (date-time)obligatorisk

    Når opplastingen ble opprettet.

  • expires_atstring (date-time)obligatorisk

    Fristen for å fullføre opplastingen og, når den er klar, for å bruke den.

  • completed_atstring (date-time) | nullobligatorisk

    Når kontrollen ble fullført (ready eller rejected).

  • consumed_atstring (date-time) | nullobligatorisk

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

    Gjeldende grenser i formatet fra IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer "<name>";q=<quota>;w=<window in seconds>. key er forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er det user, uten påloggingsinformasjon ip); minute, day og month er organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.

  • RateLimit

    Hva som gjenstår av hver grense i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grensen for den strengeste oppføringen i RateLimit-Policy (den med færrest gjenværende forespørsler).

  • X-RateLimit-Remaining

    Gjenværende forespørsler under den strengeste grensen.

  • X-RateLimit-Reset

    Sekunder til den strengeste grensen nullstilles.

application/json

Objekt: Error

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

    Gjeldende grenser i formatet fra IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer "<name>";q=<quota>;w=<window in seconds>. key er forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er det user, uten påloggingsinformasjon ip); minute, day og month er organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.

  • RateLimit

    Hva som gjenstår av hver grense i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grensen for den strengeste oppføringen i RateLimit-Policy (den med færrest gjenværende forespørsler).

  • X-RateLimit-Remaining

    Gjenværende forespørsler under den strengeste grensen.

  • X-RateLimit-Reset

    Sekunder til den strengeste grensen nullstilles.

application/json

Objekt: Error

404Objektet finnes ikke eller er ikke tilgjengelig for deg. API-et bekrefter ikke at et objekt med begrenset tilgang finnes.

Headere i svaret

  • RateLimit-Policy

    Gjeldende grenser i formatet fra IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer "<name>";q=<quota>;w=<window in seconds>. key er forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er det user, uten påloggingsinformasjon ip); minute, day og month er organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.

  • RateLimit

    Hva som gjenstår av hver grense i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grensen for den strengeste oppføringen i RateLimit-Policy (den med færrest gjenværende forespørsler).

  • X-RateLimit-Remaining

    Gjenværende forespørsler under den strengeste grensen.

  • X-RateLimit-Reset

    Sekunder til den strengeste grensen nullstilles.

application/json

Objekt: Error

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

    Gjeldende grenser i formatet fra IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer "<name>";q=<quota>;w=<window in seconds>. key er forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er det user, uten påloggingsinformasjon ip); minute, day og month er organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.

  • RateLimit

    Hva som gjenstår av hver grense i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grensen for den strengeste oppføringen i RateLimit-Policy (den med færrest gjenværende forespørsler).

  • X-RateLimit-Remaining

    Gjenværende forespørsler under den strengeste grensen.

  • X-RateLimit-Reset

    Sekunder til den strengeste grensen nullstilles.

application/json

Objekt: Error

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

    Gjeldende grenser i formatet fra IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer "<name>";q=<quota>;w=<window in seconds>. key er forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er det user, uten påloggingsinformasjon ip); minute, day og month er organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.

  • RateLimit

    Hva som gjenstår av hver grense i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grensen for den strengeste oppføringen i RateLimit-Policy (den med færrest gjenværende forespørsler).

  • X-RateLimit-Remaining

    Gjenværende forespørsler under den strengeste grensen.

  • X-RateLimit-Reset

    Sekunder til den strengeste grensen nullstilles.

application/json

Objekt: Error

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

    Gjeldende grenser i formatet fra IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer "<name>";q=<quota>;w=<window in seconds>. key er forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er det user, uten påloggingsinformasjon ip); minute, day og month er organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.

  • RateLimit

    Hva som gjenstår av hver grense i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grensen for den strengeste oppføringen i RateLimit-Policy (den med færrest gjenværende forespørsler).

  • X-RateLimit-Remaining

    Gjenværende forespørsler under den strengeste grensen.

  • X-RateLimit-Reset

    Sekunder til den strengeste grensen nullstilles.

application/json

Objekt: Error

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

    Antall sekunder du skal vente før du prøver forespørselen på nytt.

  • RateLimit-Policy

    Gjeldende grenser i formatet fra IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer "<name>";q=<quota>;w=<window in seconds>. key er forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er det user, uten påloggingsinformasjon ip); minute, day og month er organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.

  • RateLimit

    Hva som gjenstår av hver grense i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Grensen for den strengeste oppføringen i RateLimit-Policy (den med færrest gjenværende forespørsler).

  • X-RateLimit-Remaining

    Gjenværende forespørsler under den strengeste grensen.

  • X-RateLimit-Reset

    Sekunder til den strengeste grensen nullstilles.

application/json

Objekt: Error

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.

← uploads · API-referanse