> ## Documentation Index
> Fetch the complete documentation index at: https://docs.checkfu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Discard a Skill proposal

> Move a discardable SkillProposal to terminal discarded, guarded by expected_version matching the current row.



## OpenAPI

````yaml /openapi.json post /v1/skill-proposals/{id}/discard
openapi: 3.1.0
info:
  title: Checkfu API
  version: '2026-08-31'
  description: >-
    Authentication is declared per operation: API-key, runtime, or connector
    bearer; Automation signature; or credential-free pairing redemption. Every
    general Checkfu REST request requires the dated `Checkfu-Version` header
    (one of: 2026-08-31); the three MCP JSON-RPC transports use
    `MCP-Protocol-Version`, A2A uses `A2A-Version`, and the provider OAuth
    callback carries neither Checkfu header. API keys resolve one Workspace
    without a request selector; authenticated responses identify it with
    `Checkfu-Workspace-Id`.
servers:
  - url: https://api.checkfu.com
security:
  - bearerAuth: []
tags:
  - name: organizations
  - name: sourceRepositories
  - name: tenants
  - name: workspaces
  - name: principals
  - name: principalGroups
  - name: principalAccessCredentials
  - name: apiKeys
  - name: agents
  - name: harnessRuntime
  - name: permissionAssignments
  - name: actionPolicies
  - name: files
  - name: memoryStores
  - name: modelCredentials
  - name: modelRoutingProfiles
  - name: toolSources
  - name: skills
  - name: skillSources
  - name: agentBlueprints
  - name: skillProposals
  - name: instructionProposals
  - name: catalog
  - name: concepts
  - name: support
  - name: connections
  - name: connectionVaults
  - name: connectionAssignments
  - name: connectedRuntimes
  - name: fileTrees
  - name: collaboration
  - name: automationGraphs
  - name: automations
  - name: actionApprovals
  - name: standingApprovals
  - name: workloadReviewPolicies
  - name: usage
  - name: models
  - name: budgets
  - name: billing
  - name: sessions
  - name: audit
  - name: sessionExports
  - name: runs
  - name: runnerPools
  - name: transcripts
  - name: sessionWatches
  - name: sessionCapsules
  - name: sessionTrajectories
  - name: webhookEndpoints
  - name: integrationGateway
  - name: workEnvironments
  - name: computers
  - name: computerScreens
  - name: computerBrowserObservations
  - name: computerBrowserActions
  - name: environments
  - name: computerHeadlessOperations
  - name: vaults
  - name: apiMcp
  - name: a2a
