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.
What the actions change
serversexternalDocsx-providerx-provider-urlx-productx-product-urlcontactx-contact-source
Targets 3
$
$.info
$.components
OpenAPI Overlay
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'