Beacon Roofing Supply · OpenAPI Overlay 1.0.0

API Evangelist enrichment overlay — Beacon Rest Services (Use for Internal)

6 actions 6 updates update extends beacon-roofing-supply-internal-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Beacon Roofing Supply's API. It is a proposal applied on top of the contract, not a document Beacon Roofing Supply publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-findingx-apievangelist-sourcex-apievangelist-discovered-viax-apievangelist-harvestedx-apievangelist-servers-addedx-apievangelist-secured-operationsx-apievangelist-total-operations

Targets 5

$.info
$
$.paths.*.*
$.paths.*.*.responses
$.paths.*.*.security

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enrichment overlay — Beacon Rest Services (Use for Internal)
  version: 1.0.0
extends: beacon-roofing-supply-internal-openapi.yml
x-generated: '2026-09-04'
x-method: generated
x-source: Generated from the harvested document plus probes recorded in this repository. Documents API
  Evangelist enhancements and findings; the original under openapi/_original/ is never mutated.
x-target-operations: 21
x-target-secured-operations: 19
x-target-version: 24PI-4-Sprint-3
actions:
- target: $.info
  description: Record the provenance of this harvested document and the discovery path that found it.
  update:
    x-apievangelist-source: https://beaconproplus.com/swagger/static/swagger-ui-url/go-live/internal.yaml
    x-apievangelist-discovered-via: https://beaconproplus.com/swagger/ -> /swagger/internal/index.html
      -> the url template in /swagger/static/beacon/beaconSwaggerUI.js
    x-apievangelist-harvested: '2026-09-04'
- target: $
  description: Declare the production base URL. The harvested document carried no servers[]; the host
    is stated only in prose inside info.description, and was confirmed live (structured JSON 401 "Please
    provide token") on 2026-09-04.
  update:
    x-apievangelist-servers-added: true
- target: $.paths.*.*
  description: 'FINDING, not a change: no operation in this document declares an operationId. Only the
    combined all_api document does (145 of them). Without stable identifiers, SDK generators, tool crosswalks
    and workflow documents cannot bind to these operations. Recorded for the provider rather than auto-generated
    — inventing operationIds here would create identifiers Beacon does not recognise.'
  update:
    x-apievangelist-finding: missing-operationIds
- target: $.paths.*.*.responses
  description: 'FINDING, not a change: every 4xx/5xx response carries a description string and no response
    schema. The real error envelope ({success, messages[{key,code,type,value}], result}) and the numeric
    message-code registry live in prose inside info.description. Captured as machine-readable data in
    errors/beacon-roofing-supply-error-codes.yml and errors/beacon-roofing-supply-problem-types.yml.'
  update:
    x-apievangelist-finding: error-responses-have-no-schema
- target: $.paths.*.*.security
  description: 'FINDING, not a change: 19 of 21 operations (90%) declare a security requirement, and the
    document declares no top-level security. The remaining 2 inherit nothing, so a generated client cannot
    tell they need a token — though every operation probed live returned 401 unauthenticated. A top-level
    security block would close this.'
  update:
    x-apievangelist-finding: security-not-applied-to-all-operations
    x-apievangelist-secured-operations: 19
    x-apievangelist-total-operations: 21
- target: $.paths.*.*
  description: 'FINDING, not a change: no mutating operation declares an idempotency key parameter or
    header, and there is no 429 or rate-limit header anywhere in this document. See conventions/beacon-roofing-supply-conventions.yml
    (idempotency.coverage: none) and rate-limits/beacon-roofing-supply-rate-limits.yml (limit_count: 0).'
  update:
    x-apievangelist-finding: no-idempotency-no-rate-limit-signal