paths:
  /v1/skill-proposals/{id}/discard:
    post:
      tags:
        - skillProposals
      summary: Discard a Skill proposal
      description: >-
        Move a discardable SkillProposal to terminal `discarded`, guarded by
        `expected_version` matching the current row. A `submitting` proposal may
        be discarded only while `submission_attempt.prepared_commit_sha` is
        null; this clears the abandoned reservation after denied,
        missing-source, or unavailable preparation without touching a repository
        branch. Once a commit is prepared, only exact submission recovery is
        safe. A submitted proposal cannot be discarded. Discarding is not
        reversible, though the authored artifact and the recorded verification
        outcomes stay readable; the protected Check receipts behind them are
        erased. Accepts an optional Idempotency-Key.


        Checkfu support posture: alpha; hosted. Required evidence journey:
        skill-delivery. Deployment-specific readiness and the latest proven
        release are available from GET /v1/support/capabilities.
      operationId: skillProposals.discardSkillProposal
      parameters:
        - name: id
          in: path
          schema:
            $ref: '#/components/schemas/SkillProposalId'
          required: true
        - name: checkfu-version
          in: header
          schema:
            type: string
            enum:
              - '2026-08-31'
          required: true
        - name: idempotency-key
          in: header
          schema:
            type: string
            allOf:
              - maxLength: 255
          required: false
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                expected_version:
                  type: integer
                  exclusiveMinimum: 0
              required:
                - expected_version
              additionalProperties: false
        required: true
      responses:
        '200':
          description: >-
            an error exactly on authoring failure, an artifact exactly past
            authoring except discarded failures, a pending submission while
            submitting and optionally retained after submission for recovery, a
            completed submission exactly on submitted, adoption only after
            submission, and verification states only with a recorded attempt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkillProposalConsistency_1'
          headers:
            checkfu-workspace-id:
              description: The Workspace resolved from the authenticated bearer credential.
              required: true
              schema:
                $ref: '#/components/schemas/WorkspaceId'
        '400':
          description: Typed Checkfu wire error
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - validation.malformed
                      message:
                        type: string
                      more:
                        type: string
                        enum:
                          - >-
                            https://docs.checkfu.com/reference/errors#validation-malformed
                        description: >-
                          Stable public documentation and remedy for this error
                          type.
                    required:
                      - type
                      - message
                      - more
                    additionalProperties: false
                additionalProperties: false
        '401':
          description: Typed Checkfu wire error
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: object
                    required:
                      - type
                      - message
                      - more
                    properties:
                      type:
                        type: string
                        enum:
                          - auth.invalid_key
                      message:
                        type: string
                      more:
                        type: string
                        enum:
                          - >-
                            https://docs.checkfu.com/reference/errors#auth-invalid-key
                        description: >-
                          Stable public documentation and remedy for this error
                          type.
                    additionalProperties: false
                additionalProperties: false
        '403':
          description: >-
            The organization, tenant, or workspace backing this key is
            administratively disabled. | Deployment governance or retention
            policy denied the request.
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    required:
                      - error
                    properties:
                      error:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - auth.disabled_tenancy
                          message:
                            type: string
                          more:
                            type: string
                            enum:
                              - >-
                                https://docs.checkfu.com/reference/errors#auth-disabled-tenancy
                            description: >-
                              Stable public documentation and remedy for this
                              error type.
                        required:
                          - type
                          - message
                          - more
                        additionalProperties: false
                    additionalProperties: false
                  - $ref: '#/components/schemas/PolicyDeniedError'
        '404':
          description: >-
            The requested resource does not exist in the resolved deployment
            boundary.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationNotFoundError'
        '409':
          description: >-
            The operation is illegal for the resource's current lifecycle state.
            | The request conflicts with the resource's current state. | An
            idempotent mutation conflicts with a completed or in-progress
            request for the same key.
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/RuntimeInvalidTransitionError'
                  - $ref: '#/components/schemas/ValidationConflictError'
                  - $ref: '#/components/schemas/IdempotencyConflictError'
        '429':
          description: Typed Checkfu wire error
          headers:
            retry-after:
              description: >-
                Delay in seconds for rate limits or deployment quotas with a
                known release or UTC reset boundary
              required: false
              schema:
                type: integer
                minimum: 1
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: object
                    required:
                      - type
                      - message
                      - more
                    properties:
                      type:
                        type: string
                        enum:
                          - budget.exceeded
                      message:
                        type: string
                      more:
                        type: string
                        enum:
                          - >-
                            https://docs.checkfu.com/reference/errors#budget-exceeded
                        description: >-
                          Stable public documentation and remedy for this error
                          type.
                    additionalProperties: false
                additionalProperties: false
        '500':
          description: >-
            An unexpected internal failure occurred; the message contains an
            opaque incident reference.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeInternalError'
      security:
        - bearerAuth: []
