{
  "id": "OPS-134",
  "slug": "ops-134",
  "title": "The registry has API rate limits of its own",
  "statement": "Integrations must stay within the registry's published API rate limits.",
  "rationale": "A polling integration built without regard to the limits will hit them during exactly the operations that matter — a bulk registration, a status reconciliation after an outage — and the failures look like registry problems rather than client ones. The fix is architectural rather than a retry, which is why it belongs before the integration is written.",
  "layer": "OPERATIONAL",
  "layerSlug": "operational",
  "object": "API request rate to the registry",
  "severity": "MEDIUM",
  "detectability": [
    "EXTERNAL_DATA"
  ],
  "failureClass": "TERMINAL_EXTERNAL",
  "authorities": [
    "TCR"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Back off on rate-limit responses, and replace polling with the status webhooks the registry publishes. Done when a bulk operation completes without a single rate-limit error.",
  "notes": "Integration behaviour at the registry. What the user has to establish is whether their platform polls — most do, and it is the usual cause. OPS-347 covers the webhook alternative.",
  "phase": "post",
  "automated": false,
  "attestation": {
    "question": "Does your platform poll the registry for status, rather than consuming its webhooks?",
    "howToCheck": [
      "Ask, or read the integration. Most poll, and it is the usual cause.",
      "Back off on rate-limit responses and replace polling with the published status webhooks.",
      "Done when a bulk operation completes without a single rate-limit error."
    ],
    "failureLooksLike": "The limits are hit during exactly the operations that matter — a bulk registration, a reconciliation after an outage — and the failures read as registry problems rather than client ones."
  },
  "url": "https://ekas.io/rules/10dlc/operational/ops-134/",
  "markdown": "https://ekas.io/rules/10dlc/operational/ops-134.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
