Adonmo · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Adonmo API

9 actions 9 updates servers extends ../openapi/adonmoprivatelimited-adonmo-api.json
Derived by API Evangelist Built from the contracts Adonmo publishes. Adonmo did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

400401typetermsOfServicex-original-termsOfServicex-original-termsOfService-statusserverscomponents

Targets 7

$.info
$
$.paths['/ops_portal/api/spots'].get.responses
$.paths['/ops_portal/api/spot/{uuid}'].delete.responses
$.paths['/ops_portal/api/spot/{uuid}'].delete
$.paths['/ops_portal/api/spots'].get.parameters[?(@.name=='page')].schema
$.paths['/ops_portal/api/spots'].get.parameters[?(@.name=='page_size')].schema

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Adonmo API
  version: 1.0.0
extends: ../openapi/adonmoprivatelimited-adonmo-api.json
x-generated: '2026-09-07'
x-method: derived
x-source: 'Enhancements derived from live probes of https://api.adonmo.com on 2026-09-07
  and from the artifacts in this repository. The original contract is never mutated; every
  change we would make is expressed here as an Overlay action.'
actions:
- target: $.info
  description: 'Correct info.termsOfService, which points at a 404 PDF and names a privacy
    policy rather than terms of service.'
  update:
    termsOfService: https://adonmo.com/terms-of-service/
    x-original-termsOfService: https://www.adonmo.com/policies/privacy-policy.pdf
    x-original-termsOfService-status: 404
- target: $
  description: 'Add the servers block the document omits. The host was confirmed by
    fetching the spec from it and by calling both operations against it.'
  update:
    servers:
    - url: https://api.adonmo.com
      description: Production
      x-verified: probed 2026-09-07
- target: $
  description: 'Declare the securityScheme the API actually enforces. The published
    document declares none, so a reader concludes the API is anonymous; it is not.'
  update:
    components:
      securitySchemes:
        bearerAccessToken:
          type: http
          scheme: bearer
          description: 'Bearer access token in the Authorization header. Adonmo names the
            credential "access_token". Absence returns 400; an invalid value returns 401.
            Established by probing, not published by the provider.'
    security:
    - bearerAccessToken: []
- target: $
  description: 'Declare the tag the operations already reference, so it is not an
    undeclared tag.'
  update:
    tags:
    - name: acumen
      description: 'Acumen CMS ops-portal resources. Acumen CMS is Adonmo''s digital
        signage content management product (https://acumencms.com).'
- target: $.paths['/ops_portal/api/spots'].get.responses
  description: 'Document the error responses observed live. The contract declares none.'
  update:
    '400':
      description: 'Missing credential. Body: {"errors":["access_token is required."]}'
    '401':
      description: 'Invalid or expired access token. Returns an HTML Werkzeug error page,
        not the JSON error envelope.'
- target: $.paths['/ops_portal/api/spot/{uuid}'].delete.responses
  description: 'Document the error responses observed live, and the missing path
    parameter.'
  update:
    '400':
      description: 'Missing credential. Body: {"errors":["access_token is required."]}'
    '401':
      description: 'Invalid or expired access token.'
- target: $.paths['/ops_portal/api/spot/{uuid}'].delete
  description: 'The uuid path parameter is used in the path template but never declared in
    a parameters array.'
  update:
    parameters:
    - name: uuid
      in: path
      required: true
      description: Identifier of the spot record to delete.
      schema:
        type: string
        format: uuid
    x-destructive: true
    x-reversible: false
    x-reversal-note: 'No restore or undelete operation is published, and no recovery
      window is stated by the provider.'
- target: $.paths['/ops_portal/api/spots'].get.parameters[?(@.name=='page')].schema
  description: 'The parameter schemas use type "int", which is not a JSON Schema type. The
    correct type is "integer".'
  update:
    type: integer
- target: $.paths['/ops_portal/api/spots'].get.parameters[?(@.name=='page_size')].schema
  description: 'Same invalid "int" type on page_size.'
  update:
    type: integer
x-unresolved:
- issue: 'paths./ops_portal/api/spots.get.responses.200.schema references
    #/definitions/SpotListSchema, but definitions is empty. The success response body of
    the only read operation in the API is undefined.'
  action: 'NOT repaired by this overlay. The schema is unknown, and inventing one would
    fabricate a contract. This needs to be fixed by Adonmo.'