OwnLocal · OpenAPI Overlay 1.0.0

API Evangelist enhancements — OwnLocal API — Categories

6 actions 6 updates servers extends ../openapi/ownlocal-categories-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for OwnLocal's API. It is a proposal applied on top of the contract, not a document OwnLocal publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

descriptionserversexternalDocscontacttagsoperationId

Targets 4

$
$.info
$.paths['/api/v1/categories'].get
$.components.securitySchemes.apiKey

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements — OwnLocal API — Categories
  version: 1.0.0
extends: ../openapi/ownlocal-categories-openapi.yml
x-generated: '2026-08-12'
x-method: generated
x-source: openapi/_original/ownlocal-swagger.json (verbatim from https://admin.austin.ownlocal.com/api-docs/v1/swagger.json)
  cross-read against https://api.docs.ownlocal.com/
x-note: 'Records what API Evangelist added on top of OwnLocal''s own contract during the Swagger 2.0 -> OpenAPI
  3.1.0 conversion. Nothing here changes OwnLocal''s described behaviour: every added value is either a restatement
  of something OwnLocal publishes in prose (the server host, the auth mechanics, support contact) or a structural
  identifier the source omitted (operationIds, tag declarations). No endpoint, parameter, field or schema is invented.
  The original is preserved byte-for-byte at openapi/_original/ownlocal-swagger.json and is never mutated.'
actions:
- target: $
  description: Add servers[]. OwnLocal's published Swagger 2.0 declares no host, basePath or schemes, so the source
    contract never names the server it describes. The host is taken verbatim from the published API reference
    at https://api.docs.ownlocal.com/, where every curl example calls https://admin.austin.ownlocal.com/api/v1/...
  update:
    servers:
    - url: https://admin.austin.ownlocal.com
      description: OwnLocal production API host (per the published API reference)
- target: $
  description: Link the machine contract back to the human reference it was cross-read against.
  update:
    externalDocs:
      description: OwnLocal API Docs
      url: https://api.docs.ownlocal.com/
- target: $.info
  description: Add contact (support@ownlocal.com / the support page, both published by OwnLocal) and a tag-scoped
    description. The source info block carries only title and version.
  update:
    description: The OwnLocal business category and sub-category vocabulary used to classify businesses and filter
      ads.
    contact:
      name: OwnLocal Support
      email: support@ownlocal.com
      url: https://www.ownlocal.com/support/
- target: $
  description: Declare the tag. The source Swagger uses tags on operations but never declares them at the root,
    so no tag carries a description.
  update:
    tags:
    - name: Categories
      description: The OwnLocal business category and sub-category vocabulary used to classify businesses and
        filter ads.
- target: $.paths['/api/v1/categories'].get
  description: Add operationId 'listCategories'. None of OwnLocal's 13 operations declares an operationId, which
    blocks code generation and leaves agent tooling with no stable handle. Assigned deterministically from the
    HTTP method and resource path.
  update:
    operationId: listCategories
- target: $.components.securitySchemes.apiKey
  description: 'Describe the apiKey scheme. The source declares type/name/in with no description, which omits
    the single most error-prone fact about this API: the key is sent RAW in the Authorization header with no Bearer
    prefix, and is issued manually by OwnLocal support. Stated in the published reference.'
  update:
    description: Organization API key sent raw (no scheme prefix) in the Authorization header. Keys are issued
      by OwnLocal support; there is no self-serve key provisioning.