OpenAPI index
Each service spec lives under docs/site/openapi/<service>.yaml and is copied to /openapi/<service>.yaml during yarn build.
OpenAPI covers the HTTP-shaped contract. When a Lambda is SQS-driven in deployed environments but mounted over HTTP for local replay, the operation remains documented and carries:
x-drive-deployment: local-test-http
x-drive-trigger:
- sqsSpecs
| Service | Operations | Local worker harnesses | Spec | Interactive |
|---|---|---|---|---|
| ads | 1 | 0 | /openapi/ads.yaml | ads API |
| autograb | 10 | 0 | /openapi/autograb.yaml | autograb API |
| cachewarm | 2 | 0 | /openapi/cachewarm.yaml | cachewarm API |
| canbus | 2 | 0 | /openapi/canbus.yaml | canbus API |
| cfs | 3 | 0 | /openapi/cfs.yaml | cfs API |
| cloudflare | 1 | 0 | /openapi/cloudflare.yaml | cloudflare API |
| cmstosocial | 0 | 0 | /openapi/cmstosocial.yaml | service page |
| geo | 2 | 0 | /openapi/geo.yaml | geo API |
| leads | 21 | 8 | /openapi/leads.yaml | leads API |
| marketing | 7 | 1 | /openapi/marketing.yaml | marketing API |
| marketplace | 8 | 0 | /openapi/marketplace.yaml | marketplace API |
| ml | 1 | 0 | /openapi/ml.yaml | ml API |
| oly | 1 | 0 | /openapi/oly.yaml | oly API |
| purge | 6 | 0 | /openapi/purge.yaml | purge API |
| root | 1 | 0 | /openapi/root.yaml | root API |
| social | 4 | 0 | /openapi/social.yaml | social API |
| syndication | 4 | 0 | /openapi/syndication.yaml | syndication API |
| udp | 1 | 0 | /openapi/udp.yaml | udp API |
Validation gates
yarn validate:openapi fails when it finds:
- a
serverless.ymlHTTP operation missing from OpenAPI; - an OpenAPI operation not declared in
serverless.yml; - a local-only worker harness not explicitly marked
x-drive-deployment: local-test-http; - path parameters like
{stockId}not declared asin: path; - mutating operations (
POST,PUT,PATCH) without a request body.
Authoring rules
- Use
ApiKeyAuthglobally for API-key capable services, then override an operation withsecurity: []whenprivate: false. - Do not document handler-only methods as deployed routes unless API Gateway mounts them. Example:
commentCountparses POST in code, but only GET is mounted inservices/social/serverless.yml. - Keep worker semantics in service pages as well as OpenAPI metadata. Interactive Scalar shows the local harness shape, not the full queue topology.