Hoppa till innehållet
Sursa Developers

POST/v1/uploads/{upload_id}/complete

Slutför en uppladdning

complete_upload

När alla delar har tagits emot sätter Sursa ihop filen, jämför SHA-256 för hela filen med sha256 i brödtexten och kör samma kontroller som vid en uppladdning i ett enda anrop: formatet efter innehållets signatur och virussökning. Resultatet är ready, eller rejected med reject_reason (checksum_mismatch, type_mismatch, unsupported_format, infected, scan_unavailable, unsafe_content). Varje avvisning från format- eller viruskontrollen skrivs till granskningsloggen som file.rejected.

Ett svar 200 betyder att resultatet är klart; 202 betyder att filen fortfarande kontrolleras (processing), och resultatet hämtas med GET /v1/uploads/{upload_id}. Om statusen går tillbaka till pending (en omstart av en API-instans avbröt kontrollen) skickar du complete igen. Om complete upprepas efter resultatet returneras samma resultat. Saknade delar returnerar 409 uploads.incomplete (details.missing). En sha256 som skiljer sig från den som deklarerades när uppladdningen skapades, eller en parts[].etag som skiljer sig från en mottagen del, returnerar 422 uploads.checksum_mismatch. En klar uppladdning som inte används finns kvar i 24 timmar. Tillagd i 1.62.0.

Autentisering

Skicka en API-nyckel i huvudet Authorization: Authorization: Bearer <nyckel>.

Sökvägsparametrar

  • upload_idstringobligatorisk

    Uppladdningens id (upl_ följt av 32 hexadecimala tecken).

    length ≤ 64

Parametrar i huvuden

  • Idempotency-Keystring

    Nyckel för ett säkert nytt försök med en skrivning: 1–255 utskrivbara ASCII-tecken; ett UUID v4 per logisk åtgärd rekommenderas. Ett nytt försök med samma nyckel inom 24 timmar kör inte åtgärden igen, utan returnerar det sparade svaret (status, huvuden och brödtext) med huvudet Idempotency-Replayed: true. Samma nyckel med en annan metod, sökväg, Content-Type eller brödtext returnerar 409 api.idempotency_mismatch; medan det första anropet fortfarande pågår returneras 409 api.idempotency_in_progress med Retry-After: 1. Efter ett 5xx- eller 429-svar frigörs nyckeln, och ett nytt försök kör åtgärden igen. Nyckeln gäller inom organisationen och för anroparen (API-nyckel, användare eller källnyckel för en egen källa).

    length ≥ 1, length ≤ 255

Anropets brödtext

application/json

Objekt: UploadComplete

  • sha256stringobligatorisk

    SHA-256 för hela filen.

  • partsarray of UploadPartRef

    Valfri kontroll av delarna: ETag för varje del så som den returneras av PUT …/parts/{n}.

    items ≤ 1000

Svar

200Resultatet är klart: `ready` eller `rejected`.

Svarshuvuden

  • RateLimit-Policy

    Gällande gränser i formatet från IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster "<name>";q=<quota>;w=<window in seconds>. key är API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är det user, utan autentiseringsuppgifter ip); minute, day och month är organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.

  • RateLimit

    Vad som återstår av varje gräns i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Gränsen för den striktaste posten i RateLimit-Policy (den med minst antal återstående anrop).

  • X-RateLimit-Remaining

    Återstående anrop inom den striktaste gränsen.

  • X-RateLimit-Reset

    Sekunder tills den striktaste gränsen nollställs.

  • Idempotency-Replayed

    true betyder att svaret spelades upp från det sparade svaret för denna Idempotency-Key: åtgärden kördes inte igen.

application/json

Objekt: Upload

  • idstringobligatorisk

    Uppladdningens id (upl_ följt av 32 hexadecimala tecken).

  • purposeUploadPurposeobligatorisk
  • filenamestringobligatorisk

    Filnamnet (utan mappar).

  • content_typestringobligatorisk

    Den angivna innehållstypen; tom om den inte har angetts.

  • sizeinteger (int64)obligatorisk

    Filens storlek i byte.

  • sha256string | nullobligatorisk

    Filens SHA-256, angiven när uppladdningen skapades eller vid complete; null om den inte är känd ännu.

  • statusUploadStatusobligatorisk
  • part_sizeinteger (int64)obligatorisk

    Storleken på varje del utom den sista (från 5 till 100 MiB).

  • part_countintegerobligatorisk

    Antalet delar.

    ≥ 1, ≤ 1000

  • parts_receivedintegerobligatorisk

    Antalet mottagna delar.

    ≥ 0

  • partsarray of UploadPartobligatorisk

    De mottagna delarna efter nummer (tomt i svaret på POST /v1/uploads).

  • reject_reasonstring | nullobligatorisk

    Orsaken till avvisningen (rejected): checksum_mismatch, type_mismatch, unsupported_format, infected, scan_unavailable, unsafe_content. Uppräkningen kan utökas; null om uppladdningen inte har avvisats.

  • reject_detailsobject | nullobligatorisk

    Detaljer om avvisningen (filändelsen, det angivna och det identifierade formatet, kontrollsummor); null om uppladdningen inte har avvisats.

  • created_atstring (date-time)obligatorisk

    När uppladdningen skapades.

  • expires_atstring (date-time)obligatorisk

    Tidsfristen för att slutföra uppladdningen och, när den är klar, för att använda den.

  • completed_atstring (date-time) | nullobligatorisk

    När kontrollen avslutades (ready eller rejected).

  • consumed_atstring (date-time) | nullobligatorisk

    När uppladdningen användes (av ett kort, ett arkiv eller en import).

