POST/v1/uploads
Upload in delen starten
create_upload
Opent een uploadsessie voor een groot bestand (tot de limiet van de installatie voor uploads in delen, standaard 5 GB): de naam, het inhoudstype, de grootte en het purpose, dat aangeeft waarvoor de upload wordt gebruikt: card_file (POST /v1/cards), archive (POST /v1/cards/archive) of import_attachment (een bijlage van een document van een eigen bron). De response bevat de id (upl_ gevolgd door 32 hexadecimale tekens), de grootte van de delen part_size en het aantal delen part_count. Elk deel behalve het laatste is precies part_size bytes (van 5 tot 100 MiB), en het laatste deel is de rest. Een onvoltooide upload blijft 24 uur bestaan (expires_at).
Een extensie van de bestandsnaam buiten de formaten van het doel geeft 415 uploads.unsupported_format (een bijlage van een import accepteert elke extensie). Een bestand dat groter is dan de limiet van de installatie of de totale opslag van de organisatie volgens haar abonnement, geeft 413 uploads.too_large. Onvoldoende resterende opslag, de onvoltooide uploads van de organisatie meegerekend, geeft 402 limits.storage.
Delen gaan via Sursa (PUT /v1/uploads/{upload_id}/parts/{n}) en worden in de bestandsopslag versleuteld met de sleutel van de organisatie; er zijn geen directe links naar de opslag. Alleen de API-sleutel of gebruiker die de upload heeft gemaakt, kan hem zien en gebruiken. Toegevoegd in 1.62.0.
Authenticatie
Stuur een API-sleutel mee in de header Authorization: Authorization: Bearer <sleutel>.
Headerparameters
Idempotency-KeystringSleutel om een schrijfactie veilig opnieuw te proberen: 1 tot 255 afdrukbare ASCII-tekens; een UUID v4 per logische bewerking wordt aanbevolen. Een nieuwe poging met dezelfde sleutel binnen 24 uur voert de bewerking niet opnieuw uit: Sursa geeft de opgeslagen response terug (status, headers en body) met de header
Idempotency-Replayed: true. Dezelfde sleutel met een andere methode, een ander pad, een andereContent-Typeof een andere body geeft409 api.idempotency_mismatch; zolang het eerste request nog loopt,409 api.idempotency_in_progressmetRetry-After: 1. Na een 5xx- of 429-response wordt de sleutel vrijgegeven en voert een nieuwe poging de bewerking opnieuw uit. De sleutel geldt per organisatie en per aanroeper (API-sleutel, gebruiker of bronsleutel).length ≥ 1, length ≤ 255
Request-body
application/json
filenamestringverplichtDe bestandsnaam met extensie; de extensie bepaalt het formaat.
length ≥ 1, length ≤ 255
content_typestringHet opgegeven inhoudstype (MIME); het wordt vergeleken met de signatuur van de inhoud van het bestand.
length ≤ 255
sizeinteger (int64)verplichtDe bestandsgrootte in bytes.
≥ 1
sha256stringDe SHA-256 van het bestand, als die vooraf bekend is;
completevergelijkt de controlesom ermee.
Responses
201De uploadsessie is gemaakt.
Responseheaders
RateLimit-PolicyGeldende limieten, in het formaat van het IETF-concept
draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s,"<name>";q=<quota>;w=<window in seconds>.keyis de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is hetuser, zonder authenticatiegegevensip);minute,dayenmonthzijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.RateLimitWat er over is van elke limiet in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimiet van de strengste regel in
RateLimit-Policy(die met de minste resterende requests).X-RateLimit-RemainingResterende requests onder de strengste limiet.
X-RateLimit-ResetSeconden tot de strengste limiet wordt teruggezet.
Idempotency-Replayedtrue: de response is opnieuw afgespeeld uit de opgeslagen response voor dezeIdempotency-Key; de bewerking is niet opnieuw uitgevoerd.
application/json
idstringverplichtDe ID van de upload (
upl_gevolgd door 32 hexadecimale tekens).filenamestringverplichtDe bestandsnaam (zonder mappen).
content_typestringverplichtHet opgegeven inhoudstype; leeg als het niet is opgegeven.
sizeinteger (int64)verplichtDe bestandsgrootte in bytes.
sha256string | nullverplichtDe SHA-256 van het bestand, opgegeven bij het aanmaken of bij
complete;nullals die nog niet bekend is.part_sizeinteger (int64)verplichtDe grootte van elk deel behalve het laatste (van 5 tot 100 MiB).
part_countintegerverplichtHet aantal delen.
≥ 1, ≤ 1000
parts_receivedintegerverplichtHet aantal ontvangen delen.
≥ 0
De ontvangen delen per nummer (leeg in de response van
POST /v1/uploads).reject_reasonstring | nullverplichtDe reden van de afwijzing (
rejected):checksum_mismatch,type_mismatch,unsupported_format,infected,scan_unavailable,unsafe_content. De enumeratie kan groeien;nullals de upload niet is afgewezen.reject_detailsobject | nullverplichtDetails van de afwijzing (de extensie, het opgegeven en het herkende formaat, de controlesommen);
nullals de upload niet is afgewezen.created_atstring (date-time)verplichtWanneer de upload is aangemaakt.
expires_atstring (date-time)verplichtDe uiterste termijn om de upload af te ronden en, zodra die klaar is, te gebruiken.
completed_atstring (date-time) | nullverplichtWanneer de controle klaar was (
readyofrejected).consumed_atstring (date-time) | nullverplichtWanneer de upload is gebruikt (door een kaart, een archief of een import).
401Er zijn geen authenticatiegegevens meegestuurd (geen sessiecookie en geen API-sleutel), of de sleutel is niet gevonden.
Responseheaders
RateLimit-PolicyGeldende limieten, in het formaat van het IETF-concept
draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s,"<name>";q=<quota>;w=<window in seconds>.keyis de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is hetuser, zonder authenticatiegegevensip);minute,dayenmonthzijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.RateLimitWat er over is van elke limiet in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimiet van de strengste regel in
RateLimit-Policy(die met de minste resterende requests).X-RateLimit-RemainingResterende requests onder de strengste limiet.
X-RateLimit-ResetSeconden tot de strengste limiet wordt teruggezet.
application/json
402De organisatie heeft een abonnementslimiet bereikt (kaarten, opslag of gebruikers). `error.details` bevat `kind`, `limit` en `used`.
Responseheaders
RateLimit-PolicyGeldende limieten, in het formaat van het IETF-concept
draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s,"<name>";q=<quota>;w=<window in seconds>.keyis de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is hetuser, zonder authenticatiegegevensip);minute,dayenmonthzijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.RateLimitWat er over is van elke limiet in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimiet van de strengste regel in
RateLimit-Policy(die met de minste resterende requests).X-RateLimit-RemainingResterende requests onder de strengste limiet.
X-RateLimit-ResetSeconden tot de strengste limiet wordt teruggezet.
application/json
403De actie is niet toegestaan: de rol volstaat niet, er is geen toegang tot de collectie of kaart, het request draait in de modus “View as”, of de organisatie is opgeschort of verwijderd (`detail` is een object met `code: org_suspended | org_deleted`).
Responseheaders
RateLimit-PolicyGeldende limieten, in het formaat van het IETF-concept
draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s,"<name>";q=<quota>;w=<window in seconds>.keyis de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is hetuser, zonder authenticatiegegevensip);minute,dayenmonthzijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.RateLimitWat er over is van elke limiet in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimiet van de strengste regel in
RateLimit-Policy(die met de minste resterende requests).X-RateLimit-RemainingResterende requests onder de strengste limiet.
X-RateLimit-ResetSeconden tot de strengste limiet wordt teruggezet.
application/json
413De request-body overschrijdt de toegestane grootte.
Responseheaders
RateLimit-PolicyGeldende limieten, in het formaat van het IETF-concept
draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s,"<name>";q=<quota>;w=<window in seconds>.keyis de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is hetuser, zonder authenticatiegegevensip);minute,dayenmonthzijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.RateLimitWat er over is van elke limiet in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimiet van de strengste regel in
RateLimit-Policy(die met de minste resterende requests).X-RateLimit-RemainingResterende requests onder de strengste limiet.
X-RateLimit-ResetSeconden tot de strengste limiet wordt teruggezet.
application/json
415Het bestandsformaat wordt niet ondersteund.
Responseheaders
RateLimit-PolicyGeldende limieten, in het formaat van het IETF-concept
draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s,"<name>";q=<quota>;w=<window in seconds>.keyis de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is hetuser, zonder authenticatiegegevensip);minute,dayenmonthzijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.RateLimitWat er over is van elke limiet in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimiet van de strengste regel in
RateLimit-Policy(die met de minste resterende requests).X-RateLimit-RemainingResterende requests onder de strengste limiet.
X-RateLimit-ResetSeconden tot de strengste limiet wordt teruggezet.
application/json
422Validatiefout: de body of de parameters komen niet overeen met het schema (`detail` is een lijst met validatiefouten), of een parameterwaarde valt buiten het bereik (`detail` is een melding).
Responseheaders
RateLimit-PolicyGeldende limieten, in het formaat van het IETF-concept
draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s,"<name>";q=<quota>;w=<window in seconds>.keyis de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is hetuser, zonder authenticatiegegevensip);minute,dayenmonthzijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.RateLimitWat er over is van elke limiet in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimiet van de strengste regel in
RateLimit-Policy(die met de minste resterende requests).X-RateLimit-RemainingResterende requests onder de strengste limiet.
X-RateLimit-ResetSeconden tot de strengste limiet wordt teruggezet.
application/json
429Te veel requests (`api.rate_limited`), het quotum van de organisatie voor de minuut, dag of maand is op (`api.quota_exceeded`; `error.details` bevat `quota`, `limit` en `reset_at`), de limiet van de organisatie is bereikt, of de antwoorddienst is bezet (`answers.engine_busy`). Wacht de tijd af die in de header `Retry-After` staat.
Responseheaders
Retry-AfterAantal seconden dat je moet wachten voordat je het request opnieuw probeert.
RateLimit-PolicyGeldende limieten, in het formaat van het IETF-concept
draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s,"<name>";q=<quota>;w=<window in seconds>.keyis de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is hetuser, zonder authenticatiegegevensip);minute,dayenmonthzijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.RateLimitWat er over is van elke limiet in
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimiet van de strengste regel in
RateLimit-Policy(die met de minste resterende requests).X-RateLimit-RemainingResterende requests onder de strengste limiet.
X-RateLimit-ResetSeconden tot de strengste limiet wordt teruggezet.
application/json
Foutcodes
Codes die dit endpoint in error.code kan teruggeven, naast de algemene codes van elk request.
Veilig opnieuw proberen
Stuur bij elke POST en PATCH een header Idempotency-Key mee (bijvoorbeeld een UUID). Een nieuwe poging met dezelfde sleutel binnen 24 uur geeft de opgeslagen response terug, zonder het request opnieuw uit te voeren.
Snelheidslimieten
Responses bevatten de headers RateLimit en RateLimit-Policy en de eerdere X-RateLimit-Limit, X-RateLimit-Remaining en X-RateLimit-Reset. Een response met status 429 bevat Retry-After in seconden: wacht en probeer het daarna opnieuw.