Goal

Subscribe to the MexCep changelog via a standards-compliant Atom 1.0 feed. Works with every modern RSS reader (Feedly, NetNewsWire, Inoreader, Thunderbird, Apple Mail) and with automation tools that poll feeds for release-triggered workflows (Zapier, n8n, GitHub Actions cron).

Prerequisites

None for public-audience entries — the feed serves them to anonymous clients. To also receive admin-audience entries, the feed reader must send the app_token cookie (most readers cannot; consider polling the JSON endpoint with custom auth instead).

Steps

1. Add the feed URL to your reader

https://api.example.com/v1/public/changelog/feed.atom

Most readers auto-detect the feed and prompt for a subscription. To verify manually:

curl 'https://api.example.com/v1/public/changelog/feed.atom'

The response is application/atom+xml. Validate at https://validator.w3.org/feed/.

2. Sample structure

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://api.example.com/v1/public/changelog/feed.atom</id>
  <title>MexCep Changelog</title>
  <updated>2026-05-28T11:00:00Z</updated>
  <link rel="self" href="https://api.example.com/v1/public/changelog/feed.atom" />
  <link rel="alternate" href="https://docs.example.com/en/changelog" />
  <author><name>MexCep</name></author>
  <entry>
    <id>https://docs.example.com/changelog/v1.49.6/url-convention</id>
    <title>URL convention formalized + 13 path moves</title>
    <updated>2026-05-28T10:30:00Z</updated>
    <published>2026-05-28T10:30:00Z</published>
    <link rel="alternate" href="https://docs.example.com/changelog/v1.49.6/url-convention" />
    <summary>...</summary>
    <category term="breaking" />
    <category term="audience:public" />
  </entry>
</feed>

3. Filter the feed

ParamDefaultDescription
audienceauto-detectpublic (anon) or admin (cookie + docs:read).
langenFeed language. en or es.
limit50Entries per feed (1–100).
# Spanish, 5 most recent entries
curl 'https://api.example.com/v1/public/changelog/feed.atom?lang=es&limit=5'

The server enforces audience against your auth. An anonymous request cannot escalate to audience=admin and receive admin entries.

Errors

StatusCodeCause
400invalid_lang / invalid_audience / invalid_limitParam value outside the enum/range.
401unauthorizedRequested audience=admin without cookie auth.
403forbiddenCookie present but missing docs:read.
429rate_limitedFeed poll rate too high. Use the ETag on the JSON endpoint instead.

Notes

  • The feed is append-only — entries never disappear once published, so a reader that already saw an entry will not surface it again.
  • The <updated> timestamp on each entry reflects the release's published_at, not the body's last edit.
  • Need JSON instead? See Subscribe to the JSON feed.
  • ADR-0090 (URL Convention) explains the /v1/public/* namespace move.

New in v1.49.6 — see ADR-0090.