202Filen kontrolleras fortfarande (`processing`).

Svarshuvuden

  • RateLimit-Policy

    Gällande gränser i formatet från IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster "<name>";q=<quota>;w=<window in seconds>. key är API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är det user, utan autentiseringsuppgifter ip); minute, day och month är organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.

  • RateLimit

    Vad som återstår av varje gräns i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Gränsen för den striktaste posten i RateLimit-Policy (den med minst antal återstående anrop).

  • X-RateLimit-Remaining

    Återstående anrop inom den striktaste gränsen.

  • X-RateLimit-Reset

    Sekunder tills den striktaste gränsen nollställs.

  • Idempotency-Replayed

    true betyder att svaret spelades upp från det sparade svaret för denna Idempotency-Key: åtgärden kördes inte igen.

application/json

Objekt: Upload

  • idstringobligatorisk

    Uppladdningens id (upl_ följt av 32 hexadecimala tecken).

  • purposeUploadPurposeobligatorisk
  • filenamestringobligatorisk

    Filnamnet (utan mappar).

  • content_typestringobligatorisk

    Den angivna innehållstypen; tom om den inte har angetts.

  • sizeinteger (int64)obligatorisk

    Filens storlek i byte.

  • sha256string | nullobligatorisk

    Filens SHA-256, angiven när uppladdningen skapades eller vid complete; null om den inte är känd ännu.

  • statusUploadStatusobligatorisk
  • part_sizeinteger (int64)obligatorisk

    Storleken på varje del utom den sista (från 5 till 100 MiB).

  • part_countintegerobligatorisk

    Antalet delar.

    ≥ 1, ≤ 1000

  • parts_receivedintegerobligatorisk

    Antalet mottagna delar.

    ≥ 0

  • partsarray of UploadPartobligatorisk

    De mottagna delarna efter nummer (tomt i svaret på POST /v1/uploads).

  • reject_reasonstring | nullobligatorisk

    Orsaken till avvisningen (rejected): checksum_mismatch, type_mismatch, unsupported_format, infected, scan_unavailable, unsafe_content. Uppräkningen kan utökas; null om uppladdningen inte har avvisats.

  • reject_detailsobject | nullobligatorisk

    Detaljer om avvisningen (filändelsen, det angivna och det identifierade formatet, kontrollsummor); null om uppladdningen inte har avvisats.

  • created_atstring (date-time)obligatorisk

    När uppladdningen skapades.

  • expires_atstring (date-time)obligatorisk

    Tidsfristen för att slutföra uppladdningen och, när den är klar, för att använda den.

  • completed_atstring (date-time) | nullobligatorisk

    När kontrollen avslutades (ready eller rejected).

  • consumed_atstring (date-time) | nullobligatorisk

    När uppladdningen användes (av ett kort, ett arkiv eller en import).

401Inga autentiseringsuppgifter skickades (varken en sessionscookie eller en API-nyckel), eller så hittades inte nyckeln.

Svarshuvuden

  • RateLimit-Policy

    Gällande gränser i formatet från IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster "<name>";q=<quota>;w=<window in seconds>. key är API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är det user, utan autentiseringsuppgifter ip); minute, day och month är organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.

  • RateLimit

    Vad som återstår av varje gräns i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Gränsen för den striktaste posten i RateLimit-Policy (den med minst antal återstående anrop).

  • X-RateLimit-Remaining

    Återstående anrop inom den striktaste gränsen.

  • X-RateLimit-Reset

    Sekunder tills den striktaste gränsen nollställs.

application/json

Objekt: Error

403Åtgärden är inte tillåten: rollen räcker inte, det saknas åtkomst till samlingen eller kortet, anropet körs i läget ”View as” (visa som en annan användare), eller organisationen är avstängd eller borttagen (`detail` är ett objekt med `code: org_suspended | org_deleted`).

Svarshuvuden

  • RateLimit-Policy

    Gällande gränser i formatet från IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster "<name>";q=<quota>;w=<window in seconds>. key är API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är det user, utan autentiseringsuppgifter ip); minute, day och month är organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.

  • RateLimit

    Vad som återstår av varje gräns i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Gränsen för den striktaste posten i RateLimit-Policy (den med minst antal återstående anrop).

  • X-RateLimit-Remaining

    Återstående anrop inom den striktaste gränsen.

  • X-RateLimit-Reset

    Sekunder tills den striktaste gränsen nollställs.

