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

# Receipt Controls

> For one receipt (tenant-scoped), the framework control IDs each of its checks satisfies under the in-force pack. Optional ?framework filters to one.



## OpenAPI

````yaml GET /v1/compliance/receipts/{id}/controls
openapi: 3.0.0
info:
  title: Wardin API
  description: AI governance & observability platform — external REST API
  version: '1.0'
  contact: {}
servers: []
security: []
tags: []
paths:
  /v1/compliance/receipts/{id}/controls:
    get:
      tags:
        - compliance
      summary: Controls a receipt’s checks satisfy
      description: >-
        For one receipt (tenant-scoped), the framework control IDs each of its
        checks satisfies under the in-force pack. Optional ?framework filters to
        one.
      operationId: ComplianceController_getReceiptControls
      parameters:
        - name: id
          required: true
          in: path
          description: receipt_id (UUID)
          schema:
            type: string
        - name: framework
          required: false
          in: query
          schema:
            type: string
            example: eu_ai_act
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptControlsDto'
        '400':
          description: Malformed receipt id (not a UUID)
        '404':
          description: Receipt or framework not found
      security:
        - bearer: []
components:
  schemas:
    ReceiptControlsDto:
      type: object
      properties:
        receiptId:
          type: string
          example: 018f1234-5678-7abc-def0-123456789abc
        receiptPackVersion:
          type: string
          example: v1
          description: >-
            The compliance pack-set version stamped on the receipt at emit time
            (unsigned side channel). Empty string when unstamped (old receipt or
            WARDIN_COMPLIANCE_PACK_VERSION unset). Per-framework `resolution`
            says whether this stamp resolved to a known pack.
        checks:
          type: array
          items:
            $ref: '#/components/schemas/ReceiptCheckDto'
        verified:
          type: boolean
          example: true
          description: Whether the receipt’s ED25519 signature cryptographically verified.
        note:
          type: object
          nullable: true
          example: null
          description: >-
            Caveat surfaced when verified is false; null when the receipt
            verified.
        frameworks:
          type: array
          items:
            $ref: '#/components/schemas/ReceiptFrameworkControlsDto'
      required:
        - receiptId
        - receiptPackVersion
        - checks
        - verified
        - frameworks
    ReceiptCheckDto:
      type: object
      properties:
        name:
          type: string
          example: policy
        result:
          type: string
          example: allow
      required:
        - name
        - result
    ReceiptFrameworkControlsDto:
      type: object
      properties:
        framework:
          type: string
          example: eu_ai_act
        version:
          type: object
          nullable: true
          example: v1
        disclaimer:
          type: object
          nullable: true
        packHash:
          type: object
          nullable: true
          example: b7e1c2f4a8d6e0f3c1a9b5d7e2f4a6c8d0b2e4f6a8c0d2e4f6a8c0d2e4f6a8c0
          description: >-
            sha256 of the raw YAML bytes of the pack the controls were cited
            from.
        resolution:
          type: string
          example: stamped
          enum:
            - stamped
            - fallback_in_force
            - unstamped
          description: >-
            How this framework’s pack was resolved for the receipt: stamped =
            the receipt’s stamped pack_version resolved to a known pack
            (controls cited from it); fallback_in_force = a non-empty stamp did
            not resolve (deploy skew) so the current in-force pack was used and
            flagged; unstamped = no stamp (old receipt or env unset) → in-force
            pack.
        controls:
          type: array
          items:
            $ref: '#/components/schemas/ReceiptControlDto'
      required:
        - framework
        - resolution
        - controls
    ReceiptControlDto:
      type: object
      properties:
        id:
          type: string
          example: eu_ai_act:art_12
        title:
          type: string
          example: Record-keeping — automatic logging of events
        coverage:
          type: string
          example: enforced
        check:
          type: string
          example: GUARDRAIL
          description: The receipt check that was applied and recorded on this request.
        result:
          type: string
          example: PASS
          description: >-
            The recorded result of that check (a FAIL is still Art-12-grade
            evidence of enforcement).
      required:
        - id
        - title
        - coverage
        - check
        - result
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````