components:
  schemas:
    CheckEligibilityRequest:
      additionalProperties: false
      properties:
        company_age_months:
          minimum: 0
          type: number
        employees:
          minimum: 0
          type: number
        funding_usd:
          minimum: 0
          type: number
        offer_id:
          minLength: 1
          type: string
        region:
          minLength: 1
          type: string
        stage:
          minLength: 1
          type: string
      required:
        - offer_id
      type: object
    CheckOfferEligibilityResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          additionalProperties: false
          properties:
            eligibility:
              additionalProperties: false
              properties:
                max_company_age_months:
                  exclusiveMinimum: 0
                  maximum: 9007199254740991
                  type: integer
                max_employees:
                  exclusiveMinimum: 0
                  maximum: 9007199254740991
                  type: integer
                max_funding_usd:
                  minimum: 0
                  type: number
                regions:
                  default: []
                  items:
                    minLength: 1
                    type: string
                  type: array
                requirements:
                  default: []
                  items:
                    minLength: 1
                    type: string
                  type: array
                stages:
                  default: []
                  items:
                    minLength: 1
                    type: string
                  type: array
              required:
                - stages
                - regions
                - requirements
              type: object
            entity_id:
              minLength: 1
              type: string
            evaluation:
              additionalProperties: false
              properties:
                eligible:
                  anyOf:
                    - type: boolean
                    - type: "null"
                unknown:
                  items:
                    type: string
                  type: array
                unmet:
                  items:
                    type: string
                  type: array
              required:
                - eligible
                - unmet
                - unknown
              type: object
            lifecycle:
              enum:
                - active
                - ended
                - withdrawn
              type: string
            offer_id:
              minLength: 1
              type: string
            revision_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
          required:
            - offer_id
            - evaluation
          type: object
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
      type: object
    GetAdoptionProfileResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          additionalProperties: false
          properties:
            adoption_profile_id:
              pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
              type: string
            canonical_url:
              format: uri
              type: string
            coverage:
              enum:
                - complete
                - partial
                - insufficient
              type: string
            effective_from:
              format: date-time
              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
              type: string
            effective_until:
              format: date-time
              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
              type: string
            entity_id:
              pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
              type: string
            freshness:
              enum:
                - fresh
                - stale
                - unknown
              type: string
            funnel:
              minLength: 1
              type: string
            grade:
              enum:
                - A
                - B
                - C
                - D
                - F
                - unrated
              type: string
            lifecycle:
              enum:
                - active
                - ended
                - withdrawn
              type: string
            policy_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
            product:
              minLength: 1
              type: string
            projection_contract:
              const: sourcey.adoption-projection/v1alpha1
              type: string
            projection_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
            provenance:
              additionalProperties: false
              properties:
                attestation_event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                basis_event_ids:
                  items:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  minItems: 1
                  type: array
                coverage_policy_digest:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                dispute:
                  enum:
                    - none
                    - open
                    - resolved
                  type: string
                fields:
                  items:
                    additionalProperties: false
                    properties:
                      contradicting_event_ids:
                        items:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        type: array
                      freshness:
                        enum:
                          - fresh
                          - stale
                          - unknown
                        type: string
                      latest_observation_at:
                        format: date-time
                        pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                        type: string
                      path:
                        pattern: ^\/.*
                        type: string
                      supporting_event_ids:
                        items:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        type: array
                    required:
                      - path
                      - supporting_event_ids
                      - contradicting_event_ids
                      - freshness
                    type: object
                  minItems: 1
                  type: array
                freshness:
                  enum:
                    - fresh
                    - stale
                    - unknown
                  type: string
                freshness_policy_digest:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                tier:
                  enum:
                    - observed
                    - signed
                    - verified
                  type: string
                verification_event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
              required:
                - tier
                - freshness
                - dispute
                - coverage_policy_digest
                - freshness_policy_digest
                - basis_event_ids
                - fields
              type: object
            revision_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
            stages:
              items:
                additionalProperties: false
                properties:
                  blocker_codes:
                    items:
                      minLength: 1
                      type: string
                    type: array
                  outcome:
                    enum:
                      - pass
                      - constrained
                      - fail
                      - unknown
                      - not_applicable
                    type: string
                  remediation_codes:
                    items:
                      minLength: 1
                      type: string
                    type: array
                  signal_codes:
                    items:
                      pattern: ^[a-z0-9]+(?:[._-][a-z0-9]+)*$
                      type: string
                    type: array
                  stage:
                    enum:
                      - evaluate
                      - sign_up
                      - pay
                      - provision
                      - operate
                    type: string
                required:
                  - stage
                  - outcome
                  - signal_codes
                  - blocker_codes
                  - remediation_codes
                type: object
              maxItems: 5
              minItems: 5
              type: array
          required:
            - projection_contract
            - adoption_profile_id
            - entity_id
            - product
            - funnel
            - lifecycle
            - effective_from
            - revision_digest
            - policy_digest
            - grade
            - stages
            - coverage
            - freshness
            - provenance
            - canonical_url
            - projection_digest
          type: object
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
      type: object
    GetCatalogReleaseResponse200:
      additionalProperties: false
      properties:
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        parent_release_id:
          anyOf:
            - pattern: ^sha256:[a-f0-9]{64}$
              type: string
            - type: "null"
        policy_as_of:
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
          type: string
        release_contract:
          const: sourcey.release-read/v1alpha1
          type: string
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        release_sequence:
          exclusiveMinimum: 0
          maximum: 9007199254740991
          type: integer
        snapshot_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - release_contract
        - release_id
        - release_sequence
        - snapshot_id
        - parent_release_id
        - policy_as_of
        - artifact_sha256
      type: object
    GetCatalogResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          additionalProperties: false
          properties:
            artifact_contract:
              const: sourcey.canonical-artifact/v1alpha1
              type: string
            coverage_policy_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
            entities:
              items:
                additionalProperties: false
                properties:
                  category:
                    pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                    type: string
                  description:
                    minLength: 1
                    type: string
                  entity_id:
                    pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                    type: string
                  name:
                    minLength: 1
                    type: string
                  offers:
                    items:
                      additionalProperties: false
                      properties:
                        effective_from:
                          format: date-time
                          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                          type: string
                        effective_until:
                          format: date-time
                          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                          type: string
                        eligibility:
                          additionalProperties: false
                          properties:
                            max_company_age_months:
                              exclusiveMinimum: 0
                              maximum: 9007199254740991
                              type: integer
                            max_employees:
                              exclusiveMinimum: 0
                              maximum: 9007199254740991
                              type: integer
                            max_funding_usd:
                              minimum: 0
                              type: number
                            regions:
                              default: []
                              items:
                                minLength: 1
                                type: string
                              type: array
                            requirements:
                              default: []
                              items:
                                minLength: 1
                                type: string
                              type: array
                            stages:
                              default: []
                              items:
                                minLength: 1
                                type: string
                              type: array
                          required:
                            - stages
                            - regions
                            - requirements
                          type: object
                        lifecycle:
                          enum:
                            - active
                            - ended
                            - withdrawn
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        provenance:
                          additionalProperties: false
                          properties:
                            attestation_event_id:
                              pattern: ^sha256:[a-f0-9]{64}$
                              type: string
                            basis_event_ids:
                              items:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              minItems: 1
                              type: array
                            coverage_policy_digest:
                              pattern: ^sha256:[a-f0-9]{64}$
                              type: string
                            dispute:
                              enum:
                                - none
                                - open
                                - resolved
                              type: string
                            fields:
                              items:
                                additionalProperties: false
                                properties:
                                  contradicting_event_ids:
                                    items:
                                      pattern: ^sha256:[a-f0-9]{64}$
                                      type: string
                                    type: array
                                  freshness:
                                    enum:
                                      - fresh
                                      - stale
                                      - unknown
                                    type: string
                                  latest_observation_at:
                                    format: date-time
                                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                                    type: string
                                  path:
                                    pattern: ^\/.*
                                    type: string
                                  supporting_event_ids:
                                    items:
                                      pattern: ^sha256:[a-f0-9]{64}$
                                      type: string
                                    type: array
                                required:
                                  - path
                                  - supporting_event_ids
                                  - contradicting_event_ids
                                  - freshness
                                type: object
                              minItems: 1
                              type: array
                            freshness:
                              enum:
                                - fresh
                                - stale
                                - unknown
                              type: string
                            freshness_policy_digest:
                              pattern: ^sha256:[a-f0-9]{64}$
                              type: string
                            tier:
                              enum:
                                - observed
                                - signed
                                - verified
                              type: string
                            verification_event_id:
                              pattern: ^sha256:[a-f0-9]{64}$
                              type: string
                          required:
                            - tier
                            - freshness
                            - dispute
                            - coverage_policy_digest
                            - freshness_policy_digest
                            - basis_event_ids
                            - fields
                          type: object
                        redemption:
                          additionalProperties: false
                          properties:
                            method:
                              enum:
                                - form
                                - code
                                - contact
                                - automatic
                                - other
                              type: string
                            url:
                              format: uri
                              type: string
                          required:
                            - url
                            - method
                          type: object
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        slug:
                          pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                          type: string
                        summary:
                          minLength: 1
                          type: string
                        terms_url:
                          format: uri
                          type: string
                        title:
                          minLength: 1
                          type: string
                        type:
                          enum:
                            - credits
                            - discount
                            - fixed-price
                            - free-tier
                            - other
                          type: string
                        value:
                          additionalProperties: false
                          properties:
                            amount:
                              minimum: 0
                              type: number
                            currency:
                              maxLength: 3
                              minLength: 3
                              type: string
                            display:
                              minLength: 1
                              type: string
                            duration_months:
                              exclusiveMinimum: 0
                              maximum: 9007199254740991
                              type: integer
                            percent:
                              maximum: 100
                              minimum: 0
                              type: number
                          required:
                            - display
                          type: object
                      required:
                        - offer_id
                        - slug
                        - title
                        - summary
                        - type
                        - value
                        - eligibility
                        - redemption
                        - lifecycle
                        - effective_from
                        - revision_digest
                        - provenance
                      type: object
                    type: array
                  provenance:
                    additionalProperties: false
                    properties:
                      attestation_event_id:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      basis_event_ids:
                        items:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        minItems: 1
                        type: array
                      coverage_policy_digest:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      dispute:
                        enum:
                          - none
                          - open
                          - resolved
                        type: string
                      fields:
                        items:
                          additionalProperties: false
                          properties:
                            contradicting_event_ids:
                              items:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              type: array
                            freshness:
                              enum:
                                - fresh
                                - stale
                                - unknown
                              type: string
                            latest_observation_at:
                              format: date-time
                              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                              type: string
                            path:
                              pattern: ^\/.*
                              type: string
                            supporting_event_ids:
                              items:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              type: array
                          required:
                            - path
                            - supporting_event_ids
                            - contradicting_event_ids
                            - freshness
                          type: object
                        minItems: 1
                        type: array
                      freshness:
                        enum:
                          - fresh
                          - stale
                          - unknown
                        type: string
                      freshness_policy_digest:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      tier:
                        enum:
                          - observed
                          - signed
                          - verified
                        type: string
                      verification_event_id:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                    required:
                      - tier
                      - freshness
                      - dispute
                      - coverage_policy_digest
                      - freshness_policy_digest
                      - basis_event_ids
                      - fields
                    type: object
                  revision_digest:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  slug:
                    pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                    type: string
                  website:
                    format: uri
                    type: string
                required:
                  - entity_id
                  - slug
                  - name
                  - description
                  - website
                  - category
                  - revision_digest
                  - provenance
                  - offers
                type: object
              type: array
            freshness_policy_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
            policies:
              items:
                additionalProperties: false
                properties:
                  revision_digest:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  schema_version:
                    const: sourcey.policy/v1alpha1
                    type: string
                  slug:
                    pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                    type: string
                  summary:
                    minLength: 1
                    type: string
                  title:
                    minLength: 1
                    type: string
                required:
                  - slug
                  - title
                  - summary
                  - revision_digest
                type: object
              type: array
            policy_as_of:
              format: date-time
              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
              type: string
            root_set_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
            signer_registry_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
          required:
            - artifact_contract
            - policy_as_of
            - root_set_digest
            - signer_registry_digest
            - coverage_policy_digest
            - freshness_policy_digest
            - entities
            - policies
          type: object
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
      type: object
    GetCatalogStatusResponse200:
      additionalProperties: false
      properties:
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        candidate_contract:
          const: sourcey.release-candidate/v1alpha1
          type: string
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        service:
          const: sourcey-serving-worker
          type: string
        snapshot_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        status:
          const: ok
          type: string
      required:
        - status
        - service
        - release_id
        - snapshot_id
        - candidate_contract
        - artifact_sha256
      type: object
    GetCatalogStatusResponse401:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        error:
          additionalProperties: false
          properties:
            capability:
              minLength: 1
              type: string
            code:
              enum:
                - capability_unavailable
                - invalid_cursor
                - invalid_credential
                - invalid_credential_format
                - invalid_request
                - insufficient_scope
                - internal_error
                - method_not_allowed
                - not_found
                - rate_limited
                - service_unavailable
              type: string
            message:
              minLength: 1
              type: string
          required:
            - code
            - message
          type: object
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - error
      type: object
    GetChangesResponse200:
      additionalProperties: false
      properties:
        data:
          items:
            additionalProperties: false
            properties:
              basis_event_ids:
                items:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                type: array
              change_id:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              kind:
                enum:
                  - entity.added
                  - entity.updated
                  - entity.retired
                  - offer.added
                  - offer.updated
                  - offer.ended
                  - offer.withdrawn
                  - policy.added
                  - policy.updated
                  - policy.retired
                  - adoption.added
                  - adoption.updated
                  - adoption.regraded
                  - adoption.ended
                  - adoption.withdrawn
                  - asset.bound
                  - asset.updated
                  - asset.withdrawn
                type: string
              previous_projection_digest:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              previous_revision_digest:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              projection_digest:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              revision_digest:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              subject_id:
                anyOf:
                  - pattern: ^[a-z0-9][a-z0-9_-]*$
                    type: string
                  - pattern: ^sha256:[a-f0-9]{64}$
                    type: string
              subject_type:
                enum:
                  - entity
                  - offer
                  - policy
                  - adoption_profile
                  - asset_binding
                type: string
              tombstone:
                additionalProperties: false
                properties:
                  canonical_route:
                    pattern: ^\/.*
                    type: string
                  reason:
                    enum:
                      - retired
                      - ended
                      - withdrawn
                    type: string
                required:
                  - reason
                type: object
            required:
              - change_id
              - kind
              - subject_type
              - subject_id
              - basis_event_ids
            type: object
          type: array
        diff_digest:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        feed_contract:
          const: sourcey.catalog-feed/v1alpha1
          type: string
        next_cursor:
          anyOf:
            - minLength: 1
              type: string
            - type: "null"
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        retained_from_release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        snapshot_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - feed_contract
        - release_id
        - snapshot_id
        - diff_digest
        - retained_from_release_id
        - data
        - next_cursor
      type: object
    GetEntityResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          anyOf:
            - additionalProperties: false
              properties:
                category:
                  pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                  type: string
                description:
                  minLength: 1
                  type: string
                entity_id:
                  pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                name:
                  minLength: 1
                  type: string
                offers:
                  items:
                    additionalProperties: false
                    properties:
                      effective_from:
                        format: date-time
                        pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                        type: string
                      effective_until:
                        format: date-time
                        pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                        type: string
                      eligibility:
                        additionalProperties: false
                        properties:
                          max_company_age_months:
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                            type: integer
                          max_employees:
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                            type: integer
                          max_funding_usd:
                            minimum: 0
                            type: number
                          regions:
                            default: []
                            items:
                              minLength: 1
                              type: string
                            type: array
                          requirements:
                            default: []
                            items:
                              minLength: 1
                              type: string
                            type: array
                          stages:
                            default: []
                            items:
                              minLength: 1
                              type: string
                            type: array
                        required:
                          - stages
                          - regions
                          - requirements
                        type: object
                      lifecycle:
                        enum:
                          - active
                          - ended
                          - withdrawn
                        type: string
                      offer_id:
                        pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                        type: string
                      provenance:
                        additionalProperties: false
                        properties:
                          attestation_event_id:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          basis_event_ids:
                            items:
                              pattern: ^sha256:[a-f0-9]{64}$
                              type: string
                            minItems: 1
                            type: array
                          coverage_policy_digest:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          dispute:
                            enum:
                              - none
                              - open
                              - resolved
                            type: string
                          fields:
                            items:
                              additionalProperties: false
                              properties:
                                contradicting_event_ids:
                                  items:
                                    pattern: ^sha256:[a-f0-9]{64}$
                                    type: string
                                  type: array
                                freshness:
                                  enum:
                                    - fresh
                                    - stale
                                    - unknown
                                  type: string
                                latest_observation_at:
                                  format: date-time
                                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                                  type: string
                                path:
                                  pattern: ^\/.*
                                  type: string
                                supporting_event_ids:
                                  items:
                                    pattern: ^sha256:[a-f0-9]{64}$
                                    type: string
                                  type: array
                              required:
                                - path
                                - supporting_event_ids
                                - contradicting_event_ids
                                - freshness
                              type: object
                            minItems: 1
                            type: array
                          freshness:
                            enum:
                              - fresh
                              - stale
                              - unknown
                            type: string
                          freshness_policy_digest:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          tier:
                            enum:
                              - observed
                              - signed
                              - verified
                            type: string
                          verification_event_id:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                        required:
                          - tier
                          - freshness
                          - dispute
                          - coverage_policy_digest
                          - freshness_policy_digest
                          - basis_event_ids
                          - fields
                        type: object
                      redemption:
                        additionalProperties: false
                        properties:
                          method:
                            enum:
                              - form
                              - code
                              - contact
                              - automatic
                              - other
                            type: string
                          url:
                            format: uri
                            type: string
                        required:
                          - url
                          - method
                        type: object
                      revision_digest:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      slug:
                        pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                        type: string
                      summary:
                        minLength: 1
                        type: string
                      terms_url:
                        format: uri
                        type: string
                      title:
                        minLength: 1
                        type: string
                      type:
                        enum:
                          - credits
                          - discount
                          - fixed-price
                          - free-tier
                          - other
                        type: string
                      value:
                        additionalProperties: false
                        properties:
                          amount:
                            minimum: 0
                            type: number
                          currency:
                            maxLength: 3
                            minLength: 3
                            type: string
                          display:
                            minLength: 1
                            type: string
                          duration_months:
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                            type: integer
                          percent:
                            maximum: 100
                            minimum: 0
                            type: number
                        required:
                          - display
                        type: object
                    required:
                      - offer_id
                      - slug
                      - title
                      - summary
                      - type
                      - value
                      - eligibility
                      - redemption
                      - lifecycle
                      - effective_from
                      - revision_digest
                      - provenance
                    type: object
                  type: array
                provenance:
                  additionalProperties: false
                  properties:
                    attestation_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    basis_event_ids:
                      items:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      minItems: 1
                      type: array
                    coverage_policy_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    dispute:
                      enum:
                        - none
                        - open
                        - resolved
                      type: string
                    fields:
                      items:
                        additionalProperties: false
                        properties:
                          contradicting_event_ids:
                            items:
                              pattern: ^sha256:[a-f0-9]{64}$
                              type: string
                            type: array
                          freshness:
                            enum:
                              - fresh
                              - stale
                              - unknown
                            type: string
                          latest_observation_at:
                            format: date-time
                            pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                            type: string
                          path:
                            pattern: ^\/.*
                            type: string
                          supporting_event_ids:
                            items:
                              pattern: ^sha256:[a-f0-9]{64}$
                              type: string
                            type: array
                        required:
                          - path
                          - supporting_event_ids
                          - contradicting_event_ids
                          - freshness
                        type: object
                      minItems: 1
                      type: array
                    freshness:
                      enum:
                        - fresh
                        - stale
                        - unknown
                      type: string
                    freshness_policy_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    tier:
                      enum:
                        - observed
                        - signed
                        - verified
                      type: string
                    verification_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - tier
                    - freshness
                    - dispute
                    - coverage_policy_digest
                    - freshness_policy_digest
                    - basis_event_ids
                    - fields
                  type: object
                revision_digest:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                slug:
                  pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                  type: string
                website:
                  format: uri
                  type: string
              required:
                - entity_id
                - slug
                - name
                - description
                - website
                - category
                - revision_digest
                - provenance
                - offers
              type: object
            - oneOf:
                - additionalProperties: false
                  properties:
                    canonical_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    kind:
                      const: entity_tombstone
                      type: string
                    transition:
                      const: merged
                      type: string
                  required:
                    - kind
                    - entity_id
                    - transition
                    - canonical_entity_id
                    - event_id
                  type: object
                - additionalProperties: false
                  properties:
                    canonical_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    kind:
                      const: entity_tombstone
                      type: string
                    transition:
                      const: successor
                      type: string
                  required:
                    - kind
                    - entity_id
                    - transition
                    - canonical_entity_id
                    - event_id
                  type: object
                - additionalProperties: false
                  properties:
                    continuing_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    kind:
                      const: entity_tombstone
                      type: string
                    replacement_entity_ids:
                      items:
                        pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                        type: string
                      minItems: 1
                      type: array
                    transition:
                      const: split
                      type: string
                  required:
                    - kind
                    - entity_id
                    - transition
                    - replacement_entity_ids
                    - event_id
                  type: object
                - additionalProperties: false
                  properties:
                    entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    kind:
                      const: entity_tombstone
                      type: string
                    transition:
                      const: retired
                      type: string
                  required:
                    - kind
                    - entity_id
                    - transition
                  type: object
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
      type: object
    GetEventResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          anyOf:
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: evidence.bound
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    binding_method:
                      minLength: 1
                      type: string
                    binding_version:
                      minLength: 1
                      type: string
                    observation_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    paths:
                      items:
                        pattern: ^\/(?:[^~/]|~0|~1)+(?:\/(?:[^~/]|~0|~1)+)*$
                        type: string
                      minItems: 1
                      type: array
                    polarity:
                      enum:
                        - supports
                        - contradicts
                      type: string
                  required:
                    - observation_id
                    - paths
                    - polarity
                    - binding_method
                    - binding_version
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: evidence.retracted
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    adjudication_evidence_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    reason_code:
                      minLength: 1
                      type: string
                    replacement_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    target_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - target_event_id
                    - reason_code
                    - adjudication_evidence_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: discrepancy.resolved
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    active_event_ids:
                      items:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      type: array
                    conflicting_event_ids:
                      items:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      minItems: 2
                      type: array
                    evidence_digests:
                      items:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      minItems: 1
                      type: array
                    outcome:
                      enum:
                        - support-prevails
                        - contradiction-prevails
                        - both-invalid
                        - new-revision-required
                      type: string
                    replacement_revision_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - conflicting_event_ids
                    - outcome
                    - active_event_ids
                    - evidence_digests
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: authority.claimed
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    authority_claim_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    authorized_issuer_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    controlled_domain:
                      minLength: 1
                      type: string
                    method:
                      enum:
                        - dns-txt
                        - domain-email
                      type: string
                    proof_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    proven_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    recheck_due_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                  required:
                    - authority_claim_id
                    - authorized_issuer_id
                    - controlled_domain
                    - method
                    - proof_digest
                    - proven_at
                    - recheck_due_at
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: authority.rechecked
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    authority_claim_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    checked_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    next_recheck_due_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                  required:
                    - authority_claim_id
                    - checked_at
                    - next_recheck_due_at
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: authority.revoked
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    authority_claim_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    reason_code:
                      minLength: 1
                      type: string
                    revoked_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                  required:
                    - authority_claim_id
                    - revoked_at
                    - reason_code
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: authority.superseded
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    new_authority_claim_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    old_authority_claim_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    superseded_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                  required:
                    - old_authority_claim_id
                    - new_authority_claim_id
                    - superseded_at
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: subject.attested
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    attested_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    authority_claim_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                  required:
                    - authority_claim_id
                    - attested_at
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: attestation.revoked
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    authority_claim_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    reason_code:
                      minLength: 1
                      type: string
                    revoked_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    target_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - target_event_id
                    - authority_claim_id
                    - revoked_at
                    - reason_code
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: verification.completed
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    checked_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    coverage_policy_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    method_version:
                      minLength: 1
                      type: string
                    receipt_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    result:
                      enum:
                        - pass
                        - fail
                        - inconclusive
                      type: string
                    scope:
                      enum:
                        - whole-revision
                        - paths
                      type: string
                    verification_expires_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    verification_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    verified_paths:
                      items:
                        pattern: ^\/(?:[^~/]|~0|~1)+(?:\/(?:[^~/]|~0|~1)+)*$
                        type: string
                      type: array
                    verifier_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                  required:
                    - verification_id
                    - verifier_id
                    - method_version
                    - scope
                    - verified_paths
                    - result
                    - receipt_digest
                    - checked_at
                    - verification_expires_at
                    - coverage_policy_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: verification.revoked
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    reason_code:
                      minLength: 1
                      type: string
                    revoked_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    target_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - target_event_id
                    - revoked_at
                    - reason_code
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: freshness.exception-granted
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    evidence_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    paths:
                      items:
                        pattern: ^\/(?:[^~/]|~0|~1)+(?:\/(?:[^~/]|~0|~1)+)*$
                        type: string
                      minItems: 1
                      type: array
                    reason_code:
                      minLength: 1
                      type: string
                    valid_until:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                  required:
                    - paths
                    - valid_until
                    - reason_code
                    - evidence_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: freshness.exception-revoked
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    reason_code:
                      minLength: 1
                      type: string
                    revoked_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    target_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - target_event_id
                    - revoked_at
                    - reason_code
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: dispute.opened
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    case_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    dispute_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    opened_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    public_reason_code:
                      minLength: 1
                      type: string
                  required:
                    - dispute_id
                    - opened_at
                    - public_reason_code
                    - case_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: dispute.resolved
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    case_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    dispute_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    opened_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    resolution_code:
                      minLength: 1
                      type: string
                    resolved_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                  required:
                    - dispute_id
                    - opened_event_id
                    - resolved_at
                    - resolution_code
                    - case_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: asset.bound
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    approval_receipt_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    approval_scope:
                      minLength: 1
                      type: string
                    asset_object_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    authority_claim_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    effective_from:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    effective_until:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    license_basis:
                      minLength: 1
                      type: string
                    role:
                      enum:
                        - logo-light
                        - logo-dark
                        - icon
                      type: string
                    served_derivative_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    source_basis:
                      minLength: 1
                      type: string
                    superseded_binding_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - role
                    - asset_object_digest
                    - served_derivative_digest
                    - authority_claim_id
                    - approval_receipt_digest
                    - approval_scope
                    - source_basis
                    - license_basis
                    - effective_from
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: asset.withdrawn
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    effective_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    reason_code:
                      minLength: 1
                      type: string
                    target_binding_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - target_binding_event_id
                    - effective_at
                    - reason_code
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: asset.takedown-ordered
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    case_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    effective_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    public_reason_code:
                      minLength: 1
                      type: string
                    target_binding_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - target_binding_event_id
                    - effective_at
                    - public_reason_code
                    - case_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: entity.merged
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    disposition:
                      additionalProperties: false
                      properties:
                        adoption_profiles:
                          default: []
                          items:
                            additionalProperties: false
                            properties:
                              adoption_profile_id:
                                pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              disposition:
                                enum:
                                  - merge
                                  - reparent
                                  - end
                                type: string
                              target_adoption_profile_id:
                                pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              target_entity_id:
                                pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                            required:
                              - adoption_profile_id
                              - disposition
                            type: object
                          type: array
                        aliases:
                          default: []
                          items:
                            type: string
                          type: array
                        asset_bindings:
                          default: []
                          items:
                            additionalProperties: false
                            properties:
                              binding_event_id:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              disposition:
                                enum:
                                  - rebind
                                  - end
                                type: string
                              replacement_binding_event_id:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                            required:
                              - binding_event_id
                              - disposition
                            type: object
                          type: array
                        offers:
                          items:
                            additionalProperties: false
                            properties:
                              disposition:
                                enum:
                                  - merge
                                  - reparent
                                  - end
                                type: string
                              offer_id:
                                pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              target_entity_id:
                                pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              target_offer_id:
                                pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                            required:
                              - offer_id
                              - disposition
                            type: object
                          type: array
                      required:
                        - aliases
                        - offers
                        - adoption_profiles
                        - asset_bindings
                      type: object
                    effective_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    evidence_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    reason:
                      minLength: 1
                      type: string
                    retired_entity_ids:
                      items:
                        pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                        type: string
                      minItems: 1
                      type: array
                    surviving_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                  required:
                    - surviving_entity_id
                    - retired_entity_ids
                    - disposition
                    - effective_at
                    - reason
                    - evidence_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: entity.split
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    continuing_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    disposition:
                      additionalProperties: false
                      properties:
                        adoption_profiles:
                          default: []
                          items:
                            additionalProperties: false
                            properties:
                              adoption_profile_id:
                                pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              disposition:
                                enum:
                                  - merge
                                  - reparent
                                  - end
                                type: string
                              target_adoption_profile_id:
                                pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              target_entity_id:
                                pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                            required:
                              - adoption_profile_id
                              - disposition
                            type: object
                          type: array
                        aliases:
                          default: []
                          items:
                            type: string
                          type: array
                        asset_bindings:
                          default: []
                          items:
                            additionalProperties: false
                            properties:
                              binding_event_id:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              disposition:
                                enum:
                                  - rebind
                                  - end
                                type: string
                              replacement_binding_event_id:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                            required:
                              - binding_event_id
                              - disposition
                            type: object
                          type: array
                        offers:
                          items:
                            additionalProperties: false
                            properties:
                              disposition:
                                enum:
                                  - merge
                                  - reparent
                                  - end
                                type: string
                              offer_id:
                                pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              target_entity_id:
                                pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              target_offer_id:
                                pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                            required:
                              - offer_id
                              - disposition
                            type: object
                          type: array
                      required:
                        - aliases
                        - offers
                        - adoption_profiles
                        - asset_bindings
                      type: object
                    effective_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    evidence_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    new_entity_ids:
                      items:
                        pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                        type: string
                      minItems: 1
                      type: array
                    original_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    reason:
                      minLength: 1
                      type: string
                  required:
                    - original_entity_id
                    - new_entity_ids
                    - disposition
                    - effective_at
                    - reason
                    - evidence_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: entity.succeeded
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    disposition:
                      additionalProperties: false
                      properties:
                        adoption_profiles:
                          default: []
                          items:
                            additionalProperties: false
                            properties:
                              adoption_profile_id:
                                pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              disposition:
                                enum:
                                  - merge
                                  - reparent
                                  - end
                                type: string
                              target_adoption_profile_id:
                                pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              target_entity_id:
                                pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                            required:
                              - adoption_profile_id
                              - disposition
                            type: object
                          type: array
                        aliases:
                          default: []
                          items:
                            type: string
                          type: array
                        asset_bindings:
                          default: []
                          items:
                            additionalProperties: false
                            properties:
                              binding_event_id:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              disposition:
                                enum:
                                  - rebind
                                  - end
                                type: string
                              replacement_binding_event_id:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                            required:
                              - binding_event_id
                              - disposition
                            type: object
                          type: array
                        offers:
                          items:
                            additionalProperties: false
                            properties:
                              disposition:
                                enum:
                                  - merge
                                  - reparent
                                  - end
                                type: string
                              offer_id:
                                pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              target_entity_id:
                                pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                              target_offer_id:
                                pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                                type: string
                            required:
                              - offer_id
                              - disposition
                            type: object
                          type: array
                      required:
                        - aliases
                        - offers
                        - adoption_profiles
                        - asset_bindings
                      type: object
                    effective_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    evidence_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    predecessor_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    predecessor_retires:
                      type: boolean
                    relationship_code:
                      minLength: 1
                      type: string
                    successor_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                  required:
                    - predecessor_entity_id
                    - successor_entity_id
                    - relationship_code
                    - predecessor_retires
                    - effective_at
                    - evidence_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: offer.merged
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    effective_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    reason:
                      minLength: 1
                      type: string
                    retired_offer_ids:
                      items:
                        pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                        type: string
                      minItems: 1
                      type: array
                    surviving_offer_id:
                      pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                  required:
                    - surviving_offer_id
                    - retired_offer_ids
                    - entity_id
                    - effective_at
                    - reason
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: offer.reparented
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    continuity_evidence_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    new_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    offer_id:
                      pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    old_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    valid_from:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    valid_until:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                  required:
                    - offer_id
                    - old_entity_id
                    - new_entity_id
                    - valid_from
                    - continuity_evidence_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: adoption-profile.merged
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    continuity_evidence_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    effective_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    reason:
                      minLength: 1
                      type: string
                    retired_adoption_profile_ids:
                      items:
                        pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                        type: string
                      minItems: 1
                      type: array
                    surviving_adoption_profile_id:
                      pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                  required:
                    - surviving_adoption_profile_id
                    - retired_adoption_profile_ids
                    - entity_id
                    - effective_at
                    - continuity_evidence_digest
                    - reason
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: adoption-profile.reparented
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    adoption_profile_id:
                      pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    continuity_evidence_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    new_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    old_entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    valid_from:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    valid_until:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                  required:
                    - adoption_profile_id
                    - old_entity_id
                    - new_entity_id
                    - valid_from
                    - continuity_evidence_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
            - additionalProperties: false
              properties:
                event_contract:
                  const: sourcey.catalog-event/v1alpha1
                  type: string
                event_id:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                issuer_id:
                  pattern: ^[a-z0-9][a-z0-9_-]*$
                  type: string
                kind:
                  const: identity.transition-superseded
                  type: string
                occurred_at:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                operation_id:
                  pattern: ^op_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                payload:
                  additionalProperties: false
                  properties:
                    corrected_at:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    evidence_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    reason:
                      minLength: 1
                      type: string
                    replacement_event_ids:
                      items:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      minItems: 1
                      type: array
                    target_event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - target_event_id
                    - replacement_event_ids
                    - corrected_at
                    - reason
                    - evidence_digest
                  type: object
                protected:
                  additionalProperties: false
                  properties:
                    algorithm:
                      const: ed25519
                      type: string
                    key_id:
                      pattern: ^[a-z0-9][a-z0-9_-]*$
                      type: string
                    signature:
                      minLength: 1
                      type: string
                    signature_purpose:
                      enum:
                        - catalog-evidence
                        - catalog-identity
                        - catalog-authority
                        - catalog-attestation
                        - catalog-verification
                        - catalog-dispute
                        - catalog-policy
                        - catalog-release
                        - catalog-feed
                      type: string
                    signer_registry_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                  required:
                    - signature_purpose
                    - signer_registry_digest
                    - key_id
                    - algorithm
                    - signature
                  type: object
                subject:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: entity
                          type: string
                      required:
                        - subject_type
                        - entity_id
                      type: object
                    - additionalProperties: false
                      properties:
                        adoption_profile_id:
                          pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: adoption_profile
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - adoption_profile_id
                      type: object
                    - additionalProperties: false
                      properties:
                        entity_id:
                          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        offer_id:
                          pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                          type: string
                        revision_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        subject_type:
                          const: offer
                          type: string
                      required:
                        - subject_type
                        - entity_id
                        - offer_id
                      type: object
              required:
                - event_contract
                - kind
                - issuer_id
                - operation_id
                - subject
                - occurred_at
                - payload
                - event_id
                - protected
              type: object
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
      type: object
    GetObservationResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          additionalProperties: false
          properties:
            capture:
              additionalProperties: false
              properties:
                availability:
                  enum:
                    - public
                    - private-receipt
                  type: string
                bytes:
                  maximum: 9007199254740991
                  minimum: 0
                  type: integer
                digest:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                media_type:
                  minLength: 1
                  type: string
              required:
                - digest
                - bytes
                - media_type
                - availability
              type: object
            method:
              additionalProperties: false
              properties:
                name:
                  enum:
                    - fixture
                    - http
                    - headless
                    - manual
                  type: string
                version:
                  minLength: 1
                  type: string
              required:
                - name
                - version
              type: object
            no_capture_reason:
              enum:
                - dns-failure
                - connect-timeout
                - tls-failure
                - access-denied
                - policy-blocked
                - empty-response
                - extractor-error
              type: string
            observation_contract:
              const: sourcey.observation/v1alpha1
              type: string
            observation_id:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
            outcome:
              enum:
                - supports-candidate
                - contradicts-candidate
                - unreachable
                - error
              type: string
            retrieved_at:
              format: date-time
              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
              type: string
            source_id:
              pattern: ^[a-z0-9][a-z0-9_-]*$
              type: string
            source_uri:
              format: uri
              type: string
          required:
            - observation_contract
            - source_id
            - source_uri
            - retrieved_at
            - method
            - outcome
            - observation_id
          type: object
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
      type: object
    GetOfferResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          anyOf:
            - additionalProperties: false
              properties:
                entity:
                  additionalProperties: false
                  properties:
                    category:
                      pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                      type: string
                    description:
                      minLength: 1
                      type: string
                    entity_id:
                      pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    name:
                      minLength: 1
                      type: string
                    offers:
                      items:
                        additionalProperties: false
                        properties:
                          effective_from:
                            format: date-time
                            pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                            type: string
                          effective_until:
                            format: date-time
                            pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                            type: string
                          eligibility:
                            additionalProperties: false
                            properties:
                              max_company_age_months:
                                exclusiveMinimum: 0
                                maximum: 9007199254740991
                                type: integer
                              max_employees:
                                exclusiveMinimum: 0
                                maximum: 9007199254740991
                                type: integer
                              max_funding_usd:
                                minimum: 0
                                type: number
                              regions:
                                default: []
                                items:
                                  minLength: 1
                                  type: string
                                type: array
                              requirements:
                                default: []
                                items:
                                  minLength: 1
                                  type: string
                                type: array
                              stages:
                                default: []
                                items:
                                  minLength: 1
                                  type: string
                                type: array
                            required:
                              - stages
                              - regions
                              - requirements
                            type: object
                          lifecycle:
                            enum:
                              - active
                              - ended
                              - withdrawn
                            type: string
                          offer_id:
                            pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                            type: string
                          provenance:
                            additionalProperties: false
                            properties:
                              attestation_event_id:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              basis_event_ids:
                                items:
                                  pattern: ^sha256:[a-f0-9]{64}$
                                  type: string
                                minItems: 1
                                type: array
                              coverage_policy_digest:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              dispute:
                                enum:
                                  - none
                                  - open
                                  - resolved
                                type: string
                              fields:
                                items:
                                  additionalProperties: false
                                  properties:
                                    contradicting_event_ids:
                                      items:
                                        pattern: ^sha256:[a-f0-9]{64}$
                                        type: string
                                      type: array
                                    freshness:
                                      enum:
                                        - fresh
                                        - stale
                                        - unknown
                                      type: string
                                    latest_observation_at:
                                      format: date-time
                                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                                      type: string
                                    path:
                                      pattern: ^\/.*
                                      type: string
                                    supporting_event_ids:
                                      items:
                                        pattern: ^sha256:[a-f0-9]{64}$
                                        type: string
                                      type: array
                                  required:
                                    - path
                                    - supporting_event_ids
                                    - contradicting_event_ids
                                    - freshness
                                  type: object
                                minItems: 1
                                type: array
                              freshness:
                                enum:
                                  - fresh
                                  - stale
                                  - unknown
                                type: string
                              freshness_policy_digest:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              tier:
                                enum:
                                  - observed
                                  - signed
                                  - verified
                                type: string
                              verification_event_id:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                            required:
                              - tier
                              - freshness
                              - dispute
                              - coverage_policy_digest
                              - freshness_policy_digest
                              - basis_event_ids
                              - fields
                            type: object
                          redemption:
                            additionalProperties: false
                            properties:
                              method:
                                enum:
                                  - form
                                  - code
                                  - contact
                                  - automatic
                                  - other
                                type: string
                              url:
                                format: uri
                                type: string
                            required:
                              - url
                              - method
                            type: object
                          revision_digest:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          slug:
                            pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                            type: string
                          summary:
                            minLength: 1
                            type: string
                          terms_url:
                            format: uri
                            type: string
                          title:
                            minLength: 1
                            type: string
                          type:
                            enum:
                              - credits
                              - discount
                              - fixed-price
                              - free-tier
                              - other
                            type: string
                          value:
                            additionalProperties: false
                            properties:
                              amount:
                                minimum: 0
                                type: number
                              currency:
                                maxLength: 3
                                minLength: 3
                                type: string
                              display:
                                minLength: 1
                                type: string
                              duration_months:
                                exclusiveMinimum: 0
                                maximum: 9007199254740991
                                type: integer
                              percent:
                                maximum: 100
                                minimum: 0
                                type: number
                            required:
                              - display
                            type: object
                        required:
                          - offer_id
                          - slug
                          - title
                          - summary
                          - type
                          - value
                          - eligibility
                          - redemption
                          - lifecycle
                          - effective_from
                          - revision_digest
                          - provenance
                        type: object
                      type: array
                    provenance:
                      additionalProperties: false
                      properties:
                        attestation_event_id:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        basis_event_ids:
                          items:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          minItems: 1
                          type: array
                        coverage_policy_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        dispute:
                          enum:
                            - none
                            - open
                            - resolved
                          type: string
                        fields:
                          items:
                            additionalProperties: false
                            properties:
                              contradicting_event_ids:
                                items:
                                  pattern: ^sha256:[a-f0-9]{64}$
                                  type: string
                                type: array
                              freshness:
                                enum:
                                  - fresh
                                  - stale
                                  - unknown
                                type: string
                              latest_observation_at:
                                format: date-time
                                pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                                type: string
                              path:
                                pattern: ^\/.*
                                type: string
                              supporting_event_ids:
                                items:
                                  pattern: ^sha256:[a-f0-9]{64}$
                                  type: string
                                type: array
                            required:
                              - path
                              - supporting_event_ids
                              - contradicting_event_ids
                              - freshness
                            type: object
                          minItems: 1
                          type: array
                        freshness:
                          enum:
                            - fresh
                            - stale
                            - unknown
                          type: string
                        freshness_policy_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        tier:
                          enum:
                            - observed
                            - signed
                            - verified
                          type: string
                        verification_event_id:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                      required:
                        - tier
                        - freshness
                        - dispute
                        - coverage_policy_digest
                        - freshness_policy_digest
                        - basis_event_ids
                        - fields
                      type: object
                    revision_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    slug:
                      pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                      type: string
                    website:
                      format: uri
                      type: string
                  required:
                    - entity_id
                    - slug
                    - name
                    - description
                    - website
                    - category
                    - revision_digest
                    - provenance
                    - offers
                  type: object
                offer:
                  additionalProperties: false
                  properties:
                    effective_from:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    effective_until:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    eligibility:
                      additionalProperties: false
                      properties:
                        max_company_age_months:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        max_employees:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        max_funding_usd:
                          minimum: 0
                          type: number
                        regions:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                        requirements:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                        stages:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                      required:
                        - stages
                        - regions
                        - requirements
                      type: object
                    lifecycle:
                      enum:
                        - active
                        - ended
                        - withdrawn
                      type: string
                    offer_id:
                      pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    provenance:
                      additionalProperties: false
                      properties:
                        attestation_event_id:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        basis_event_ids:
                          items:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          minItems: 1
                          type: array
                        coverage_policy_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        dispute:
                          enum:
                            - none
                            - open
                            - resolved
                          type: string
                        fields:
                          items:
                            additionalProperties: false
                            properties:
                              contradicting_event_ids:
                                items:
                                  pattern: ^sha256:[a-f0-9]{64}$
                                  type: string
                                type: array
                              freshness:
                                enum:
                                  - fresh
                                  - stale
                                  - unknown
                                type: string
                              latest_observation_at:
                                format: date-time
                                pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                                type: string
                              path:
                                pattern: ^\/.*
                                type: string
                              supporting_event_ids:
                                items:
                                  pattern: ^sha256:[a-f0-9]{64}$
                                  type: string
                                type: array
                            required:
                              - path
                              - supporting_event_ids
                              - contradicting_event_ids
                              - freshness
                            type: object
                          minItems: 1
                          type: array
                        freshness:
                          enum:
                            - fresh
                            - stale
                            - unknown
                          type: string
                        freshness_policy_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        tier:
                          enum:
                            - observed
                            - signed
                            - verified
                          type: string
                        verification_event_id:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                      required:
                        - tier
                        - freshness
                        - dispute
                        - coverage_policy_digest
                        - freshness_policy_digest
                        - basis_event_ids
                        - fields
                      type: object
                    redemption:
                      additionalProperties: false
                      properties:
                        method:
                          enum:
                            - form
                            - code
                            - contact
                            - automatic
                            - other
                          type: string
                        url:
                          format: uri
                          type: string
                      required:
                        - url
                        - method
                      type: object
                    revision_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    slug:
                      pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                      type: string
                    summary:
                      minLength: 1
                      type: string
                    terms_url:
                      format: uri
                      type: string
                    title:
                      minLength: 1
                      type: string
                    type:
                      enum:
                        - credits
                        - discount
                        - fixed-price
                        - free-tier
                        - other
                      type: string
                    value:
                      additionalProperties: false
                      properties:
                        amount:
                          minimum: 0
                          type: number
                        currency:
                          maxLength: 3
                          minLength: 3
                          type: string
                        display:
                          minLength: 1
                          type: string
                        duration_months:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        percent:
                          maximum: 100
                          minimum: 0
                          type: number
                      required:
                        - display
                      type: object
                  required:
                    - offer_id
                    - slug
                    - title
                    - summary
                    - type
                    - value
                    - eligibility
                    - redemption
                    - lifecycle
                    - effective_from
                    - revision_digest
                    - provenance
                  type: object
              required:
                - entity
                - offer
              type: object
            - oneOf:
                - additionalProperties: false
                  properties:
                    canonical_offer_id:
                      pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    event_id:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    kind:
                      const: offer_tombstone
                      type: string
                    offer_id:
                      pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    transition:
                      const: merged
                      type: string
                  required:
                    - kind
                    - offer_id
                    - transition
                    - canonical_offer_id
                    - event_id
                  type: object
                - additionalProperties: false
                  properties:
                    kind:
                      const: offer_tombstone
                      type: string
                    offer_id:
                      pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    transition:
                      const: retired
                      type: string
                  required:
                    - kind
                    - offer_id
                    - transition
                  type: object
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
      type: object
    GetProvenanceResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          additionalProperties: false
          properties:
            coverage_policy_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
            event_ids:
              items:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              type: array
            first_inclusion_sequence:
              exclusiveMinimum: 0
              maximum: 9007199254740991
              type: integer
            freshness_policy_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
            observation_ids:
              items:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              type: array
            revision_digest:
              pattern: ^sha256:[a-f0-9]{64}$
              type: string
          required:
            - revision_digest
            - first_inclusion_sequence
            - event_ids
            - observation_ids
            - coverage_policy_digest
            - freshness_policy_digest
          type: object
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
      type: object
    GetRevisionResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          anyOf:
            - additionalProperties: false
              properties:
                content:
                  additionalProperties: false
                  properties:
                    category:
                      minLength: 1
                      type: string
                    description:
                      maxLength: 200
                      minLength: 1
                      type: string
                    domains:
                      items:
                        additionalProperties: false
                        properties:
                          role:
                            enum:
                              - primary
                              - alias
                            type: string
                          valid_from:
                            format: date-time
                            pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                            type: string
                          valid_until:
                            format: date-time
                            pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                            type: string
                          value:
                            minLength: 1
                            type: string
                        required:
                          - value
                          - role
                          - valid_from
                        type: object
                      minItems: 1
                      type: array
                    links:
                      additionalProperties: false
                      properties:
                        pricing:
                          format: uri
                          type: string
                        site:
                          format: uri
                          type: string
                      required:
                        - site
                      type: object
                    name:
                      minLength: 1
                      type: string
                  required:
                    - name
                    - description
                    - domains
                    - category
                    - links
                  type: object
                entity_id:
                  pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                revision_contract:
                  const: sourcey.entity-revision/v1alpha1
                  type: string
                revision_digest:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
              required:
                - revision_contract
                - entity_id
                - content
                - revision_digest
              type: object
            - additionalProperties: false
              properties:
                content:
                  additionalProperties: false
                  properties:
                    eligibility:
                      additionalProperties: false
                      properties:
                        max_company_age_months:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        max_employees:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        max_funding_usd:
                          minimum: 0
                          type: number
                        regions:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                        requirements:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                        stages:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                      required:
                        - stages
                        - regions
                        - requirements
                      type: object
                    lifecycle:
                      additionalProperties: false
                      properties:
                        effective_from:
                          format: date-time
                          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                          type: string
                        effective_until:
                          format: date-time
                          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                          type: string
                        status:
                          enum:
                            - active
                            - ended
                            - withdrawn
                          type: string
                      required:
                        - status
                        - effective_from
                      type: object
                    redemption:
                      additionalProperties: false
                      properties:
                        method:
                          enum:
                            - form
                            - code
                            - contact
                            - automatic
                            - other
                          type: string
                        url:
                          format: uri
                          type: string
                      required:
                        - url
                        - method
                      type: object
                    summary:
                      maxLength: 240
                      minLength: 1
                      type: string
                    terms_url:
                      format: uri
                      type: string
                    title:
                      minLength: 1
                      type: string
                    type:
                      enum:
                        - credits
                        - discount
                        - fixed-price
                        - free-tier
                        - other
                      type: string
                    value:
                      additionalProperties: false
                      properties:
                        amount:
                          minimum: 0
                          type: number
                        currency:
                          maxLength: 3
                          minLength: 3
                          type: string
                        display:
                          minLength: 1
                          type: string
                        duration_months:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        percent:
                          maximum: 100
                          minimum: 0
                          type: number
                      required:
                        - display
                      type: object
                  required:
                    - title
                    - summary
                    - lifecycle
                    - type
                    - value
                    - eligibility
                    - redemption
                  type: object
                entity_id:
                  pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                offer_id:
                  pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                revision_contract:
                  const: sourcey.offer-revision/v1alpha1
                  type: string
                revision_digest:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
              required:
                - revision_contract
                - entity_id
                - offer_id
                - content
                - revision_digest
              type: object
            - additionalProperties: false
              properties:
                adoption_profile_id:
                  pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                effective_from:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                effective_until:
                  format: date-time
                  pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                  type: string
                entity_id:
                  pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                  type: string
                funnel:
                  maxLength: 160
                  minLength: 1
                  type: string
                lifecycle:
                  enum:
                    - active
                    - ended
                    - withdrawn
                  type: string
                product:
                  maxLength: 160
                  minLength: 1
                  type: string
                revision_contract:
                  const: sourcey.adoption-revision/v1alpha1
                  type: string
                revision_digest:
                  pattern: ^sha256:[a-f0-9]{64}$
                  type: string
                signals:
                  items:
                    additionalProperties: false
                    properties:
                      note:
                        maxLength: 500
                        minLength: 1
                        type: string
                      observed_at:
                        format: date-time
                        pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                        type: string
                      signal_code:
                        pattern: ^[a-z0-9]+(?:[._-][a-z0-9]+)*$
                        type: string
                      stage:
                        enum:
                          - evaluate
                          - sign_up
                          - pay
                          - provision
                          - operate
                        type: string
                      value:
                        enum:
                          - yes
                          - no
                          - partial
                          - unknown
                          - not_applicable
                        type: string
                    required:
                      - stage
                      - signal_code
                      - value
                      - observed_at
                    type: object
                  minItems: 1
                  type: array
              required:
                - revision_contract
                - adoption_profile_id
                - entity_id
                - product
                - funnel
                - lifecycle
                - effective_from
                - signals
                - revision_digest
              type: object
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
      type: object
    ListEntitiesResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          items:
            additionalProperties: false
            properties:
              category:
                pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                type: string
              description:
                minLength: 1
                type: string
              entity_id:
                pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                type: string
              name:
                minLength: 1
                type: string
              offers:
                items:
                  additionalProperties: false
                  properties:
                    effective_from:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    effective_until:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    eligibility:
                      additionalProperties: false
                      properties:
                        max_company_age_months:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        max_employees:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        max_funding_usd:
                          minimum: 0
                          type: number
                        regions:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                        requirements:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                        stages:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                      required:
                        - stages
                        - regions
                        - requirements
                      type: object
                    lifecycle:
                      enum:
                        - active
                        - ended
                        - withdrawn
                      type: string
                    offer_id:
                      pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    provenance:
                      additionalProperties: false
                      properties:
                        attestation_event_id:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        basis_event_ids:
                          items:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          minItems: 1
                          type: array
                        coverage_policy_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        dispute:
                          enum:
                            - none
                            - open
                            - resolved
                          type: string
                        fields:
                          items:
                            additionalProperties: false
                            properties:
                              contradicting_event_ids:
                                items:
                                  pattern: ^sha256:[a-f0-9]{64}$
                                  type: string
                                type: array
                              freshness:
                                enum:
                                  - fresh
                                  - stale
                                  - unknown
                                type: string
                              latest_observation_at:
                                format: date-time
                                pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                                type: string
                              path:
                                pattern: ^\/.*
                                type: string
                              supporting_event_ids:
                                items:
                                  pattern: ^sha256:[a-f0-9]{64}$
                                  type: string
                                type: array
                            required:
                              - path
                              - supporting_event_ids
                              - contradicting_event_ids
                              - freshness
                            type: object
                          minItems: 1
                          type: array
                        freshness:
                          enum:
                            - fresh
                            - stale
                            - unknown
                          type: string
                        freshness_policy_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        tier:
                          enum:
                            - observed
                            - signed
                            - verified
                          type: string
                        verification_event_id:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                      required:
                        - tier
                        - freshness
                        - dispute
                        - coverage_policy_digest
                        - freshness_policy_digest
                        - basis_event_ids
                        - fields
                      type: object
                    redemption:
                      additionalProperties: false
                      properties:
                        method:
                          enum:
                            - form
                            - code
                            - contact
                            - automatic
                            - other
                          type: string
                        url:
                          format: uri
                          type: string
                      required:
                        - url
                        - method
                      type: object
                    revision_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    slug:
                      pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                      type: string
                    summary:
                      minLength: 1
                      type: string
                    terms_url:
                      format: uri
                      type: string
                    title:
                      minLength: 1
                      type: string
                    type:
                      enum:
                        - credits
                        - discount
                        - fixed-price
                        - free-tier
                        - other
                      type: string
                    value:
                      additionalProperties: false
                      properties:
                        amount:
                          minimum: 0
                          type: number
                        currency:
                          maxLength: 3
                          minLength: 3
                          type: string
                        display:
                          minLength: 1
                          type: string
                        duration_months:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        percent:
                          maximum: 100
                          minimum: 0
                          type: number
                      required:
                        - display
                      type: object
                  required:
                    - offer_id
                    - slug
                    - title
                    - summary
                    - type
                    - value
                    - eligibility
                    - redemption
                    - lifecycle
                    - effective_from
                    - revision_digest
                    - provenance
                  type: object
                type: array
              provenance:
                additionalProperties: false
                properties:
                  attestation_event_id:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  basis_event_ids:
                    items:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    minItems: 1
                    type: array
                  coverage_policy_digest:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  dispute:
                    enum:
                      - none
                      - open
                      - resolved
                    type: string
                  fields:
                    items:
                      additionalProperties: false
                      properties:
                        contradicting_event_ids:
                          items:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          type: array
                        freshness:
                          enum:
                            - fresh
                            - stale
                            - unknown
                          type: string
                        latest_observation_at:
                          format: date-time
                          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                          type: string
                        path:
                          pattern: ^\/.*
                          type: string
                        supporting_event_ids:
                          items:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          type: array
                      required:
                        - path
                        - supporting_event_ids
                        - contradicting_event_ids
                        - freshness
                      type: object
                    minItems: 1
                    type: array
                  freshness:
                    enum:
                      - fresh
                      - stale
                      - unknown
                    type: string
                  freshness_policy_digest:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  tier:
                    enum:
                      - observed
                      - signed
                      - verified
                    type: string
                  verification_event_id:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                required:
                  - tier
                  - freshness
                  - dispute
                  - coverage_policy_digest
                  - freshness_policy_digest
                  - basis_event_ids
                  - fields
                type: object
              revision_digest:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              slug:
                pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                type: string
              website:
                format: uri
                type: string
            required:
              - entity_id
              - slug
              - name
              - description
              - website
              - category
              - revision_digest
              - provenance
              - offers
            type: object
          type: array
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
      type: object
    ListEntityAdoptionProfilesResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          items:
            additionalProperties: false
            properties:
              adoption_profile_id:
                pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
                type: string
              canonical_url:
                format: uri
                type: string
              coverage:
                enum:
                  - complete
                  - partial
                  - insufficient
                type: string
              effective_from:
                format: date-time
                pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                type: string
              effective_until:
                format: date-time
                pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                type: string
              entity_id:
                pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                type: string
              freshness:
                enum:
                  - fresh
                  - stale
                  - unknown
                type: string
              funnel:
                minLength: 1
                type: string
              grade:
                enum:
                  - A
                  - B
                  - C
                  - D
                  - F
                  - unrated
                type: string
              lifecycle:
                enum:
                  - active
                  - ended
                  - withdrawn
                type: string
              policy_digest:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              product:
                minLength: 1
                type: string
              projection_contract:
                const: sourcey.adoption-projection/v1alpha1
                type: string
              projection_digest:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              provenance:
                additionalProperties: false
                properties:
                  attestation_event_id:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  basis_event_ids:
                    items:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    minItems: 1
                    type: array
                  coverage_policy_digest:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  dispute:
                    enum:
                      - none
                      - open
                      - resolved
                    type: string
                  fields:
                    items:
                      additionalProperties: false
                      properties:
                        contradicting_event_ids:
                          items:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          type: array
                        freshness:
                          enum:
                            - fresh
                            - stale
                            - unknown
                          type: string
                        latest_observation_at:
                          format: date-time
                          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                          type: string
                        path:
                          pattern: ^\/.*
                          type: string
                        supporting_event_ids:
                          items:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          type: array
                      required:
                        - path
                        - supporting_event_ids
                        - contradicting_event_ids
                        - freshness
                      type: object
                    minItems: 1
                    type: array
                  freshness:
                    enum:
                      - fresh
                      - stale
                      - unknown
                    type: string
                  freshness_policy_digest:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  tier:
                    enum:
                      - observed
                      - signed
                      - verified
                    type: string
                  verification_event_id:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                required:
                  - tier
                  - freshness
                  - dispute
                  - coverage_policy_digest
                  - freshness_policy_digest
                  - basis_event_ids
                  - fields
                type: object
              revision_digest:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              stages:
                items:
                  additionalProperties: false
                  properties:
                    blocker_codes:
                      items:
                        minLength: 1
                        type: string
                      type: array
                    outcome:
                      enum:
                        - pass
                        - constrained
                        - fail
                        - unknown
                        - not_applicable
                      type: string
                    remediation_codes:
                      items:
                        minLength: 1
                        type: string
                      type: array
                    signal_codes:
                      items:
                        pattern: ^[a-z0-9]+(?:[._-][a-z0-9]+)*$
                        type: string
                      type: array
                    stage:
                      enum:
                        - evaluate
                        - sign_up
                        - pay
                        - provision
                        - operate
                      type: string
                  required:
                    - stage
                    - outcome
                    - signal_codes
                    - blocker_codes
                    - remediation_codes
                  type: object
                maxItems: 5
                minItems: 5
                type: array
            required:
              - projection_contract
              - adoption_profile_id
              - entity_id
              - product
              - funnel
              - lifecycle
              - effective_from
              - revision_digest
              - policy_digest
              - grade
              - stages
              - coverage
              - freshness
              - provenance
              - canonical_url
              - projection_digest
            type: object
          type: array
        entity_id:
          pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
          type: string
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
        - entity_id
      type: object
    SearchCatalogResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          items:
            additionalProperties: false
            properties:
              category:
                pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                type: string
              description:
                minLength: 1
                type: string
              entity_id:
                pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                type: string
              name:
                minLength: 1
                type: string
              offers:
                items:
                  additionalProperties: false
                  properties:
                    effective_from:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    effective_until:
                      format: date-time
                      pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                      type: string
                    eligibility:
                      additionalProperties: false
                      properties:
                        max_company_age_months:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        max_employees:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        max_funding_usd:
                          minimum: 0
                          type: number
                        regions:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                        requirements:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                        stages:
                          default: []
                          items:
                            minLength: 1
                            type: string
                          type: array
                      required:
                        - stages
                        - regions
                        - requirements
                      type: object
                    lifecycle:
                      enum:
                        - active
                        - ended
                        - withdrawn
                      type: string
                    offer_id:
                      pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                      type: string
                    provenance:
                      additionalProperties: false
                      properties:
                        attestation_event_id:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        basis_event_ids:
                          items:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          minItems: 1
                          type: array
                        coverage_policy_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        dispute:
                          enum:
                            - none
                            - open
                            - resolved
                          type: string
                        fields:
                          items:
                            additionalProperties: false
                            properties:
                              contradicting_event_ids:
                                items:
                                  pattern: ^sha256:[a-f0-9]{64}$
                                  type: string
                                type: array
                              freshness:
                                enum:
                                  - fresh
                                  - stale
                                  - unknown
                                type: string
                              latest_observation_at:
                                format: date-time
                                pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                                type: string
                              path:
                                pattern: ^\/.*
                                type: string
                              supporting_event_ids:
                                items:
                                  pattern: ^sha256:[a-f0-9]{64}$
                                  type: string
                                type: array
                            required:
                              - path
                              - supporting_event_ids
                              - contradicting_event_ids
                              - freshness
                            type: object
                          minItems: 1
                          type: array
                        freshness:
                          enum:
                            - fresh
                            - stale
                            - unknown
                          type: string
                        freshness_policy_digest:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        tier:
                          enum:
                            - observed
                            - signed
                            - verified
                          type: string
                        verification_event_id:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                      required:
                        - tier
                        - freshness
                        - dispute
                        - coverage_policy_digest
                        - freshness_policy_digest
                        - basis_event_ids
                        - fields
                      type: object
                    redemption:
                      additionalProperties: false
                      properties:
                        method:
                          enum:
                            - form
                            - code
                            - contact
                            - automatic
                            - other
                          type: string
                        url:
                          format: uri
                          type: string
                      required:
                        - url
                        - method
                      type: object
                    revision_digest:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    slug:
                      pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                      type: string
                    summary:
                      minLength: 1
                      type: string
                    terms_url:
                      format: uri
                      type: string
                    title:
                      minLength: 1
                      type: string
                    type:
                      enum:
                        - credits
                        - discount
                        - fixed-price
                        - free-tier
                        - other
                      type: string
                    value:
                      additionalProperties: false
                      properties:
                        amount:
                          minimum: 0
                          type: number
                        currency:
                          maxLength: 3
                          minLength: 3
                          type: string
                        display:
                          minLength: 1
                          type: string
                        duration_months:
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          type: integer
                        percent:
                          maximum: 100
                          minimum: 0
                          type: number
                      required:
                        - display
                      type: object
                  required:
                    - offer_id
                    - slug
                    - title
                    - summary
                    - type
                    - value
                    - eligibility
                    - redemption
                    - lifecycle
                    - effective_from
                    - revision_digest
                    - provenance
                  type: object
                type: array
              provenance:
                additionalProperties: false
                properties:
                  attestation_event_id:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  basis_event_ids:
                    items:
                      pattern: ^sha256:[a-f0-9]{64}$
                      type: string
                    minItems: 1
                    type: array
                  coverage_policy_digest:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  dispute:
                    enum:
                      - none
                      - open
                      - resolved
                    type: string
                  fields:
                    items:
                      additionalProperties: false
                      properties:
                        contradicting_event_ids:
                          items:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          type: array
                        freshness:
                          enum:
                            - fresh
                            - stale
                            - unknown
                          type: string
                        latest_observation_at:
                          format: date-time
                          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                          type: string
                        path:
                          pattern: ^\/.*
                          type: string
                        supporting_event_ids:
                          items:
                            pattern: ^sha256:[a-f0-9]{64}$
                            type: string
                          type: array
                      required:
                        - path
                        - supporting_event_ids
                        - contradicting_event_ids
                        - freshness
                      type: object
                    minItems: 1
                    type: array
                  freshness:
                    enum:
                      - fresh
                      - stale
                      - unknown
                    type: string
                  freshness_policy_digest:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  tier:
                    enum:
                      - observed
                      - signed
                      - verified
                    type: string
                  verification_event_id:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                required:
                  - tier
                  - freshness
                  - dispute
                  - coverage_policy_digest
                  - freshness_policy_digest
                  - basis_event_ids
                  - fields
                type: object
              revision_digest:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
              slug:
                pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                type: string
              website:
                format: uri
                type: string
            required:
              - entity_id
              - slug
              - name
              - description
              - website
              - category
              - revision_digest
              - provenance
              - offers
            type: object
          type: array
        next_cursor:
          anyOf:
            - minLength: 1
              type: string
            - type: "null"
        query:
          type: string
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
        - query
        - next_cursor
      type: object
    SearchOffersResponse200:
      additionalProperties: false
      properties:
        api_contract:
          const: sourcey.catalog-api/v1
          type: string
        artifact_sha256:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
        data:
          items:
            additionalProperties: false
            properties:
              canonical_url:
                format: uri
                type: string
              category:
                pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                type: string
              entity_id:
                pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
                type: string
              entity_name:
                minLength: 1
                type: string
              entity_slug:
                pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                type: string
              offer:
                additionalProperties: false
                properties:
                  effective_from:
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                    type: string
                  effective_until:
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                    type: string
                  eligibility:
                    additionalProperties: false
                    properties:
                      max_company_age_months:
                        exclusiveMinimum: 0
                        maximum: 9007199254740991
                        type: integer
                      max_employees:
                        exclusiveMinimum: 0
                        maximum: 9007199254740991
                        type: integer
                      max_funding_usd:
                        minimum: 0
                        type: number
                      regions:
                        default: []
                        items:
                          minLength: 1
                          type: string
                        type: array
                      requirements:
                        default: []
                        items:
                          minLength: 1
                          type: string
                        type: array
                      stages:
                        default: []
                        items:
                          minLength: 1
                          type: string
                        type: array
                    required:
                      - stages
                      - regions
                      - requirements
                    type: object
                  lifecycle:
                    enum:
                      - active
                      - ended
                      - withdrawn
                    type: string
                  offer_id:
                    pattern: ^off_[0-9a-hjkmnp-tv-z]{26}$
                    type: string
                  provenance:
                    additionalProperties: false
                    properties:
                      attestation_event_id:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      basis_event_ids:
                        items:
                          pattern: ^sha256:[a-f0-9]{64}$
                          type: string
                        minItems: 1
                        type: array
                      coverage_policy_digest:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      dispute:
                        enum:
                          - none
                          - open
                          - resolved
                        type: string
                      fields:
                        items:
                          additionalProperties: false
                          properties:
                            contradicting_event_ids:
                              items:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              type: array
                            freshness:
                              enum:
                                - fresh
                                - stale
                                - unknown
                              type: string
                            latest_observation_at:
                              format: date-time
                              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                              type: string
                            path:
                              pattern: ^\/.*
                              type: string
                            supporting_event_ids:
                              items:
                                pattern: ^sha256:[a-f0-9]{64}$
                                type: string
                              type: array
                          required:
                            - path
                            - supporting_event_ids
                            - contradicting_event_ids
                            - freshness
                          type: object
                        minItems: 1
                        type: array
                      freshness:
                        enum:
                          - fresh
                          - stale
                          - unknown
                        type: string
                      freshness_policy_digest:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                      tier:
                        enum:
                          - observed
                          - signed
                          - verified
                        type: string
                      verification_event_id:
                        pattern: ^sha256:[a-f0-9]{64}$
                        type: string
                    required:
                      - tier
                      - freshness
                      - dispute
                      - coverage_policy_digest
                      - freshness_policy_digest
                      - basis_event_ids
                      - fields
                    type: object
                  redemption:
                    additionalProperties: false
                    properties:
                      method:
                        enum:
                          - form
                          - code
                          - contact
                          - automatic
                          - other
                        type: string
                      url:
                        format: uri
                        type: string
                    required:
                      - url
                      - method
                    type: object
                  revision_digest:
                    pattern: ^sha256:[a-f0-9]{64}$
                    type: string
                  slug:
                    pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                    type: string
                  summary:
                    minLength: 1
                    type: string
                  terms_url:
                    format: uri
                    type: string
                  title:
                    minLength: 1
                    type: string
                  type:
                    enum:
                      - credits
                      - discount
                      - fixed-price
                      - free-tier
                      - other
                    type: string
                  value:
                    additionalProperties: false
                    properties:
                      amount:
                        minimum: 0
                        type: number
                      currency:
                        maxLength: 3
                        minLength: 3
                        type: string
                      display:
                        minLength: 1
                        type: string
                      duration_months:
                        exclusiveMinimum: 0
                        maximum: 9007199254740991
                        type: integer
                      percent:
                        maximum: 100
                        minimum: 0
                        type: number
                    required:
                      - display
                    type: object
                required:
                  - offer_id
                  - slug
                  - title
                  - summary
                  - type
                  - value
                  - eligibility
                  - redemption
                  - lifecycle
                  - effective_from
                  - revision_digest
                  - provenance
                type: object
            required:
              - entity_id
              - entity_slug
              - entity_name
              - category
              - offer
              - canonical_url
            type: object
          type: array
        next_cursor:
          anyOf:
            - minLength: 1
              type: string
            - type: "null"
        query:
          type: string
        release_id:
          pattern: ^sha256:[a-f0-9]{64}$
          type: string
      required:
        - api_contract
        - release_id
        - artifact_sha256
        - data
        - query
        - next_cursor
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: Sourcey access key
      description: Optional. Anonymous reads remain available; a key adds identity and higher quotas.
      scheme: bearer
      type: http
