SourcePage API dokumentace
Zdroj: sourcepage/api/README.mdAPI endpoint: resolve.php
Endpoint slouží pro dohledání skenu stránky podle tištěného čísla stránky napříč podporovanými zdroji.
Podporované typy vstupů
| Název | URL | Zdrojový identifikátor | URN / OAI | Wikidata Property |
|---|---|---|---|---|
| Archive.org | https://archive.org/details/gothaischerhofka00unse/page/n126/mode/2up | gothaischerhofka00unse | — | P724 |
| Digitale Sammlungen (BSB) | https://www.digitale-sammlungen.de/de/view/bsb10917624?page=5 | bsb10917624 | urn:nbn:de:bvb:12-bsb10917624-5 | — |
| Wienbibliothek Digital | https://digital.wienbibliothek.at/wbrobv/periodical/titleinfo/350012 | — | urn:nbn:at:AT-WBR-6550 / oai:www.digital.wienbibliothek.at:350012 | — |
| Sammlungen UB Frankfurt | https://sammlungen.ub.uni-frankfurt.de/freimann/content/titleinfo/6487687 | — | urn:nbn:de:hebis:30:1-148042 | P11981 |
| SBC (dLibra / PDF pipeline) | https://www.sbc.org.pl/dlibra/publication/814470 | — | oai:www.sbc.org.pl:814470 | — |
| ÖNB ANNO | https://anno.onb.ac.at/cgi-content/anno?aid=ztb&datum=18980922&seite=2&zoom=100 | ztb18980922 (interní IIIF manifest ID) | — | P9258 + request pole date |
| ÖNB Viewer | https://viewer.onb.ac.at/1321D635/ | 1321D635 | — | — |
| Kramerius (registry instance / NDK) | https://ndk.cz/uuid/uuid:45ce7d90-7518-11e8-b9d4-005056827e52 | 45ce7d90-7518-11e8-b9d4-005056827e52 | — | P13032 |
Poznámka: API podporuje také vstup Wikidata QID (Q12345) nebo URL položky (https://www.wikidata.org/wiki/Q12345). Resolver postupně zkouší dostupné vlastnosti dle priority chainu.
Poznámka k ANNO přes Wikidata: samotné P9258 nestačí pro konkrétní číslo periodika; pokud chce klient přes Wikidata resolver použít ANNO, musí v requestu dodat pole date ve formátu YYYYMMDD nebo YYYY-MM-DD, ze kterého se složí issue URL anno.onb.ac.at.
Prosté číslo bez prefixu: Prosté číslo bez specifikace zdroje se neakceptuje samostatně (brání nejasnostem mezi Frankfurt, Wienbibliothek a dalšími); je třeba zadat URL, URN, OAI identifikátor nebo Wikidata QID.
OAI identifikátory: OAI identifikátory jsou podporovány pro:
- Wienbibliothek Digital (
oai:www.digital.wienbibliothek.at:{id}) - SBC Wrocław (
oai:www.sbc.org.pl:{id})
Omezení URN:
- NBN URN (
urn:nbn:...) jsou plně podporovány přesnbn-resolving.org
URL a metoda
- URL:
/sourcepage/api/resolve - Metoda
POST: API lookup endpoint (Content-Type: application/json) - Metoda
GETbez query parametrů a bez body: vrátí tuto dokumentaci v HTML podobě
Poznámka: GET s query parametry nebo s body není podporován a vrací 405.
Request body
| Pole | Povinné | Popis |
|---|---|---|
input | ano | URL, URN, Wikidata QID nebo identifikátor (např. gothaischerhofka00unse, bsb10917624). |
page | ano | Tištěné číslo stránky (např. 24, III, 5a). |
date | ne | Datum čísla periodika pro případy, kdy je vstup Wikidata QID/URL s P9258; akceptuje YYYYMMDD nebo YYYY-MM-DD. |
Příklad requestu:
{
"input": "Q18029632",
"page": "24",
"date": "1898-09-22"
}Úspěšná odpověď
HTTP status: 200
{
"ok": true,
"status": 200,
"input": "Q18029632",
"date": "18980922",
"results": [
{
"source_type": "anno.onb.ac.at",
"resolved_input": "https://anno.onb.ac.at/cgi-content/anno?aid=wsb&datum=18980922",
"resolver_chain": ["wikidata", "P9258"],
"identifier": "wsb:18980922",
"page_number": "24",
"leaf_num": null,
"iiif_image_url": "https://iiif.onb.ac.at/images/ANNO/wsb18980922/.../full/full/0/default.jpg",
"iiif_canvas_url": "https://iiif.onb.ac.at/presentation/ANNO/wsb18980922/canvas/...",
"iiif_canvas_id": "https://iiif.onb.ac.at/presentation/ANNO/wsb18980922/canvas/...",
"viewer_url": "https://anno.onb.ac.at/cgi-content/anno?aid=wsb&datum=18980922&seite=24&zoom=100",
"manifest_url": "https://iiif.onb.ac.at/presentation/ANNO/wsb18980922/manifest",
"page_numbers_url": null,
"source_title": "...",
"source_date": "...",
"source_external_identifier": "..."
}
]
}Význam hlavních polí
| Pole | Popis |
|---|---|
input | Původní vstup z requestu. |
results | Pole výsledků; každý prvek popisuje jeden konkrétní nalezený výsledek. |
Pole v results[]:
| Pole | Popis |
|---|---|
source_type | Typ zdroje (archive.org, digitale-sammlungen.de, kramerius, ...). |
resolved_input | Interně rozřešený vstup pro daný výsledek (např. URL po překladu URN). |
resolver_chain | Jak byl vstup zpracován pro daný výsledek (url, urn, wikidata, ...). |
identifier | Normalizovaný identifikátor dokumentu/stránky. |
page_number | Vyhodnocené číslo stránky, které bylo nalezeno. |
leaf_num | Leaf číslo stránky (typicky jen pro archive.org). |
iiif_image_url | Přímá URL obrázku stránky. |
iiif_canvas_url | URL canvasu v IIIF. |
viewer_url | URL pro otevření stránky ve vieweru zdroje. |
document_url | Odkaz na dokument ve zdrojovém vieweru (pro PDF zdroje explicitně vracen). |
image_download_url | Odkaz na extrahovaný obrázek stránky uložený v lokální cache. |
PDF zdroje (SBC)
Pro doménu sbc.org.pl endpoint používá režim PDF pipeline:
1. Stáhne PDF dokument a uloží jej na 14 dní.
2. Extrahuje OCR textovou vrstvu a sestaví trvalý JSON page index.
3. Rozdělí PDF na obrázky po stránkách a ukládá je na 14 dní.
4. Vrátí document_url (SBC dokument) a image_download_url (lokální extrahovaný obrázek).
Poznámka: první request nad novým PDF dokumentem může běžet déle. Frontend proto zobrazuje průběžné stavové hlášky.
Poznámka: mapování page -> PDF stránka je best-effort podle OCR, ale pro číselné stránky se nad OCR kandidáty dopočítává nejpravděpodobnější spojitá řada. Při nenalezení přesného mapování je zdroj vrácen jako partial.
ÖNB IIIF
Detailní dokumentace k ÖNB IIIF je v samostatném souboru:
../docs/onb-iiif.md
Chybová odpověď
{
"ok": false,
"error": "Tištěná stránka nebyla v dokumentu nalezena.",
"error_code": "printed_page_not_found",
"status": 404
}Pole chybové odpovědi
| Pole | Popis |
|---|---|
ok | Vždy false. |
error | Textový popis chyby. |
error_code | Strojově čitelný kód chyby. |
status | HTTP status kód odpovědi (stejná hodnota jako ve status line). |
Běžné error_code
| error_code | HTTP | Popis |
|---|---|---|
method_not_allowed | 405 | Nepodporovaná metoda, nebo GET s parametry/body. |
missing_required_params | 400 | Chybí input nebo page v JSON body. |
sourcepage_api_unavailable | 502/5xx | FastAPI backend není dostupný přes PHP proxy. |
invalid_sourcepage_response | 502 | Backend vrátil neplatný JSON. |
printed_page_not_found | 404 | Stránka nebyla v dokumentu nalezena. |
unsupported_source | 422 | Zdroj/doména zatím není podporovaná. |
upstream_not_found | 404 | Upstream zdroj neexistuje nebo je nedostupný. |
HTTP status kódy
| HTTP status | Metoda | Popis |
|---|---|---|
200 | GET | Vrací dokumentaci API (jen bez parametrů a bez body). |
200 | POST | Úspěšné dohledání stránky (ok: true). |
204 | OPTIONS | Odpověď na preflight požadavek. |
400 | POST | Chybí povinná pole v JSON body. |
404 | POST | Stránka nebo upstream zdroj nebyl nalezen. |
405 | * | Nepodporovaná metoda nebo GET s parametry. |
422 | POST | Validace/proces selhal pro nepodporovaný zdroj. |
502 | POST | Chyba komunikace s backendem/upstreamem. |
Příklady volání
curl -sS -X POST 'https://tools.daelba.eu/sourcepage/api/resolve' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"input":"https://archive.org/details/gothaischerhofka00unse/page/n126/mode/2up","page":"24"}'curl -sS -X POST 'https://tools.daelba.eu/sourcepage/api/resolve' \
-H 'Content-Type: application/json' \
-d '{"input":"urn:nbn:de:bvb:12-bsb10917624-5","page":"3"}'curl -sS -X POST 'https://tools.daelba.eu/sourcepage/api/resolve' \
-H 'Content-Type: application/json' \
-d '{"input":"Q65682037","page":"3"}'