DLU API
Document Logic Units (DLUs) are the logical-document layer above pages: a single libro of municipal acts contains many DLUs (one per session, deed, minute). Each DLU carries CIDOC-CRM-typed entities, events, and relationships, all anchored to (page, line) mentions. This tag holds the full CRUD surface plus the LLM-driven autofill and segmentation pipelines.
| Method | Path | Summary | Key params | Response |
|---|---|---|---|---|
| POST | /collections/{collection}/libros/{libro}/export | Bulk export a libro tree as AtoM CSV, EAD 2002 XML, EAC-CPF ZIP, or METS XML | collection (path:string)libro (path:integer)format (query:ExportFormat) | (no body) |
| GET | /dlus | List DLUs | — | DluSummaryDto[] |
| POST | /dlus | Create DLU | body: CreateDlu | (no body) |
| POST | /dlus/export-bulk | Export an explicit list of DLUs | dlu_ids (query:string)format (query:ExportFormat) | (no body) |
| GET | /dlus/extents | Bulk DLU extents lookup | — | (no body) |
| POST | /dlus/group | Group DLUs under a new parent | body: GroupDlusBody | (no body) |
| POST | /dlus/segment/{collection}/{libro} | Start auto-segmentation for a libro | collection (path:string)libro (path:string) | (no body) |
| GET | /dlus/segment/{collection}/{libro}/status | Poll segmentation job status | collection (path:string)libro (path:string) | (no body) |
| DELETE | /dlus/{id} | Delete DLU | id (path:integer) | (no body) |
| GET | /dlus/{id} | Get DLU envelope | id (path:integer) | DluDto |
| PATCH | /dlus/{id} | Update DLU | id (path:integer)body: UpdateDlu | (no body) |
| GET | /dlus/{id}/ancestors | List DLU ancestors | id (path:integer) | (no body) |
| GET | /dlus/{id}/annotations | List DLU annotations | id (path:integer) | AnnotationDto[] |
| POST | /dlus/{id}/annotations | Create DLU annotation | id (path:integer)body: CreateAnnotation | (no body) |
| POST | /dlus/{id}/autofill | Start LLM-driven autofill for a DLU | id (path:integer) | (no body) |
| POST | /dlus/{id}/autofill-retry | Retry autofill on failed pages | id (path:integer) | (no body) |
| GET | /dlus/{id}/autofill/status | Poll autofill job status | id (path:integer) | (no body) |
| GET | /dlus/{id}/children | List DLU children | id (path:integer) | DluSummaryDto[] |
| DELETE | /dlus/{id}/event-relations/{rel_id} | Delete event relation | id (path:integer)rel_id (path:integer) | (no body) |
| PATCH | /dlus/{id}/event-relations/{rel_id} | Update event relation | id (path:integer)rel_id (path:integer)body: UpdateEventRelation | (no body) |
| POST | /dlus/{id}/export | Export a DLU as AtoM CSV, ISAD(G) JSON, EAC-CPF XML, or METS XML | id (path:integer)format (query:ExportFormat) | (no body) |
| POST | /dlus/{id}/fuse-dlus | Fuse N source DLUs into a target DLU | id (path:integer)body: FuseDluBody | (no body) |
| POST | /dlus/{id}/fuse-entities | Fuse entity rows within a DLU | id (path:integer)body: FuseEntitiesBody | (no body) |
| POST | /dlus/{id}/geocode-places | Bulk-geocode un-geocoded places on a DLU | id (path:integer) | (no body) |
| PUT | /dlus/{id}/place-coords/{place_id} | Set place coordinates manually | id (path:integer)place_id (path:integer)body: SetCoordsBody | (no body) |
| PUT | /dlus/{id}/place-geocode/{place_id} | Apply a GeoNames candidate to a place | id (path:integer)place_id (path:integer)body: ApplyGeocodeBody | (no body) |
| GET | /dlus/{id}/premis-events | Standalone PREMIS preservation events for a DLU | id (path:integer) | (no body) |
| GET | /dlus/{id}/rollup | Roll up entities from child DLUs | id (path:integer) | (no body) |
| POST | /dlus/{id}/score-confidence | Compute embedding-based confidence scores | id (path:integer) | (no body) |
| POST | /dlus/{id}/split-entity | Split an entity row by mention indices | id (path:integer)body: SplitEntityBody | (no body) |
| GET | /dlus/{id}/text | Get DLU text | id (path:integer) | JSON |
| GET | /geocode-search | GeoNames candidate lookup for SME-driven geocoding | q (query:string) | (no body) |
| GET | /pages/{collection}/{libro}/{page}/dlus | DLUs covering a page | collection (path:string)libro (path:integer)page (path:integer) | (no body) |
Examples
Section titled “Examples”List DLUs in a libro
curl -H "X-API-Key: $API_KEY" \ "$ARCHAIC/dlus?collection=dipucoru&libro=1"Start an autofill job for one DLU
curl -X POST -H "X-API-Key: $API_KEY" \ "$ARCHAIC/dlus/{id}/autofill"See also
Section titled “See also”Anchored writes
Section titled “Anchored writes”The no-anchor-no-entry rule applies to every write that asserts an
entity, event, or relationship: each row must carry at least one
(page, line) mention with a confidence score, or the engine drops it at
write time. Bulk endpoints surface dropped rows in their per-id response so
callers can inspect.