components:
  schemas:
    SkillProposalId:
      type: string
      pattern: ^skp_[0-9a-f]{32}$
    SkillProposalConsistency_1:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/SkillProposalId'
        status:
          $ref: '#/components/schemas/Union_148'
        source_session_ids:
          $ref: '#/components/schemas/Arrays_22'
        source_session_boundaries:
          type: array
          items:
            $ref: '#/components/schemas/SkillProposalSessionBoundary'
          allOf:
            - minItems: 1
            - maxItems: 8
        agent:
          $ref: '#/components/schemas/AgentId'
        model_routing_profile_key:
          type: string
          pattern: ^[a-z0-9](?:[a-z0-9._-]{0,93})$
        instructions:
          anyOf:
            - type: string
              allOf:
                - maxLength: 4096
            - type: 'null'
        skill:
          $ref: '#/components/schemas/Union_149'
        verification_material:
          $ref: '#/components/schemas/Union_150'
        verifications:
          $ref: '#/components/schemas/Arrays_23'
        submission_attempt:
          $ref: '#/components/schemas/NullableSkillProposalSubmissionAttempt'
        submission:
          $ref: '#/components/schemas/NullableSkillProposalSubmission'
        adoption:
          $ref: '#/components/schemas/NullableSkillProposalAdoption'
        error:
          anyOf:
            - type: string
              enum:
                - input_session_unavailable
                - input_sessions_too_large
                - authoring_failed
                - internal
            - type: 'null'
        usage:
          $ref: '#/components/schemas/Objects_85'
        created_at:
          type: string
        updated_at:
          type: string
        version:
          type: integer
          exclusiveMinimum: 0
      required:
        - id
        - status
        - source_session_ids
        - agent
        - model_routing_profile_key
        - instructions
        - skill
        - verification_material
        - verifications
        - submission
        - adoption
        - error
        - usage
        - created_at
        - updated_at
        - version
      additionalProperties: false
    WorkspaceId:
      type: string
      pattern: ^wrkspc_[0-9a-f]{32}$
    PolicyDeniedError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - policy.denied
            message:
              type: string
            more:
              type: string
              enum:
                - https://docs.checkfu.com/reference/errors#policy-denied
              description: Stable public documentation and remedy for this error type.
          required:
            - type
            - message
            - more
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: Deployment governance or retention policy denied the request.
    ValidationNotFoundError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - validation.not_found
            message:
              type: string
            more:
              type: string
              enum:
                - https://docs.checkfu.com/reference/errors#validation-not-found
              description: Stable public documentation and remedy for this error type.
          required:
            - type
            - message
            - more
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: >-
        The requested resource does not exist in the resolved deployment
        boundary.
    RuntimeInvalidTransitionError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - runtime.invalid_transition
            message:
              type: string
            more:
              type: string
              enum:
                - >-
                  https://docs.checkfu.com/reference/errors#runtime-invalid-transition
              description: Stable public documentation and remedy for this error type.
          required:
            - type
            - message
            - more
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: The operation is illegal for the resource's current lifecycle state.
    ValidationConflictError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - validation.conflict
            message:
              type: string
            more:
              type: string
              enum:
                - https://docs.checkfu.com/reference/errors#validation-conflict
              description: Stable public documentation and remedy for this error type.
          required:
            - type
            - message
            - more
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: The request conflicts with the resource's current state.
    IdempotencyConflictError:
      anyOf:
        - $ref: '#/components/schemas/ValidationIdempotencyConflictError'
        - $ref: '#/components/schemas/ValidationIdempotencyInProgressError'
      description: >-
        An idempotent mutation conflicts with a completed or in-progress request
        for the same key.
    RuntimeInternalError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - runtime.internal
            message:
              type: string
            more:
              type: string
              enum:
                - https://docs.checkfu.com/reference/errors#runtime-internal
              description: Stable public documentation and remedy for this error type.
          required:
            - type
            - message
            - more
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: >-
        An unexpected internal failure occurred; the message contains an opaque
        incident reference.
    Union_148:
      type: string
      enum:
        - authoring
        - drafted
        - authoring_failed
        - verifying
        - verified
        - verification_failed
        - submitting
        - submitted
        - discarded
    Arrays_22:
      type: array
      items:
        $ref: '#/components/schemas/SessionId'
      allOf:
        - minItems: 1
        - maxItems: 8
    SkillProposalSessionBoundary:
      type: object
      properties:
        session_id:
          $ref: '#/components/schemas/SessionId'
        source_sequence:
          type: integer
          allOf:
            - exclusiveMinimum: 0
            - maximum: 9007199254740991
        range:
          $ref: '#/components/schemas/SkillProposalSessionRange'
      required:
        - session_id
        - source_sequence
      additionalProperties: false
    AgentId:
      type: string
      pattern: ^agent_[0-9a-f]{32}$
    Union_149:
      anyOf:
        - type: object
          properties:
            name:
              type: string
              pattern: ^[a-z0-9](?:[a-z0-9._-]{0,93})$
            description:
              type: string
              allOf:
                - minLength: 1
                - maxLength: 1024
            kind:
              type: string
              enum:
                - instructional
            entry:
              type: string
              allOf:
                - minLength: 1
                - maxLength: 8192
            content_sha256:
              type: string
              pattern: ^sha256:[0-9a-f]{64}$
          required:
            - name
            - description
            - kind
            - entry
            - content_sha256
          additionalProperties: false
        - type: 'null'
    Union_150:
      anyOf:
        - type: object
          properties:
            task:
              type: string
              allOf:
                - minLength: 1
                - maxLength: 2048
            rubric:
              type: string
              allOf:
                - minLength: 1
                - maxLength: 4096
          required:
            - task
            - rubric
          additionalProperties: false
        - type: 'null'
    Arrays_23:
      type: array
      items:
        type: object
        properties:
          session:
            $ref: '#/components/schemas/SessionId'
          environment_id:
            $ref: '#/components/schemas/EnvironmentId'
          source_version:
            type: integer
            exclusiveMinimum: 0
          principal:
            $ref: '#/components/schemas/PrincipalId'
          evaluator_model_routing_profile_key:
            type: string
            pattern: ^[a-z0-9](?:[a-z0-9._-]{0,93})$
          launched_at:
            anyOf:
              - type: string
              - type: 'null'
          started_at:
            type: string
          result:
            anyOf:
              - anyOf:
                  - type: object
                    properties:
                      rule_outcome:
                        $ref: '#/components/schemas/Union_152'
                      evaluation:
                        $ref: '#/components/schemas/Objects_83'
                      completed_at:
                        type: string
                    required:
                      - rule_outcome
                      - evaluation
                      - completed_at
                    additionalProperties: false
                  - type: object
                    properties:
                      verdict:
                        $ref: '#/components/schemas/Union_155'
                      explanation:
                        type: string
                      cost_tokens:
                        anyOf:
                          - type: integer
                            minimum: 0
                          - type: 'null'
                      completed_at:
                        type: string
                    required:
                      - verdict
                      - explanation
                      - cost_tokens
                      - completed_at
                    additionalProperties: false
              - type: 'null'
        required:
          - session
          - started_at
          - result
        additionalProperties: false
      allOf:
        - maxItems: 8
    NullableSkillProposalSubmissionAttempt:
      anyOf:
        - $ref: '#/components/schemas/SkillProposalSubmissionAttempt'
        - type: 'null'
    NullableSkillProposalSubmission:
      anyOf:
        - $ref: '#/components/schemas/SkillProposalSubmission'
        - type: 'null'
    NullableSkillProposalAdoption:
      anyOf:
        - $ref: '#/components/schemas/SkillProposalAdoption'
        - type: 'null'
    Objects_85:
      type: object
      properties:
        input_tokens:
          type: integer
          minimum: 0
        cached_input_tokens:
          type: integer
          minimum: 0
        cache_write_input_tokens:
          type: integer
          minimum: 0
        output_tokens:
          type: integer
          minimum: 0
        reasoning_output_tokens:
          type: integer
          minimum: 0
        total_tokens:
          type: integer
          minimum: 0
      required:
        - input_tokens
        - cached_input_tokens
        - cache_write_input_tokens
        - output_tokens
        - reasoning_output_tokens
        - total_tokens
      additionalProperties: false
    ValidationIdempotencyConflictError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - validation.idempotency_conflict
            message:
              type: string
            more:
              type: string
              enum:
                - >-
                  https://docs.checkfu.com/reference/errors#validation-idempotency-conflict
              description: Stable public documentation and remedy for this error type.
          required:
            - type
            - message
            - more
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: The Idempotency-Key is already bound to a different request.
    ValidationIdempotencyInProgressError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - validation.idempotency_in_progress
            message:
              type: string
            more:
              type: string
              enum:
                - >-
                  https://docs.checkfu.com/reference/errors#validation-idempotency-in-progress
              description: Stable public documentation and remedy for this error type.
          required:
            - type
            - message
            - more
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: >-
        An identical idempotent request is still in progress and may be retried
        later.
    SessionId:
      type: string
      pattern: ^sess_[0-9a-f]{32}$
    SkillProposalSessionRange:
      type: object
      properties:
        after_sequence:
          type: integer
          allOf:
            - minimum: 0
            - maximum: 9007199254740991
        through_sequence:
          type: integer
          allOf:
            - exclusiveMinimum: 0
            - maximum: 9007199254740991
        frontier:
          $ref: '#/components/schemas/SessionEvidenceFrontier'
      required:
        - after_sequence
        - through_sequence
        - frontier
      additionalProperties: false
    EnvironmentId:
      type: string
      pattern: ^env_[0-9a-f]{32}$
    PrincipalId:
      type: string
      pattern: ^prin_[0-9a-f]{32}$
    Union_152:
      type: string
      enum:
        - 'true'
        - 'false'
        - uncertain
        - error
    Objects_83:
      type: object
      properties:
        identity:
          type: object
          properties:
            parent_kind:
              type: string
              enum:
                - skill_proposal
                - instruction_proposal
            parent_id:
              type: string
            slot:
              type: string
          required:
            - parent_kind
            - parent_id
            - slot
          additionalProperties: false
        route:
          anyOf:
            - $ref: '#/components/schemas/Objects_84'
            - type: 'null'
        model:
          anyOf:
            - type: string
            - type: 'null'
        usage:
          anyOf:
            - $ref: '#/components/schemas/Objects_85'
            - type: 'null'
        error_code:
          anyOf:
            - $ref: '#/components/schemas/Union_154'
            - type: 'null'
        input_digest:
          type: string
          pattern: ^sha256:[0-9a-f]{64}$
        specification_digest:
          type: string
          pattern: ^sha256:[0-9a-f]{64}$
        rule_digest:
          type: string
          pattern: ^sha256:[0-9a-f]{64}$
      required:
        - identity
        - route
        - model
        - usage
        - error_code
        - input_digest
        - specification_digest
        - rule_digest
      additionalProperties: false
    Union_155:
      type: string
      enum:
        - satisfied
        - needs_revision
        - max_iterations_reached
        - failed
        - interrupted
    SkillProposalSubmissionAttempt:
      type: object
      properties:
        source_version:
          type: integer
          exclusiveMinimum: 0
        skill_source:
          $ref: '#/components/schemas/SkillSourceId'
        acted_as:
          $ref: '#/components/schemas/PrincipalId'
        branch:
          $ref: '#/components/schemas/GitBranchName'
        base_commit_sha:
          type: string
          pattern: ^(?:[0-9a-f]{40}|[0-9a-f]{64})$
        base_content_sha256:
          type: string
          pattern: ^sha256:[0-9a-f]{64}$
        expected_base_digest:
          anyOf:
            - type: string
              pattern: >-
                ^(?:sha256:[0-9a-f]{64}|git-sha1:[0-9a-f]{40}|git-sha256:[0-9a-f]{64})$
            - type: 'null'
        prepared_commit_sha:
          anyOf:
            - type: string
              pattern: ^(?:[0-9a-f]{40}|[0-9a-f]{64})$
            - type: 'null'
        started_at:
          type: string
      required:
        - source_version
        - skill_source
        - acted_as
        - branch
        - base_commit_sha
        - base_content_sha256
        - expected_base_digest
        - prepared_commit_sha
        - started_at
      additionalProperties: false
      description: >-
        Durable authority for one externally mutating proposal submission
        attempt.
    SkillProposalSubmission:
      type: object
      properties:
        skill_source:
          $ref: '#/components/schemas/SkillSourceId'
        branch:
          $ref: '#/components/schemas/GitBranchName'
        commit_sha:
          type: string
          pattern: ^(?:[0-9a-f]{40}|[0-9a-f]{64})$
        submitted_at:
          type: string
      required:
        - skill_source
        - branch
        - commit_sha
        - submitted_at
      additionalProperties: false
      description: The recorded change proposal in the bound SkillSource repository.
    SkillProposalAdoption:
      type: object
      properties:
        skill_id:
          $ref: '#/components/schemas/SkillId'
        skill_version:
          type: integer
          exclusiveMinimum: 0
        observed_at:
          type: string
      required:
        - skill_id
        - skill_version
        - observed_at
      additionalProperties: false
      description: The merged and synced Skill version carrying the proposal content.
    SessionEvidenceFrontier:
      type: object
      properties:
        event:
          $ref: '#/components/schemas/EventId'
        through_sequence:
          type: integer
          allOf:
            - exclusiveMinimum: 0
            - maximum: 9007199254740991
        primary_thread:
          anyOf:
            - $ref: '#/components/schemas/SessionThreadId'
            - type: 'null'
      required:
        - event
        - through_sequence
        - primary_thread
      additionalProperties: false
      description: >-
        committed Session event identity and inclusive sequence for frozen
        evidence; independent of directory change watermarks
    Objects_84:
      type: object
      properties:
        model_routing_profile_key:
          type: string
        model:
          type: string
        tier:
          type: string
        reason:
          type: string
        access_source:
          $ref: '#/components/schemas/Union_153'
      required:
        - model_routing_profile_key
        - model
        - tier
        - reason
        - access_source
      additionalProperties: false
    Union_154:
      type: string
      enum:
        - invalid_input
        - unavailable_context
        - retention_incompatible
        - unsupported_capability
        - evaluator_unqualified
        - provider_access_denied
        - credentials_missing
        - credentials_rejected
        - quota_exhausted
        - budget_exhausted
        - deadline_exceeded
        - provider_unavailable
        - invalid_protocol
        - indeterminate_work
        - cancelled
    SkillSourceId:
      type: string
      pattern: ^sksrc_[0-9a-f]{32}$
    GitBranchName:
      type: string
      allOf:
        - minLength: 1
        - maxLength: 255
    SkillId:
      type: string
      pattern: ^skl_[0-9a-f]{32}$
    EventId:
      type: string
      pattern: ^evt_[0-9a-f]{32}$
    SessionThreadId:
      type: string
      pattern: ^sthr_[0-9a-f]{32}$
    Union_153:
      anyOf:
        - $ref: '#/components/schemas/Objects_47'
        - $ref: '#/components/schemas/Objects_48'
    Objects_47:
      type: object
      properties:
        kind:
          type: string
          enum:
            - workspace_credential
        provider:
          type: string
          pattern: ^[a-z0-9](?:[a-z0-9._-]{0,93})$
        model_credential_id:
          $ref: '#/components/schemas/ModelCredentialId'
        model_credential_generation_id:
          $ref: '#/components/schemas/ModelCredentialGenerationId'
      required:
        - kind
        - provider
        - model_credential_id
        - model_credential_generation_id
      additionalProperties: false
    Objects_48:
      type: object
      properties:
        kind:
          type: string
          enum:
            - platform_supply
        provider:
          type: string
          pattern: ^[a-z0-9](?:[a-z0-9._-]{0,93})$
        usage_entry_id:
          $ref: '#/components/schemas/UsageEntryId'
        supply_id:
          $ref: '#/components/schemas/PlatformSupplyId'
        credential_generation_id:
          $ref: '#/components/schemas/SupplyCredentialGenerationId'
        rate_card_id:
          $ref: '#/components/schemas/BillingRateCardId'
        customer_rate_card_id:
          $ref: '#/components/schemas/BillingRateCardId'
        rated_at:
          $ref: '#/components/schemas/PlatformModelRatedAt'
      required:
        - kind
        - provider
        - usage_entry_id
        - supply_id
        - credential_generation_id
        - rate_card_id
        - rated_at
      additionalProperties: false
    ModelCredentialId:
      type: string
      pattern: ^mcred_[0-9a-f]{32}$
    ModelCredentialGenerationId:
      type: string
      pattern: ^mcgen_[0-9a-f]{32}$
    UsageEntryId:
      type: string
      pattern: ^use_[0-9a-f]{32}$
    PlatformSupplyId:
      type: string
      pattern: ^sup_[0-9a-f]{32}$
    SupplyCredentialGenerationId:
      type: string
      pattern: ^sgen_[0-9a-f]{32}$
    BillingRateCardId:
      type: string
      pattern: ^rate_[0-9a-f]{32}$
    PlatformModelRatedAt:
      type: string
      allOf:
        - maxLength: 24
        - pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$
          x-checkfu-current-timestamp: true
          description: >-
            A canonical UTC ISO-8601 model-rating instant with millisecond
            precision.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.