ADRO · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the AOX Platform API

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

What the actions change

serversexternalDocsx-providerx-provider-urlx-productx-product-urlcontactx-contact-source

Targets 3

$
$.info
$.components

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the AOX Platform API
  version: 1.0.0
extends: openapi/adro1b33-aox-openapi.yaml
x-generated: '2026-09-07'
x-method: generated
x-source: >-
  Enhancements derived from openapi/adro1b33-aox-openapi.yaml plus live anonymous probes of
  api.aoxlabs.com on 2026-09-07. This overlay records what API Evangelist established about the
  contract; it does not modify ADRO's published document, which stays verbatim in openapi/_original/.
x-note: >-
  Nothing here is invented. servers[] is the host the document is actually served from and the host
  every probe answered on. The security scheme is described as OBSERVED, not as ADRO-declared — the
  published contract declares no securitySchemes at all, which is the single largest gap in it.
actions:
- target: $
  description: >-
    Add the servers block the published document omits. drf-spectacular emitted no servers[], so a
    generated client has no base URL.
  update:
    servers:
    - url: https://api.aoxlabs.com
      description: >-
        AOX production API. Observed: the OpenAPI document itself is served from this host at /schema/,
        and every operation probed answered here.
- target: $
  description: >-
    Record the externalDocs the document omits — the Swagger UI ADRO serves for this exact schema.
  update:
    externalDocs:
      description: AOX Swagger UI (served by the provider)
      url: https://api.aoxlabs.com/swagger/
- target: $.info
  description: Attribute the document and name the operator, which info carries neither of.
  update:
    x-provider: ADRO, Inc.
    x-provider-url: https://adro.com
    x-product: AOX — Aerodynamic Optimization eXperience
    x-product-url: https://aoxlabs.com
    contact:
      name: ADRO support
      email: support@adro.com
      url: https://aoxlabs.com/contact
    x-contact-source: >-
      support@adro.com is published verbatim in the provider's own /board/ announcement feed
      (https://api.aoxlabs.com/board/, entry id 2) and on https://aoxlabs.com/contact.
- target: $.components
  description: >-
    Describe the authentication that the contract omits entirely. Marked as observed, not declared —
    see authentication/adro1b33-authentication.yml for the evidence and the confidence level.
  update:
    securitySchemes:
      aoxSession:
        type: apiKey
        in: cookie
        name: sessionid
        description: >-
          OBSERVED, NOT PROVIDER-DECLARED. The published document declares no securitySchemes. An
          anonymous request to any protected operation returns HTTP 401 with the Django REST Framework
          body {"detail":"자격 인증 데이터가 제공되지 않았습니다."}. A session is established at POST
          /accounts/login/ (email + password) or POST /accounts/social-login/, renewed at POST
          /accounts/token/refresh/, and ended at POST /accounts/logout/. LoginResponse returns no token
          in the body, which is consistent with an httpOnly cookie session rather than a bearer token.
          The cookie name is the Django default and has NOT been confirmed on the wire. Do not treat
          this scheme as authoritative — treat it as a documented gap in ADRO's contract.
- target: $.info
  description: Record the runtime facts an integrator needs that the contract does not state.
  update:
    x-conventions:
      trailing_slash_required: true
      field_case: camelCase
      query_param_case: snake_case
      pagination: limit/offset with count/next/previous/results (not uniform — cursor and page_size also appear)
      idempotency: none — no Idempotency-Key on any operation
      rate_limit_headers: none observed
      error_format: drf-detail (NOT RFC 9457)
      error_language: ko (no Accept-Language handling observed)
      versioning: none in path, header or media type
      events: none — no webhooks, callbacks or AsyncAPI; job progress is polled
      artifacts: conventions/adro1b33-conventions.yml
- target: $.info
  description: Record the two public operations that were failing at capture time.
  update:
    x-observed-defects:
    - operationId: plans_list
      path: /plans/
      declared: public (security [{}])
      observed_status: 500
      observed: '2026-09-07'
    - operationId: credits_bundles_list
      path: /credits/bundles/
      declared: public (security [{}])
      observed_status: 500
      observed: '2026-09-07'