Credo AI · OpenAPI Overlay 1.0.0

API Evangelist enhancements — Credo AI Governance Platform API (v2)

5 actions 5 updates update
Generated by API Evangelist Written by API Evangelist tooling for Credo AI's API. It is a proposal applied on top of the contract, not a document Credo AI publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

versioncontactx-source-urlx-harvestedhostschemesx-serversx-token-exchange

Targets 4

$.info
$
$.securityDefinitions.Bearer
$.tags[?(@.name=='webhooks')]

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements — Credo AI Governance Platform API (v2)
  version: 1.0.0
x-provenance:
  generated: '2026-08-11'
  method: generated
  source: openapi/credo-ai-governance-platform-swagger.json
  extends: openapi/credo-ai-governance-platform-swagger.json
  note: >-
    Non-destructive enhancement layer. The harvested Swagger 2.0 document at
    openapi/_original/credo-ai-swagger.json is never mutated. Every action below
    adds information Credo AI's own contract omits but which is evidenced
    elsewhere in this repo (live probes, the OpenAPI 3.0.0 sibling contract, or
    the SDK documentation).
actions:
- target: $.info
  description: >-
    The published document declares no version and no contact. Both are evidenced
    in the sibling OpenAPI 3.0.0 document served at https://api.credo.ai/openapi.
  update:
    version: '2.0.0'
    contact:
      name: Credo AI Support
      email: support@credo.ai
      url: https://credo.ai/contact
    x-source-url: https://api.credo.ai/swagger.json
    x-harvested: '2026-08-11'
- target: $
  description: >-
    The document declares basePath but no host, so it names no callable server.
    The production host is evidenced by the sibling OpenAPI 3.0.0 servers[] block
    and by live 401 responses from https://api.credo.ai/api/v2/credoai/.
  update:
    host: api.credo.ai
    schemes:
    - https
    x-servers:
    - url: https://api.credo.ai/api/v2/{tenant}
      description: >-
        Production. {tenant} is issued per customer by support@credo.ai; the
        published basePath hard-codes Credo AI's own 'credoai' tenant.
- target: $.securityDefinitions.Bearer
  description: >-
    Records how the Authorization value is obtained. The published definition says
    only "apiKey in header named Authorization".
  update:
    x-token-exchange:
      operation: POST /auth/exchange
      operationId: CredoAIWeb.Auth.TokenController.exchange
      input: tenant API token + tenant identifier
      output: JWT access token
      format: 'Authorization: Bearer <jwt>'
      source: openapi/credo-ai-audit-logs-shadow-ai-openapi.json
- target: $.tags[?(@.name=='webhooks')]
  description: >-
    The webhooks tag is declared with a description but carries zero operations in
    the published document. Flagged so downstream tooling does not present a
    webhook capability that cannot be reached.
  update:
    x-operation-count: 0
    x-status: declared-empty
    x-evidence: >-
      No path in the 183-path document is tagged `webhooks`, and no webhook,
      subscription or event schema exists among the 346 definitions. The only
      related artifact is TenantInfoResource.webhook_app_id.
- target: $
  description: >-
    Runtime semantics an agent needs that the contract does not state. Every value
    is evidenced in this repo, not assumed.
  update:
    x-conventions:
      standard: 'JSON:API 1.0'
      media_type: application/vnd.api+json
      pagination:
        style: cursor
        request:
        - 'page[after]'
        - 'page[before]'
        - 'page[limit]'
        response: meta.{after,before,limit}
        note: >-
          Declared on only 10 of 300 operations although many more return a paged
          response schema.
      filtering: 'filter[...] bracket syntax'
      sorting: sort
      inclusion: include
      idempotency:
        supported: false
        note: >-
          No idempotency key on any of the 60 POST operations. Retries are unsafe.
      rate_limits:
        published: false
        headers: none
        note: 'Policy stated ("limited based on your subscription plan"), values undisclosed.'
      request_tracing:
        header: x-request-id
        observed: '2026-08-11'
        note: Returned on every response including 401s; not declared in the contract.
      errors:
        envelope: '{"errors":[{"code","title","detail"}]}'
        rfc9457: false
        code_ranges:
          '404': not-found
          1000-1999: auth
          2000-2999: validation
          9000-9999: internal
      deprecation:
        deprecated_operations: 3
        sunset_header: false
        policy_published: false
      responses:
        five_xx_declared: 0
        note: >-
          No 5xx is declared on any operation despite a documented 9000-9999
          internal error-code range.
    x-artifacts:
      authentication: authentication/credo-ai-authentication.yml
      conventions: conventions/credo-ai-conventions.yml
      errors: errors/credo-ai-problem-types.yml
      lifecycle: lifecycle/credo-ai-lifecycle.yml
      rate_limits: rate-limits/credo-ai-rate-limits.yml
      data_model: data-model/credo-ai-data-model.yml
      conformance: conformance/credo-ai-conformance.yml