ChangeEvent Schema
The uniform JSON shape with real examples
Core fields
Every ChangeEvent has these fields:
- source (string): Dashed slug for the changelog source (e.g., vercel-changelog, shopify-api-updates)
- vendor (string): Canonical company name (e.g., Vercel, Shopify)
- id (string): Unique identifier for this entry
- published_at (ISO 8601): Vendor's published timestamp, never scrape time
- title (string): Entry title
- url (string): Direct link to the changelog entry
- summary (string): Plain text summary, often the first paragraph
- is_important (boolean): Whether this entry is marked Important (breaking changes, deprecations, security fixes)
- tags (string[]): Zero or more tags (e.g., security, breaking, deprecation)
Optional typed fields
Some entries include additional structured data when the vendor publishes it:
- change_kind (enum): feature | fix | deprecation | security | preview | ga | breaking | version | other
- effective_at (ISO 8601): When a change takes effect (for phased rollouts)
- sunset_at (ISO 8601): When a feature or API will be removed
Example
{
"source": "vercel-changelog",
"vendor": "Vercel",
"id": "clx1234567890",
"published_at": "2026-08-29T14:30:00Z",
"title": "New API route caching",
"url": "https://vercel.com/changelog/new-api-route-caching",
"summary": "API routes now support granular cache control headers for Next.js 15 and later.",
"is_important": false,
"tags": [
"api",
"caching",
"nextjs"
],
"change_kind": "feature",
"effective_at": null,
"sunset_at": null
}The feedUrl field is never exposed on the customer API. We use it internally to fetch updates, but it is not part of the ChangeEvent schema you receive.