Nightly JSON snapshots
HTTPS · unauthenticated · checksummed LiveThe full indexed dataset, served as one JSON file. Fetch without authentication, archive anywhere, replay into your own system.
GET /api/snapshots/latest.jsonGraphQL is the primary surface, but not the only one. Integrators can pull snapshots, subscribe to feeds, receive webhooks, mirror from IPFS, or consume the raw operation log. All surfaces share the same schema and the same CC0 object format.
The full indexed dataset, served as one JSON file. Fetch without authentication, archive anywhere, replay into your own system.
GET /api/snapshots/latest.jsonOne entry per grant pool, ordered by close date. Subscribe from any aggregator.
GET /api/feeds/rfps.rssEvery pool is emitted as parallel JSON-LD documents — DAOstar DAOIP-5 GrantPool and schema.org/MonetaryGrant. Projections absorb upstream schema drift.
GET /api/rfps/<id>/daoip-5.jsonldGET /api/rfps/<id>/schema-org.jsonldRegister a URL; receive a signed POST on every addRfp / approve / update / retract / claim-community-entry operation. Exponential-backoff retry with dead-letter queue after five failures.
POST /webhooks/register { url, events[] }GET /webhooks/<id>/deliveries// Register once per subscription
POST /webhooks/register
Content-Type: application/json
{
"url": "https://your-service.example/hub",
"events": ["addRfp", "approve", "update"]
}
// You receive signed POSTs like:
POST https://your-service.example/hub
X-Hub-Signature: sha256=abc123…
{
"id": "evt_01HXYZ…",
"event": "addRfp",
"documentId": "f9041488-8531-4e30-aabc-eeb60f36a2de",
"sequence": 41278,
"timestamp": "2026-04-22T17:42:11.003Z",
"data": { … full rfp-hub/grant-pool document … }
}A read-model projection publishes signed operation payloads to Swarm via bee-reactor-adaptor and IPFS via a co-pinning service. Third parties can archive and replicate without touching our API.
GET /mirrors/ipfs.jsonGET /mirrors/swarm.json{
"@context": "https://www.daostar.org/context/DAOIP-5.jsonld",
"@type": "OperationMirror",
"snapshotAt": "2026-04-22T02:00:00Z",
"ipfsCid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
"swarmRef":
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"operations": 41278,
"signer": "did:key:zDnaeRdw7dGcbfKVuycmcMWPpuPuQuNNAVNSsNt3p5eudowvB"
}Subscribe to the raw, append-only operation log for deterministic replay into your own reactor. Every operation is signed; ordering is preserved.
ws /operations/streamGET /operations?sinceSeq=<n>// Pull-based (REST, since sequence N)
GET /operations?sinceSeq=41275
[
{ "seq": 41275, "documentId": "fae7…", "type": "ADD_POOL_SIZE_ENTRY", … },
{ "seq": 41276, "documentId": "fae7…", "type": "SET_DESCRIPTION", … },
{ "seq": 41277, "documentId": "3df1…", "type": "APPROVE_GRANT_POOL", … },
…
]
// Push-based (WebSocket, live stream)
ws /operations/stream
> {"resume": 41278}
< {"seq": 41278, "documentId": "…", "type": "…", "signer": "did:ethr:…"}