specification: API Commons Rate Limits specificationVersion: '0.1' schema: https://raw.githubusercontent.com/api-evangelist/interface-research/main/schema/api-commons.yml#/$defs/RateLimits provider: Bureau of Ocean Energy Management providerId: bureau-of-ocean-energy-management generated: '2026-09-05' method: probed created: '2026-05-04' modified: '2026-09-05' source: >- live unauthenticated calls against https://gis.boem.gov/server/rest/services and https://gis.boem.gov/server/services on 2026-09-05, with full response headers captured; plus a search of boem.gov and marinecadastre.gov for any published limits note: | REPLACES A SCAFFOLD. Until this pass this file declared per-tier limits (10 rpm free, 100 rpm professional, 1,000 rpm enterprise), an X-RateLimit-* header family and a 429 exhaustion code. None of it was observed and none of it is published — it came from the 2026-05-04 bulk sweep stamped `method: generated`. It is removed rather than left to be read as BOEM's runtime contract. THE TRUTH: BOEM documents no rate limits anywhere, and the services emit no rate-limit signal. A full header capture on 2026-09-05 returned Cache-Control, ETag, Vary, X-Content-Type-Options, Strict-Transport-Security, Connection, Keep-Alive and a TS01* load-balancer cookie — no X-RateLimit-*, no RateLimit-*, no Retry-After. An honest zero is the finding, and it is a real risk to a consumer: with no published limit and no runtime signal, an agent has no way to learn it is being throttled except by a request failing. The one real ceiling on the surface is not a rate limit at all — it is maxRecordCount 10000 per feature query, a PAGE size, reported by every layer and paired with `exceededTransferLimit` in the response body. limit_count: 0 documented: false headers: {} responseCodes: {} limits: [] observed_headers: - Cache-Control: max-age=0,must-revalidate - ETag - Vary: Origin - X-Content-Type-Options: nosniff - Strict-Transport-Security: max-age=31536000; includeSubDomains transfer_ceilings: - surface: ArcGIS REST feature query field: maxRecordCount value: 10000 signal: exceededTransferLimit (boolean, in the response body) note: >- a per-request page size, not a rate limit. Page with resultOffset / resultRecordCount; the layer reports advancedQueryCapabilities.supportsPagination true. policies: - name: Conditional GET description: >- responses carry ETag with must-revalidate. Poll with If-None-Match rather than refetching; it is the only cooperative behaviour the surface actually supports. - name: Unknown ceiling description: >- no throttle is documented or signalled. Treat unexplained failures as possible server-side load shedding and back off exponentially with jitter, because nothing on the wire will tell you otherwise. evidence: - url: https://gis.boem.gov/server/rest/services/BOEM_BSEE/ATL_Layers/MapServer/0/query?where=1%3D1&returnCountOnly=true&f=json status: 200 observation: full header capture 2026-09-05 — no rate-limit header of any family present - url: https://gis.boem.gov/server/rest/services/BOEM_BSEE/ATL_Layers/MapServer/0?f=json status: 200 observation: maxRecordCount 10000; supportsPagination true maintainers: - FN: Kin Lane email: kin@apievangelist.com