info:
  description: Public version 1 projections of one immutable Sourcey catalog release.
  title: Sourcey Public API
  version: 1.0.0
jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema
openapi: 3.1.1
paths:
  /v1/adoption-profiles/{id}:
    get:
      operationId: getAdoptionProfile
      parameters:
        - in: path
          name: id
          required: true
          schema:
            pattern: ^adp_[0-9a-hjkmnp-tv-z]{26}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetAdoptionProfileResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "501":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Capability is not available.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read a published adoption profile by immutable ID.
      tags:
        - Catalog
  /v1/catalog:
    get:
      operationId: getCatalog
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read the complete canonical catalog artifact.
      tags:
        - Catalog
  /v1/changes:
    get:
      operationId: getChanges
      parameters:
        - in: query
          name: cursor
          required: false
          schema:
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetChangesResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Invalid request.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read deterministic release changes using a signed cursor.
      tags:
        - Catalog
  /v1/eligibility/check:
    post:
      operationId: checkEligibility
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CheckEligibilityRequest"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CheckOfferEligibilityResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Invalid request.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Evaluate structured eligibility by immutable offer ID.
      tags:
        - Catalog
  /v1/eligibility/{entity}/{offer}:
    get:
      operationId: checkOfferEligibility
      parameters:
        - in: path
          name: entity
          required: true
          schema:
            pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
            type: string
        - in: path
          name: offer
          required: true
          schema:
            pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
            type: string
        - in: query
          name: company_age_months
          required: false
          schema:
            minimum: 0
            type: number
        - in: query
          name: employees
          required: false
          schema:
            minimum: 0
            type: number
        - in: query
          name: funding_usd
          required: false
          schema:
            minimum: 0
            type: number
        - in: query
          name: region
          required: false
          schema:
            minLength: 1
            type: string
        - in: query
          name: stage
          required: false
          schema:
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CheckOfferEligibilityResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Invalid request.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Evaluate structured eligibility for an offer.
      tags:
        - Catalog
  /v1/entities:
    get:
      operationId: listEntities
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListEntitiesResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: List catalog entities.
      tags:
        - Catalog
  /v1/entities/by-slug/{entity}:
    get:
      operationId: getEntityBySlug
      parameters:
        - in: path
          name: entity
          required: true
          schema:
            pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetEntityResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read an entity through its current or historical slug.
      tags:
        - Catalog
  /v1/entities/{entity}:
    get:
      operationId: getEntity
      parameters:
        - in: path
          name: entity
          required: true
          schema:
            pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetEntityResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read an entity by immutable ID.
      tags:
        - Catalog
  /v1/entities/{entity}/adoption-profiles:
    get:
      operationId: listEntityAdoptionProfiles
      parameters:
        - in: path
          name: entity
          required: true
          schema:
            pattern: ^ent_[0-9a-hjkmnp-tv-z]{26}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListEntityAdoptionProfilesResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: List published adoption profiles for an entity.
      tags:
        - Catalog
  /v1/events/{id}:
    get:
      operationId: getEvent
      parameters:
        - in: path
          name: id
          required: true
          schema:
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetEventResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read an immutable catalog event.
      tags:
        - Catalog
  /v1/observations/{id}:
    get:
      operationId: getObservation
      parameters:
        - in: path
          name: id
          required: true
          schema:
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetObservationResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read an immutable source observation.
      tags:
        - Catalog
  /v1/offers/{entity}/{offer}:
    get:
      operationId: getOfferBySlug
      parameters:
        - in: path
          name: entity
          required: true
          schema:
            pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
            type: string
        - in: path
          name: offer
          required: true
          schema:
            pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetOfferResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read an offer by entity and offer slug.
      tags:
        - Catalog
  /v1/offers/{id}:
    get:
      operationId: getOffer
      parameters:
        - in: path
          name: id
          required: true
          schema:
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetOfferResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read an offer by immutable ID.
      tags:
        - Catalog
  /v1/provenance/{id}:
    get:
      operationId: getProvenance
      parameters:
        - in: path
          name: id
          required: true
          schema:
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetProvenanceResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read the closed provenance graph for a revision.
      tags:
        - Catalog
  /v1/release:
    get:
      operationId: getCatalogRelease
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogReleaseResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read the immutable catalog release descriptor.
      tags:
        - Catalog
  /v1/revisions/{id}:
    get:
      operationId: getRevision
      parameters:
        - in: path
          name: id
          required: true
          schema:
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetRevisionResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read an immutable entity or offer revision.
      tags:
        - Catalog
  /v1/revisions/{id}/provenance:
    get:
      operationId: getRevisionProvenance
      parameters:
        - in: path
          name: id
          required: true
          schema:
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetProvenanceResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Resource not found.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read provenance through a revision-scoped route.
      tags:
        - Catalog
  /v1/search:
    get:
      operationId: searchCatalog
      parameters:
        - in: query
          name: cursor
          required: false
          schema:
            minLength: 1
            type: string
        - in: query
          name: limit
          required: true
          schema:
            default: 20
            maximum: 100
            minimum: 1
            type: integer
        - in: query
          name: q
          required: true
          schema:
            default: ""
            maxLength: 256
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchCatalogResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Invalid request.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Search the catalog.
      tags:
        - Catalog
  /v1/search/offers:
    get:
      operationId: searchOffers
      parameters:
        - in: query
          name: cursor
          required: false
          schema:
            minLength: 1
            type: string
        - in: query
          name: limit
          required: true
          schema:
            default: 20
            maximum: 100
            minimum: 1
            type: integer
        - in: query
          name: q
          required: true
          schema:
            default: ""
            maxLength: 256
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchOffersResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: Invalid request.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Search offers through the catalog index.
      tags:
        - Catalog
  /v1/status:
    get:
      operationId: getCatalogStatus
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse200"
          description: Successful response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 401 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 403 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "405":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 405 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "429":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 429 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 500 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetCatalogStatusResponse401"
          description: HTTP 503 response.
          headers:
            x-request-id:
              description: Server-generated request correlation identifier.
              required: true
              schema:
                type: string
            x-sourcey-artifact-sha256:
              description: Exact immutable catalog artifact digest used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
            x-sourcey-release-id:
              description: Exact immutable catalog release used by this deployment.
              required: true
              schema:
                pattern: ^sha256:[a-f0-9]{64}$
                type: string
      security:
        - {}
        - bearerAuth: []
      summary: Read serving status and the exact catalog release pin.
      tags:
        - Catalog
servers:
  - description: Production
    url: https://api.sourcey.com
tags:
  - description: Immutable Sourcey catalog reads, provenance, search, and eligibility.
    name: Catalog
