POST/v1/cards/archive
Upload et arkiv med dokumenter
upload_card_archive
Send et ZIP-arkiv i feltet file i en formular af typen multipart/form-data. Hver understøttet fil i arkivet bliver et separat dokument som ved enkeltuploads (POST /v1/cards). ASiC-signaturcontainere (.asice, .sce, .bdoc, .asics) er også arkiver: deres datafiler bliver dokumenter, META-INF/ springes over, og signaturen valideres ikke. Formularens felter er de samme som ved upload af en fil (samling, tags, ejer, kategori, følsomhed), uden forhåndsvisning.
Arkivet kontrolleres efter signatur (et omdøbt Office-dokument tæller ikke som et arkiv og returnerer 415 files.type_mismatch), installationens grænse for upload gælder, og antivirusscanningen omfatter hele arkivet.
Indholdsfortegnelsen kontrolleres synkront. Svaret indeholder planen (hvilke filer der bliver dokumenter, hvilke der springes over og hvorfor) og jobbet til udpakning af arkivet (job_id, batch_id). Jobbet åbner underarkiver (som standard op til 3 niveauer), kontrollerer hvert dokument efter signatur og antivirus og sætter det i kø til almindelig indeksering med samme batch_id (dokumenternes fremdrift: GET /v1/jobs?batch=). Resultatet kan hentes med GET /v1/archives/{job_id}.
Grænser (installationens standarder): op til 1000 filer i hele træet (flere returnerer 413 cards.archive_too_many_files), op til 2048 MB udpakket (mere returnerer 413 cards.archive_too_large) og ikke mere end organisationens resterende lagerplads i prisplanen (402 limits.storage), grænsen for upload pr. fil for hver fil i arkivet og et komprimeringsforhold på højst 100:1 pr. post. Poster med »..«, en absolut sti eller et drevbogstav, symbolske links, krypterede poster og formater, der ikke understøttes, springes over med en begrundelse (skipped[].reason). Systemfiler fra styresystemet, mapper og tomme filer springes over uden besked (ignored). Navne, der ikke er i UTF-8, læses som cp866 eller cp1251. En fil, der ikke er en ZIP, returnerer 400 cards.archive_invalid, et fuldt krypteret arkiv returnerer 400 cards.archive_encrypted, og et arkiv uden ét eneste dokument returnerer 400 cards.archive_empty.
Hvert dokument husker sit arkiv: CardVersion.archive og Card.source_archive (kortet viser arkivet for sin aktuelle version).
I stedet for formularen kan du sende en brødtekst af typen application/json (ArchiveUploadFromUpload, fra 1.62.0): arkivet er en færdig multipart-upload upload_id (formålet archive), felterne er de samme som i formularen, og tags er en liste af strenge. Arkivet blev allerede kontrolleret ved complete, og størrelsesgrænsen er grænsen for multipart-upload i stedet for grænsen for upload i én anmodning. Uploaden bruges én gang, i den samme transaktion, som sætter jobbet til udpakning af arkivet i kø; fejlkoderne for uploads er de samme som for POST /v1/cards.
Autentificering
Send en API-nøgle i headeren Authorization: Authorization: Bearer <nøgle>.
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
X-View-AsstringKun for API-nøgler med rollen
admin. Udfører anmodningen som dataprofilen<profile>[:viewer|verifier|editor], fxemployee:viewer. Installationsnøglen kan ikke bruge denne header (403).
Cookieparametre
kb_view_asstringCookie for tilstanden »View as« i en session.
POST /auth/view-assætter den, ogDELETE /auth/view-asfjerner den.
Anmodningens brødtekst
multipart/form-data
filestring (application/zip)påkrævetcollectionstringStandard: "default"
tagsstringStandard: ""
forcebooleanStandard: false
owner_idinteger | nullverify_interval_daysinteger | nullcategorystring | nullsensitiveboolean | nullfolder_idstring | nullMappe i
collection, som alle arkivets dokumenter skal placeres i. En mappe i en anden samling returnerer400 folders.card_collection_mismatch, en manglende mappe returnerer404 folders.not_found, og uden tilladelsenCOLLECTION_EDIT_CARDSpå mappen returneres403 authz.forbidden. Kontrollen køres, før arkivet gemmes. Dubletter af filer, der allerede er uploadet, flyttes ikke til mappen.length ≤ 64
collection_idinteger | nullSamling efter id. Angives
collectionogså, harcollection_idforrang. En samling, der ikke findes i organisationen eller ikke er synlig, returnerer404 collections.not_found.
application/json
Objekt: ArchiveUploadFromUpload
upload_idstringpåkrævetEn færdig upload (
ready) med formåletarchive; den bruges én gang.collectionstringStandard: "default"
collection_idinteger | nullSamling efter id. Sendes
collectionogså, harcollection_idforrang. En samling, der ikke findes i organisationen, ikke er synlig eller ligger uden for nøglens samlinger, returnerer404 collections.not_found.tagsarray of stringitems ≤ 30
forcebooleanStandard: false
owner_idinteger | nullverify_interval_daysinteger | nullcategorystring | nullsensitiveboolean | nullfolder_idstring | nulllength ≤ 64
Svar
200Plan for udpakning og job
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
job_idintegerpåkrævetbatch_idstringpåkrævetBatch af indekseringsjob for arkivets dokumenter (
GET /v1/jobs?batch=).statusstringpåkrævetTilladte værdier:
queuedplannedarray of stringpåkrævetStier til filerne på alle niveauer, der bliver til dokumenter, herunder filer i underarkiver (
b.zip/c.pdf).documentsintegerpåkrævetAntal dokumenter på alle niveauer, herunder filer i underarkiver. Resultatet af udpakningen giver samme antal: oprettede + dubletter + afvist af indholdskontrollen (
ArchiveJob).nested_archivesintegerpåkrævetignoredintegerpåkrævetSystemposter (styresystemets filer, mapper, tomme filer, containersignaturer).
400Anmodningen er ugyldig: en parameterværdi eller objektets tilstand tillader ikke handlingen (`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
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
402Organisationen har nået en grænse i prisplanen (kort, lagerplads eller brugere). `error.details` indeholder `kind`, `limit` og `used`.
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
413Anmodningens brødtekst overskrider den tilladte størrelse.
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
415Filformatet understøttes ikke.
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
503En tjeneste, som denne anmodning afhænger af, er midlertidigt utilgængelig. Prøv igen senere.
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
Fejlkoder
Koder, som denne operation kan returnere i error.code, ud over de generelle koder for alle anmodninger.
- 409api.idempotency_in_progress
- 400api.idempotency_key_invalid
- 409api.idempotency_mismatch
- 401auth.not_authenticated
- 403auth.system_scope
- 403authz.forbidden
- 400cards.archive_empty
- 400cards.archive_encrypted
- 400cards.archive_invalid
- 413cards.archive_too_large
- 413cards.archive_too_many_files
- 400categories.unknown
- 400collections.invalid_name
- 403collections.no_write_access
- 404collections.not_found
- 422files.infected
- 503files.scan_unavailable
- 413files.too_large
- 415files.type_mismatch
- 400folders.card_collection_mismatch
- 404folders.not_found
- 402limits.storage
- 403org.deleted
- 403org.suspended
- 409uploads.already_used
- 410uploads.expired
- 404uploads.not_found
- 409uploads.not_ready
- 422uploads.purpose_mismatch
- 422uploads.rejected
- 400users.not_in_org
- 422validation.failed
- 403view_as.read_only
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.