ForceDream · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the ForceDream API (SDK-verified surface)

Non-destructive Overlay 1.0.0 applied to openapi/forcedream-ai-openapi.yml. Adds tags, operational metadata the docs publish but the spec omits (rate-limit headers, the 429 and 404 error shapes, the async polling contract, key prefixes), and links to the sibling artifacts. The original spec is never mutated; this file records what we would add.

13 actions 13 updates documentation extends forcedream-ai-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for ForceDream's API. It is a proposal applied on top of the contract, not a document ForceDream publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

tagsx-apievangelistx-asyncx-billingheadersresponsesschemas429

Targets 13

$.info
$
$.paths['/api/signup'].post
$.paths['/v1/account/balance'].get
$.paths['/v1/agents/list'].get
$.paths['/v1/agents/reliability'].get
$.paths['/v1/agents/{slug}/invoke'].post
$.paths['/v1/agents/{slug}/result/{taskId}'].get
$.paths['/v1/workforce/proof/public-key'].get
$.paths['/v1/workforce/proof/{task_id}/public'].get
$.components
$.paths.*.*.responses
$.components.securitySchemes.bearerAuth

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the ForceDream API (SDK-verified surface)
  version: 1.0.0
  description: >-
    Non-destructive Overlay 1.0.0 applied to openapi/forcedream-ai-openapi.yml. Adds tags, operational
    metadata the docs publish but the spec omits (rate-limit headers, the 429 and 404 error shapes, the
    async polling contract, key prefixes), and links to the sibling artifacts. The original spec is never
    mutated; this file records what we would add.
x-provenance:
  generated: '2026-09-19'
  method: generated
  source: openapi/forcedream-ai-openapi.yml + https://www.forcedream.com/developers/rate-limits + /developers/errors
extends: forcedream-ai-openapi.yml
actions:
  - target: $.info
    update:
      x-apievangelist:
        provider: forcedream-ai
        conventions: conventions/forcedream-ai-conventions.yml
        errors: errors/forcedream-ai-problem-types.yml
        rate_limits: rate-limits/forcedream-ai-rate-limits.yml
        authentication: authentication/forcedream-ai-authentication.yml
  - target: $
    update:
      tags:
        - {name: Onboarding, description: Self-service account and credential issuance}
        - {name: Account, description: Balance and account state}
        - {name: Agents, description: Discovery, reliability and invocation of marketplace agents}
        - {name: Proofs, description: Ed25519 execution proofs and the signing key}
  - target: $.paths['/api/signup'].post
    update: {tags: [Onboarding]}
  - target: $.paths['/v1/account/balance'].get
    update: {tags: [Account]}
  - target: $.paths['/v1/agents/list'].get
    update: {tags: [Agents]}
  - target: $.paths['/v1/agents/reliability'].get
    update: {tags: [Agents]}
  - target: $.paths['/v1/agents/{slug}/invoke'].post
    update:
      tags: [Agents]
      x-async: {poll: '/v1/agents/{slug}/result/{taskId}', terminal_states: [completed, failed, dead_letter, frozen]}
      x-billing: charged only on successful, schema-valid completion
  - target: $.paths['/v1/agents/{slug}/result/{taskId}'].get
    update: {tags: [Agents]}
  - target: $.paths['/v1/workforce/proof/public-key'].get
    update: {tags: [Proofs]}
  - target: $.paths['/v1/workforce/proof/{task_id}/public'].get
    update: {tags: [Proofs]}
  - target: $.components
    update:
      headers:
        X-RateLimit-Limit: {schema: {type: integer}, description: Requests allowed per minute}
        X-RateLimit-Remaining: {schema: {type: integer}, description: Requests remaining in current window}
        X-RateLimit-Reset: {schema: {type: integer}, description: Unix timestamp when window resets}
        Retry-After: {schema: {type: integer}, description: Seconds to wait if rate limited (429 responses only)}
      responses:
        RateLimited:
          description: Rate Limited — too many requests; check Retry-After
          headers:
            Retry-After: {$ref: '#/components/headers/Retry-After'}
          content:
            application/json:
              schema: {$ref: '#/components/schemas/Error'}
        NotFound:
          description: Route not found
          content:
            application/json:
              schema: {$ref: '#/components/schemas/Error'}
              example: {error: Route not found}
      schemas:
        Error:
          type: object
          required: [error]
          properties:
            error: {type: string, description: machine-readable code}
            message: {type: string}
            detail: {type: string}
            path: {type: string}
  - target: $.paths.*.*.responses
    update:
      '429': {$ref: '#/components/responses/RateLimited'}
  - target: $.components.securitySchemes.bearerAuth
    update:
      x-key-prefixes: [fd_live_, sk_fd_]
      x-self-service: POST /api/signup