POST/v1/cards/archive
Nahrať archív dokumentov
upload_card_archive
Pošlite archív ZIP v poli file formulára multipart/form-data. Každý podporovaný súbor v ňom sa stane samostatným dokumentom, ako pri jednotlivých nahrávaniach (POST /v1/cards). Kontajnery podpisov ASiC (.asice, .sce, .bdoc, .asics) sú tiež archívy: ich dátové súbory sa stanú dokumentmi, META-INF/ sa preskočí a podpis sa neoveruje. Polia formulára sú rovnaké ako pri nahrávaní súboru (kolekcia, štítky, vlastník, kategória, citlivosť), bez náhľadu.
Archív sa kontroluje podľa signatúry (premenovaný dokument Office sa za archív nepovažuje a vráti 415 files.type_mismatch), platí limit nahrávania inštalácie a antivírusová kontrola pokrýva celý archív.
Zoznam súborov archívu sa kontroluje synchrónne. Odpoveď obsahuje plán (ktoré súbory sa stanú dokumentmi, ktoré sa preskočia a prečo) a úlohu rozbalenia (job_id, batch_id). Úloha otvorí vnorené archívy (predvolene najviac 3 úrovne), skontroluje každý dokument podľa signatúry a antivírusom a zaradí ho do frontu na bežné indexovanie s rovnakým batch_id (priebeh dokumentov: GET /v1/jobs?batch=). Výsledok je dostupný cez GET /v1/archives/{job_id}.
Limity (predvolené hodnoty inštalácie): najviac 1000 súborov v celom strome (viac vráti 413 cards.archive_too_many_files), najviac 2048 MB po rozbalení (viac vráti 413 cards.archive_too_large) a nie viac, než je zostávajúce úložisko organizácie podľa jej tarify (402 limits.storage), limit nahrávania jedného súboru pre každý súbor v archíve a kompresný pomer najviac 100:1 na položku. Položky s „..“, absolútnou cestou alebo písmenom jednotky, symbolické odkazy, šifrované položky a nepodporované formáty sa preskočia s uvedením dôvodu (skipped[].reason). Systémové súbory OS, adresáre a prázdne súbory sa preskočia potichu (ignored). Názvy, ktoré nie sú v UTF-8, sa čítajú ako cp866 alebo cp1251. Súbor, ktorý nie je ZIP, vráti 400 cards.archive_invalid, úplne zašifrovaný archív vráti 400 cards.archive_encrypted a archív bez jediného dokumentu vráti 400 cards.archive_empty.
Každý dokument si pamätá svoj archív: CardVersion.archive a Card.source_archive (karta zobrazuje archív svojej aktuálnej verzie).
Namiesto formulára môžete poslať telo application/json (ArchiveUploadFromUpload, od verzie 1.62.0): archívom je hotové viacdielne nahrávanie upload_id (účel archive), polia sú rovnaké ako vo formulári a tags je pole JSON reťazcov. Archív bol skontrolovaný už pri complete a limitom veľkosti je limit viacdielneho nahrávania namiesto limitu nahrávania jednou požiadavkou. Nahrávanie sa použije raz, v tej istej transakcii, ktorá zaradí úlohu rozbalenia do frontu; chybové kódy nahrávania sú rovnaké ako pri POST /v1/cards.
Autentifikácia
Odošlite kľúč API v hlavičke Authorization: Authorization: Bearer <kľúč>.
Parametre hlavičky
Idempotency-KeystringKľúč na bezpečné opakovanie zápisu: 1 až 255 tlačiteľných znakov ASCII; odporúča sa UUID v4 pre každú logickú operáciu. Opakovanie s tým istým kľúčom do 24 hodín operáciu znova nespustí: vráti uloženú odpoveď (stav, hlavičky a telo) s hlavičkou
Idempotency-Replayed: true. Ten istý kľúč s inou metódou, cestou,Content-Typealebo telom vráti409 api.idempotency_mismatch; kým prvá požiadavka ešte prebieha, vráti409 api.idempotency_in_progresssRetry-After: 1. Po odpovedi 5xx alebo 429 sa kľúč uvoľní a opakovanie operáciu spustí znova. Kľúč platí v rámci organizácie a volajúceho (kľúč API, používateľ alebo kľúč vlastného zdroja).length ≥ 1, length ≤ 255
X-View-AsstringLen pre kľúče API s rolou
admin. Vykoná požiadavku v mene dátového profilu<profile>[:viewer|verifier|editor], napríklademployee:viewer. Inštalačný kľúč túto hlavičku použiť nemôže (403).
Parametre cookie
kb_view_asstringSúbor cookie režimu „View as“ pre reláciu.
POST /auth/view-asho nastaví aDELETE /auth/view-asho odstráni.
Telo požiadavky
multipart/form-data
filestring (application/zip)povinnécollectionstringPredvolené: "default"
tagsstringPredvolené: ""
forcebooleanPredvolené: false
owner_idinteger | nullverify_interval_daysinteger | nullcategorystring | nullsensitiveboolean | nullfolder_idstring | nullPriečinok kolekcie
collection, do ktorého sa vložia všetky dokumenty archívu. Priečinok inej kolekcie vráti400 folders.card_collection_mismatch, neexistujúci priečinok vráti404 folders.not_founda chýbajúce oprávnenieCOLLECTION_EDIT_CARDSna priečinok vráti403 authz.forbidden. Kontrola prebehne pred uložením archívu. Duplikáty už nahratých súborov sa do priečinka nepresunú.length ≤ 64
collection_idinteger | nullKolekcia podľa ID. Ak sa odovzdá aj
collection, prednosť mácollection_id. Kolekcia, ktorá v organizácii neexistuje alebo nie je viditeľná, vráti404 collections.not_found.
application/json
Objekt: ArchiveUploadFromUpload
upload_idstringpovinnéPripravené nahrávanie (
ready) s účelomarchive; použije sa raz.collectionstringPredvolené: "default"
collection_idinteger | nullKolekcia podľa ID. Ak sa odovzdá aj
collection, prednosť mácollection_id. Kolekcia, ktorá v organizácii neexistuje, nie je viditeľná alebo je mimo kolekcií kľúča, vráti404 collections.not_found.tagsarray of stringitems ≤ 30
forcebooleanPredvolené: false
owner_idinteger | nullverify_interval_daysinteger | nullcategorystring | nullsensitiveboolean | nullfolder_idstring | nulllength ≤ 64
Odpovede
200Plán rozbalenia a úloha
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
Idempotency-Replayedtrueznamená, že odpoveď bola zopakovaná z uloženej odpovede pre tentoIdempotency-Key: operácia sa znova nespustila.
application/json
job_idintegerpovinnébatch_idstringpovinnéDávka úloh indexovania dokumentov archívu (
GET /v1/jobs?batch=).statusstringpovinnéPovolené hodnoty:
queuedplannedarray of stringpovinnéCesty k súborom na všetkých úrovniach, z ktorých vzniknú dokumenty, vrátane súborov vo vnorených archívoch (
b.zip/c.pdf).documentsintegerpovinnéPočet dokumentov na všetkých úrovniach vrátane súborov vo vnorených archívoch. Výsledok rozbalenia dáva v súčte rovnaké číslo: vytvorené + duplikáty + zamietnuté kontrolou obsahu (
ArchiveJob).nested_archivesintegerpovinnéignoredintegerpovinnéSystémové položky (súbory OS, adresáre, prázdne súbory, signatúry kontajnerov).
400Požiadavka je neplatná: hodnota parametra alebo stav objektu akciu nedovoľuje (`detail` je správa).
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
401Neboli odoslané žiadne prihlasovacie údaje (ani cookie relácie, ani kľúč API) alebo sa kľúč nenašiel.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
402Organizácia dosiahla limit tarify (karty, úložisko alebo používatelia). `error.details` obsahuje `kind`, `limit` a `used`.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
403Akcia nie je povolená: rola nestačí, chýba prístup ku kolekcii alebo karte, požiadavka beží v režime „View as“ alebo je organizácia pozastavená či odstránená (`detail` je objekt s `code: org_suspended | org_deleted`).
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
404Objekt neexistuje alebo vám nie je dostupný. API nepotvrdzuje, že objekt s obmedzeným prístupom existuje.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
409Stav objektu akciu nedovoľuje, napríklad duplicita, prebiehajúce indexovanie alebo úloha, ktorá je už spracovaná.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
410Objekt existoval, ale už nie je dostupný: odkaz bol použitý alebo mu vypršala platnosť, prípadne bol súbor odstránený na konci doby uchovávania.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
413Telo požiadavky presahuje povolenú veľkosť.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
415Formát súboru nie je podporovaný.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
422Chyba validácie: telo alebo parametre nezodpovedajú schéme (`detail` je zoznam chýb validácie) alebo je hodnota parametra mimo rozsahu (`detail` je správa).
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
429Príliš veľa požiadaviek (`api.rate_limited`), vyčerpaná kvóta organizácie na minútu, deň alebo mesiac (`api.quota_exceeded`; `error.details` obsahuje `quota`, `limit` a `reset_at`), dosiahnutý limit organizácie alebo zaneprázdnená služba odpovedí (`answers.engine_busy`). Počkajte čas uvedený v hlavičke `Retry-After`.
Hlavičky odpovede
Retry-AfterPočet sekúnd, ktoré treba počkať pred opakovaním požiadavky.
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
503Služba, od ktorej táto požiadavka závisí, je dočasne nedostupná. Skúste to znova neskôr.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
Chybové kódy
Kódy, ktoré táto operácia môže vrátiť v error.code, okrem všeobecných kódov každej požiadavky.
- 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
Bezpečné opakovanie
S každou požiadavkou POST a PATCH odošlite hlavičku Idempotency-Key (napríklad UUID). Opakovaná požiadavka s rovnakým kľúčom do 24 hodín vráti uloženú odpoveď namiesto toho, aby sa požiadavka vykonala znova.
Limity frekvencie
Odpovede obsahujú hlavičky RateLimit a RateLimit-Policy a staršie X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset. Odpoveď 429 má hlavičku Retry-After v sekundách: počkajte a požiadavku zopakujte.