<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>API changelog · BarrierOps — digital accessibility compliance for state and local government</title>
    <link>https://barrierops.com/docs/changelog</link>
    <atom:link href="https://barrierops.com/docs/changelog.xml" rel="self" type="application/rss+xml" />
    <description>Changes to the BarrierOps public API.</description>
    <language>en-us</language>
    <item>
      <title>The public API is available, at /api/v1</title>
      <link>https://barrierops.com/docs/changelog#public-api-available</link>
      <category>Added</category>
      <guid isPermaLink="true">https://barrierops.com/docs/changelog#public-api-available</guid>
      <pubDate>Tue, 27 Oct 2026 00:00:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>The public API answers at <code translate="no">https://api.barrierops.com/api/v1</code>. Every page in this section now documents it as it runs: every command and program on them was run against it, and is printed with what came back.</p><p>What it has: the assets, scans, issues, documents, vendor products, evidence ledger and reports of the organisations a key reaches, the evidence check, and a lookup for a CMS. API keys, <code translate="no">bo_live_</code> and <code translate="no">bo_test_</code>, sent as <code translate="no">Authorization: Bearer</code>, each with the read, write or admin scope and a budget a minute set by its edition. Cursor pagination. Nine webhook events, signed with HMAC-SHA256, with a delivery log and replay. And test mode, a <code translate="no">bo_test_</code> key reading fictional organisations and changing nothing.</p><p>The OpenAPI 3.1 document is published at <code translate="no">/docs/openapi.json</code> and <code translate="no">/docs/openapi.yaml</code>, generated from the same schemas the API validates against.</p><p>The statements on these pages that the API was not available yet are removed, as the entry before this one said the next entry would record.</p>]]></content:encoded>
    </item>
    <item>
      <title>API documentation published. The API itself is not available yet</title>
      <link>https://barrierops.com/docs/changelog#documentation-published</link>
      <category>Added</category>
      <guid isPermaLink="true">https://barrierops.com/docs/changelog#documentation-published</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>The documentation section is live at <code translate="no">/docs</code>. The public API is not: there is no base URL to call, no keys to create, and no endpoint behind any path named in it.</p><p>What is published now are the commitments an integration is designed around, and they are settled: cursor pagination and its page sizes, the rate-limit headers on every response, the whole error model — which is in service today and is the same module the public API will answer with — and the versioning policy.</p><p>What is held back is anything that would be copied and run: the OpenAPI document, the quickstart, the worked example, the endpoint reference and webhooks. Each of those is a route with a statement on it saying what it will carry.</p><p>The next entry here is the one that removes those statements.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
