Sources
Canonical URL, resolved URL, format, validators, schedule, latest health, and ownership policy.
Understand sources →Turn mixed syndication formats into a stable developer-facing schema with guarded fetching, transparent warnings, cursor-based history, and explicit freshness.
Clients need to know what was requested, where it resolved, when it was observed, which format was parsed, and which fallbacks were applied.
{ "source": { "id": "src_01J...", "format": "rss2", "fetched_at": "2026-10-23T18:42:12Z", "freshness": "current" }, "items": [{ "id": "itm_01J...", "title": "Release 4.8.0", "change_type": "created" }], "next_cursor": null }
Use separate endpoints for configuration, snapshots, history, refresh commands, and delivery state.
Canonical URL, resolved URL, format, validators, schedule, latest health, and ownership policy.
Understand sources →Stable internal ID, publisher identity, canonical link, content, dates, tags, attachments, and provenance.
Build the schema →Fetch attempt, status, timing, validators, document hash, parser warnings, and discovered changes.
Instrument observations →Tenant source selection, filters, retention, destination, configuration version, and state.
Plan subscriptions →Cursor-ordered created, updated, or withdrawn events for incremental synchronization.
Design sync →Stable codes, safe diagnostic context, request IDs, retry guidance, and no leaked internal network details.
Debug feeds →
A canonical model should simplify client work while preserving enough original information to explain edge cases.
Store the source format, original identifiers, requested and resolved URLs, publisher dates, observation dates, extension data, and parser warnings. Keep a debug representation behind authorization rather than bloating every response.
Use registered sources, immutable observations, deterministic adapters, stable cursors, and idempotent downstream events.