Developer overview
Bitcoin Universe development is contract-first: services and documentation are generated from the same interface contracts, so a documented endpoint and a running endpoint cannot silently diverge.
Where interfaces live
Section titled “Where interfaces live”| Interface | Contract form | Where |
|---|---|---|
| Product REST APIs | OpenAPI 3.1 | Declared in each repository’s docs.manifest.json under contracts.openapi |
| Event and WebSocket interfaces | AsyncAPI | Declared under contracts.asyncapi |
| Protocol payloads and data models | JSON Schema | Declared under contracts.jsonSchema |
| Indexer HTTP APIs | OpenAPI, route prefix /<indexer-name>/ | The matching indexer repository |
Indexer API routes follow one convention across the estate: the route prefix is the indexer repository’s name with its index- prefix removed. Example: the Patina indexer serves under /patina/.
Ground rules for integrators
Section titled “Ground rules for integrators”- Trust the contract, not example responses. Examples are illustrative; the OpenAPI or AsyncAPI document is normative.
- Handle every availability state. APIs distinguish
unavailablefromemptyandunknownfrom zero. Treating a 5xx or an explicit unavailable state as “no results” corrupts downstream data. See How to read our status. - Respect stability badges. Endpoints marked experimental can change without notice; deprecated endpoints name their replacement and removal window.
- Never send secrets. No Universe API asks for seed phrases or private keys. Signing happens in your wallet, not on our servers.
Repository map
Section titled “Repository map”- Product source and documentation repositories: see the product catalog.
- Protocol specifications and vectors: see the Protocol Atlas.
- Shared CI actions used by every repository: universe-ci-actions.
- This portal itself: docs-platform. Its manifest schema, source pinning, and build tooling are public; documentation issues and content requests are welcome on any repository.