Copper.co · OpenAPI Overlay 1.0.0

API Evangelist enhancements for Copper Platform API

10 actions 10 updates documentation extends openapi/copper-co-platform-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for Copper.co's API. It is a proposal applied on top of the contract, not a document Copper.co publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-profilex-apievangelist-enrichedx-api-evangelist-notesecuritySchemessecurityx-rate-limitsx-idempotencyx-serialization

Targets 4

$.info
$.components
$
$.paths['/exchange'].post

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for Copper Platform API
  version: 1.0.0
extends: openapi/copper-co-platform-openapi.json
x-generated: '2026-08-04'
x-method: generated
x-source: >-
  Derived from API Evangelist enrichment artifacts in this repo. Captures cross-cutting
  contract facts that Copper documents in prose but does not express in the OpenAPI
  document itself. The harvested spec is never mutated.
actions:
- target: $.info
  update:
    x-apievangelist-profile: https://apis.io/provider/copper-co/
    x-apievangelist-enriched: '2026-08-04'
    x-api-evangelist-note: >-
      The upstream document declares no operationIds and no securitySchemes. This overlay
      supplies the authentication contract; operationIds cannot be supplied without
      inventing provider-owned identifiers, so they are deliberately left absent.
- target: $.components
  update:
    securitySchemes:
      ApiKeyAuth:
        type: apiKey
        in: header
        name: Authorization
        description: >-
          API key issued in the Copper Platform UI (Settings > API Keys), sent as
          "ApiKey {API_KEY}". Recommended owner is a service account. Keys may be
          restricted to an IP allowlist.
          Source: https://developer.copper.co/api-reference/authentication
      RequestSignature:
        type: apiKey
        in: header
        name: X-Signature
        description: >-
          Hex-encoded HMAC-SHA256 signature over the concatenation of
          {X-Timestamp}{UPPERCASE_METHOD}{path including /platform prefix and query}{body},
          signed with the API secret. Empty string for body when absent.
          Source: https://developer.copper.co/api-reference/authentication
      RequestTimestamp:
        type: apiKey
        in: header
        name: X-Timestamp
        description: >-
          Request timestamp as a UNIX timestamp in MILLISECONDS. Used for replay
          protection and as the first component of the signed string.
          Source: https://developer.copper.co/api-reference/authentication
- target: $
  update:
    security:
    - ApiKeyAuth: []
      RequestSignature: []
      RequestTimestamp: []
- target: $.info
  update:
    x-rate-limits:
      documented: true
      source: rate-limits/copper-co-rate-limits.yml
      limits:
      - 30000 requests per 5 minutes per IP address
      - 1000 requests per 5 minutes per User ID + Organization ID pair
      - 30 failed auth attempts per hour per API key + IP pair, then a 15-minute lockout
      - 60 failed business-logic requests per minute per User ID, then a 3-minute lockout
      response_code: 429
      headers_documented: false
- target: $.info
  update:
    x-idempotency:
      supported: true
      mechanism: client-supplied body field
      field: externalOrderId
      scope: order creation
      header_based: false
      source: conventions/copper-co-conventions.yml
- target: $.info
  update:
    x-serialization:
      numeric_values: >-
        All numeric values are returned as strings to prevent floating-point precision loss.
      date_time: Timestamps in milliseconds since the Unix epoch.
- target: $.info
  update:
    x-error-envelope:
      media_type: application/json
      rfc9457: false
      fields:
        error: machine-readable error code
        message: human-readable detail
      declared_in_spec:
      - 400
      - 403
      - 409
      documented_but_undeclared:
      - 401
      - 404
      - 429
      - 500
      source: errors/copper-co-problem-types.yml
- target: $.info
  update:
    x-webhooks:
      supported: true
      event_count: 28
      signature: HMAC-SHA256 or ECDSA over {X-Timestamp}{eventId}{body}
      headers:
      - X-Signature
      - X-Timestamp
      - X-Id
      source: asyncapi/copper-co-webhooks.yml
- target: $.info
  update:
    x-environments:
      production: https://api.copper.co/platform
      staging: https://api.stage.copper.co/platform
      testnet: https://api.testnet.copper.co/platform
      source: sandbox/copper-co-sandbox.yml
- target: $.paths['/exchange'].post
  update:
    tags:
    - blockchain
    x-apievangelist-note: >-
      Untagged in the upstream document. Tagged here so it is not lost from tag-based
      navigation and refinement. Hyperliquid exchange action passthrough.