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.