application/json

Objekt: Error

404Objektet finns inte eller är inte tillgängligt för dig. API:et bekräftar inte att ett begränsat objekt finns.

Svarshuvuden

  • RateLimit-Policy

    Gällande gränser i formatet från IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster "<name>";q=<quota>;w=<window in seconds>. key är API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är det user, utan autentiseringsuppgifter ip); minute, day och month är organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.

  • RateLimit

    Vad som återstår av varje gräns i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Gränsen för den striktaste posten i RateLimit-Policy (den med minst antal återstående anrop).

  • X-RateLimit-Remaining

    Återstående anrop inom den striktaste gränsen.

  • X-RateLimit-Reset

    Sekunder tills den striktaste gränsen nollställs.

application/json

Objekt: Error

409Objektets tillstånd tillåter inte åtgärden, till exempel en dubblett, en pågående indexering eller ett jobb som redan har bearbetats.

Svarshuvuden

  • RateLimit-Policy

    Gällande gränser i formatet från IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster "<name>";q=<quota>;w=<window in seconds>. key är API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är det user, utan autentiseringsuppgifter ip); minute, day och month är organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.

  • RateLimit

    Vad som återstår av varje gräns i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Gränsen för den striktaste posten i RateLimit-Policy (den med minst antal återstående anrop).

  • X-RateLimit-Remaining

    Återstående anrop inom den striktaste gränsen.

  • X-RateLimit-Reset

    Sekunder tills den striktaste gränsen nollställs.

application/json

Objekt: Error

410Objektet fanns men är inte längre tillgängligt: länken har använts eller har gått ut, eller filen togs bort när lagringstiden löpte ut.

Svarshuvuden

  • RateLimit-Policy

    Gällande gränser i formatet från IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster "<name>";q=<quota>;w=<window in seconds>. key är API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är det user, utan autentiseringsuppgifter ip); minute, day och month är organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.

  • RateLimit

    Vad som återstår av varje gräns i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Gränsen för den striktaste posten i RateLimit-Policy (den med minst antal återstående anrop).

  • X-RateLimit-Remaining

    Återstående anrop inom den striktaste gränsen.

  • X-RateLimit-Reset

    Sekunder tills den striktaste gränsen nollställs.

application/json

Objekt: Error

422Valideringsfel: brödtexten eller parametrarna stämmer inte med schemat (`detail` är en lista med valideringsfel), eller så ligger ett parametervärde utanför det tillåtna intervallet (`detail` är ett meddelande).

Svarshuvuden

  • RateLimit-Policy

    Gällande gränser i formatet från IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster "<name>";q=<quota>;w=<window in seconds>. key är API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är det user, utan autentiseringsuppgifter ip); minute, day och month är organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.

  • RateLimit

    Vad som återstår av varje gräns i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Gränsen för den striktaste posten i RateLimit-Policy (den med minst antal återstående anrop).

  • X-RateLimit-Remaining

    Återstående anrop inom den striktaste gränsen.

  • X-RateLimit-Reset

    Sekunder tills den striktaste gränsen nollställs.

application/json

Objekt: Error

429För många anrop (`api.rate_limited`), organisationens kvot för minuten, dygnet eller månaden är förbrukad (`api.quota_exceeded`; `error.details` innehåller `quota`, `limit` och `reset_at`), organisationens gräns är nådd eller svarstjänsten är upptagen (`answers.engine_busy`). Vänta den tid som anges i huvudet `Retry-After`.

Svarshuvuden

  • Retry-After

    Antal sekunder att vänta innan du skickar anropet igen.

  • RateLimit-Policy

    Gällande gränser i formatet från IETF-utkastet draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster "<name>";q=<quota>;w=<window in seconds>. key är API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är det user, utan autentiseringsuppgifter ip); minute, day och month är organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.

  • RateLimit

    Vad som återstår av varje gräns i RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Gränsen för den striktaste posten i RateLimit-Policy (den med minst antal återstående anrop).

  • X-RateLimit-Remaining

    Återstående anrop inom den striktaste gränsen.

  • X-RateLimit-Reset

    Sekunder tills den striktaste gränsen nollställs.

application/json

Objekt: Error

Felkoder

Koder som den här slutpunkten kan returnera i error.code, utöver de allmänna koderna för alla anrop.

Säkra nya försök

Skicka huvudet Idempotency-Key (till exempel ett UUID) med varje POST och PATCH. Ett nytt försök med samma nyckel inom 24 timmar returnerar det sparade svaret i stället för att köra anropet igen.

Hastighetsbegränsningar

Svaren innehåller huvudena RateLimit och RateLimit-Policy samt de tidigare X-RateLimit-Limit, X-RateLimit-Remaining och X-RateLimit-Reset. Ett 429-svar har Retry-After i sekunder: vänta och försök igen.

← uploads · API-referens