Skip to content

Pipelines

A pipeline is further processing that the platform runs to enrich your resources after they are saved. Pipelines run asynchronously: you request one as part of a write operation, and the platform reports its progress and outcome on the resource.

Currently one pipeline is available — the Manifest text pipeline, described below. More are planned: in particular, pipelines that generate Adjuncts from existing content (for example, deriving annotations from OCR) are a planned capability, and this page will grow as they land.

A stored IIIF Manifest can ask the platform to index the text associated with its assets — their ALTO Adjuncts — for search. (Only ALTO is indexed: a plain-text adjunct is served alongside the asset but does not feed the search index.) Supply the pipeline property on the Manifest create or update:

"pipeline": [
{"name": "text", "config": {"action": "Index"}}
]

The one recognised pipeline is name: "text" with config.action: "Index"; unrecognised pipeline entries are silently dropped on write.

A create with a pipeline returns 202 Accepted, and the pipeline’s progress is visible in the Manifest’s API view:

"pipeline": [
{
"name": "text",
"config": {"action": "Index"},
"status": "Waiting",
"created": "2026-09-10T14:40:58Z"
}
]

While a pipeline is pending, the Manifest is held in staging: its public URL returns 404 until the pipeline completes, so the public never sees a half-enriched Manifest. On completion the entry moves from pipeline to finishedPipelines, with finished set and a final statusCompleted when text was indexed, or CompletedNoOperation with "warning": "No text resources found" when the Manifest’s assets had no text to index. A failed job carries error instead.

When text has been indexed, the public Manifest’s @context gains the IIIF Content Search context, and the Manifest is augmented with a IIIF Content Search 2 service, with a nested autocomplete service — viewers that support Content Search get search-within-this-manifest for free:

"service": [
{
"id": "https://dlcs.example/search/v2/99/iiif/ms-125",
"type": "SearchService2",
"profile": "http://iiif.io/api/search/2/search",
"label": {"en": ["Search within this manifest"]},
"service": [
{
"id": "https://dlcs.example/autocomplete/v2/99/iiif/ms-125",
"type": "AutoCompleteService2",
"profile": "http://iiif.io/api/search/2/autocomplete",
"label": {"en": ["Autocomplete words in this manifest"]}
}
]
}
]

Deleting the Manifest also removes these text-search artefacts.