Gem tekst ordret
Ikke alt, der skal ligge i Dokumenter, er en fil, der skal læses med OCR. En kladde gemt som JSON, et frasekatalog som CSV, en side som HTML eller en note i Markdown er allerede læsbar tekst — og den skal komme tilbage præcis, som den blev gemt: samme tegn, samme linjeskift, samme rækkefølge.
Derfor kan tekst i fire formater gemmes ordret:
| Format | Gemmes som |
|---|---|
json | Teksten præcis som sendt. Den skal være gyldig JSON, men den bliver aldrig formateret om. |
csv | Teksten præcis som sendt — også semikolon, BOM-tegn og Windows-linjeskift. |
html | Teksten præcis som sendt. Den vises som tekst, ikke som en side. |
markdown | Teksten præcis som sendt. Den vises som tekst, ikke formateret. |
PDF, Word og billeder kan ikke gemmes på denne måde. De uploades som før, så de bliver læst med OCR — se Upload dokument.
Hvad du får tilbage
Et ordret gemt dokument returneres byte for byte af både Hent Dokument-byggeklodsen og API'et (GET /api/v1/documents/{id}). Dokumentets format fortæller, hvilken slags tekst det er: ocr for et uploadet dokument, ellers det format, teksten blev gemt i. På dokumentsiden står formatet som et mærke (fx JSON), og indholdet vises præcis, som det er gemt, sammen med dokumentets version.
Uploadede dokumenter er uændrede: de hedder ocr og returnerer den tekst, OCR læste.
To måder at gemme på
Fra et flow: "Gem i dokumenter"
Byggeklodsen Gem i dokumenter gemmer det, et flow har lavet. Dokumentet tilhører den person, der kører flowet. En kørsel uden en person bag — en webhook, en planlagt kørsel eller en indlejring — kan ikke gemme i Dokumenter, fordi ingen kan eje dokumentet; byggeklodsen stopper med en besked, der siger det.
Testkørsler gemmer ikke
En accepttest, en gentest og en kørsel af et flow, der ikke er gemt, laver ingen dokumenter — ellers ville en anmelder, der kører en sag 20 gange, efterlade 20 dokumenter, og en accepttest kunne ikke gentages med samme resultat. Byggeklodsen kontrollerer alt som ved en rigtig gemning (format, størrelse, team, mappe, ret til at ændre og version), men skriver intet: Dokument-id er en stedfortræder (den samme hver gang for samme input — eller det dokument, der skulle have været erstattet), Version er den version, dokumentet ville have fået, og Besked siger, at det var en testkørsel. Rigtige kørsler gemmer: Kør i editoren på et gemt flow, en bruger der kører den udgivne app (Galleri, API-nøgle, chat, miniapp), og en app brugt som byggeklods i en af dem.
Fra en anden app: API'et
En frontend, der selv har en logget-ind bruger, kan gemme direkte uden at køre et flow:
POST /api/v1/documents/verbatim
Authorization: Bearer <brugerens token>
Content-Type: application/json
{"name": "Lokalplan 12 – udkast", "format": "json", "content": "{\"titel\": \"Lokalplan 12\"}",
"access_level": "TEAM", "team_id": "<team-id>", "folder_id": "<mappe-id>"}
Det kræver rollen Udvikler eller højere — samme grænse som en upload. Svaret er dokumentet med content_version: 1 og en ETag-header.
Ret en kladde: version og If-Match
En kladde, der rettes tit, opdateres på stedet i stedet for at blive gemt som et nyt dokument hver gang:
PUT /api/v1/documents/{id}/content
If-Match: "1"
Content-Type: application/json
{"content": "{\"titel\": \"Lokalplan 12\", \"status\": \"høring\"}"}
If-Matcher den version, du har rettet i — den, du fik med, da du hentede dokumentet (content_versionellerETag).- Er den gemte version stadig den samme, gemmes det nye indhold, og versionen tælles op med én.
- Har en anden gemt i mellemtiden, svarer API'et 409 med en dansk besked, og intet bliver overskrevet. Hent den nyeste version, og prøv igen.
- Uden
If-Matchsvarer API'et 428 — en gemning uden version kunne overskrive en andens arbejde.
Kun dokumentets ejer eller en administrator kan erstatte indholdet — samme regel som for at omdøbe det. Et uploadet (OCR) dokuments tekst kan ikke erstattes; gem i stedet et nyt dokument.
Der gemmes ingen historik ved en erstatning. Skal tidligere udgaver bevares — fx et korpus som frasekatalog, rubrik eller lovtekster — så gem hver udgave som et nyt dokument i samme mappe.
Grænser
- Højst 8 MB tekst pr. dokument (målt i UTF-8). Et større dokument afvises med en besked; del det op.
- Teksten må ikke indeholde NUL-tegnet (
\u0000), som databasen ikke kan gemme. Det afvises i stedet for at blive fjernet i stilhed.
Find dokumenterne igen
GET /api/v1/documents kan filtrere på folder_id, tag, document_type, format og team_id. Filtrene indsnævrer kun det, du i forvejen må se — ingen af dem giver adgang til mere.