OpenTechnical Open technical disclosures for industrial technology

Read-only API

Public, no key, JSON. Ordinary publication files are static and can simply be fetched; this API exists for metadata, search and the integrity record.

GET /api/v1/publications/{id} One publication's metadata, hashes, categories and file links. example
GET /api/v1/publications/{id}/manifest The signed manifest, exactly as published.
GET /api/v1/publications/{id}/integrity The full evidence record: hashes, signature, timestamps, external retrievals, custody.
GET /api/v1/publications List and filter. ?published_date= ?year= ?category= ?q= ?limit= ?cursor=. Pagination is keyset, not offset: follow next_cursor.
GET /api/v1/search?q= Full-text search with paragraph-level excerpts.
GET /api/v1/categories The whole taxonomy with publication counts.
GET /api/v1/categories/{CAT-id or path} One category and its children.
GET /api/v1/log/{YYYY-MM-DD} One day of the append-only publication log.
GET /api/v1/stats Corpus size and evidence coverage.
GET /integrity/keys.json Every signing key we have ever used, with activation and retirement dates.

Static files, no API needed

https://opentechnical.org/p/OT-2026-000000001 https://opentechnical.org/p/OT-2026-000000001/publication.txt https://opentechnical.org/p/OT-2026-000000001/publication.md https://opentechnical.org/p/OT-2026-000000001/publication.pdf https://opentechnical.org/p/OT-2026-000000001/manifest.json https://opentechnical.org/p/OT-2026-000000001/manifest.sig https://opentechnical.org/p/OT-2026-000000001/merkle-proof.json

These are served with Cache-Control: public, max-age=31536000, immutable, because they never change.

Feeds and sitemaps

/feed/latest.xml Atom, newest publications /feed/latest.json JSON Feed, with hashes attached /feed/{category}.xml Atom for one branch of the taxonomy /sitemaps/index.xml Sitemap index /robots.txt