openapi: 3.1.0
info:
  title: Procivis One Core API
  description: |
    The Procivis One Core API enables the full lifecycle of credentials.
  contact:
    name: Procivis One Docs
    url: https://www.procivis.ch/en/procivis-one#signup
  license:
    name: Apache-2.0
    url: https://github.com/procivis/one-core/blob/main/LICENSE
  version: v1.81.4
servers:
- url: ''
  description: Local server url
- url: https://www.procivis-one.com
  description: Generated server url
paths:
  /api/proof-schema/v1:
    get:
      tags:
      - proof_schema_management
      summary: Retrieve proof schemas
      description: |-
        <strong>Permissions:</strong> <code>PROOF_SCHEMA_LIST</code>

        Returns a list of proof schemas.
      operationId: get_proof_schemas
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - name
          - createdDate
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: name
        in: query
        description: |-
          Return only proof schemas with a name starting with this string.
          Not case-sensitive.
        required: false
        schema:
          type: string
      - name: ids[]
        in: query
        description: Filter by specific UUIDs.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
      - name: formats[]
        in: query
        description: Return only proof schemas which use only the specified credential formats.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: createdDateAfter
        in: query
        description: |-
          Return only proof schemas created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only proof schemas created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only proof schemas last modified after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only proof schemas last modified before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/GetProofSchemaListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_SCHEMA_LIST
    post:
      tags:
      - proof_schema_management
      summary: Create proof schema
      description: |
        <strong>Permissions:</strong> <code>PROOF_SCHEMA_CREATE</code>

        Creates a proof schema, which defines the claims to request from a holder
        during verification. Proof schemas reference credential schemas already
        created in your system — create those first before building a proof schema
        that includes their claims.

        Related guide: [Proof schemas](https://docs.procivis.ch/proof-schemas)
      operationId: post_proof_schema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProofSchemaRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_SCHEMA_CREATE
  /api/proof-schema/v1/{id}:
    get:
      tags:
      - proof_schema_management
      summary: Retrieve proof schema
      description: |-
        <strong>Permissions:</strong> <code>PROOF_SCHEMA_DETAIL</code>

        Returns detailed information about a proof schema.
      operationId: get_proof_schema_detail
      parameters:
      - name: id
        in: path
        description: Schema id
        required: true
        schema:
          $ref: '#/components/schemas/ProofSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - lastModified
                - name
                - expireDuration
                - organisationId
                - proofInputSchemas
                properties:
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  expireDuration:
                    type: integer
                    format: int32
                    minimum: 0
                  id:
                    type: string
                    format: uuid
                  importedSourceUrl:
                    type: string
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  name:
                    type: string
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  proofInputSchemas:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProofInputSchemaResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_SCHEMA_DETAIL
    delete:
      tags:
      - proof_schema_management
      summary: Delete a proof schema
      description: |-
        <strong>Permissions:</strong> <code>PROOF_SCHEMA_DELETE</code>

        Deletes a proof schema.
      operationId: delete_proof_schema
      parameters:
      - name: id
        in: path
        description: Schema id
        required: true
        schema:
          $ref: '#/components/schemas/ProofSchemaId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_SCHEMA_DELETE
  /api/proof-schema/v1/{id}/share:
    post:
      tags:
      - proof_schema_management
      summary: Share proof schema
      description: |-
        <strong>Permissions:</strong> <code>PROOF_SCHEMA_SHARE</code>

        Generates a url to share a proof schema with a mobile verifier.
      operationId: share_proof_schema
      parameters:
      - name: id
        in: path
        description: Schema id
        required: true
        schema:
          $ref: '#/components/schemas/ProofSchemaId'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - url
                properties:
                  url:
                    type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_SCHEMA_SHARE
  /api/proof-schema/v1/import:
    post:
      tags:
      - proof_schema_management
      summary: Import proof schema
      description: |
        <strong>Permissions:</strong> <code>PROOF_SCHEMA_CREATE</code>

        Imports a shared proof schema to a mobile verifier, for use in creating proof requests. After previewing
        the proof schema from the [share proof schema](../core/share-proof-schema.api.mdx) endpoint, pass the schema here, along with
        the uuid of the mobile verifier's organization, to import the proof schema.
      operationId: import_proof_schema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportProofSchemaRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_SCHEMA_CREATE
  /api/task/v1/run:
    post:
      tags:
      - task
      summary: Run task
      description: "<strong>Permissions:</strong> <code>TASK_CREATE</code>\n\nTriggers a configured task by name. Tasks can also be run from\nthe CLI after starting `core-server`. See \n[Regular Tasks](https://docs.procivis.ch/reference/configuration/core#regular-tasks)\nfor supported task types and their parameters.\n"
      operationId: post_task
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - description: Task execution result. The structure varies by task type.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TASK_CREATE
  /api/credential/v1/{id}:
    get:
      tags:
      - credential_management
      summary: Retrieve a credential
      description: |-
        <strong>Permissions:</strong> <code>CREDENTIAL_DETAIL</code>

        Returns detailed information about a credential.
      operationId: get_credential
      parameters:
      - name: id
        in: path
        description: Credential id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - state
                - lastModified
                - schema
                - claims
                - role
                - type
                - protocol
                properties:
                  claims:
                    type: array
                    items:
                      $ref: '#/components/schemas/CredentialDetailClaimResponseRestDTO'
                    description: Claims made by the credential issuer.
                  consumedAt:
                    type: string
                    format: date-time
                    description: |-
                      When this credential was used in a presentation. Only used for
                      batch item credentials.
                    example: 2023-06-09T14:19:57.000Z
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  holder:
                    $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
                    description: Credential holder metadata.
                  id:
                    $ref: '#/components/schemas/CredentialId'
                  interactionId:
                    $ref: '#/components/schemas/InteractionId'
                  issuanceDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  issuer:
                    $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
                    description: Issuer metadata.
                  issuerCertificate:
                    $ref: '#/components/schemas/CertificateResponseRestDTO'
                    description: Certificate details if issuer used an X.509 to issue credential.
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  mdocMsoValidity:
                    $ref: '#/components/schemas/MdocMsoValidityResponseRestDTO'
                    description: Validity details for ISO mdocs.
                  parentId:
                    $ref: '#/components/schemas/CredentialId'
                    description: Batch parent (if batch item).
                  profile:
                    type: string
                    description: Country profile associated with this credential.
                  protocol:
                    type: string
                    description: Issuance protocol used to issue this credential.
                  redirectUri:
                    type: string
                    description: URI holder is redirected to after credential issuance.
                  remainingBatchItemCount:
                    type: integer
                    format: int32
                    description: Number of non-consumed batch items (if batch parent).
                    minimum: 0
                  revocationDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  role:
                    $ref: '#/components/schemas/CredentialRoleRestEnum'
                    description: |-
                      The role the system has in relation to the credential. For example,
                      if the system issued the credential this value will be `ISSUER`. If
                      the system received the credential as a wallet this value will be
                      `HOLDER`.
                  schema:
                    $ref: '#/components/schemas/CredentialDetailSchemaResponseRestDTO'
                    description: Schema of the credential.
                  state:
                    $ref: '#/components/schemas/CredentialStateRestEnum'
                  subscriberInformation:
                    type: string
                    description: Optional subscriber information associated with this credential.
                  suspendEndDate:
                    type: string
                    format: date-time
                    description: Scheduled date for credential reactivation.
                    example: 2023-06-09T14:19:57.000Z
                  trustInformation:
                    $ref: '#/components/schemas/TrustInformationRestDTO'
                    description: Trust information of the issuer, if any received.
                  type:
                    $ref: '#/components/schemas/CredentialTypeRestEnum'
                    description: |-
                      Differentiates between single credentials issued alone, credentials
                      issued as part of a batch, and parent credentials which represent
                      a batch of credentials.
                  walletInstanceAttestation:
                    $ref: '#/components/schemas/WalletInstanceAttestationRestDTO'
                    description: |-
                      The wallet instance attestation that was provided by the holder's wallet
                      during credential issuance. This field is only present if the wallet
                      provided a valid attestation when the credential was issued. The
                      attestation serves as proof that the wallet app instance is a
                      legitimate installation and may be required for the issuance of certain
                      credentials.
                  walletUnitAttestation:
                    $ref: '#/components/schemas/WalletUnitAttestationRestDTO'
                    description: |-
                      The wallet unit attestation, or "key attestation", that was provided
                      by the holder's wallet during credential issuance. This field is
                      only present if the wallet provided a valid attestation when the
                      credential was issued, a requirement for the issuance of certain
                      credentials such as EU PIDs.
                  webhookDestinationUrl:
                    type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_DETAIL
    delete:
      tags:
      - credential_management
      summary: Delete a credential
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_DELETE</code>

        Makes a credential no longer retrievable and records the history
        action `DELETED`.

        This has no impact on the holder's ability to keep and use the credential.

        Deletion cannot be completed if the credential state is `ACCEPTED` while
        the corresponding credential schema includes a revocation method. Credentials
        with no revocation method can be deleted in any state.
      operationId: delete_credential
      parameters:
      - name: id
        in: path
        description: Credential id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_DELETE
  /api/credential/v1:
    get:
      tags:
      - credential_management
      summary: List credentials
      description: |-
        <strong>Permissions:</strong> <code>CREDENTIAL_LIST</code>

        Returns a list of credentials within an organization.
      operationId: get_credential_list
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - createdDate
          - schema.name
          - issuer
          - state
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: include[]
        in: query
        description: Additional fields to include in response objects.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - layoutProperties
            - translations
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: name
        in: query
        description: Return only credentials with a name starting with this string.
        required: false
        schema:
          type: string
      - name: profiles[]
        in: query
        description: Filter by one or more country profiles.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: roles[]
        in: query
        description: |-
          Filter credentials by one or more roles: issued by the system,
          verified by the system, or held by the system as a wallet.
        required: false
        schema:
          type: array
          items:
            type: string
            description: The role the system has in relation to the credential.
            enum:
            - HOLDER
            - ISSUER
            - VERIFIER
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
      - name: ids[]
        in: query
        description: Filter by one or more UUIDs.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: parentId
        in: query
        description: Return only batch credentials under this batch parent.
        required: false
        schema:
          $ref: '#/components/schemas/CredentialId'
      - name: states[]
        in: query
        description: Filter by one or more credential states.
        required: false
        schema:
          type: array
          items:
            type: string
            description: The state representation of the credential in the system.
            enum:
            - CREATED
            - PENDING
            - OFFERED
            - ACCEPTED
            - SUSPENDED
            - REJECTED
            - REVOKED
            - ERROR
            - INTERACTION_EXPIRED
      - name: types[]
        in: query
        description: 'Filter credentials by one or more types: part of a batch or standalone credential'
        required: false
        schema:
          type: array
          items:
            type: string
            description: The type representation of the credential in the system.
            enum:
            - SINGLE
            - BATCH_PARENT
            - BATCH_ITEM
      - name: issuers[]
        in: query
        description: Filter by one or more identifier IDs.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: searchText
        in: query
        description: Search for a string.
        required: false
        schema:
          type: string
      - name: searchType[]
        in: query
        description: |-
          Changes where `searchText` is searched. To search credentials,
          choose one or more `searchType`s and pass a `searchText`.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - CLAIM_NAME
            - CLAIM_VALUE
            - CREDENTIAL_SCHEMA_NAME
      - name: credentialSchemaIds[]
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: createdDateAfter
        in: query
        description: |-
          Return only credentials created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only credentials created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only credentials last modified after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only credentials last modified before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: issuanceDateAfter
        in: query
        description: |-
          Return only credentials issued after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: issuanceDateBefore
        in: query
        description: |-
          Return only credentials issued before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: revocationDateAfter
        in: query
        description: |-
          Return only credentials revoked after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: revocationDateBefore
        in: query
        description: |-
          Return only credentials revoked before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/CredentialListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_LIST
    post:
      tags:
      - credential_management
      summary: Create a credential
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_ISSUE</code>

        Creates a credential, which can then be issued to a wallet holder.

        Choose the type of credential to issue (credential schema), an
        identifier, an issuance protocol, and make claims about the subject.

        The `protocol` value must reference a configured instance of the
        `issuanceProtocol` object of your system configuration.

        Related guide: [Issuing Credentials](https://docs.procivis.ch/issue)
      operationId: post_credential
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCredentialRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_ISSUE
  /api/credential/v1/{id}/reactivate:
    post:
      tags:
      - credential_management
      summary: Reactivate a credential
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_REACTIVATE</code>

        Reactivates a suspended credential.
        Related guide: [Suspension and Revocation](https://docs.procivis.ch/issue/suspend-revoke)
      operationId: reactivate_credential
      parameters:
      - name: id
        in: path
        description: Credential id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_REACTIVATE
  /api/credential/v1/{id}/revoke:
    post:
      tags:
      - credential_management
      summary: Revoke a credential
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_REVOKE</code>

        Revokes an issued credential.
        Related guide: [Suspension and Revocation](https://docs.procivis.ch/issue/suspend-revoke)
      operationId: revoke_credential
      parameters:
      - name: id
        in: path
        description: Credential id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_REVOKE
  /api/credential/v1/{id}/suspend:
    post:
      tags:
      - credential_management
      summary: Suspend a credential
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_SUSPEND</code>

        Suspends a credential, rendering it invalid until it has been reactivated.
        Related guide: [Suspension and Revocation](https://docs.procivis.ch/issue/suspend-revoke)
      operationId: suspend_credential
      parameters:
      - name: id
        in: path
        description: Credential id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SuspendCredentialRequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SUSPEND
  /api/credential/v1/{id}/share:
    post:
      tags:
      - credential_management
      summary: Issue a credential
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_SHARE</code>

        Creates a share URL. A wallet holder can use this to access the
        offered credential.
      operationId: share_credential
      parameters:
      - name: id
        in: path
        description: Credential id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialId'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - url
                properties:
                  expiresAt:
                    type: string
                    format: date-time
                    description: |-
                      URL becomes unusable by wallet holder at this time. Call the share
                      endpoint again to get a new URL.
                    example: 2023-06-09T14:19:57.000Z
                  transactionCode:
                    type: string
                    description: |-
                      The generated one-time code required for the holder to complete
                      credential issuance. Must be transmitted to the holder through a
                      secure out-of-band channel such as SMS or email to a verified
                      contact.
                  url:
                    type: string
                    description: Share URL, typically encoded as a QR code.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SHARE
  /api/credential/v1/revocation-check:
    post:
      tags:
      - credential_management
      summary: Check revocation
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_EDIT</code>

        Checks whether a held credential has been suspended or revoked.

        This is only applicable to credentials with an associated revocation
        mechanism.

        This endpoint only works for credentials for which the `role` is `HOLDER`.
        Issuers and verifiers cannot check the status of credentials with this
        endpoint.

        For list-based revocation methods, the signed lists and any DID documents
        containing public keys used to verify the lists are cached. Use the
        `forceRefresh` parameter to force the system to retrieve these entities
        from the external resource.

        For mdocs, use the `forceRefresh` parameter to force the system to request
        a new MSO.

        Related guide: [Caching](https://docs.procivis.ch/configure/caching)
      operationId: credential_revocation_check
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialRevocationCheckRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  required:
                  - credentialId
                  - status
                  - success
                  properties:
                    credentialId:
                      $ref: '#/components/schemas/CredentialId'
                    reason:
                      type: string
                      description: |-
                        Explanation of why the revocation check failed. Only present
                        when `success: false`.
                    status:
                      $ref: '#/components/schemas/CredentialStateRestEnum'
                    success:
                      type: boolean
                      description: |-
                        Indicates whether the system performed the check as planned.
                        When using `forceRefresh`, indicates whether the external resource
                        was reached and gave a response. For mdocs this value will only be
                        `true` if a new MSO was issued.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_EDIT
  /api/credential/v1/{id}/trust-detail:
    get:
      tags:
      - credential_management
      summary: Retrieve credential trust detail
      description: |-
        <strong>Permissions:</strong> <code>CREDENTIAL_DETAIL</code>

        Returns detailed trust information about a credential issuer.
      operationId: get_credential_trust_detail
      parameters:
      - name: id
        in: path
        description: Credential id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  eudiEcosystem:
                    $ref: '#/components/schemas/EudiTrustInformationResponseRestDTO'
                    description: |-
                      EUDI trust information received from Access Certificates,
                      Registration Certificates, or National Registry public APIs.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_DETAIL
  /api/jsonld-context/v1:
    get:
      tags:
      - jsonld
      summary: Retrieve JSON-lD context
      description: |
        Returns the JSON-LD context document for a given URI. This is a
        [cached entity](https://docs.procivis.ch/configure/caching).
      operationId: resolve_jsonld_context
      parameters:
      - name: url
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - context
                properties:
                  context: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
  /api/certificate/v1/{id}:
    get:
      tags:
      - certificate_management
      summary: Get a certificate
      description: |-
        <strong>Permissions:</strong> <code>IDENTIFIER_DETAIL</code>

        Retrieves detailed information about a certificate.
      operationId: get_certificate
      parameters:
      - name: id
        in: path
        description: Certificate id
        required: true
        schema:
          $ref: '#/components/schemas/CertificateId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - identifierId
                - createdDate
                - lastModified
                - name
                - chain
                - state
                - x509Attributes
                - roles
                properties:
                  chain:
                    type: string
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  id:
                    $ref: '#/components/schemas/CertificateId'
                  identifierId:
                    $ref: '#/components/schemas/IdentifierId'
                  key:
                    $ref: '#/components/schemas/KeyListItemResponseRestDTO'
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  name:
                    type: string
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  roles:
                    type: array
                    items:
                      $ref: '#/components/schemas/CertificateRoleRestEnum'
                  state:
                    $ref: '#/components/schemas/CertificateStateRest'
                  x509Attributes:
                    $ref: '#/components/schemas/CertificateX509AttributesRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - IDENTIFIER_DETAIL
  /api/identifier/v1:
    get:
      tags:
      - identifier_management
      summary: List identifiers
      description: |-
        <strong>Permissions:</strong> <code>IDENTIFIER_LIST</code>

        Returns a list of identifiers within an organization.
      operationId: get_identifier_list
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - name
          - createdDate
          - type
          - state
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: ids[]
        in: query
        description: Filter by one or more UUIDs.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/IdentifierId'
      - name: name
        in: query
        description: |-
          Return only identifiers with a name starting with this string.
          Not case-sensitive.
        required: false
        schema:
          type: string
      - name: types[]
        in: query
        description: Filter by one or more identifier types.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/IdentifierTypeRest'
      - name: states[]
        in: query
        description: Filter by one or more identifier states.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/IdentifierStateRest'
      - name: didMethods[]
        in: query
        description: Filter by one or more DID methods.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/DidMethodId'
      - name: isRemote
        in: query
        description: |-
          If true, return only identifiers from interactions with external
          actors. If false, return only identifiers local to the system.
        required: false
        schema:
          type: string
          enum:
          - 'false'
          - 'true'
      - name: keyAlgorithms[]
        in: query
        description: |-
          Return keys or DIDs whose keys use the specified algorithm. Check the
          `keyAlgorithm` object of the configuration for supported options.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: keyRoles[]
        in: query
        description: Return keys used as one or more verification methods of a DID.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - AUTHENTICATION
            - ASSERTION_METHOD
            - KEY_AGREEMENT
            - CAPABILITY_INVOCATION
            - CAPABILITY_DELEGATION
            - UPDATE_KEY
      - name: keyStorages[]
        in: query
        description: |-
          Return keys or DIDs whose keys use the specified storage type. Check the
          `keyStorage` object of the configuration for supported options.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: certificateRoles[]
        in: query
        description: |-
          Filter by certificate role. Returns identifiers containing at least
          one certificate that matches the specified roles, evaluated according
          to `certificateRolesMatchMode`.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/CertificateRoleRestEnum'
      - name: certificateRolesMatchMode
        in: query
        description: |-
          Determines how `certificateRoles` is applied at the certificate level.
          `ANY` returns identifiers with a certificate holding at least one of
          the specified roles. `ALL` returns identifiers with a certificate
          holding all of the specified roles.
        required: false
        schema:
          $ref: '#/components/schemas/CertificateRolesMatchModeRestEnum'
      - name: trustIssuanceSchemaId
        in: query
        description: |-
          Return only identifiers suitable for issuing with the provided
          credential schema.
        required: false
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      - name: trustVerificationSchemaId
        in: query
        description: |-
          Return only identifiers suitable for requesting a proof with the
          provided proof schema.
        required: false
        schema:
          $ref: '#/components/schemas/ProofSchemaId'
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: createdDateAfter
        in: query
        description: |-
          Return only identifiers created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only identifiers created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only identifiers last modified after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only identifiers last modified before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - totalPages
                - totalItems
                - values
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - IDENTIFIER_LIST
    post:
      tags:
      - identifier_management
      summary: Create an identifier
      description: |
        <strong>Permissions:</strong> <code>IDENTIFIER_CREATE</code>

        Creates a new identifier for use in signing and credential operations.

        An identifier wraps an underlying resource (key, certificate, CA, or DID)
        and provides a stable identifier ID. The underlying resource retains its
        own ID for resource-specific management via its respective API.

        Provide exactly one of: `key`, `certificates`, `certificateAuthorities`,
        or `did`.
      operationId: post_identifier
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateIdentifierRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - IDENTIFIER_CREATE
  /api/identifier/v1/remote:
    post:
      tags:
      - identifier_management
      summary: Create a remote identifier
      description: "<strong>Permissions:</strong> <code>IDENTIFIER_CREATE</code>\n\nCreates a new remote identifier for an external party whose private key \nis not held within Procivis One. Remote identifiers can be added as \nentries to trust list publications.\n\nThe request follows the same structure as `POST /api/identifier/v1`.\nProvide exactly one of: `key`, `certificates`, `certificateAuthorities`,\nor `did`.\n"
      operationId: post_remote_identifier
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRemoteIdentifierRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - IDENTIFIER_CREATE
  /api/identifier/v1/{id}:
    get:
      tags:
      - identifier_management
      summary: Retrieve an identifier
      description: |-
        <strong>Permissions:</strong> <code>IDENTIFIER_DETAIL</code>

        Returns detailed information about an identifier.
      operationId: get_identifier
      parameters:
      - name: id
        in: path
        description: Identifier id
        required: true
        schema:
          $ref: '#/components/schemas/IdentifierId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - name
                - createdDate
                - lastModified
                - state
                - type
                - isRemote
                properties:
                  certificateAuthorities:
                    type: array
                    items:
                      $ref: '#/components/schemas/CertificateResponseRestDTO'
                  certificates:
                    type: array
                    items:
                      $ref: '#/components/schemas/CertificateResponseRestDTO'
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  did:
                    $ref: '#/components/schemas/DidResponseRestDTO'
                  id:
                    $ref: '#/components/schemas/IdentifierId'
                  isRemote:
                    type: boolean
                  key:
                    $ref: '#/components/schemas/KeyResponseRestDTO'
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  name:
                    type: string
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  state:
                    $ref: '#/components/schemas/IdentifierStateRest'
                  trustInformation:
                    type: array
                    items:
                      $ref: '#/components/schemas/IdentifierTrustInformationResponseRestDTO'
                  type:
                    $ref: '#/components/schemas/IdentifierTypeRest'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - IDENTIFIER_DETAIL
    delete:
      tags:
      - identifier_management
      summary: Delete an identifier
      description: |-
        <strong>Permissions:</strong> <code>IDENTIFIER_DELETE</code>

        Deletes an identifier.
      operationId: delete_identifier
      parameters:
      - name: id
        in: path
        description: Identifier id
        required: true
        schema:
          $ref: '#/components/schemas/IdentifierId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - IDENTIFIER_DELETE
  /api/identifier/v1/resolve-trust-entries:
    post:
      tags:
      - identifier_management
      summary: Resolve trust entries
      description: |+
        <strong>Permissions:</strong> <code>IDENTIFIER_DETAIL</code>

      operationId: resolve_trust_entries
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveTrustEntriesRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  required:
                  - identifier
                  - trustEntries
                  properties:
                    identifier:
                      $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
                    trustEntries:
                      type: array
                      items:
                        $ref: '#/components/schemas/ResolvedTrustEntryResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - IDENTIFIER_DETAIL
  /api/interaction/v1/handle-invitation:
    post:
      tags:
      - interaction
      summary: Handle invitation
      description: |
        <strong>Permissions:</strong> <code>INTERACTION_ISSUANCE</code> <code>INTERACTION_PROOF</code>

        For a wallet, handles the interaction once the wallet connects to a share
        endpoint URL (for example, scans the QR code of an offered credential or
        request for proof).

        To instead start the wallet-initiated Authorization Code Flow request for
        issuance, use the Initiate OID4VCI Issuance endpoint.
      operationId: handle_invitation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HandleInvitationRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - interactionId
                - interactionType
                properties:
                  authorizationCodeFlowUrl:
                    type: string
                    description: |-
                      For issuer-initiated Authorization Code Flows, use this URL to start the
                      authorization process with the authorization server.
                  interactionId:
                    $ref: '#/components/schemas/InteractionId'
                  interactionType:
                    $ref: '#/components/schemas/InteractionTypeRestEnum'
                  keyAlgorithms:
                    type: array
                    items:
                      type: string
                  keyStorageSecurityLevels:
                    type: array
                    items:
                      $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
                  proofId:
                    $ref: '#/components/schemas/ProofId'
                    description: Requested proof.
                  protocol:
                    type: string
                  requiresWalletInstanceAttestation:
                    type: boolean
                  txCode:
                    $ref: '#/components/schemas/OpenID4VCITxCodeRestDTO'
                    description: |-
                      Metadata for entering a transaction code.
                      If a pre-authorized code is issued with a transaction code object, the
                      wallet user must input a transaction code to receive the offered credential.
                      This code is typically sent through a separate channel such as SMS or email.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - INTERACTION_ISSUANCE
      - INTERACTION_PROOF
  /api/interaction/v1/issuance-accept:
    post:
      tags:
      - interaction
      summary: Accept issuance
      description: |
        <strong>Permissions:</strong> <code>INTERACTION_ISSUANCE</code>

        Accepts an offered credential. The system will generate a new
        identifier that matches issuer's restrictions. Alternatively,
        you can specify an existing identifier.

        `didId` is deprecated.
      operationId: issuance_accept
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssuanceAcceptRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - INTERACTION_ISSUANCE
  /api/interaction/v1/{id}/issuance-refresh:
    post:
      tags:
      - interaction
      summary: Refresh credentials
      description: |
        <strong>Permissions:</strong> <code>INTERACTION_ISSUANCE</code>

        Receive a new batch of credentials.
      operationId: issuance_refresh
      parameters:
      - name: id
        in: path
        description: Interaction ID
        required: true
        schema:
          $ref: '#/components/schemas/InteractionId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - ids
                properties:
                  ids:
                    type: array
                    items:
                      $ref: '#/components/schemas/CredentialId'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - INTERACTION_ISSUANCE
  /api/interaction/v1/issuance-reject:
    post:
      tags:
      - interaction
      summary: Reject issuance
      description: |-
        <strong>Permissions:</strong> <code>INTERACTION_ISSUANCE</code>

        Rejects an offered credential.
      operationId: issuance_reject
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssuanceRejectRequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - INTERACTION_ISSUANCE
  /api/interaction/v1/presentation-reject:
    post:
      tags:
      - interaction
      summary: Reject presentation
      description: |-
        <strong>Permissions:</strong> <code>INTERACTION_PROOF</code>

        Rejects a request to submit credentials.
      operationId: presentation_reject
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PresentationRejectRequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - INTERACTION_PROOF
  /api/interaction/v2/presentation-submit:
    post:
      tags:
      - interaction
      summary: Submit presentation
      description: |
        <strong>Permissions:</strong> <code>INTERACTION_PROOF</code>

        Submits a presentation in response to a request. This endpoint uses DCQL
        as a query language and should be used after "Presentation Definition (V2)".
      operationId: presentation_submit_v2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PresentationSubmitV2RequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - INTERACTION_PROOF
  /api/interaction/v1/propose-proof:
    post:
      tags:
      - interaction
      summary: Propose a proof
      description: |
        <strong>Permissions:</strong> <code>INTERACTION_PROOF</code>

        Not for use via the API; this enables mobile wallets to initiate
        device engagement for offline flows. See the SDK.
      operationId: propose_proof
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProposeProofRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - proofId
                - interactionId
                properties:
                  interactionId:
                    $ref: '#/components/schemas/InteractionId'
                  proofId:
                    $ref: '#/components/schemas/ProofId'
                  url:
                    type:
                    - string
                    - 'null'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - INTERACTION_PROOF
  /api/interaction/v1/initiate-issuance:
    post:
      tags:
      - interaction
      summary: Initiate OID4VCI issuance
      description: |
        <strong>Permissions:</strong> <code>INTERACTION_ISSUANCE</code>

        For wallets, starts the OpenID4VCI Authorization Code Flow.
      operationId: initiate_issuance
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiateIssuanceRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - url
                properties:
                  url:
                    type: string
                    description: Authorization endpoint URL
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - INTERACTION_ISSUANCE
  /api/interaction/v1/continue-issuance:
    post:
      tags:
      - interaction
      summary: Continue OID4VCI issuance
      description: |
        <strong>Permissions:</strong> <code>INTERACTION_ISSUANCE</code>

        For wallet-initiated flows, continues the OpenID4VCI issuance process after
        completing authorization.
      operationId: continue_issuance
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContinueIssuanceRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - interactionId
                - interactionType
                - requiresWalletInstanceAttestation
                - protocol
                properties:
                  interactionId:
                    $ref: '#/components/schemas/InteractionId'
                    description: For reference.
                  interactionType:
                    $ref: '#/components/schemas/InteractionTypeRestEnum'
                  keyAlgorithms:
                    type: array
                    items:
                      type: string
                  keyStorageSecurityLevels:
                    type: array
                    items:
                      $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
                  protocol:
                    type: string
                  requiresWalletInstanceAttestation:
                    type: boolean
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - INTERACTION_ISSUANCE
  /api/proof-request/v2/{id}/presentation-definition:
    get:
      tags:
      - proof_management
      summary: Presentation definition (V2)
      description: |
        <strong>Permissions:</strong> <code>PROOF_DETAIL</code>

        For wallets; after a wallet connects to a verifier's request for proof via the
        [Handle Invitation](../core/handle-invitation.api.mdx) endpoint, the presentation
        definition endpoint takes the resulting `proofId` and filters the wallet,
        returning credentials which match the verifier's request.

        This version uses DCQL as the query language.
      operationId: get_proof_presentation_definition_v2
      parameters:
      - name: id
        in: path
        description: Proof id
        required: true
        schema:
          $ref: '#/components/schemas/ProofId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - credentialQueries
                - credentialSets
                properties:
                  credentialQueries:
                    type: object
                    additionalProperties:
                      $ref: '#/components/schemas/CredentialQueryResponseRestDTO'
                    propertyNames:
                      type: string
                  credentialSets:
                    type: array
                    items:
                      $ref: '#/components/schemas/CredentialSetResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_DETAIL
  /api/proof-request/v1/{id}:
    get:
      tags:
      - proof_management
      summary: Retrieve a proof request
      description: |-
        <strong>Permissions:</strong> <code>PROOF_DETAIL</code>

        Returns detailed information about a proof request.
      operationId: get_proof_details
      parameters:
      - name: id
        in: path
        description: Proof id
        required: true
        schema:
          $ref: '#/components/schemas/ProofId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - lastModified
                - protocol
                - transport
                - state
                - role
                - organisationId
                - proofInputs
                properties:
                  claimsRemovedAt:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  completedDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  engagement:
                    type: string
                  id:
                    $ref: '#/components/schemas/ProofId'
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  profile:
                    type: string
                  proofInputs:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProofInputRestDTO'
                  protocol:
                    type: string
                  redirectUri:
                    type: string
                  requestedDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  retainUntilDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  role:
                    $ref: '#/components/schemas/ProofRoleRestEnum'
                  schema:
                    $ref: '#/components/schemas/GetProofSchemaListItemResponseRestDTO'
                  state:
                    $ref: '#/components/schemas/ProofStateRestEnum'
                  subscriberInformation:
                    type: string
                  transport:
                    type: string
                  trustInformation:
                    $ref: '#/components/schemas/TrustInformationRestDTO'
                    description: Trust information of the verifier, if any.
                  verifier:
                    $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
                  verifierCertificate:
                    $ref: '#/components/schemas/CertificateResponseRestDTO'
                  webhookDestinationUrl:
                    type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_DETAIL
    delete:
      tags:
      - proof_management
      summary: Delete proof request
      description: |
        <strong>Permissions:</strong> <code>PROOF_DELETE</code>

        Deletes a proof request that has not completed yet. If the request is in
        `REQUESTED` state then the proof is retracted instead, retaining history
        of the interaction.

        Related guide: [Managing Proof Requests](https://docs.procivis.ch/verify/states)
      operationId: delete_proof
      parameters:
      - name: id
        in: path
        description: Proof id
        required: true
        schema:
          $ref: '#/components/schemas/ProofId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_DELETE
  /api/proof-request/v1:
    get:
      tags:
      - proof_management
      summary: List proof requests
      description: |-
        <strong>Permissions:</strong> <code>PROOF_LIST</code>

        Returns a list of proof requests in an organization.
      operationId: get_proofs
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - schema.name
          - verifier
          - createdDate
          - state
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: name
        in: query
        description: |-
          Return only proof requests with a name starting with this string.
          Not case-sensitive.
        required: false
        schema:
          type: string
      - name: profiles[]
        in: query
        description: Filter by one or more country profiles.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: states[]
        in: query
        description: Filter by one or more proof states.
        required: false
        schema:
          type: array
          items:
            type: string
            description: The state representation of the proof request in the system.
            enum:
            - CREATED
            - PENDING
            - REQUESTED
            - ACCEPTED
            - REJECTED
            - RETRACTED
            - ERROR
            - INTERACTION_EXPIRED
      - name: roles[]
        in: query
        description: |-
          Filter proof requests by one or more roles: requested by the system
          or received by the system.
        required: false
        schema:
          type: array
          items:
            type: string
            description: The role the system has in relation to the proof.
            enum:
            - HOLDER
            - VERIFIER
      - name: proofSchemaIds[]
        in: query
        description: |-
          Filter proof requests by their associated proof schema. Pass an array
          of UUID strings.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: verifiers[]
        in: query
        description: |-
          Filter proof requests by their associated verifier identifiers.
          Pass an array of UUID strings.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: ids[]
        in: query
        description: Filter by one or more UUIDs.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: createdDateAfter
        in: query
        description: |-
          Return only proof requests created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only proof requests created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only proof requests last modified after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only proof requests last modified before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: requestedDateAfter
        in: query
        description: |-
          Return only proof requests requested after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: requestedDateBefore
        in: query
        description: |-
          Return only proof requests requested before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: completedDateAfter
        in: query
        description: |-
          Return only proof requests completed after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: completedDateBefore
        in: query
        description: |-
          Return only proof requests completed before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProofListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_LIST
    post:
      tags:
      - proof_management
      summary: Create a proof request
      description: |
        <strong>Permissions:</strong> <code>PROOF_ISSUE</code>

        Creates a proof request, which can then be shared with a wallet holder.

        Choose what information to request (proof schema), an identifier, and
        which verification protocol to use.

        The `protocol` and `transport` values must reference specific configuration
        instances from your system configuration. For `protocol`, reference a configured
        instance of `verificationProtocol`.

        Related guide: [Verifying Presentations](https://docs.procivis.ch/verify)
      operationId: post_proof
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProofRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_ISSUE
  /api/proof-request/v1/{id}/share:
    post:
      tags:
      - proof_management
      summary: Request a proof
      description: |
        <strong>Permissions:</strong> <code>PROOF_SHARE</code>

        Creates a share URL from a proof request. A wallet holder can use this URL to access
        the proof request.

        For proof requests made with OID4VC, a Client ID Scheme can be specified in the params.
        If no scheme is specified the default scheme from the configuration will be used.
      operationId: share_proof
      parameters:
      - name: id
        in: path
        description: Proof id
        required: true
        schema:
          $ref: '#/components/schemas/ProofId'
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - type: 'null'
              - $ref: '#/components/schemas/ShareProofRequestRestDTO'
            example:
              params:
                clientIdScheme: redirect_uri
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - url
                properties:
                  expiresAt:
                    type: string
                    format: date-time
                    description: |-
                      URL becomes unusable by wallet holder at this time. Call the share
                      endpoint again to get a new URL.
                    example: 2023-06-09T14:19:57.000Z
                  url:
                    type: string
                    description: Share URL, typically encoded as a QR code.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_SHARE
  /api/proof-request/v1/{id}/claims:
    delete:
      tags:
      - proof_management
      summary: Delete claim data
      description: |
        <strong>Permissions:</strong> <code>PROOF_CLAIMS_DELETE</code>

        For the specified proof, permanently deletes all claim data shared by the wallet
        holder. The proof request metadata and related history entries are still accessible.
      operationId: delete_proof_claims
      parameters:
      - name: id
        in: path
        description: Proof id
        required: true
        schema:
          $ref: '#/components/schemas/ProofId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_CLAIMS_DELETE
  /api/proof-request/v1/{id}/trust-detail:
    get:
      tags:
      - proof_management
      summary: Retrieve proof request trust detail
      description: |-
        <strong>Permissions:</strong> <code>PROOF_DETAIL</code>

        Returns detailed trust information about the requesting entity for a proof request.
      operationId: get_proof_trust_detail
      parameters:
      - name: id
        in: path
        description: Proof id
        required: true
        schema:
          $ref: '#/components/schemas/ProofId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  eudiEcosystem:
                    $ref: '#/components/schemas/EudiTrustInformationResponseRestDTO'
                    description: |-
                      EUDI trust information received from Access Certificates,
                      Registration Certificates, or National Registry public APIs.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - PROOF_DETAIL
  /api/verifier-instance/v1:
    post:
      tags:
      - verifier_instance
      summary: Register verifier instance
      description: <strong>Permissions:</strong> <code>VERIFIER_INSTANCE_REGISTER</code>
      operationId: register_verifier_instance
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterVerifierInstanceRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    $ref: '#/components/schemas/VerifierInstanceId'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - VERIFIER_INSTANCE_REGISTER
  /api/verifier-instance/v1/{id}/trust-collections:
    get:
      tags:
      - verifier_instance
      summary: Get trust collections
      description: |-
        <strong>Permissions:</strong> <code>VERIFIER_INSTANCE_DETAIL</code>

        Returns trust collections associated with the given verifier instance.
      operationId: get_verifier_instance_trust_collections
      parameters:
      - name: id
        in: path
        description: Verifier instance ID
        required: true
        schema:
          $ref: '#/components/schemas/VerifierInstanceId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - trustCollections
                properties:
                  trustCollections:
                    type: array
                    items:
                      $ref: '#/components/schemas/TrustCollectionInfoRestDTO'
                    description: Trust collections available from the Wallet Provider.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - VERIFIER_INSTANCE_DETAIL
  /api/verifier-instance/v1/{id}:
    patch:
      tags:
      - verifier_instance
      summary: Edit verifier instance
      description: |-
        <strong>Permissions:</strong> <code>VERIFIER_INSTANCE_EDIT</code>

        Modify verifier settings.
      operationId: edit_verifier_instance
      parameters:
      - name: id
        in: path
        description: Verifier instance ID
        required: true
        schema:
          $ref: '#/components/schemas/VerifierInstanceId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditVerifierInstanceRequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - VERIFIER_INSTANCE_EDIT
  /api/qes/v1/authorize:
    post:
      tags:
      - qes
      summary: Authorize a document signature
      description: |
        <strong>Permissions:</strong> <code>QES_DOCUMENT_SIGN</code>

        Initiates the QES signing flow for a document with a configured QES provider.
        Returns an `authorizationUrl` for the user to authenticate with the provider,
        and a `codeVerifier` to be passed to `/api/qes/v1/sign` on return.
      operationId: authorize
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QesAuthorizeRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - authorizationUrl
                - codeVerifier
                properties:
                  authorizationUrl:
                    type: string
                    description: Authorization URL the wallet opens to identify and authorize signing.
                  codeVerifier:
                    type: string
                    description: PKCE `code_verifier` to pass back to `/api/qes/v1/sign`.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - QES_DOCUMENT_SIGN
  /api/qes/v1/sign:
    post:
      tags:
      - qes
      summary: Sign a document
      description: |
        <strong>Permissions:</strong> <code>QES_DOCUMENT_SIGN</code>

        Completes the QES signing flow. Exchanges the authorization `code` received
        from the provider redirect and the `codeVerifier` from `/api/qes/v1/authorize`
        for a signed document.
      operationId: sign
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QesSignRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - signedDocument
                properties:
                  signedDocument:
                    type: string
                    description: Base64-encoded signed document returned by the QES provider.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - QES_DOCUMENT_SIGN
  /api/key/v1/{id}:
    get:
      tags:
      - key
      summary: Retrieve key
      description: |-
        <strong>Permissions:</strong> <code>KEY_DETAIL</code>

        Returns detailed information about a key.
      operationId: get_key
      parameters:
      - name: id
        in: path
        description: Key id
        required: true
        schema:
          $ref: '#/components/schemas/KeyId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - lastModified
                - organisationId
                - name
                - publicKey
                - keyType
                - storageType
                - isRemote
                properties:
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  id:
                    $ref: '#/components/schemas/KeyId'
                  isRemote:
                    type: boolean
                  keyType:
                    type: string
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  name:
                    type: string
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  publicKey:
                    type: string
                  storageType:
                    type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - KEY_DETAIL
  /api/key/v1:
    get:
      tags:
      - key
      summary: List keys
      description: |-
        <strong>Permissions:</strong> <code>KEY_LIST</code>

        Returns a list of keys created in an organization.
      operationId: get_key_list
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - name
          - createdDate
          - publicKey
          - keyType
          - storageType
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: name
        in: query
        description: Return all keys with a name starting with this string. Not case-sensitive.
        required: false
        schema:
          type: string
      - name: keyTypes[]
        in: query
        description: Return only keys using the specified algorithms.
        required: false
        schema:
          type: array
          items:
            type: string
        example:
        - EDDSA
      - name: keyStorages[]
        in: query
        description: |-
          Return only keys using the specified storage types.
          Possible values come from your configuration.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: ids[]
        in: query
        description: Filter by specific UUIDs.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
      - name: isRemote
        in: query
        description: Return only keys being a remote.
        required: false
        schema:
          type: string
          enum:
          - 'false'
          - 'true'
      - name: createdDateAfter
        in: query
        description: |-
          Return only keys created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only keys created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only keys last modified after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only keys last modified before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/KeyListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - KEY_LIST
    post:
      tags:
      - key
      summary: Create a key
      description: |
        <strong>Permissions:</strong> <code>KEY_CREATE</code>

        Creates a key within an organization. When creating identifiers for your own
        use — key identifiers, certificate identifiers, CA identifiers, or DID identifiers
        — a key is the first step.

        The `keyType` and `storageType` values must reference specific configuration
        instances from your system configuration.

        Related guide: [Keys](https://docs.procivis.ch/keys)
      operationId: post_key
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KeyRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - KEY_CREATE
  /api/key/v1/{id}/generate-csr:
    post:
      tags:
      - key
      summary: Generate a CSR
      description: |
        <strong>Permissions:</strong> <code>KEY_GENERATE_CSR</code>

        Generates a Certificate Signing Request (CSR). Supports mDL document
        signing certificates (for mdoc issuance) and Certificate Authority
        (CA) certificates.

        Use the POST /identifier endpoint to import signed certificates and CAs.
      operationId: generate_csr
      parameters:
      - name: id
        in: path
        description: Key ID. Must be either `ECDSA` or `EDDSA`.
        required: true
        schema:
          $ref: '#/components/schemas/KeyId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KeyGenerateCSRRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - content
                properties:
                  content:
                    type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - KEY_GENERATE_CSR
  /ssi/did-web/v1/{id}/did.json:
    get:
      tags:
      - ssi
      summary: Retrieve did:web document
      description: |
        Retrieve a `did:web` document by its UUID.
      operationId: get_did_web_document
      parameters:
      - name: id
        in: path
        description: Did id
        required: true
        schema:
          $ref: '#/components/schemas/DidId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - '@context'
                - id
                - verificationMethod
                properties:
                  '@context': {}
                  alsoKnownAs:
                    type: array
                    items:
                      type: string
                  assertionMethod:
                    type: array
                    items:
                      type: string
                  authentication:
                    type: array
                    items:
                      type: string
                  capabilityDelegation:
                    type: array
                    items:
                      type: string
                  capabilityInvocation:
                    type: array
                    items:
                      type: string
                  id:
                    $ref: '#/components/schemas/DidValue'
                  keyAgreement:
                    type: array
                    items:
                      type: string
                  service:
                    type: array
                    items:
                      $ref: '#/components/schemas/DidServiceEndointRestDTO'
                  verificationMethod:
                    type: array
                    items:
                      $ref: '#/components/schemas/DidVerificationMethodRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
  /ssi/did-webvh/v1/{id}/did.jsonl:
    get:
      tags:
      - ssi
      summary: Retrieve did:webvh(did:tdw) document
      description: |
        Retrieve a `did:webvh` (or `did:tdw`) document by its UUID.
      operationId: get_did_webvh_log
      parameters:
      - name: id
        in: path
        description: Did id
        required: true
        schema:
          $ref: '#/components/schemas/DidId'
      responses:
        '200':
          description: success response
          content:
            text/jsonl: {}
        '400':
          description: invalid did method
        '404':
          description: did not found
        '500':
          description: internal server error
  /ssi/revocation/v1/list/{id}:
    get:
      tags:
      - ssi
      summary: Revocation - retrieve list
      description: |
        Retrieve a revocation list by its UUID.
      operationId: get_revocation_list_by_id
      parameters:
      - name: id
        in: path
        description: Revocation list id
        required: true
        schema:
          $ref: '#/components/schemas/RevocationListId'
      responses:
        '200':
          description: OK
          content:
            application/jwt:
              schema:
                type: string
              example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
            application/ld+json:
              schema:
                type: string
              example:
                '@context':
                - https://www.w3.org/ns/credentials/v2
                credentialSubject:
                  encodedList: uH4sIAAAAAAAAA-3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAAAAAIC3AYbSVKsAQAAA
                  id: https://example.com/status/3#list
                  statusPurpose: revocation
                  type: BitstringStatusList
                id: https://example.com/credentials/status/3
                issuer: did:example:12345
                type:
                - VerifiableCredential
                - BitstringStatusListCredential
            application/statuslist+jwt:
              schema:
                type: string
        '404':
          description: Revocation list not found
        '500':
          description: Server error
  /ssi/revocation/v1/crl/{id}:
    get:
      tags:
      - ssi
      summary: Revocation - retrieve CRL
      description: |
        Retrieve a CRL by its UUID.
      operationId: get_crl_by_id
      parameters:
      - name: id
        in: path
        description: Revocation list id
        required: true
        schema:
          $ref: '#/components/schemas/RevocationListId'
      responses:
        '200':
          description: OK
          content:
            application/pkix-crl: {}
        '404':
          description: Revocation list not found
        '500':
          description: Server error
  /ssi/context/v1/{id}:
    get:
      tags:
      - ssi
      summary: Retrieve @context
      description: |
        Retrieve the `@context` of a JSON-LD credential by the UUID of the
        credential schema.
      operationId: get_json_ld_context
      parameters:
      - name: id
        in: path
        description: context id or credentialSchemaId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/ld+json:
              schema:
                $ref: '#/components/schemas/JsonLDContextResponseRestDTO'
        '404':
          description: Credential schema not found
        '500':
          description: Server error
  /ssi/context/v1/{id}/{format}:
    get:
      tags:
      - ssi
      summary: Retrieve @context
      description: |
        Retrieve the `@context` of a JSON-LD credential by the UUID of the
        credential schema.
      operationId: get_json_ld_context_by_format
      parameters:
      - name: id
        in: path
        description: context id or credentialSchemaId
        required: true
        schema:
          type: string
      - name: format
        in: path
        description: Credential schema format
        required: true
        schema:
          $ref: '#/components/schemas/CredentialFormat'
      responses:
        '200':
          description: OK
          content:
            application/ld+json:
              schema:
                $ref: '#/components/schemas/JsonLDContextResponseRestDTO'
        '404':
          description: Credential schema not found
        '500':
          description: Server error
  /ssi/schema/v1/{id}:
    get:
      tags:
      - ssi
      summary: Retrieve credential schema service
      description: |
        Retrieve a credential schema by its UUID.
      operationId: ssi_get_credential_schema
      parameters:
      - name: id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialSchemaResponseRestDTO'
        '404':
          description: Credential schema not found
        '500':
          description: Server error
  /ssi/schema/v2/{id}:
    get:
      tags:
      - ssi
      summary: Retrieve credential schema v2 service
      description: |
        Retrieve a credential schema by its UUID in v2 format.
      operationId: ssi_get_credential_schema_v2
      parameters:
      - name: id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialSchemaV2ResponseRestDTO'
        '404':
          description: Credential schema not found
        '500':
          description: Server error
  /ssi/schema/v2/{id}/{format}:
    get:
      tags:
      - ssi
      summary: Retrieve credential schema v2 service
      description: |
        Retrieve a credential schema by its UUID in v2 format.
      operationId: ssi_get_credential_schema_by_format_v2
      parameters:
      - name: id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      - name: format
        in: path
        description: Credential schema format
        required: true
        schema:
          $ref: '#/components/schemas/CredentialFormat'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialSchemaV2ResponseRestDTO'
        '404':
          description: Credential schema not found
        '500':
          description: Server error
  /ssi/proof-schema/v1/{id}:
    get:
      tags:
      - ssi
      summary: Retrieve proof schema service
      description: |
        Retrieve a proof schema by its UUID.
      operationId: ssi_get_proof_schema
      parameters:
      - name: id
        in: path
        description: Proof schema id
        required: true
        schema:
          $ref: '#/components/schemas/ProofSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProofSchemaResponseRestDTO'
        '404':
          description: Proof schema not found
        '500':
          description: Server error
  /ssi/vct/v1/{organisationId}/{vctType}:
    get:
      tags:
      - ssi
      summary: Retrieve SD-JWT VC type metadata service
      description: |
        Retrieve the type metadata of an SD-JWT VC credential.
      operationId: ssi_get_sd_jwt_vc_type_metadata
      parameters:
      - name: organisationId
        in: path
        description: Organization id
        required: true
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: vctType
        in: path
        description: VctType
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SdJwtVcTypeMetadataResponseRestDTO'
        '404':
          description: Type metadata not found
        '500':
          description: Server error
  /ssi/vct/v2/{organisationId}/{credentialSchemaId}/{format}:
    get:
      tags:
      - ssi
      summary: Retrieve SD-JWT VC type metadata v2 service
      description: |
        Retrieve the type metadata of an SD-JWT VC credential for a v2 schema.
      operationId: ssi_get_sd_jwt_vc_type_metadata_v2
      parameters:
      - name: organisationId
        in: path
        description: Organization id
        required: true
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: credentialSchemaId
        in: path
        description: Credential schema id
        required: true
        schema:
          type: string
      - name: format
        in: path
        description: Credential format
        required: true
        schema:
          $ref: '#/components/schemas/CredentialFormat'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SdJwtVcTypeMetadataResponseRestDTO'
        '404':
          description: Type metadata not found
        '500':
          description: Server error
  /ssi/ca/{id}:
    get:
      tags:
      - ssi
      summary: Certificate Authority - retrieve certificate
      description: |
        Retrieve a Certificate Authority certificate by its UUID.
      operationId: ssi_get_certificate_authority
      parameters:
      - name: id
        in: path
        description: Certificate Authority id
        required: true
        schema:
          $ref: '#/components/schemas/CertificateId'
      responses:
        '200':
          description: OK
          content:
            application/pkix-cert: {}
        '404':
          description: Certificate Authority not found
        '500':
          description: Server error
  /ssi/certificate/{id}:
    get:
      tags:
      - ssi
      summary: Certificate - retrieve certificate
      description: |
        Retrieve a certificate in PEM format by its UUID.
      operationId: ssi_get_certificate
      parameters:
      - name: id
        in: path
        description: Certificate id
        required: true
        schema:
          $ref: '#/components/schemas/CertificateId'
      responses:
        '200':
          description: OK
          content:
            application/x-pem-file: {}
        '404':
          description: Certificate not found
        '500':
          description: Server error
  /ssi/trust-list/v1/{id}:
    get:
      tags:
      - ssi
      summary: Retrieve Trust list publication
      description: |
        Retrieve a Trust list publication by its UUID.
        Use the Accept header to request a specific format (application/jwt or application/xml).
      operationId: ssi_get_trust_list_publication
      parameters:
      - name: id
        in: path
        description: Trust list publication id
        required: true
        schema:
          $ref: '#/components/schemas/TrustListPublicationId'
      responses:
        '200':
          description: OK
          content:
            application/jwt:
              schema:
                type: string
            application/xml:
              schema:
                type: string
        '404':
          description: Trust list publication not found
        '406':
          description: Unsupported Accept content type
        '500':
          description: Server error
  /ssi/trust-collection/v1/{id}:
    get:
      tags:
      - ssi
      summary: Retrieve Trust collection
      description: |
        Retrieve a Trust collection by its UUID.
      operationId: ssi_get_trust_collection
      parameters:
      - name: id
        in: path
        description: Trust collection id
        required: true
        schema:
          $ref: '#/components/schemas/TrustCollectionId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrustCollectionResponseRestDTO'
        '404':
          description: Trust collection not found
        '500':
          description: Server error
  /ssi/verifier-provider/v1/{verifierProvider}:
    get:
      tags:
      - verifier-provider
      summary: Retrieve verifier provider info
      description: |
        Retrieves information about a verifier provider.
      operationId: get_verification_provider
      parameters:
      - name: verifierProvider
        in: path
        description: Verifier provider ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - verifierName
                - name
                - trustCollections
                - featureFlags
                properties:
                  appVersion:
                    $ref: '#/components/schemas/VerifierProviderAppVersionResponseDTO'
                  featureFlags:
                    $ref: '#/components/schemas/FeatureFlagsRestDTO'
                  name:
                    type: string
                  trustCollections:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProviderTrustCollectionRestDTO'
                  verifierName:
                    type: string
                    deprecated: true
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
  /ssi/wallet-unit/v1:
    post:
      tags:
      - ssi
      summary: Register wallet unit
      description: |
        Register new wallet unit.
      operationId: register_wallet_unit
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterWalletUnitRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    $ref: '#/components/schemas/WalletInstanceId'
                  nonce:
                    type: string
                  userNonce:
                    type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
  /ssi/wallet-unit/v1/{id}/activate:
    post:
      tags:
      - ssi
      summary: Activates wallet unit
      description: |
        Activates wallet unit.
      operationId: activate_wallet_unit
      parameters:
      - name: id
        in: path
        description: Wallet unit id
        required: true
        schema:
          $ref: '#/components/schemas/WalletInstanceId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WalletUnitActivationRequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
  /ssi/wallet-unit/v1/{id}/issue-attestation:
    post:
      tags:
      - ssi
      summary: Issues wallet attestations
      description: |
        Issue wallet app and wallet unit attestations.
      operationId: issue_wallet_unit_attestation
      parameters:
      - name: id
        in: path
        description: Wallet unit id
        required: true
        schema:
          $ref: '#/components/schemas/WalletInstanceId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueWalletUnitAttestationRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  wia:
                    type: array
                    items:
                      type: string
                  wua:
                    type: array
                    items:
                      type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - wallet-unit: []
  /ssi/wallet-provider/v1/{walletProvider}:
    get:
      tags:
      - ssi
      summary: Returns metadata of given wallet provider
      description: |
        Returns metadata of given wallet provider.
      operationId: get_wallet_provider_metadata
      parameters:
      - name: walletProvider
        in: path
        description: Wallet provider
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - walletUnitAttestation
                - name
                - trustCollections
                - documentSigners
                - featureFlags
                properties:
                  appVersion:
                    $ref: '#/components/schemas/AppVersionRestDTO'
                  documentSigners:
                    type: array
                    items:
                      $ref: '#/components/schemas/DocumentSignerMetadataRestDTO'
                  featureFlags:
                    $ref: '#/components/schemas/FeatureFlagsRestDTO'
                  name:
                    type: string
                  trustCollections:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProviderTrustCollectionRestDTO'
                  userAuthentication:
                    $ref: '#/components/schemas/UserAuthenticationRestDTO'
                  walletUnitAttestation:
                    $ref: '#/components/schemas/WalletUnitAttestationMetadataRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
  /ssi/openid4vp/final-1.0-swiyu/response/{id}:
    post:
      tags:
      - openid4vp-final-1.0-swiyu
      summary: OID4VC - Verifier direct post
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vp_final1_0_swiyu_direct_post
      parameters:
      - name: id
        in: path
        description: Interaction id
        required: true
        schema:
          $ref: '#/components/schemas/InteractionId'
      requestBody:
        description: Verifier request
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/OpenID4VPDirectPostRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VPDirectPostResponseRestDTO'
        '400':
          description: OIDC Verifier errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIErrorResponseRestDTO'
        '409':
          description: Wrong proof state
        '500':
          description: Server error
  /ssi/openid4vp/final-1.0-swiyu/{id}/client-request:
    get:
      tags:
      - openid4vp-final-1.0-swiyu
      summary: OID4VC - Proof request data
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vp_final1_0_swiyu_client_request
      parameters:
      - name: id
        in: path
        description: Proof id
        required: true
        schema:
          $ref: '#/components/schemas/ProofId'
      responses:
        '200':
          description: OK
          content:
            application/oauth-authz-req+jwt:
              schema:
                type: string
        '400':
          description: OIDC Verifier errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIErrorResponseRestDTO'
        '404':
          description: Proof does not exist
        '500':
          description: Server error
  /ssi/openid4vp/final-1.0/response:
    post:
      tags:
      - openid4vp-final-1.0
      summary: OID4VC - Verifier direct post
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vp_final1_0_direct_post
      requestBody:
        description: Verifier request
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/OpenID4VPDirectPostRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VPDirectPostResponseRestDTO'
        '400':
          description: OIDC Verifier errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIErrorResponseRestDTO'
        '409':
          description: Wrong proof state
        '500':
          description: Server error
  /ssi/openid4vp/final-1.0/{id}/client-metadata:
    get:
      tags:
      - openid4vp-final-1.0
      summary: OID4VC - Client metadata
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vp_final1_0_client_metadata
      parameters:
      - name: id
        in: path
        description: Proof id
        required: true
        schema:
          $ref: '#/components/schemas/ProofId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientMetadata'
        '400':
          description: OIDC Verifier errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIErrorResponseRestDTO'
        '404':
          description: Proof does not exist
        '500':
          description: Server error
  /ssi/openid4vp/final-1.0/{id}/client-request:
    get:
      tags:
      - openid4vp-final-1.0
      summary: OID4VC - Proof request data
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vp_final1_0_client_request
      parameters:
      - name: id
        in: path
        description: Proof id
        required: true
        schema:
          $ref: '#/components/schemas/ProofId'
      responses:
        '200':
          description: OK
          content:
            application/oauth-authz-req+jwt:
              schema:
                type: string
        '400':
          description: OIDC Verifier errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIErrorResponseRestDTO'
        '404':
          description: Proof does not exist
        '500':
          description: Server error
  /.well-known/jwt-vc-issuer/ssi/openid4vci/{protocol_id}/{identifier_id}/{credential_schema_id}:
    get:
      tags:
      - openid4vci
      summary: OID4VC - Retrieve SD-JWT VC Issuer metadata
      description: |
        Returns JWT VC Issuer Metadata, including the issuer identifier
        and the JSON Web Key Set (JWKS) containing the public keys used
        to sign issued credentials.
      operationId: oid4vci_get_jwt_vc_issuer_metadata
      parameters:
      - name: protocol_id
        in: path
        description: Issuance protocol id
        required: true
        schema:
          type: string
      - name: identifier_id
        in: path
        description: Identifier id
        required: true
        schema:
          $ref: '#/components/schemas/IdentifierId'
      - name: credential_schema_id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SdJwtVcIssuerMetadataRestDTO'
        '404':
          description: Issuer not found
        '500':
          description: Server error
  /.well-known/openid-credential-issuer/ssi/openid4vci/final-1.0-swiyu/{protocol_id}/{identifier_id}/{credential_schema_id}:
    get:
      tags:
      - openid4vci-final1_0-swiyu
      summary: OID4VC - Retrieve issuer metadata
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_swiyu_get_issuer_metadata
      parameters:
      - name: protocol_id
        in: path
        description: Issuance protocol id
        required: true
        schema:
          type: string
      - name: identifier_id
        in: path
        description: Issuer identifier id
        required: true
        schema:
          $ref: '#/components/schemas/IdentifierId'
      - name: credential_schema_id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCISwiyuIssuerMetadataResponseRestDTO'
        '404':
          description: Credential schema not found
        '500':
          description: Server error
  /ssi/openid4vci/final-1.0-swiyu/{protocol_id}/{identifier_id}/{credential_schema_id}/.well-known/openid-credential-issuer:
    get:
      tags:
      - openid4vci-final1_0-swiyu
      summary: OID4VC - Retrieve issuer metadata
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_swiyu_get_issuer_metadata_legacy
      parameters:
      - name: protocol_id
        in: path
        description: Issuance protocol id
        required: true
        schema:
          type: string
      - name: identifier_id
        in: path
        description: Issuer identifier id
        required: true
        schema:
          $ref: '#/components/schemas/IdentifierId'
      - name: credential_schema_id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCISwiyuIssuerMetadataResponseRestDTO'
        '404':
          description: Credential schema not found
        '500':
          description: Server error
  /ssi/openid4vci/final-1.0-swiyu/{protocol_id}/{identifier_id}/{credential_schema_id}/.well-known/oauth-authorization-server:
    get:
      tags:
      - openid4vci-final1_0-swiyu
      summary: OID4VC - OAuth authorization server
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_swiyu_oauth_authorization_server_legacy
      parameters:
      - name: protocol_id
        in: path
        description: Issuance protocol id
        required: true
        schema:
          type: string
      - name: identifier_id
        in: path
        description: Issuer identifier id
        required: true
        schema:
          $ref: '#/components/schemas/IdentifierId'
      - name: credential_schema_id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthAuthorizationServerMetadataRestDTO'
        '404':
          description: Credential schema not found
        '500':
          description: Server error
  /ssi/openid4vci/final-1.0-swiyu/{id}/token:
    post:
      tags:
      - openid4vci-final1_0-swiyu
      summary: OID4VC - Create token
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_swiyu_create_token
      parameters:
      - name: id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      - name: grant_type
        in: query
        required: true
        schema:
          type: string
        example: urn:ietf:params:oauth:grant-type:pre-authorized_code
      - name: pre-authorized_code
        in: query
        required: false
        schema:
          type: string
      - name: refresh_token
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCITokenResponseRestDTO'
        '400':
          description: OIDC token errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIErrorResponseRestDTO'
        '404':
          description: Credential schema not found
        '409':
          description: Wrong credential state
        '500':
          description: Server error
  /ssi/openid4vci/final-1.0-swiyu/{id}/credential:
    post:
      tags:
      - openid4vci-final1_0-swiyu
      summary: OID4VC - Create credential
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_swiyu_create_credential
      parameters:
      - name: id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      requestBody:
        description: Credential request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenID4VCITokenRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIFinal1CredentialResponseRestDTO'
        '400':
          description: OIDC credential errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIErrorResponseRestDTO'
        '404':
          description: Credential schema not found
        '409':
          description: Wrong credential state
        '500':
          description: Server error
      security:
      - openID4VCI: []
  /ssi/openid4vci/final-1.0-swiyu/{protocol_id}/nonce:
    post:
      tags:
      - openid4vci-final1_0-swiyu
      summary: OID4VC - Generate nonce
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_swiyu_nonce
      parameters:
      - name: protocol_id
        in: path
        description: Issuance protocol id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCINonceResponseRestDTO'
        '500':
          description: Server error
  /.well-known/openid-credential-issuer/ssi/openid4vci/final-1.0/{protocol_id}/{identifier_id}/{credential_schema_id}:
    get:
      tags:
      - openid4vci-final1_0
      summary: OID4VC - Retrieve issuer metadata
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_get_issuer_metadata
      parameters:
      - name: protocol_id
        in: path
        description: Issuance protocol id
        required: true
        schema:
          type: string
      - name: identifier_id
        in: path
        description: Identifier id
        required: true
        schema:
          $ref: '#/components/schemas/IdentifierId'
      - name: credential_schema_id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIIssuerMetadataResponseRestDTO'
            application/jwt:
              schema:
                type: string
        '404':
          description: Credential schema not found
        '500':
          description: Server error
  /.well-known/oauth-authorization-server/ssi/openid4vci/final-1.0/{protocol_id}/{identifier_id}/{credential_schema_id}:
    get:
      tags:
      - openid4vci-final1_0
      summary: OID4VC - OAuth authorization server
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_oauth_authorization_server
      parameters:
      - name: protocol_id
        in: path
        description: Issuance protocol id
        required: true
        schema:
          type: string
      - name: identifier_id
        in: path
        description: Identifier id
        required: true
        schema:
          $ref: '#/components/schemas/IdentifierId'
      - name: credential_schema_id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthAuthorizationServerMetadataRestDTO'
        '404':
          description: Credential schema not found
        '500':
          description: Server error
  /ssi/openid4vci/final-1.0/{credential_schema_id}/offer/{credential_id}:
    get:
      tags:
      - openid4vci-final1_0
      summary: OID4VC - Retrieve credential offer
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_get_credential_offer
      parameters:
      - name: credential_schema_id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      - name: credential_id
        in: path
        description: Credential id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIFinal1CredentialOfferRestDTO'
        '400':
          description: Invalid request
        '404':
          description: Credential not found
        '500':
          description: Server error
  /ssi/openid4vci/final-1.0/{id}/token:
    post:
      tags:
      - openid4vci-final1_0
      summary: OID4VC - Create token
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_create_token
      parameters:
      - name: id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      - name: OAuth-Client-Attestation
        in: header
        description: OAuth Client Attestation JWT for attestation-based client authentication
        required: false
        schema:
          type: string
      - name: OAuth-Client-Attestation-PoP
        in: header
        description: OAuth Client Attestation Proof of Possession JWT
        required: false
        schema:
          type: string
      requestBody:
        description: Token request
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/OpenID4VCITokenRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCITokenResponseRestDTO'
        '400':
          description: OIDC token errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIErrorResponseRestDTO'
        '404':
          description: Credential schema not found
        '409':
          description: Wrong credential state
        '500':
          description: Server error
  /ssi/openid4vci/final-1.0/{id}/credential:
    post:
      tags:
      - openid4vci-final1_0
      summary: OID4VC - Create credential
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_create_credential
      parameters:
      - name: id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      requestBody:
        description: Credential request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenID4VCIFinal1CredentialRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIFinal1CredentialResponseRestDTO'
        '400':
          description: OIDC credential errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIErrorResponseRestDTO'
        '404':
          description: Credential schema not found
        '409':
          description: Wrong credential state
        '500':
          description: Server error
      security:
      - openID4VCI: []
  /ssi/openid4vci/final-1.0/{id}/notification:
    post:
      tags:
      - openid4vci-final1_0
      summary: OID4VC - Credential notification
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_credential_notification
      parameters:
      - name: id
        in: path
        description: Credential schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      requestBody:
        description: Notification request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenID4VCINotificationRequestRestDTO'
        required: true
      responses:
        '204':
          description: OK
        '400':
          description: OIDC credential errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCIErrorResponseRestDTO'
        '404':
          description: Credential schema not found
        '409':
          description: Wrong credential state
        '500':
          description: Server error
      security:
      - openID4VCI: []
  /ssi/openid4vci/final-1.0/{protocol_id}/nonce:
    post:
      tags:
      - openid4vci-final1_0
      summary: OID4VC - Generate nonce
      description: |
        This endpoint handles low-level mechanisms in interactions between agents.
        Deep understanding of the involved protocols is recommended.
      operationId: oid4vci_final1_0_nonce
      parameters:
      - name: protocol_id
        in: path
        description: Issuance protocol id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenID4VCINonceResponseRestDTO'
        '500':
          description: Server error
  /api/config/v1:
    get:
      tags:
      - other
      summary: Retrieve configuration
      description: |
        Returns the read-only system configuration, which exposes available
        components and their instance identifiers for your deployment.

        Call this during integration setup to confirm which components are
        enabled before referencing them in subsequent calls.

        See [Reading the Configuration](https://docs.procivis.ch/api/configuration)
        for general help and the
        [Core Configuration Reference](/reference/configuration/core) for
        complete details.
      operationId: get_config
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - format
                - identifier
                - issuanceProtocol
                - verificationProtocol
                - transport
                - revocation
                - did
                - datatype
                - keyAlgorithm
                - keySecurityLevel
                - keyStorage
                - cacheEntities
                - task
                - blobStorage
                - frontend
                - credentialIssuer
                - verificationEngagement
                - walletProvider
                - signer
                - trustListPublisher
                - trustListSubscriber
                - verifierProvider
                - globalSettings
                properties:
                  blobStorage:
                    type: object
                    description: |-
                      Storage configuration for large data objects (credentials,
                      proofs, wallet unit attestations, registration certificates)
                      kept outside the main primary database table for query
                      performance.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  cacheEntities:
                    type: object
                    description: Entities held in temporary storage.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  credentialIssuer:
                    type: object
                    description: Issuer-initiated OpenID4VCI authorization code flow
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  datatype:
                    type: object
                    description: Datatypes for claim validation.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  did:
                    type: object
                    description: DID methods used for identifying agents.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  format:
                    type: object
                    description: Credential formats for issuing, holding and verifying.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  frontend:
                    type: object
                    description: |-
                      Configuration values consumed by the Desk frontend, such as
                      feature flags and UI defaults.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  globalSettings:
                    $ref: '#/components/schemas/GlobalSettingsRestDTO'
                    description: Deployment-wide settings that are not tied to a specific config entity.
                  identifier:
                    type: object
                    description: |-
                      Available identifier types. Identifiers represent entities and are used
                      across credential operations and certificate workflows
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  issuanceProtocol:
                    type: object
                    description: Protocols for credential issuance.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  keyAlgorithm:
                    type: object
                    description: Key algorithms used for signatures.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  keySecurityLevel:
                    type: object
                    description: |-
                      Security levels for key storage. When creating a credential
                      schema, the required level sets the minimum key storage standard
                      a wallet must meet to receive issuance. On the holder side, the
                      level also determines the key storage used when keys are
                      auto-generated during issuance.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  keyStorage:
                    type: object
                    description: Implementations for how keys are stored.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  revocation:
                    type: object
                    description: Revocation methods for credential status.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  signer:
                    type: object
                    description: |-
                      Signing implementations referenced when creating different
                      certificate types, including X.509 certificates, and EUDI
                      Access and Registration Certificates.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  task:
                    type: object
                    description: |-
                      Scheduled maintenance tasks, such as credential status check,
                      trust collection syncing, and webhooks
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  transport:
                    type: object
                    description: Transport protocols over which to communicate.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  trustListPublisher:
                    type: object
                    description: Implementations for publishing trust lists, such as ETSI LoTE.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  trustListSubscriber:
                    type: object
                    description: Implementations for subscribing to and consuming trust lists.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  verificationEngagement:
                    type: object
                    description: |-
                      Type of engagement to use when proposing a proof (wallet),
                      or when creating a proof request (verifier).
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  verificationProtocol:
                    type: object
                    description: Protocols for credential presentation and verification.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  verifierProvider:
                    type: object
                    description: |-
                      Verifier provider implementations that manage mobile verifier
                      deployments and their configuration.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
                  walletProvider:
                    type: object
                    description: |-
                      Wallet provider implementations that manage wallet app instances,
                      including unit attestation issuance and version constraints.
                    additionalProperties: {}
                    propertyNames:
                      type: string
                    example: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
  /api/statistics/v1/dashboard:
    get:
      tags:
      - statistics
      summary: Organization statistics
      description: |
        <strong>Permissions:</strong> <code>DASHBOARD_DETAIL</code>

        Retrieve issuance and verification statistics for an organization,
        including detailed timelines.
      operationId: organisation_statistics
      parameters:
      - name: from
        in: query
        description: Start of the reporting period (inclusive).
        required: false
        schema:
          type: string
          format: date-time
      - name: to
        in: query
        description: End of the reporting period (exclusive).
        required: true
        schema:
          type: string
          format: date-time
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - current
                - timelines
                properties:
                  current:
                    $ref: '#/components/schemas/OrganisationSummaryStatsRestDTO'
                    description: Statistics for the selected reporting period.
                  previous:
                    $ref: '#/components/schemas/OrganisationSummaryStatsRestDTO'
                    description: Comparison statistics for the equivalent preceding period.
                  timelines:
                    $ref: '#/components/schemas/OrganisationTimelinesRestDTO'
                    description: |-
                      Detailed statistics over time for the reporting period. Each
                      entry contains a timestamp and count; the interval between
                      timestamps scales with the length of the reporting period.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - DASHBOARD_DETAIL
  /api/statistics/v1/dashboard/issuer:
    get:
      tags:
      - statistics
      summary: Issuer statistics
      description: |
        <strong>Permissions:</strong> <code>DASHBOARD_DETAIL</code>

        Retrieve credential issuance, revocation, suspension and
        reactivation statistics for an organization, including detailed
        timelines.
      operationId: issuer_statistics
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - issued
          - revoked
          - suspended
          - reactivated
          - error
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: from
        in: query
        description: Start of the reporting period (inclusive).
        required: false
        schema:
          type: string
          format: date-time
      - name: to
        in: query
        description: End of the reporting period (exclusive).
        required: true
        schema:
          type: string
          format: date-time
      - name: organisationId
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/IssuerSchemaStatsResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - DASHBOARD_DETAIL
  /api/statistics/v1/dashboard/verifier:
    get:
      tags:
      - statistics
      summary: Verifier statistics
      description: |
        <strong>Permissions:</strong> <code>DASHBOARD_DETAIL</code>

        Retrieve proof acceptance and rejection statistics for an organization,
        including detailed timelines.
      operationId: verifier_statistics
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - accepted
          - rejected
          - error
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: from
        in: query
        description: Start of the reporting period (inclusive).
        required: false
        schema:
          type: string
          format: date-time
      - name: to
        in: query
        description: End of the reporting period (exclusive).
        required: true
        schema:
          type: string
          format: date-time
      - name: organisationId
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/VerifierSchemaStatsResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - DASHBOARD_DETAIL
  /api/statistics/v1/dashboard/system:
    get:
      tags:
      - statistics
      summary: System statistics
      description: |
        <strong>Permissions:</strong> <code>SYSTEM_DASHBOARD_DETAIL</code>

        Retrieve system-wide statistics across all organizations, including
        top issuers and verifiers, active wallet units, and recently added
        organizations.
      operationId: system_statistics
      parameters:
      - name: from
        in: query
        description: Start of the reporting period (inclusive).
        required: false
        schema:
          type: string
          format: date-time
      - name: to
        in: query
        description: End of the reporting period (exclusive).
        required: true
        schema:
          type: string
          format: date-time
      - name: organisationCount
        in: query
        description: |-
          Maximum number of organizations to include in `topIssuers`,
          `topVerifiers`, and `newestOrganisations`. Does not affect
          system-wide totals in `current` and `previous`.
        required: false
        schema:
          type: integer
          minimum: 0
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - current
                - topIssuers
                - topVerifiers
                - newestOrganisations
                properties:
                  current:
                    $ref: '#/components/schemas/SystemOperationsCountRestDTO'
                    description: System-wide statistics for the reporting period.
                  newestOrganisations:
                    type: array
                    items:
                      $ref: '#/components/schemas/NewOrganisationEntryRestDTO'
                    description: Most recently created organizations, ranked by creation date.
                  previous:
                    $ref: '#/components/schemas/SystemOperationsCountRestDTO'
                    description: Comparison statistics for the equivalent preceding period.
                  topIssuers:
                    type: array
                    items:
                      $ref: '#/components/schemas/OrganisationOperationsCountRestDTO'
                    description: |-
                      Organizations with the highest issuance counts for the reporting
                      period, randed in descending order.
                  topVerifiers:
                    type: array
                    items:
                      $ref: '#/components/schemas/OrganisationOperationsCountRestDTO'
                    description: |-
                      Organizations with the highest verification counts for the
                      reporting period, randed in descending order.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - SYSTEM_DASHBOARD_DETAIL
  /api/statistics/v1/dashboard/system/interaction:
    get:
      tags:
      - statistics
      summary: System interaction statistics
      description: |
        <strong>Permissions:</strong> <code>SYSTEM_DASHBOARD_DETAIL</code>

        Retrieve system-wide interaction statistics across all organizations,
        including issuance, verification and lifecycle operation counts.
      operationId: system_interaction_statistics
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - issued
          - verified
          - credentialLifecycleOperation
          - error
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: from
        in: query
        description: Start of the reporting period (inclusive).
        required: false
        schema:
          type: string
          format: date-time
      - name: to
        in: query
        description: End of the reporting period (exclusive).
        required: true
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/SystemInteractionStatsResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - SYSTEM_DASHBOARD_DETAIL
  /api/statistics/v1/dashboard/system/management:
    get:
      tags:
      - statistics
      summary: System management statistics
      description: |
        <strong>Permissions:</strong> <code>SYSTEM_DASHBOARD_DETAIL</code>

        Retrieve system-wide statistics across all organizations,
        including counts of created credential schemas, proof schemas and
        identifiers.
      operationId: system_management_statistics
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - credentialSchema
          - proofSchema
          - identifier
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: from
        in: query
        description: Start of the reporting period (inclusive).
        required: false
        schema:
          type: string
          format: date-time
      - name: to
        in: query
        description: End of the reporting period (exclusive).
        required: true
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/SystemManagementStatsResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - SYSTEM_DASHBOARD_DETAIL
  /api/cache/v1:
    delete:
      tags:
      - cache
      summary: Prune cache
      description: |
        <strong>Permissions:</strong> <code>CACHE_DELETE</code>

        Removes cached entities. If types are not specified, all cached entities are pruned.

        Related guide: [Caching](https://docs.procivis.ch/configure/caching)
      operationId: prune_cache
      parameters:
      - name: types[]
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - DID_DOCUMENT
            - JSON_LD_CONTEXT
            - STATUS_LIST_CREDENTIAL
            - VCT_METADATA
            - JSON_SCHEMA
            - TRUST_LIST
            - X509_CRL
            - ANDROID_ATTESTATION_CRL
            - OPENID_METADATA_HOLDER
            - OPENID_METADATA_ISSUER
            - WALLET_PROVIDER_METADATA
            - REMOTE_TRUST_COLLECTION
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CACHE_DELETE
  /api/holder-wallet-instance/v1:
    post:
      tags:
      - holder_wallet_instance
      summary: Register with a Wallet Provider
      description: |
        <strong>Permissions:</strong> <code>HOLDER_WALLET_INSTANCE_REGISTER</code>

        Register a wallet instance with a Wallet Provider.
      operationId: wallet_instance_holder_register
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HolderRegisterWalletInstanceRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - status
                properties:
                  id:
                    $ref: '#/components/schemas/HolderWalletInstanceId'
                  status:
                    $ref: '#/components/schemas/WalletInstanceStatusRestEnum'
                  userNonce:
                    type:
                    - string
                    - 'null'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - HOLDER_WALLET_INSTANCE_REGISTER
  /api/holder-wallet-instance/v1/{id}:
    get:
      tags:
      - holder_wallet_instance
      summary: Retrieve wallet registration details
      description: |-
        <strong>Permissions:</strong> <code>HOLDER_WALLET_INSTANCE_DETAIL</code>

        Retrieve details of a wallet instance's registration from the Wallet Provider.
      operationId: wallet_instance_holder_details
      parameters:
      - name: id
        in: path
        description: Wallet Instance ID
        required: true
        schema:
          $ref: '#/components/schemas/HolderWalletInstanceId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - lastModified
                - providerWalletUnitId
                - walletProviderUrl
                - walletProviderType
                - walletProviderName
                - status
                - trustedRpRequired
                properties:
                  authenticationKey:
                    $ref: '#/components/schemas/KeyListItemResponseRestDTO'
                  createdDate:
                    type: string
                    format: date-time
                  id:
                    $ref: '#/components/schemas/HolderWalletInstanceId'
                  lastModified:
                    type: string
                    format: date-time
                  providerWalletUnitId:
                    $ref: '#/components/schemas/WalletInstanceId'
                  status:
                    $ref: '#/components/schemas/WalletInstanceStatusRestEnum'
                  trustedRpRequired:
                    type: boolean
                  userNonce:
                    type: string
                  walletProviderName:
                    type: string
                  walletProviderType:
                    $ref: '#/components/schemas/WalletProviderTypeRestEnum'
                  walletProviderUrl:
                    type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - HOLDER_WALLET_INSTANCE_DETAIL
    patch:
      tags:
      - holder_wallet_instance
      summary: Edit wallet settings
      description: |-
        <strong>Permissions:</strong> <code>HOLDER_WALLET_INSTANCE_EDIT</code>

        Modify wallet settings.
      operationId: edit_holder_wallet_instance
      parameters:
      - name: id
        in: path
        description: Wallet Instance ID
        required: true
        schema:
          $ref: '#/components/schemas/HolderWalletInstanceId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditHolderWalletInstanceRequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - HOLDER_WALLET_INSTANCE_EDIT
  /api/holder-wallet-instance/v1/{id}/status:
    post:
      tags:
      - holder_wallet_instance
      summary: Check wallet status
      description: |-
        <strong>Permissions:</strong> <code>HOLDER_WALLET_INSTANCE_DETAIL</code>

        Check the status of a wallet instance. Active instances return `204`. Revoked instances return an error.
      operationId: wallet_instance_holder_status
      parameters:
      - name: id
        in: path
        description: Wallet Instance ID
        required: true
        schema:
          $ref: '#/components/schemas/HolderWalletInstanceId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - HOLDER_WALLET_INSTANCE_DETAIL
  /api/holder-wallet-instance/v1/{id}/trust-collections:
    get:
      tags:
      - holder_wallet_instance
      summary: Get trust collections
      description: |-
        <strong>Permissions:</strong> <code>HOLDER_WALLET_INSTANCE_DETAIL</code>

        Get trust collections associated with the given holder wallet instance
      operationId: get_holder_wallet_instance_trust_collections
      parameters:
      - name: id
        in: path
        description: Wallet Instance ID
        required: true
        schema:
          $ref: '#/components/schemas/HolderWalletInstanceId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - trustCollections
                properties:
                  trustCollections:
                    type: array
                    items:
                      $ref: '#/components/schemas/TrustCollectionInfoRestDTO'
                    description: Trust collections available from the Wallet Provider.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - HOLDER_WALLET_INSTANCE_DETAIL
  /api/holder-wallet-instance/v1/{id}/activate:
    post:
      tags:
      - holder_wallet_instance
      summary: Activate wallet instance
      description: |
        <strong>Permissions:</strong> <code>HOLDER_WALLET_INSTANCE_REGISTER</code>

        Complete registration by activating the wallet instance with the Wallet Provider.
        Required when the Wallet Provider has user authentication configured.
      operationId: holder_activate_wallet_instance
      parameters:
      - name: id
        in: path
        description: Wallet Instance ID
        required: true
        schema:
          $ref: '#/components/schemas/HolderWalletInstanceId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HolderActivateWalletInstanceRequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - HOLDER_WALLET_INSTANCE_REGISTER
  /api/wallet-instance/v1:
    get:
      tags:
      - wallet_instance
      summary: List wallet instances
      description: |
        <strong>Permissions:</strong> <code>WALLET_INSTANCE_LIST</code>

        Returns a list of wallet instances.
      operationId: get_wallet_unit_list
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - createdDate
          - lastModified
          - name
          - status
          - os
          - userSub
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: name
        in: query
        description: Return only wallet units with a name starting with this string.
        required: false
        schema:
          type: string
      - name: ids[]
        in: query
        description: Filter by specific wallet unit UUIDs.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: status[]
        in: query
        description: Return only wallet units with the specified status.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - ACTIVE
            - REVOKED
            - PENDING
            - UNATTESTED
            - ERROR
      - name: os[]
        in: query
        description: Return only wallet units with the specified operating systems.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - IOS
            - ANDROID
            - WEB
      - name: walletProviderType[]
        in: query
        description: Return only wallet units with the specified wallet provider types.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: attestation
        in: query
        description: Return only the wallet unit with the specified attestation.
        required: false
        schema:
          type: string
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: createdDateAfter
        in: query
        description: |-
          Return only wallet units created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only wallet units created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: userSub
        in: query
        description: Return only wallet units with a userSub starting with this string.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - totalPages
                - totalItems
                - values
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/WalletInstanceResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - WALLET_INSTANCE_LIST
  /api/wallet-instance/v1/{id}:
    get:
      tags:
      - wallet_instance
      summary: Retrieve a wallet instance
      description: |-
        <strong>Permissions:</strong> <code>WALLET_INSTANCE_DETAIL</code>

        Returns details on a given wallet instance.
      operationId: get_wallet_unit_details
      parameters:
      - name: id
        in: path
        description: Wallet instance id
        required: true
        schema:
          $ref: '#/components/schemas/WalletInstanceId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - lastModified
                - name
                - os
                - status
                - walletProviderType
                - walletProviderName
                properties:
                  authenticationKeyJwk:
                    $ref: '#/components/schemas/PublicJwk'
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  id:
                    $ref: '#/components/schemas/WalletInstanceId'
                  lastIssuance:
                    type:
                    - string
                    - 'null'
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  name:
                    type: string
                  os:
                    $ref: '#/components/schemas/WalletInstanceOsRestEnum'
                  status:
                    $ref: '#/components/schemas/WalletInstanceStatusRestEnum'
                  userSub:
                    type: string
                  walletProviderName:
                    type: string
                  walletProviderType:
                    $ref: '#/components/schemas/WalletProviderTypeRestEnum'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - WALLET_INSTANCE_DETAIL
    delete:
      tags:
      - wallet_instance
      summary: Delete a wallet instance
      description: |-
        <strong>Permissions:</strong> <code>WALLET_INSTANCE_DELETE</code>

        Permanently deletes a given wallet instance from the database, including history entries.
      operationId: remove_wallet_unit
      parameters:
      - name: id
        in: path
        description: Wallet instance id
        required: true
        schema:
          $ref: '#/components/schemas/WalletInstanceId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - WALLET_INSTANCE_DELETE
  /api/wallet-instance/v1/{id}/revoke:
    post:
      tags:
      - wallet_instance
      summary: Revoke a wallet instance
      description: |
        <strong>Permissions:</strong> <code>WALLET_INSTANCE_REVOKE</code>

        Revokes a wallet instance, preventing issuance of any new attestation. If Token
        Status List is enabled for WIAs, all existing attestations are revoked as well.
      operationId: revoke_wallet_unit
      parameters:
      - name: id
        in: path
        description: Wallet instance id
        required: true
        schema:
          $ref: '#/components/schemas/WalletInstanceId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - WALLET_INSTANCE_REVOKE
  /api/did/v1/{id}:
    get:
      tags:
      - did_management
      summary: Retrieve a DID
      description: |-
        <strong>Permissions:</strong> <code>DID_DETAIL</code>

        Returns detailed information about a DID.
      operationId: get_did
      parameters:
      - name: id
        in: path
        description: DID id
        required: true
        schema:
          $ref: '#/components/schemas/DidId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - lastModified
                - name
                - did
                - type
                - method
                - keys
                - deactivated
                properties:
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  deactivated:
                    type: boolean
                  did:
                    $ref: '#/components/schemas/DidValue'
                  id:
                    $ref: '#/components/schemas/DidId'
                  keys:
                    $ref: '#/components/schemas/DidResponseKeysRestDTO'
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  method:
                    $ref: '#/components/schemas/DidMethodId'
                  name:
                    type: string
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  type:
                    $ref: '#/components/schemas/DidType'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      deprecated: true
      security:
      - bearer: []
      x-permissions:
      - DID_DETAIL
    patch:
      tags:
      - did_management
      summary: Deactivate a DID
      description: |
        <strong>Permissions:</strong> <code>DID_DEACTIVATE</code>

        Permanently deactivates a DID.
      operationId: update_did
      parameters:
      - name: id
        in: path
        description: DID id
        required: true
        schema:
          $ref: '#/components/schemas/DidId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DidPatchRequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - DID_DEACTIVATE
  /api/did/v1:
    get:
      tags:
      - did_management
      summary: List DIDs
      description: |-
        <strong>Permissions:</strong> <code>DID_LIST</code>

        Returns a list of DIDs within an organization.
      operationId: get_did_list
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - name
          - createdDate
          - method
          - type
          - did
          - deactivated
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: name
        in: query
        description: Return only DIDs with a name starting with this string. Not case-sensitive.
        required: false
        schema:
          type: string
      - name: did
        in: query
        description: Return all DIDs with addresses starting with this string. Not case-sensitive.
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: |-
          Filter by DIDs created locally or DIDs of remote wallets from credentials
          issued or proofs requested.
        required: false
        schema:
          $ref: '#/components/schemas/DidType'
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
            - did
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: deactivated
        in: query
        description: Filter by active or deactivated DIDs.
        required: false
        schema:
          type: string
          enum:
          - 'false'
          - 'true'
      - name: keyAlgorithms[]
        in: query
        description: |-
          Return only DIDs which support the key algorithms specified here. Uses values
          from the configuration.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: keyRoles[]
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - AUTHENTICATION
            - ASSERTION_METHOD
            - KEY_AGREEMENT
            - CAPABILITY_INVOCATION
            - CAPABILITY_DELEGATION
            - UPDATE_KEY
      - name: keyStorages[]
        in: query
        description: |-
          Return only DIDs whose keys use the specified key storage type. Check the
          `keyStorage` object of the configuration for supported options.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: keyIds[]
        in: query
        description: Return only DIDs which use the specified keys.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: didMethods[]
        in: query
        description: |-
          Return only DIDs of the method(s) specified here. Check the `did` object
          of the configuration for supported options.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/DidMethodId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/DidListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      deprecated: true
      security:
      - bearer: []
      x-permissions:
      - DID_LIST
    post:
      tags:
      - did_management
      summary: Create a DID
      description: |
        <strong>Permissions:</strong> <code>DID_CREATE</code>

        Deprecated. Use the identifier API to create a DID as an identifier
          to use in issuing, holding, or verifying.

        When you create a DID as an identifier, both the identifier and the
        DID receive separate system IDs. You can access the DID's system ID
        from the identifier response to use with the DID API for operations
        like DID deactivation.
      operationId: post_did
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDidRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      deprecated: true
      security:
      - bearer: []
      x-permissions:
      - DID_CREATE
  /api/did-resolver/v1/{didvalue}:
    get:
      tags:
      - did_management
      summary: Resolve a DID
      description: |
        <strong>Permissions:</strong> <code>DID_RESOLVE</code>

        Resolves a DID to its DID document, returning its verification relationships.
      operationId: resolve_did
      parameters:
      - name: didvalue
        in: path
        description: DID value
        required: true
        schema:
          $ref: '#/components/schemas/DidValue'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - '@context'
                - id
                - verificationMethod
                properties:
                  '@context': {}
                  alsoKnownAs:
                    type: array
                    items:
                      type: string
                  assertionMethod:
                    type: array
                    items:
                      type: string
                  authentication:
                    type: array
                    items:
                      type: string
                  capabilityDelegation:
                    type: array
                    items:
                      type: string
                  capabilityInvocation:
                    type: array
                    items:
                      type: string
                  id:
                    $ref: '#/components/schemas/DidValue'
                  keyAgreement:
                    type: array
                    items:
                      type: string
                  service:
                    type: array
                    items:
                      $ref: '#/components/schemas/DidServiceEndointRestDTO'
                  verificationMethod:
                    type: array
                    items:
                      $ref: '#/components/schemas/DidVerificationMethodRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - DID_RESOLVE
  /api/history/v1:
    get:
      tags:
      - history_management
      summary: List history events
      description: |
        <strong>Permissions:</strong> <code>HISTORY_LIST</code> <code>SYSTEM_HISTORY_LIST</code>

        Returns a paginated list of history events recorded in Core. Use
        filters to scope results by entity type, entity ID, time range, or
        more.

        Related guide: [Searching and Reading History](https://docs.procivis.ch/history)
      operationId: get_history_list
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - createdDate
          - action
          - entityType
          - source
          - user
          - organisationId
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: entityTypes[]
        in: query
        description: Return only events associated with the specified entity type(s).
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - KEY
            - DID
            - CERTIFICATE
            - IDENTIFIER
            - CREDENTIAL
            - CREDENTIAL_SCHEMA
            - PROOF
            - PROOF_SCHEMA
            - ORGANISATION
            - BACKUP
            - WALLET_UNIT
            - USER
            - PROVIDER
            - WALLET_RELYING_PARTY
            - STS_ROLE
            - STS_ORGANISATION
            - STS_IAM_ROLE
            - STS_SESSION
            - STS_TOKEN
            - SIGNATURE
            - NOTIFICATION
            - SUPERVISORY_AUTHORITY
            - TRUST_LIST_PUBLICATION
            - TRUST_COLLECTION
            - TRUST_LIST_SUBSCRIPTION
            - VERIFIER_INSTANCE
            - QES_DOCUMENT
      - name: entityIds[]
        in: query
        description: Return only events associated with the provided entity UUID(s).
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: actions[]
        in: query
        description: Return only events of the specified action(s).
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - ACCEPTED
            - CREATED
            - CSR_GENERATED
            - DEACTIVATED
            - DELETED
            - ERRORED
            - ISSUED
            - OFFERED
            - REJECTED
            - REQUESTED
            - REVOKED
            - PENDING
            - SUSPENDED
            - RESTORED
            - SHARED
            - IMPORTED
            - CLAIMS_REMOVED
            - ACTIVATED
            - WITHDRAWN
            - REMOVED
            - RETRACTED
            - UPDATED
            - REACTIVATED
            - EXPIRED
            - INTERACTION_CREATED
            - INTERACTION_ERRORED
            - INTERACTION_EXPIRED
            - DELIVERED
            - WRP_AC_RECEIVED
            - WRP_RC_RECEIVED
            - WRP_NR_RECEIVED
            - TRUST_RESOLVED
            - REFRESHED
            - SIGNED
      - name: createdDateAfter
        in: query
        description: |-
          Return only events which occurred after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only events which occurred before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: identifierId
        in: query
        description: Return only events associated with the provided identifier UUID.
        required: false
        schema:
          $ref: '#/components/schemas/IdentifierId'
      - name: credentialId
        in: query
        description: Return only events associated with the provided credential UUID.
        required: false
        schema:
          $ref: '#/components/schemas/CredentialId'
      - name: proofId
        in: query
        description: Return only events associated with the provided proof UUID.
        required: false
        schema:
          $ref: '#/components/schemas/ProofId'
      - name: credentialSchemaId
        in: query
        description: Return only events associated with the provided credential schema UUID.
        required: false
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      - name: proofSchemaId
        in: query
        description: Return only events associated with the provided proof schema UUID.
        required: false
        schema:
          $ref: '#/components/schemas/ProofSchemaId'
      - name: trustCollectionId
        in: query
        description: |-
          Return only events associated with the provided trust collection UUID.
          Includes the collection's own events and the events of all trust list
          subscriptions it contains.
        required: false
        schema:
          $ref: '#/components/schemas/TrustCollectionId'
      - name: users[]
        in: query
        description: |-
          Return only events associated with the provided users. Only applicable
          in STS authentication mode.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: sources[]
        in: query
        description: Return only events associated with the provided sources.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - CORE
            - BRIDGE
            - STS
            - WRPR
            - BFF
            - QTSP
      - name: organisationIds[]
        in: query
        description: Specify the organizaton(s) from which to return history events.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: searchText
        in: query
        description: |-
          Search for a string. Pass a `searchType` to control which field
          is searched. When omitted, defaults to searching all fields.
        required: false
        schema:
          type: string
      - name: searchType
        in: query
        description: |-
          Changes where `searchText` is searched. If no value is provided, events
          that have any field matching `searchText` will be returned.
        required: false
        schema:
          type: string
          enum:
          - ALL
          - CLAIM_NAME
          - CLAIM_VALUE
          - CREDENTIAL_SCHEMA_NAME
          - ISSUER_DID
          - ISSUER_NAME
          - VERIFIER_DID
          - VERIFIER_NAME
          - PROOF_SCHEMA_NAME
      - name: showSystemHistory
        in: query
        description: |-
          Controls cross-organization access. When `false` (default), returns
          events from the organization in your STS token, or requires at least
          one value in `organisationIds[]` if not using STS authentication.
          When `true`, returns events from all organizations; requires
          `SYSTEM_HISTORY_LIST` permission in STS authentication mode.
        required: false
        schema:
          type: string
          enum:
          - 'false'
          - 'true'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/HistoryResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - HISTORY_LIST
      - SYSTEM_HISTORY_LIST
    post:
      tags:
      - history_management
      summary: Create history event
      description: |
        <strong>Permissions:</strong> <code>HISTORY_CREATE</code>

        Records a history event submitted by an external service. Use this
        endpoint to write entries to Core's centralized history log from services
        that operate outside Core.
      operationId: create_history
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateHistoryRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - HISTORY_CREATE
  /api/history/v1/{id}:
    get:
      tags:
      - history_management
      summary: Retrieve history entry
      description: |-
        <strong>Permissions:</strong> <code>HISTORY_DETAIL</code> <code>SYSTEM_HISTORY_DETAIL</code>

        Returns the full record for a single history event.
      operationId: get_history_entry
      parameters:
      - name: id
        in: path
        description: History id
        required: true
        schema:
          $ref: '#/components/schemas/HistoryId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - action
                - name
                - entityType
                - source
                properties:
                  action:
                    $ref: '#/components/schemas/HistoryAction'
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  entityId:
                    type: string
                    format: uuid
                  entityType:
                    $ref: '#/components/schemas/HistoryEntityType'
                  id:
                    $ref: '#/components/schemas/HistoryId'
                  metadata:
                    $ref: '#/components/schemas/HistoryMetadataRestEnum'
                    description: |-
                      Structured metadata attached to the event. The variant present
                      depends on the event type.
                  name:
                    type: string
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  source:
                    $ref: '#/components/schemas/HistorySource'
                    description: Service that recorded the event.
                  target:
                    type: string
                    description: Secondary entity involved in the event, if any.
                  user:
                    type: string
                    description: |-
                      Identifier of the user who triggered the event. Present only when
                      STS authentication is in use.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - HISTORY_DETAIL
      - SYSTEM_HISTORY_DETAIL
  /api/organisation/v1/{id}:
    get:
      tags:
      - organisation_management
      summary: Retrieve organization
      description: |-
        <strong>Permissions:</strong> <code>STS_ORGANISATION_DETAIL</code>

        Returns information about an organization.
      operationId: get_organisation
      parameters:
      - name: id
        in: path
        description: Organization id
        required: true
        schema:
          $ref: '#/components/schemas/OrganisationId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - lastModified
                properties:
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  deactivatedAt:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  id:
                    type: string
                    format: uuid
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  parentOrganisation:
                    $ref: '#/components/schemas/OrganisationId'
                    description: |-
                      The parent organization this organization inherits policy-level
                      configuration from, if any.
                  verifierInstance:
                    $ref: '#/components/schemas/VerifierInstanceDetailResponseRestDTO'
                    description: |-
                      Wallet registration details for this organization's Business
                      Wallet.
                  walletInstance:
                    $ref: '#/components/schemas/HolderWalletInstanceResponseRestDTO'
                    description: |-
                      Wallet registration details for this organization's Business
                      Wallet.
                  walletProvider:
                    $ref: '#/components/schemas/WalletProviderDetailResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - STS_ORGANISATION_DETAIL
    patch:
      tags:
      - organisation_management
      summary: Update or insert organization
      description: |
        <strong>Permissions:</strong> <code>STS_ORGANISATION_EDIT</code>

        Updates the name or deactivates an organization if it exists, otherwise creates
        a new organization using the provided UUID and name.
      operationId: patch_organisation
      parameters:
      - name: id
        in: path
        description: Organization id
        required: true
        schema:
          $ref: '#/components/schemas/OrganisationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertOrganisationRequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - STS_ORGANISATION_EDIT
  /api/organisation/v1:
    get:
      tags:
      - organisation_management
      summary: List organizations
      description: |-
        <strong>Permissions:</strong> <code>STS_ORGANISATION_LIST</code>

        Returns a list of organizations in the system.
      operationId: get_organisations
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - createdDate
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: createdDateAfter
        in: query
        description: |-
          Return only organizations created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only organizations created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only organizations last modified after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only organizations last modified before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: hasParentOrganisation
        in: query
        description: |-
          If true, return only organizations that have a parent organization.
          If false, return only root organizations.
        required: false
        schema:
          type: string
          enum:
          - 'false'
          - 'true'
      - name: parentOrganisations[]
        in: query
        description: |-
          Return only organizations that are children of the given
          organization IDs.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/OrganisationId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/OrganisationListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - STS_ORGANISATION_LIST
    post:
      tags:
      - organisation_management
      summary: Create organization
      description: |
        <strong>Permissions:</strong> <code>STS_ORGANISATION_CREATE</code>

        Creates an organization. If no UUID is passed, one will be created.
        If no name is passed, the UUID will be used.

        All entities and transactions belong to one organization. The system
        supports the creation of as many organizations as is needed.
      operationId: post_organisation
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - type: 'null'
              - $ref: '#/components/schemas/CreateOrganisationRequestRestDTO'
            example:
              id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    $ref: '#/components/schemas/OrganisationId'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - STS_ORGANISATION_CREATE
  /api/credential-schema/v1/{id}:
    get:
      tags:
      - credential_schema_management
      summary: Retrieve credential schema
      description: |-
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_DETAIL</code>

        Retrieves detailed information about a credential schema.
      operationId: get_credential_schema
      parameters:
      - name: id
        in: path
        description: Schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - lastModified
                - name
                - format
                - organisationId
                - claims
                - schemaId
                - importedSourceUrl
                - allowSuspension
                - requiresWalletInstanceAttestation
                - translations
                properties:
                  allowSuspension:
                    type: boolean
                  claims:
                    type: array
                    items:
                      $ref: '#/components/schemas/CredentialClaimSchemaResponseRestDTO'
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  dcql:
                    $ref: '#/components/schemas/CredentialSchemaDcqlResponseRestDTO'
                  format:
                    $ref: '#/components/schemas/CredentialFormat'
                  id:
                    type: string
                    format: uuid
                    description: |-
                      UUID of this credential schema. Use this value as `credentialSchemaId`
                      when creating credentials with this schema.
                  importedSourceUrl:
                    type: string
                  keyStorageSecurity:
                    $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  layoutProperties:
                    $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
                  layoutType:
                    $ref: '#/components/schemas/CredentialSchemaLayoutType'
                  name:
                    type: string
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  requiresWalletInstanceAttestation:
                    type: boolean
                  revocationMethod:
                    $ref: '#/components/schemas/RevocationMethodId'
                  schemaId:
                    type: string
                    description: |-
                      Document type or credential type identifier used by the credential
                      format. This is the semantic identifier for the credential type, not
                      the database ID of this schema record.
                  transactionCode:
                    $ref: '#/components/schemas/CredentialSchemaTransactionCodeRestDTO'
                  translations:
                    $ref: '#/components/schemas/CredentialSchemaTranslationsRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_DETAIL
    delete:
      tags:
      - credential_schema_management
      summary: Delete a credential schema
      description: |-
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_DELETE</code>

        Deletes a credential schema.
      operationId: delete_credential_schema
      parameters:
      - name: id
        in: path
        description: Schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_DELETE
  /api/credential-schema/v1:
    get:
      tags:
      - credential_schema_management
      summary: List credential schemas
      description: |-
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_LIST</code>

        Returns a list of credential schemas in an organization.
      operationId: get_credential_schema_list
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - name
          - createdDate
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: include[]
        in: query
        description: Additional fields to include in response objects.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - layoutProperties
            - translations
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: name
        in: query
        description: Return only entities with a name starting with this string. Not case-sensitive.
        required: false
        schema:
          type: string
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
            - schemaId
      - name: ids[]
        in: query
        description: Filter by specific UUIDs.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: schemaId
        in: query
        description: |-
          Return credential schemas associated with the specified `schemaId` or document
          type for ISO mdocs.
        required: false
        schema:
          type: string
      - name: formats[]
        in: query
        description: Return only credential schemas which use one of the specified credential formats.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: requiresWalletInstanceAttestation
        in: query
        description: Return only credential schemas with matching wallet instance attestation requirement.
        required: false
        schema:
          type: string
          enum:
          - 'false'
          - 'true'
      - name: keySecurityLevels[]
        in: query
        description: Return only credential schemas with a matching key storage security requirement.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - HIGH
            - MODERATE
            - ENHANCED_BASIC
            - BASIC
      - name: createdDateAfter
        in: query
        description: |-
          Return only credential schemas created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only credential schemas created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only credential schemas last modified after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only credential schemas last modified before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: usesBatchIssuance
        in: query
        description: Return only credential schemas which support batch issuance.
        required: false
        schema:
          $ref: '#/components/schemas/Boolean'
      - name: isMultiformatSchema
        in: query
        description: Return only credential schemas with multiple formats.
        required: false
        schema:
          $ref: '#/components/schemas/Boolean'
      - name: schemaIds[]
        in: query
        description: |-
          Return credential schemas associated with any of the specified schema IDs.
          Works across all format entries of a credential schema.
        required: false
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/CredentialSchemaListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_LIST
    post:
      tags:
      - credential_schema_management
      summary: Create credential schema
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_CREATE</code>

        Creates a credential schema, which defines the structure and claims of a
        credential type. Schemas are reusable templates — each credential you issue
        is based on a schema.

        The `format`, `revocationMethod`, and `datatype` values must reference
        configuration instance identifiers from your system configuration.

        Related guide: [Credential schemas](https://docs.procivis.ch/credential-schemas)
      operationId: post_credential_schema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCredentialSchemaRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_CREATE
  /api/credential-schema/v2:
    get:
      tags:
      - credential_schema_management
      summary: List credential schemas (v2)
      description: |-
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_LIST</code>

        Returns a list of credential schemas in an organization in v2 format.
      operationId: get_credential_schema_list_v2
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - name
          - createdDate
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: include[]
        in: query
        description: Additional fields to include in response objects.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - layoutProperties
            - translations
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: name
        in: query
        description: Return only entities with a name starting with this string. Not case-sensitive.
        required: false
        schema:
          type: string
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
            - schemaId
      - name: ids[]
        in: query
        description: Filter by specific UUIDs.
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: formats[]
        in: query
        description: Return only credential schemas which use one of the specified credential formats.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: requiresWalletInstanceAttestation
        in: query
        description: Return only credential schemas with matching wallet instance attestation requirement.
        required: false
        schema:
          type: string
          enum:
          - 'false'
          - 'true'
      - name: keySecurityLevels[]
        in: query
        description: Return only credential schemas with a matching key storage security requirement.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - HIGH
            - MODERATE
            - ENHANCED_BASIC
            - BASIC
      - name: createdDateAfter
        in: query
        description: |-
          Return only credential schemas created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only credential schemas created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only credential schemas last modified after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only credential schemas last modified before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: usesBatchIssuance
        in: query
        description: Return only credential schemas which support batch issuance.
        required: false
        schema:
          $ref: '#/components/schemas/Boolean'
      - name: isMultiformatSchema
        in: query
        description: Return only credential schemas with multiple formats.
        required: false
        schema:
          $ref: '#/components/schemas/Boolean'
      - name: schemaIds[]
        in: query
        description: |-
          Return credential schemas associated with any of the specified schema IDs.
          Works across all format entries of a credential schema.
        required: false
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/CredentialSchemaListItemV2ResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_LIST
    post:
      tags:
      - credential_schema_management
      summary: Create credential schema (v2)
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_CREATE</code>

        Creates a credential schema (v2), which supports multiple credential formats
        and per-claim technical key mappings.

        The `formats` array is mandatory and must contain at least one entry.
        Each entry specifies a `format` (mandatory) and an optional `schemaId`.

        Claims may include a `mapping` array to specify per-format technical keys
        and namespaces. When no mapping is specified, the claim key is used as the
        technical key. For mdoc formats, the schemaId is used as the default namespace.

        The optional `batchSize` must be at least 2 if specified.
      operationId: post_credential_schema_v2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCredentialSchemaV2RequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_CREATE
  /api/credential-schema/v1/import:
    post:
      tags:
      - credential_schema_management
      summary: Import credential schema
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_CREATE</code>

        Imports a shared credential schema to a mobile verifier, for use in
        constructing proof schemas.

        After previewing the credential schema from the
        [share credential schema](../core/share-credential-schema.api.mdx) endpoint, pass
        the schema here, along with the uuid of the mobile verifier's organization,
        to import the credential schema.
      operationId: import_credential_schema
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportCredentialSchemaRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_CREATE
  /api/credential-schema/v1/{id}/share:
    post:
      tags:
      - credential_schema_management
      summary: Share credential schema
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_SHARE</code>

        Generates a url to share a credential schema with a mobile verifier.
        The mobile verifier can make an HTTP request on the resulting url to preview the shared credential
        schema and [import](../core/import-credential-schema.api.mdx) it to use it in proof schema creation.
      operationId: share_credential_schema
      parameters:
      - name: id
        in: path
        description: Schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - url
                properties:
                  url:
                    type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_SHARE
  /api/credential-schema/v2/{id}/share:
    post:
      tags:
      - credential_schema_management
      summary: Share credential schema (v2)
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_SHARE</code>

        Generates a url to share a credential schema with a mobile verifier using the v2 SSI schema endpoint.
        The mobile verifier can make an HTTP request on the resulting url to preview the shared credential
        schema in v2 format.
      operationId: share_credential_schema_v2
      parameters:
      - name: id
        in: path
        description: Schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - url
                properties:
                  url:
                    type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_SHARE
  /api/credential-schema/v2/{id}:
    get:
      tags:
      - credential_schema_management
      summary: Retrieve credential schema (v2)
      description: |-
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_DETAIL</code>

        Retrieves detailed information about a credential schema in v2 format, including all formats and per-claim mappings.
      operationId: get_credential_schema_v2
      parameters:
      - name: id
        in: path
        description: Schema id
        required: true
        schema:
          $ref: '#/components/schemas/CredentialSchemaId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - lastModified
                - name
                - formats
                - organisationId
                - claims
                - importedSourceUrl
                - allowSuspension
                - requiresWalletInstanceAttestation
                - translations
                properties:
                  allowRevocation:
                    type: boolean
                  allowSuspension:
                    type: boolean
                  batchSize:
                    type: integer
                    format: int32
                  claims:
                    type: array
                    items:
                      $ref: '#/components/schemas/CredentialClaimSchemaV2ResponseRestDTO'
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  embeddedDisclosurePolicy:
                    $ref: '#/components/schemas/DisclosurePolicy'
                    description: |-
                      An optional disclosure policy embedded in the credential schema.
                      When present, the policy is transmitted to the wallet as part of
                      credential metadata. Wallets evaluate this policy against incoming
                      verifier requests and warn the holder if a violation is detected. See
                      [Embedded Disclosure Policy](https://docs.procivis.ch/issue/embedded-disclosure-policy).
                  formats:
                    type: array
                    items:
                      $ref: '#/components/schemas/CredentialSchemaFormatResponseRestDTO'
                  id:
                    $ref: '#/components/schemas/CredentialSchemaId'
                  importedSourceUrl:
                    type: string
                  keyStorageSecurity:
                    $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  layoutProperties:
                    $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
                  layoutType:
                    $ref: '#/components/schemas/CredentialSchemaLayoutType'
                  name:
                    type: string
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  requiresWalletInstanceAttestation:
                    type: boolean
                  transactionCode:
                    $ref: '#/components/schemas/CredentialSchemaTransactionCodeRestDTO'
                  translations:
                    $ref: '#/components/schemas/CredentialSchemaTranslationsRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_DETAIL
  /api/credential-schema/v2/import:
    post:
      tags:
      - credential_schema_management
      summary: Import credential schema (v2)
      description: |
        <strong>Permissions:</strong> <code>CREDENTIAL_SCHEMA_CREATE</code>

        Imports a shared credential schema (v2) supporting multiple credential formats
        and per-claim technical key mappings.

        After previewing the credential schema from the
        [share credential schema](../core/share-credential-schema.api.mdx) endpoint, pass
        the schema here, along with the uuid of the mobile verifier's organization,
        to import the credential schema.
      operationId: import_credential_schema_v2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportCredentialSchemaV2RequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - CREDENTIAL_SCHEMA_CREATE
  /api/trust-collection/v1:
    get:
      tags:
      - trust_collection_management
      summary: List trust collections
      description: |-
        <strong>Permissions:</strong> <code>TRUST_COLLECTION_LIST</code>

        Returns a filterable list of trust collections in an organization.
      operationId: get_trust_collection_list
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - name
          - lastModified
          - createdDate
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: ids[]
        in: query
        description: Filter by one or more UUIDs.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TrustCollectionId'
      - name: name
        in: query
        description: |-
          Return only trust collections with a name starting with this string.
          Not case-sensitive.
        required: false
        schema:
          type: string
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
      - name: createdDateAfter
        in: query
        description: |-
          Return only trust lists created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only trust lists created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only trust lists last modified after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only trust lists last modified before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: includeParentOrganisationCollections
        in: query
        description: |-
          If true, include trust collections from the parent organization.
          If false, return only this organization's own trust collections.
        required: false
        schema:
          $ref: '#/components/schemas/Boolean'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/TrustCollectionListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_COLLECTION_LIST
    post:
      tags:
      - trust_collection_management
      summary: Create a trust collection
      description: |-
        <strong>Permissions:</strong> <code>TRUST_COLLECTION_CREATE</code>

        Creates an empty collection of trust lists.
      operationId: post_trust_collection
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTrustCollectionRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_COLLECTION_CREATE
  /api/trust-collection/v1/{id}:
    get:
      tags:
      - trust_collection_management
      summary: Retrieve a trust collection
      description: |-
        <strong>Permissions:</strong> <code>TRUST_COLLECTION_DETAIL</code>

        Returns detailed information about a trust collection.
      operationId: get_trust_collection
      parameters:
      - name: id
        in: path
        description: Trust collection id
        required: true
        schema:
          $ref: '#/components/schemas/TrustCollectionId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - name
                - createdDate
                - lastModified
                - organisationId
                properties:
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  id:
                    $ref: '#/components/schemas/TrustCollectionId'
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  name:
                    type: string
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  remoteTrustCollectionUrl:
                    type: string
                    format: uri
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_COLLECTION_DETAIL
    delete:
      tags:
      - trust_collection_management
      summary: Delete a trust collection
      description: |-
        <strong>Permissions:</strong> <code>TRUST_COLLECTION_DELETE</code>

        Permanently removes a trust collection.
      operationId: delete_trust_collection
      parameters:
      - name: id
        in: path
        description: Trust collection id
        required: true
        schema:
          $ref: '#/components/schemas/TrustCollectionId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_COLLECTION_DELETE
  /api/trust-collection/v1/{trust_collection_id}/trust-list:
    post:
      tags:
      - trust_collection_management
      summary: Create a trust list subscription
      description: |-
        <strong>Permissions:</strong> <code>TRUST_COLLECTION_EDIT</code>

        Adds a trust list subscription to a trust collection.
      operationId: post_trust_list_subscription
      parameters:
      - name: trust_collection_id
        in: path
        description: Trust collection id
        required: true
        schema:
          $ref: '#/components/schemas/TrustCollectionId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTrustListSubscriptionRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_COLLECTION_EDIT
  /api/trust-collection/v1/{trust_collection_id}/trust-list/{trust_list_id}:
    delete:
      tags:
      - trust_collection_management
      summary: Delete a trust list subscription
      description: |-
        <strong>Permissions:</strong> <code>TRUST_COLLECTION_EDIT</code>

        Permanently removes a trust list subscription from a trust collection.
      operationId: delete_trust_list_subscription
      parameters:
      - name: trust_collection_id
        in: path
        description: Trust collection id
        required: true
        schema:
          $ref: '#/components/schemas/TrustCollectionId'
      - name: trust_list_id
        in: path
        description: Trust list subscription id
        required: true
        schema:
          $ref: '#/components/schemas/TrustListSubscriptionId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_COLLECTION_EDIT
  /api/trust-collection/v1/{trustCollectionId}/trust-list:
    get:
      tags:
      - trust_collection_management
      summary: List trust list subscriptions
      description: |-
        <strong>Permissions:</strong> <code>TRUST_COLLECTION_DETAIL</code>

        Returns a filterable list of trust list subscriptions in a trust collection.
      operationId: get_trust_list_subscription_entries
      parameters:
      - name: trustCollectionId
        in: path
        description: Trust collection id
        required: true
        schema:
          $ref: '#/components/schemas/TrustCollectionId'
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - name
          - reference
          - role
          - type
          - lastModified
          - createdDate
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: ids[]
        in: query
        description: Filter by one or more UUIDs.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TrustListSubscriptionId'
      - name: name
        in: query
        description: |-
          Return only trust list subscriptions with a name starting with this string.
          Not case-sensitive.
        required: false
        schema:
          type: string
      - name: reference
        in: query
        description: |-
          Return only trust list subscriptions with a reference starting with this string.
          Not case-sensitive.
        required: false
        schema:
          type: string
      - name: roles[]
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TrustListRoleRestEnum'
      - name: states[]
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TrustListSubscriptionStateRestEnum'
      - name: types[]
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TrustListSubscriberId'
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
            - reference
      - name: createdDateAfter
        in: query
        description: |-
          Return only trust lists created after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only trust lists created before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only trust lists last modified after this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only trust lists last modified before this time.
          Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/TrustListSubscriptionListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_COLLECTION_DETAIL
  /api/signature/v1:
    post:
      tags:
      - signature
      summary: Create a signature
      description: |
        <strong>Permissions:</strong> <code>ACCESS_CERTIFICATE_SIGN</code> <code>REGISTRATION_CERTIFICATE_SIGN</code> <code>X509_CERTIFICATE_SIGN</code>

        Creates a signature. Choose a configured `signer` object and
        structure `data` accordingly.
      operationId: create_signature
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSignatureRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - result
                properties:
                  id:
                    type: string
                    format: uuid
                    description: ID used to revoke the signature.
                  result:
                    type: string
                    description: Signer-specific signature representation.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - ACCESS_CERTIFICATE_SIGN
      - REGISTRATION_CERTIFICATE_SIGN
      - X509_CERTIFICATE_SIGN
  /api/signature/v1/{id}/revoke:
    post:
      tags:
      - signature
      summary: Revoke a signature
      description: |
        <strong>Permissions:</strong> <code>ACCESS_CERTIFICATE_REVOKE</code> <code>REGISTRATION_CERTIFICATE_REVOKE</code> <code>X509_CERTIFICATE_REVOKE</code>

        Revokes a previously-created signature.
      operationId: revoke_signature
      parameters:
      - name: id
        in: path
        description: Signature id
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - ACCESS_CERTIFICATE_REVOKE
      - REGISTRATION_CERTIFICATE_REVOKE
      - X509_CERTIFICATE_REVOKE
  /api/signature/v1/revocation-check:
    post:
      tags:
      - signature
      summary: Retrieve revocation information of specified signatures
      description: |
        <strong>Permissions:</strong> <code>TASK_CREATE</code>

        Returns revocation information about the specified signatures.
      operationId: signature_revocation_check
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignatureRevocationCheckRequestRestDTO'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/SignatureStatusInfoRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TASK_CREATE
  /api/trust-list/v1:
    get:
      tags:
      - trust_list_publication_management
      summary: List trust list publications
      description: |-
        <strong>Permissions:</strong> <code>TRUST_LIST_PUBLICATION_LIST</code>

        Returns a list of trust list publications managed by this system.
      operationId: get_trust_list_publications
      parameters:
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - role
          - type
          - name
          - lastModified
          - createdDate
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: ids[]
        in: query
        description: Filter by one or more UUIDs.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TrustListPublicationId'
      - name: name
        in: query
        description: |-
          Return only trust lists with a name starting with this string.
          Not case-sensitive.
        required: false
        schema:
          type: string
      - name: types[]
        in: query
        description: Filter by one or more trust list types.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: roles[]
        in: query
        description: Filter by one or more trust list roles.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TrustListRoleRestEnum'
      - name: organisationId
        in: query
        description: |-
          Required when not using STS authentication mode. Specifies the
          organizational context for this operation. When using STS
          authentication, this value is derived from the token.
        required: false
        schema:
          $ref: '#/components/schemas/OrganisationId'
      - name: exact[]
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - name
      - name: createdDateAfter
        in: query
        description: |-
          Return only trust lists created after this time.
          Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only trust lists created before this time.
          Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only trust lists last modified after this time.
          Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only trust lists last modified before this time.
          Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/TrustListPublicationListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_LIST_PUBLICATION_LIST
    post:
      tags:
      - trust_list_publication_management
      summary: Publish a trust list
      description: |
        <strong>Permissions:</strong> <code>TRUST_LIST_PUBLICATION_CREATE</code>

        Publish a trust list using a configured `trustListPublisher` instance.
        The published list is accessible at `/ssi/trust-list/v1/{id}`.
      operationId: post_trust_list_publication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTrustListRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_LIST_PUBLICATION_CREATE
  /api/trust-list/v1/{id}:
    get:
      tags:
      - trust_list_publication_management
      summary: Retrieve a trust list publication
      description: |
        <strong>Permissions:</strong> <code>TRUST_LIST_PUBLICATION_DETAIL</code>

        Returns the content, configuration, and status of a trust list
        publication managed by this system.
      operationId: get_trust_list_publication
      parameters:
      - name: id
        in: path
        description: Trust list publication id
        required: true
        schema:
          $ref: '#/components/schemas/TrustListPublicationId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - createdDate
                - lastModified
                - name
                - identifier
                - type
                - role
                - sequenceNumber
                - metadata
                - organisationId
                properties:
                  content:
                    type: string
                    description: The trust list in JWT form.
                  createdDate:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  deletedAt:
                    type:
                    - string
                    - 'null'
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  id:
                    $ref: '#/components/schemas/TrustListPublicationId'
                  identifier:
                    $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
                    description: Identifier used for signing the trust list.
                  lastModified:
                    type: string
                    format: date-time
                    example: 2023-06-09T14:19:57.000Z
                  metadata:
                    type: string
                    description: |-
                      Scheme information, originally passed as `params` in the
                      API call to create the trust list.
                  name:
                    type: string
                    description: Internal label for the trust list publication.
                  organisationId:
                    $ref: '#/components/schemas/OrganisationId'
                  role:
                    $ref: '#/components/schemas/TrustListRoleRestEnum'
                    description: The profile this trust list conforms to.
                  sequenceNumber:
                    type: integer
                    format: int32
                    description: |-
                      The sequence number increments with each publication of
                      the list.
                    minimum: 0
                  type:
                    $ref: '#/components/schemas/TrustListPublisherId'
                    description: |-
                      The configured `trustListPublisher` instance used to
                      publish this list.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_LIST_PUBLICATION_DETAIL
    delete:
      tags:
      - trust_list_publication_management
      summary: Delete a trust list publication
      description: |
        <strong>Permissions:</strong> <code>TRUST_LIST_PUBLICATION_DELETE</code>

        Deletes a trust list publication. The publication record is retained and
        retrievable by ID, but all entries are permanently removed. Use the retrieve
        endpoint to confirm deletion details, including the `deletedAt` timestamp.
      operationId: delete_trust_list_publication
      parameters:
      - name: id
        in: path
        description: Trust list publication id
        required: true
        schema:
          $ref: '#/components/schemas/TrustListPublicationId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_LIST_PUBLICATION_DELETE
  /api/trust-list/v1/{id}/entry:
    get:
      tags:
      - trust_list_publication_management
      summary: List trust list publication entries
      description: |-
        <strong>Permissions:</strong> <code>TRUST_ENTRY_PUBLICATION_DETAIL</code>

        Returns a filterable list of trusted entities in a trust list publication.
      operationId: get_trust_list_publication_entries
      parameters:
      - name: id
        in: path
        description: Trust list publication id
        required: true
        schema:
          $ref: '#/components/schemas/TrustListPublicationId'
      - name: page
        in: query
        description: The page number to retrieve (0-based indexing).
        required: true
        schema:
          type: integer
          format: int32
          minimum: 0
        example: 0
      - name: pageSize
        in: query
        description: Number of items to return per page. If omitted, defaults to 30.
        required: true
        schema:
          type: integer
          format: int32
          default: 30
          maximum: 1000
          minimum: 1
      - name: sort
        in: query
        description: The field value to sort results by.
        required: false
        schema:
          type: string
          enum:
          - identifier
          - state
          - lastModified
          - createdDate
      - name: sortDirection
        in: query
        description: |-
          Direction to sort results. If a sorting value is passed, the
          direction defaults to ASC.
        required: false
        schema:
          $ref: '#/components/schemas/SortDirection'
      - name: ids[]
        in: query
        description: Filter by one or more UUIDs.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TrustEntryId'
      - name: identifierIds[]
        in: query
        description: Filter by one or more identifier UUIDs.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/IdentifierId'
      - name: states[]
        in: query
        description: Filter by one or more trust entry states.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/TrustEntryStateRestEnum'
      - name: createdDateAfter
        in: query
        description: |-
          Return only trust entries created after this time.
          Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: createdDateBefore
        in: query
        description: |-
          Return only trust entries created before this time.
          Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedAfter
        in: query
        description: |-
          Return only trust entries last modified after this time.
          Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      - name: lastModifiedBefore
        in: query
        description: |-
          Return only trust entries last modified before this time.
          Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - values
                - totalPages
                - totalItems
                properties:
                  totalItems:
                    type: integer
                    format: int64
                    minimum: 0
                  totalPages:
                    type: integer
                    format: int64
                    minimum: 0
                  values:
                    type: array
                    items:
                      $ref: '#/components/schemas/TrustEntryListItemResponseRestDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_ENTRY_PUBLICATION_DETAIL
    post:
      tags:
      - trust_list_publication_management
      summary: Create a trust entry
      description: |
        <strong>Permissions:</strong> <code>TRUST_ENTRY_PUBLICATION_CREATE</code>

        Adds a trusted entity to a trust list publication. The trusted entity's
        certificate must first be uploaded as an identifier, which is then
        referenced in the request via `identifierId`.
      operationId: post_trust_entry
      parameters:
      - name: id
        in: path
        description: Trust list publication id
        required: true
        schema:
          $ref: '#/components/schemas/TrustListPublicationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTrustEntryRequestRestDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                    format: uuid
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_ENTRY_PUBLICATION_CREATE
  /api/trust-list/v1/{list_id}/entry/{entry_id}:
    delete:
      tags:
      - trust_list_publication_management
      summary: Delete a trust entry
      description: |-
        <strong>Permissions:</strong> <code>TRUST_ENTRY_PUBLICATION_DELETE</code>

        Permanently removes a trusted entity from a trust list publication.
      operationId: delete_trust_entry
      parameters:
      - name: list_id
        in: path
        description: Trust list publication id
        required: true
        schema:
          $ref: '#/components/schemas/TrustListPublicationId'
      - name: entry_id
        in: path
        description: Trust entry id
        required: true
        schema:
          $ref: '#/components/schemas/TrustListPublicationId'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_ENTRY_PUBLICATION_DELETE
    patch:
      tags:
      - trust_list_publication_management
      summary: Update a trust entry
      description: |
        <strong>Permissions:</strong> <code>TRUST_ENTRY_PUBLICATION_EDIT</code>

        Updates the entity or service information of a trusted entity in a trust list
        publication. Only the fields provided in the request body are updated; all
        other fields remain unchanged.
      operationId: patch_trust_entry
      parameters:
      - name: list_id
        in: path
        description: Trust list publication id
        required: true
        schema:
          $ref: '#/components/schemas/TrustListPublicationId'
      - name: entry_id
        in: path
        description: Trust entry id
        required: true
        schema:
          $ref: '#/components/schemas/TrustListPublicationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTrustEntryRequestRestDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Entity Not Found
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                type: object
                required:
                - code
                - message
                properties:
                  cause:
                    $ref: '#/components/schemas/Cause'
                  code:
                    type: string
                  message:
                    type: string
      security:
      - bearer: []
      x-permissions:
      - TRUST_ENTRY_PUBLICATION_EDIT
  /api/build-info/v1:
    get:
      tags:
      - other
      summary: Retrieve version
      description: |
        Returns build and version information for Core service. Useful
        for troubleshooting and when reporting issues to support.
      operationId: get_build_info
      responses:
        '200':
          description: Ok
      security:
      - bearer: []
  /health:
    get:
      tags:
      - other
      summary: Health check
      description: |
        Returns `204` when the system is healthy. Suitable for use as
        a liveness probe.
      operationId: health_check
      responses:
        '204':
          description: No content
  /metrics:
    get:
      tags:
      - other
      summary: Retrieve metrics
      description: Returns system metrics.
      operationId: get_metrics
      responses:
        '200':
          description: OK
        '500':
          description: Internal error
components:
  schemas:
    AllowListOption:
      type: object
      properties:
        dn:
          type: string
        entitlement:
          type: string
    AllowListOptions:
      type: object
      required:
      - values
      properties:
        values:
          type: array
          items:
            $ref: '#/components/schemas/AllowListOption'
          description: |-
            A list of entries defining the permitted relying parties.
            Each entry is either a `dn` (the relying party's X.509
            Distinguished Name in RFC 2253 format) or an `entitlement`
            (an ETSI URI identifying a category of service providers).
    AppVersionRestDTO:
      type: object
      required:
      - minimum
      properties:
        minimum:
          type: string
        minimumRecommended:
          type: string
        reject:
          type: array
          items:
            type: string
        updateScreen:
          $ref: '#/components/schemas/UpdateScreenRestDTO'
    ApplicableCredentialOrFailureHintRestEnum:
      oneOf:
      - type: object
        required:
        - applicableCredentials
        properties:
          applicableCredentials:
            type: array
            items:
              $ref: '#/components/schemas/ApplicableCredentialRestDTO'
          purpose:
            oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/I18nString'
      - type: object
        required:
        - failureHint
        properties:
          failureHint:
            $ref: '#/components/schemas/CredentialQueryFailureHintResponseRestDTO'
    ApplicableCredentialRestDTO:
      allOf:
      - $ref: '#/components/schemas/GetCredentialResponseRestDTO_CredentialDetailClaimExtResponseRestDTO'
      - type: object
        properties:
          embeddedDisclosurePolicyViolation:
            $ref: '#/components/schemas/DisclosurePolicyViolationRestDTO'
            description: if violated, issuer's disclosure policy information
    Boolean:
      type: string
      enum:
      - 'false'
      - 'true'
    CacheTypeRestEnum:
      type: string
      enum:
      - DID_DOCUMENT
      - JSON_LD_CONTEXT
      - STATUS_LIST_CREDENTIAL
      - VCT_METADATA
      - JSON_SCHEMA
      - TRUST_LIST
      - X509_CRL
      - ANDROID_ATTESTATION_CRL
      - OPENID_METADATA_HOLDER
      - OPENID_METADATA_ISSUER
      - WALLET_PROVIDER_METADATA
      - REMOTE_TRUST_COLLECTION
    Cause:
      type: object
      required:
      - message
      properties:
        message:
          type: string
    CertificateId:
      type: string
      format: uuid
    CertificateResponseRestDTO:
      type: object
      required:
      - id
      - identifierId
      - createdDate
      - lastModified
      - name
      - chain
      - state
      - x509Attributes
      - roles
      properties:
        chain:
          type: string
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/CertificateId'
        identifierId:
          $ref: '#/components/schemas/IdentifierId'
        key:
          $ref: '#/components/schemas/KeyListItemResponseRestDTO'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        roles:
          type: array
          items:
            $ref: '#/components/schemas/CertificateRoleRestEnum'
        state:
          $ref: '#/components/schemas/CertificateStateRest'
        x509Attributes:
          $ref: '#/components/schemas/CertificateX509AttributesRestDTO'
    CertificateRoleRestEnum:
      type: string
      enum:
      - AUTHENTICATION
      - ASSERTION_METHOD
    CertificateRolesMatchModeRestEnum:
      type: string
      description: The mode used to match certificate roles. Default any.
      enum:
      - ALL
      - ANY
    CertificateStateRest:
      type: string
      enum:
      - NOT_YET_ACTIVE
      - ACTIVE
      - REVOKED
      - EXPIRED
    CertificateX509AttributesRestDTO:
      type: object
      required:
      - serialNumber
      - notBefore
      - notAfter
      - issuer
      - subject
      - fingerprint
      - extensions
      properties:
        extensions:
          type: array
          items:
            $ref: '#/components/schemas/CertificateX509ExtensionRestDTO'
        fingerprint:
          type: string
        issuer:
          type: string
        notAfter:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        notBefore:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        serialNumber:
          type: string
        subject:
          type: string
    CertificateX509ExtensionRestDTO:
      type: object
      required:
      - oid
      - value
      - critical
      properties:
        critical:
          type: boolean
        oid:
          type: string
        value:
          type: string
    ClaimProofSchemaRequestRestDTO:
      type: object
      description: |-
        Defines the set of attributes being requested when making proof requests
        using this schema.
      required:
      - id
      - required
      properties:
        id:
          type: string
          format: uuid
          description: The `id` of the attribute being requested, from the `claims` object.
        required:
          type: boolean
          description: Whether the attribute is required in the proof request.
      additionalProperties: false
    ClaimSchemaId:
      type: string
      format: uuid
    ClientIdSchemeRestEnum:
      type: string
      enum:
      - redirect_uri
      - verifier_attestation
      - decentralized_identifier
      - x509_san_dns
      - x509_hash
    ClientMetadata:
      type: object
      required:
      - vp_formats_supported
      properties:
        encrypted_response_enc_values_supported:
          type: array
          items:
            $ref: '#/components/schemas/EncryptionAlgorithm'
        id_token_encrypted_response_alg:
          type: string
        id_token_encrypted_response_enc:
          type: string
        jwks:
          $ref: '#/components/schemas/Jwks'
        jwks_uri:
          type: string
        subject_syntax_types_supported:
          type: array
          items:
            type: string
        vp_formats_supported:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/PresentationFormat'
          propertyNames:
            type: string
    CompressionAlgorithm:
      type: string
      enum:
      - DEF
    ConfigRestDTO:
      type: object
      required:
      - format
      - identifier
      - issuanceProtocol
      - verificationProtocol
      - transport
      - revocation
      - did
      - datatype
      - keyAlgorithm
      - keySecurityLevel
      - keyStorage
      - cacheEntities
      - task
      - blobStorage
      - frontend
      - credentialIssuer
      - verificationEngagement
      - walletProvider
      - signer
      - trustListPublisher
      - trustListSubscriber
      - verifierProvider
      - globalSettings
      properties:
        blobStorage:
          type: object
          description: |-
            Storage configuration for large data objects (credentials,
            proofs, wallet unit attestations, registration certificates)
            kept outside the main primary database table for query
            performance.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        cacheEntities:
          type: object
          description: Entities held in temporary storage.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        credentialIssuer:
          type: object
          description: Issuer-initiated OpenID4VCI authorization code flow
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        datatype:
          type: object
          description: Datatypes for claim validation.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        did:
          type: object
          description: DID methods used for identifying agents.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        format:
          type: object
          description: Credential formats for issuing, holding and verifying.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        frontend:
          type: object
          description: |-
            Configuration values consumed by the Desk frontend, such as
            feature flags and UI defaults.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        globalSettings:
          $ref: '#/components/schemas/GlobalSettingsRestDTO'
          description: Deployment-wide settings that are not tied to a specific config entity.
        identifier:
          type: object
          description: |-
            Available identifier types. Identifiers represent entities and are used
            across credential operations and certificate workflows
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        issuanceProtocol:
          type: object
          description: Protocols for credential issuance.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        keyAlgorithm:
          type: object
          description: Key algorithms used for signatures.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        keySecurityLevel:
          type: object
          description: |-
            Security levels for key storage. When creating a credential
            schema, the required level sets the minimum key storage standard
            a wallet must meet to receive issuance. On the holder side, the
            level also determines the key storage used when keys are
            auto-generated during issuance.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        keyStorage:
          type: object
          description: Implementations for how keys are stored.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        revocation:
          type: object
          description: Revocation methods for credential status.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        signer:
          type: object
          description: |-
            Signing implementations referenced when creating different
            certificate types, including X.509 certificates, and EUDI
            Access and Registration Certificates.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        task:
          type: object
          description: |-
            Scheduled maintenance tasks, such as credential status check,
            trust collection syncing, and webhooks
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        transport:
          type: object
          description: Transport protocols over which to communicate.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        trustListPublisher:
          type: object
          description: Implementations for publishing trust lists, such as ETSI LoTE.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        trustListSubscriber:
          type: object
          description: Implementations for subscribing to and consuming trust lists.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        verificationEngagement:
          type: object
          description: |-
            Type of engagement to use when proposing a proof (wallet),
            or when creating a proof request (verifier).
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        verificationProtocol:
          type: object
          description: Protocols for credential presentation and verification.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        verifierProvider:
          type: object
          description: |-
            Verifier provider implementations that manage mobile verifier
            deployments and their configuration.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
        walletProvider:
          type: object
          description: |-
            Wallet provider implementations that manage wallet app instances,
            including unit attestation issuance and version constraints.
          additionalProperties: {}
          propertyNames:
            type: string
          example: {}
    ContinueIssuanceRequestRestDTO:
      type: object
      required:
      - url
      properties:
        url:
          type: string
          description: |-
            Starts with the `redirectUri` and is used to continue the
            Authorization Code Flow issuance process.
          example: myapp://example/credential-offer?code=xxx&clientId=myWallet&...
      additionalProperties: false
    ContinueIssuanceResponseRestDTO:
      type: object
      required:
      - interactionId
      - interactionType
      - requiresWalletInstanceAttestation
      - protocol
      properties:
        interactionId:
          $ref: '#/components/schemas/InteractionId'
          description: For reference.
        interactionType:
          $ref: '#/components/schemas/InteractionTypeRestEnum'
        keyAlgorithms:
          type: array
          items:
            type: string
        keyStorageSecurityLevels:
          type: array
          items:
            $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
        protocol:
          type: string
        requiresWalletInstanceAttestation:
          type: boolean
    CreateCertificateAuthorityRequestRestDTO:
      type: object
      required:
      - keyId
      properties:
        chain:
          type: string
          description: |-
            Full certificate chain in PEM format, where the leaf certificate
            is a CA certificate signed by the key specified in keyId. The
            chain should include all certificates from the leaf CA up to the root.
        keyId:
          $ref: '#/components/schemas/KeyId'
          description: The ID of the key used to sign the CA certificate.
        name:
          type: string
          description: A display name for the CA.
        selfSigned:
          $ref: '#/components/schemas/CreateSelfSignedCertificateAuthorityRequestRestDTO'
          description: |-
            Configuration to generate a self-signed root CA. Provide certificate
            subject details and validity period. Use instead of `chain`.
      additionalProperties: false
    CreateCertificateCaRestDTO:
      type: object
      required:
      - identifierId
      properties:
        certificateId:
          $ref: '#/components/schemas/CertificateId'
        identifierId:
          $ref: '#/components/schemas/IdentifierId'
      additionalProperties: false
    CreateCertificateContentRestDTO:
      type: object
      required:
      - profile
      - subject
      - certificateAuthority
      - signer
      properties:
        certificateAuthority:
          $ref: '#/components/schemas/CreateCertificateCaRestDTO'
          description: The CA to sign the new certificate.
        profile:
          $ref: '#/components/schemas/KeyGenerateCSRRequestProfileRest'
          description: The certificate profile to use for generation.
        signer:
          type: string
          description: |-
            Signer instance to use for certificate signing. Must reference
            an `X509_CERTIFICATE` instance in the `signer` configuration.
          enum:
          - ACCESS_CERTIFICATE
          - REGISTRATION_CERTIFICATE
          - X509_CERTIFICATE
        subject:
          $ref: '#/components/schemas/KeyGenerateCSRRequestSubjectRestDTO'
          description: Certificate subject details (for example, common name, organization).
        subjectAlternativeName:
          $ref: '#/components/schemas/KeyGenerateCSRRequestSubjectAlternativeNameRestDTO'
          description: |-
            Optional Subject Alternative Name (SAN) configuration for the
            certificate. Use to specify alternative identifiers such as
            DNS names.
        validityEnd:
          type: string
          format: date-time
          description: |-
            End of the CA certificate validity period (RFC 3339). Must not
            exceed the `maxValidityDuration` set in the referenced `signer`
            configuration.
        validityStart:
          type: string
          format: date-time
          description: |-
            Start of the certificate validity period (RFC 3339). Defaults
            to time of issuance.
      additionalProperties: false
    CreateCertificateRequestRestDTO:
      type: object
      description: Either `chain` or `content` must be specified.
      required:
      - keyId
      - roles
      properties:
        chain:
          type: string
          description: |-
            Full certificate chain in PEM format, where the leaf certificate is
            signed by the key specified in keyId. Include all certificates from
            the leaf up to the root.
        content:
          $ref: '#/components/schemas/CreateCertificateContentRestDTO'
          description: |-
            Configuration to generate a new certificate. Provide subject details
            and an existing CA to sign it. Use instead of `chain`.
        keyId:
          $ref: '#/components/schemas/KeyId'
          description: The ID of the key the certificate is issued to.
        name:
          type: string
          description: A display name for the certificate.
        roles:
          type: array
          items:
            $ref: '#/components/schemas/CertificateRoleRestEnum'
          description: |-
            Roles assigned to the certificate, controlling how it is used in
            credential interactions. Assign `ASSERTION_METHOD` to certificates
            used for issuance, and `AUTHENTICATION` to certificates used for
            verification or as EU Access Certificates.
            Multiple roles may be assigned to a single certificate.
      additionalProperties: false
    CreateCredentialRequestRestDTO:
      type: object
      required:
      - credentialSchemaId
      - protocol
      - claimValues
      properties:
        claimValues:
          type: array
          items:
            $ref: '#/components/schemas/CredentialRequestClaimRestDTO'
          description: |-
            Attribute from the credential schema, together with the
            corresponding claim being made.
        credentialSchemaId:
          $ref: '#/components/schemas/CredentialSchemaId'
          description: |-
            UUID of the credential schema to use for this credential. The `id`
            field is returned when creating a credential schema; do not use the
            `schemaId` (document type) value.
        issuer:
          $ref: '#/components/schemas/IdentifierId'
          description: |-
            UUID of the identifier to use for issuing this credential. This
            references an identifier entry (which could be a DID, key, or certificate)
            created via the identifiers API. Use the `id` field from the identifier,
            not the actual DID string or key value.
        issuerCertificate:
          $ref: '#/components/schemas/CertificateId'
          description: |-
            If multiple active certificates are available under the issuer,
            use this value to specify which certificate should be used
            for this credential. If a certificate isn't specified here,
            an active certificate will be used.
        issuerDid:
          type: string
          format: uuid
          description: Deprecated. Use `issuer` to set the identifier, regardless of type.
          deprecated: true
        issuerKey:
          $ref: '#/components/schemas/KeyId'
          description: |-
            If multiple keys are specified for the assertion method of the DID,
            use this value to specify which key should be used as the assertion
            method for this credential. If a key isn't specified here, the first
            key listed during DID creation will be used.
        profile:
          type: string
          description: Optional profile to associate with this credential
        protocol:
          type: string
          description: |-
            Issuance protocol to use for issuing the credential to a wallet. Check
            your `issuanceProtocol` configuration for supported options and
            reference the configured instance name.
          enum:
          - OPENID4VCI_FINAL1
          - OPENID4VCI_FINAL1_HAIP
          - OPENID4VCI_FINAL1_SWIYU
        redirectUri:
          type: string
          description: |-
            When a credential is accepted, the holder will be redirected to the
            resource specified here, if redirects are enabled in the system
            configuration. The URI must use a scheme (for example `https`, `myapp`)
            that is allowed by the system configuration.
        subscriberInformation:
          type: string
          description: Optional subscriber information associated with this credential.
        webhookDestinationUrl:
          type: string
          description: |-
            Set a webhook URL or MQTT topic to receive notifications of
            credential state changes. See
            [Webhooks](https://docs.procivis.ch/webhooks) for configuration.
      additionalProperties: false
    CreateCredentialSchemaRequestRestDTO:
      type: object
      required:
      - name
      - format
      - claims
      properties:
        allowSuspension:
          type: boolean
          description: |-
            If `true` and the chosen revocation method allows for suspension,
            credentials issued with this schema can be suspended.
        claims:
          type: array
          items:
            $ref: '#/components/schemas/CredentialClaimSchemaRequestRestDTO'
          description: |-
            Defines the set of claims to be asserted when using this credential
            schema.
          minItems: 1
        externalSchema:
          type: boolean
          deprecated: true
        format:
          type: string
          description: |-
            Choose a credential format for credentials issued using this
            credential schema. Check the `format` object of the configuration
            for supported options and reference the configuration instance.
          enum:
          - JSON_LD_BBSPLUS
          - JSON_LD_CLASSIC
          - JWT
          - MDOC
          - MDOC_SHORT_EXPIRY
          - SD_JWT
          - SD_JWT_VC
          - SD_JWT_VC_SWIYU
        keyStorageSecurity:
          $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
          description: |-
            Specifies key storage security requirements that the holder's wallet
            must meet for credential issuance.
        layoutProperties:
          $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
          description: Credential appearance design.
        layoutType:
          oneOf:
          - $ref: '#/components/schemas/CredentialSchemaLayoutType'
            description: |-
              Determines the general appearance of the credential in the holder's
              wallet and the options supported in `layoutProperties`.
          default: CARD
        name:
          type: string
          description: Provide a name for this schema.
          minLength: 1
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        requiresWalletInstanceAttestation:
          type: boolean
        revocationMethod:
          type: string
          description: |-
            Choose a revocation method for credentials issued using this
            credential schema. Check the `revocation` object of the configuration
            for supported options and reference the configuration instance.
          enum:
          - BITSTRINGSTATUSLIST
          - CRL
          - MDOC_MSO_UPDATE_SUSPENSION
          - TOKENSTATUSLIST
        schemaId:
          type:
          - string
          - 'null'
          description: |-
            Identifier for the credential schema. For ISO mdoc, this specifies
            the DocType (for example, `org.iso.18013.5.1.mDL`). For SD-JWT VC,
            this specifies the `vct` value. If omitted, the system auto-generates
            an identifier using the credential schema's UUID. Must be unique
            within the organization.
          example: org.iso.18013.5.1.mDL
        transactionCode:
          $ref: '#/components/schemas/CredentialSchemaTransactionCodeRequestRestDTO'
          description: |-
            Optional transaction code configuration. When included, credentials
            issued from this schema will require holders to submit a generated
            one-time code to complete issuance.
      additionalProperties: false
    CreateCredentialSchemaV2RequestRestDTO:
      type: object
      required:
      - name
      - formats
      - claims
      properties:
        allowRevocation:
          type: boolean
          description: If `true`, credentials issued with this schema can be revoked.
        allowSuspension:
          type: boolean
          description: |-
            If `true` and the chosen revocation method allows for suspension,
            credentials issued with this schema can be suspended.
        batchSize:
          type: integer
          format: int32
          description: Minimum batch size for issuance. Must be at least 2 if specified.
        claims:
          type: array
          items:
            $ref: '#/components/schemas/CredentialClaimSchemaRequestRestDTO'
          description: Defines the set of claims to be asserted when using this credential schema.
          minItems: 1
        embeddedDisclosurePolicy:
          $ref: '#/components/schemas/DisclosurePolicyCreateRequestRestDTO'
          description: |-
            An optional disclosure policy embedded in the credential schema.
            When present, the policy is transmitted to the wallet as part of
            credential metadata. Wallets evaluate this policy against incoming
            verifier requests and warn the holder if a violation is detected. See
            [Embedded Disclosure Policy](https://docs.procivis.ch/issue/embedded-disclosure-policy).
        formats:
          type: array
          items:
            $ref: '#/components/schemas/CredentialSchemaFormatRequestRestDTO'
          description: List of credential formats supported by this schema.
          minItems: 1
        keyStorageSecurity:
          $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
          description: Specifies key storage security requirements.
        layoutProperties:
          $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
        layoutType:
          oneOf:
          - $ref: '#/components/schemas/CredentialSchemaLayoutType'
            description: Determines the general appearance of the credential in the holder's wallet.
          default: CARD
        name:
          type: string
          description: Name of the credential schema.
          minLength: 1
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: Required when not using STS authentication mode.
        requiresWalletInstanceAttestation:
          type: boolean
        transactionCode:
          $ref: '#/components/schemas/CredentialSchemaTransactionCodeRequestRestDTO'
          description: Optional transaction code configuration.
        translations:
          $ref: '#/components/schemas/CredentialSchemaTranslationsRestDTO'
          description: |-
            Localized display strings for the credential schema name and optional
            description.
      additionalProperties: false
    CreateDidRequestKeysRestDTO:
      type: object
      description: |-
        Each DID has five verification relationships defining the verification
        method used for different purposes. Related guide: https://docs.procivis.ch/dids#keys-object
      required:
      - authentication
      - assertionMethod
      - keyAgreement
      - capabilityInvocation
      - capabilityDelegation
      properties:
        assertionMethod:
          type: array
          items:
            $ref: '#/components/schemas/KeyId'
        authentication:
          type: array
          items:
            $ref: '#/components/schemas/KeyId'
        capabilityDelegation:
          type: array
          items:
            $ref: '#/components/schemas/KeyId'
        capabilityInvocation:
          type: array
          items:
            $ref: '#/components/schemas/KeyId'
        keyAgreement:
          type: array
          items:
            $ref: '#/components/schemas/KeyId'
      additionalProperties: false
    CreateDidRequestRestDTO:
      type: object
      required:
      - name
      - method
      - keys
      properties:
        keys:
          $ref: '#/components/schemas/CreateDidRequestKeysRestDTO'
        method:
          $ref: '#/components/schemas/DidMethodId'
          description: |-
            Choose a DID method to create the DID. Check the `did` object of the
            configuration for supported options and reference the configuration
            instance.
        name:
          type: string
          description: The DID name must be unique within the organization.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        params:
          type: object
          description: The parameters passed into the DID method.
      additionalProperties: false
    CreateHistoryRequestRestDTO:
      type: object
      required:
      - action
      - name
      - entityType
      - source
      properties:
        action:
          $ref: '#/components/schemas/HistoryAction'
          description: The action that occurred on the entity.
        entityId:
          $ref: '#/components/schemas/EntityId'
          description: UUID of the entity the event relates to.
        entityType:
          $ref: '#/components/schemas/HistoryEntityType'
          description: Type of entity the event relates to.
        metadata:
          description: Optional structured metadata attached to the event.
        name:
          type: string
          description: |-
            Display name of the entity at the time the event was recorded. For
            credential events, this is the credential schema name; for proof
            events, this is the proof schema name.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: Organization the event belongs to.
        source:
          $ref: '#/components/schemas/ExternalHistorySource'
          description: The external service submitting this event. Must not be `CORE`.
        target:
          type: string
          description: External participant in the interaction, if applicable.
      additionalProperties: false
    CreateIdentifierDidRequestRestDTO:
      type: object
      required:
      - method
      - keys
      properties:
        keys:
          $ref: '#/components/schemas/CreateDidRequestKeysRestDTO'
        method:
          type: string
          description: |-
            Specify the DID method. Check the `did` object of your configuration
            for supported options.
          enum:
          - JWK
          - KEY
          - WEB
          - WEBVH
        name:
          type: string
        params: {}
      additionalProperties: false
    CreateIdentifierKeyRequestRestDTO:
      type: object
      required:
      - keyId
      properties:
        keyId:
          $ref: '#/components/schemas/KeyId'
      additionalProperties: false
    CreateIdentifierRequestRestDTO:
      type: object
      required:
      - name
      properties:
        certificateAuthorities:
          type: array
          items:
            $ref: '#/components/schemas/CreateCertificateAuthorityRequestRestDTO'
          description: |-
            Create a CA identifier. Provide an existing certificate chain
            or self-signed CA configuration.
        certificates:
          type: array
          items:
            $ref: '#/components/schemas/CreateCertificateRequestRestDTO'
          description: |-
            Create a certificate identifier. Provide an existing certificate
            chain, or self-signed configuration and an existing CA identifier
            to sign it.
        did:
          $ref: '#/components/schemas/CreateIdentifierDidRequestRestDTO'
          description: |-
            Create a DID identifier. Provide the DID method and signing
            keys.
        key:
          $ref: '#/components/schemas/CreateIdentifierKeyRequestRestDTO'
          description: Create a key identifier.
        keyId:
          type: string
          format: uuid
          description: Deprecated. Use `key` instead.
          deprecated: true
        name:
          type: string
          description: A display name for the identifier.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies
            organizational context for this operation.
        trustInformation:
          type: array
          items:
            $ref: '#/components/schemas/CreateIdentifierTrustInformationRequestRestDTO'
          description: |-
            Trust information associated with this identifier, establishing
            its standing within a particular trust ecosystem.
      additionalProperties: false
    CreateIdentifierTrustInformationRequestRestDTO:
      type: object
      required:
      - data
      - type
      properties:
        data:
          type: string
          description: The trust data payload, formatted according to the specified type.
        type:
          $ref: '#/components/schemas/IdentifierTrustInformationTypeRestEnum'
          description: |-
            The type of trust information. Determines how `data` is interpreted.
            Use `REGISTRATION_CERTIFICATE` to attach a EUDI Registration Certificate
            for use with this identifier.
      additionalProperties: false
    CreateOrganisationRequestRestDTO:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/OrganisationId'
        parentOrganisation:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Optionally assign a parent organization to share policy-level
            configuration, such as trust collections, across a one-level hierarchy.
            The provided organization must not have a parent organization.
      additionalProperties: false
    CreateOrganisationResponseRestDTO:
      type: object
      required:
      - id
      properties:
        id:
          $ref: '#/components/schemas/OrganisationId'
    CreateProofRequestRestDTO:
      type: object
      required:
      - proofSchemaId
      - protocol
      properties:
        engagement:
          type: string
          description: |-
            Not for use via the API; for mobile configurations to specify device
            engagement type.
        isoMdlEngagement:
          type: string
          description: |-
            Not for use via the API; for ISO mDL verification over BLE using the
            SDK.
        profile:
          type: string
          description: Optional profile to associate with this proof request.
        proofSchemaId:
          $ref: '#/components/schemas/ProofSchemaId'
          description: Choose a proof schema to use.
        protocol:
          type: string
          description: |-
            Specify the verification protocol to use for credential exchange. Check
            the `verificationProtocol` object of the configuration for supported options and
            reference the configuration instance.
          enum:
          - OPENID4VP_FINAL1
          - OPENID4VP_FINAL1_HAIP
          - OPENID4VP_FINAL1_SWIYU
          - OPENID4VP_PROXIMITY_DRAFT00
        redirectUri:
          type: string
          description: |-
            When a shared proof is accepted, the holder will be redirected to
            the resource specified here, if redirects are enabled in the system
            configuration. The URI must use a scheme (for example `https`, `myapp`)
            that is allowed by the system configuration.
        subscriberInformation:
          type: string
          description: Optional subscriber information associated with this proof request.
        transport:
          type: array
          items:
            type: string
            enum:
            - HTTP
            - MQTT
          description: |-
            Specify the transport protocol to use for credential exchange. Check
            the `transport` object of the configuration for supported options and
            reference the configuration instance.
        verifier:
          $ref: '#/components/schemas/IdentifierId'
          description: Choose an identifier to use when making the request.
        verifierCertificate:
          $ref: '#/components/schemas/CertificateId'
          description: |-
            If multiple active certificates are available under the verifier,
            use this value to specify which certificate should be used
            for this proof request. If a certificate isn't specified here,
            an active certificate will be used.
        verifierDid:
          type: string
          format: uuid
          description: Choose a DID to use as an identifier.
          deprecated: true
          example: <uuid; did identifier>
        verifierKey:
          $ref: '#/components/schemas/KeyId'
          description: |-
            If multiple keys are specified for the authentication method of the
            DID, use this value to specify which key should be used as the
            authentication method for this proof request. If a key isn't
            specified here, the first key listed during DID creation will be
            used.
        webhookDestinationUrl:
          type: string
          description: |-
            Set a webhook URL or MQTT topic to receive notifications of
            proof request state changes. See
            [Webhooks](https://docs.procivis.ch/webhooks) for configuration.
      additionalProperties: false
    CreateProofSchemaRequestRestDTO:
      type: object
      required:
      - name
      - proofInputSchemas
      properties:
        expireDuration:
          type: integer
          format: int32
          description: |-
            Defines the length of storage of received proofs, in seconds. After
            the defined duration, the received proof and its data are deleted
            from the system. If 0, the proofs received when using this proof
            schema will not be deleted.
          minimum: 0
        name:
          type: string
          minLength: 1
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        proofInputSchemas:
          type: array
          items:
            $ref: '#/components/schemas/ProofInputSchemaRequestRestDTO'
          description: Set of all claims to request.
          minItems: 1
      additionalProperties: false
    CreateRemoteCertificateChainRestDTO:
      type: object
      required:
      - chain
      properties:
        chain:
          type: string
          description: |-
            Full certificate chain in PEM format. Include all certificates
            from the leaf up to the root.
      additionalProperties: false
    CreateRemoteIdentifierRequestRestDTO:
      type: object
      required:
      - name
      properties:
        certificateAuthorities:
          type: array
          items:
            $ref: '#/components/schemas/CreateRemoteCertificateChainRestDTO'
          description: PEM-encoded CA certificate chains.
        certificates:
          type: array
          items:
            $ref: '#/components/schemas/CreateRemoteCertificateChainRestDTO'
          description: PEM-encoded certificate chains, each from the leaf up to the root.
        did:
          $ref: '#/components/schemas/DidValue'
        key:
          $ref: '#/components/schemas/PublicJwk'
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies
            organizational context for this operation.
      additionalProperties: false
    CreateSelfSignedCaRequestContentRestDTO:
      type: object
      required:
      - subject
      properties:
        issuerAlternativeName:
          $ref: '#/components/schemas/CreateSelfSignedCaRequestIssuerAlternativeNameRestDTO'
          description: An alternative name for the CA issuer. Required for mdoc CAs.
        subject:
          $ref: '#/components/schemas/KeyGenerateCSRRequestSubjectRestDTO'
          description: |-
            Certificate subject details (for example, common name,
            organization.)
      additionalProperties: false
    CreateSelfSignedCaRequestIssuerAlternativeNameRestDTO:
      type: object
      required:
      - type
      - name
      properties:
        name:
          type: string
        type:
          $ref: '#/components/schemas/CreateSelfSignedCaRequestIssuerAlternativeNameTypeRest'
      additionalProperties: false
    CreateSelfSignedCaRequestIssuerAlternativeNameTypeRest:
      type: string
      enum:
      - EMAIL
      - URI
    CreateSelfSignedCertificateAuthorityRequestRestDTO:
      type: object
      required:
      - content
      - signer
      properties:
        content:
          $ref: '#/components/schemas/CreateSelfSignedCaRequestContentRestDTO'
          description: |-
            Certificate subject details for the self-signed CA. For mdoc CAs,
            also include an issuer alternative name.
        signer:
          type: string
          description: |-
            Signer instance to use for CA certificate signing. Must reference
            an `X509_CERTIFICATE` signer configured in the signing configuration.
            For mdoc CAs, ensure the referenced instance is configured with
            `pathLenConstraint: 0` and `keyIdDerivation: "sha-1"`.
          enum:
          - ACCESS_CERTIFICATE
          - REGISTRATION_CERTIFICATE
          - X509_CERTIFICATE
        validityEnd:
          type: string
          format: date-time
          description: |-
            End of the CA validity period (RFC 3339). Must not exceed the
            `maxValidityDuration` set in the referenced `signer`
            configuration.
        validityStart:
          type: string
          format: date-time
          description: |-
            Start of the CA validity period (RFC 3339). Defaults to time of
            issuance.
      additionalProperties: false
    CreateSignatureRequestRestDTO:
      type: object
      required:
      - issuer
      - signer
      - data
      properties:
        data:
          type: object
          description: |-
            Signer-specific request data. Structure varies based on signer
            value.
        issuer:
          $ref: '#/components/schemas/IdentifierId'
          description: |-
            Identifier ID of the signing entity. Must be a CA identifier for
            X.509 and Access Certificates, or a Certificate identifier for
            Registration Certificates. Ensure the identifier is registered
            on the appropriate trust lists.
        issuerCertificate:
          $ref: '#/components/schemas/CertificateId'
          description: |-
            Specific certificate to use from the issuer identifier. Omit
            for automatic selection.
        issuerKey:
          $ref: '#/components/schemas/KeyId'
          description: |-
            Specific key to use from the issuer identifier. Omit for
            automatic selection.
        signer:
          type: string
          description: |-
            Type of signature to create. This must reference a configured
            `signer` object.
          enum:
          - ACCESS_CERTIFICATE
          - REGISTRATION_CERTIFICATE
          - X509_CERTIFICATE
        validityEnd:
          type: string
          format: date-time
          description: |-
            Pass nothing to set the maximum validity period allowed
            by the configuration or choose a datetime with a shorter
            validity period.
        validityStart:
          type: string
          format: date-time
          description: |-
            Pass nothing to start validity now or choose a datetime
            in the future.
      additionalProperties: false
    CreateSignatureResponseRestDTO:
      type: object
      required:
      - id
      - result
      properties:
        id:
          type: string
          format: uuid
          description: ID used to revoke the signature.
        result:
          type: string
          description: Signer-specific signature representation.
    CreateTrustCollectionRestDTO:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: Provide a name for this collection.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS mode
            this value is derived from the token.
      additionalProperties: false
    CreateTrustEntryRequestRestDTO:
      type: object
      required:
      - identifierId
      properties:
        identifierId:
          $ref: '#/components/schemas/IdentifierId'
          description: |-
            ID of the identifier holding the trusted entity's certificate.
            The entity's digital identity in the published list is derived
            from this certificate.
        params:
          description: |-
            Optional entity and service information fields. See the
            [Scheme Operators Guide](https://docs.procivis.ch/trust/etsi/scheme-operators)
            for details.
      additionalProperties: false
    CreateTrustListRequestRestDTO:
      type: object
      required:
      - type
      - identifierId
      - name
      - role
      properties:
        certificateId:
          $ref: '#/components/schemas/CertificateId'
          description: |-
            Specify certificate to use from publisher identifier. Omit
            for automatic selection.
        identifierId:
          $ref: '#/components/schemas/IdentifierId'
          description: ID of identifier used to sign each publication of the list.
        keyId:
          $ref: '#/components/schemas/KeyId'
          description: |-
            Specify key to use from publisher identifier. Omit for
            automatic selection.
        name:
          type: string
          description: Provide an internal label for this trust list publication.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS mode
            this value is derived from the token.
        params:
          description: |-
            Optional scheme information fields that cannot be derived
            from the profile type or signing certificate. See the
            [Scheme Operators Guide](https://docs.procivis.ch/trust/etsi/scheme-operators)
            for details.
        role:
          $ref: '#/components/schemas/TrustListRoleRestEnum'
          description: |-
            The profile this trust list conforms to. Determines the
            profile-specific URIs and requirements applied to the
            published list.
        type:
          type: string
          description: Reference a configured `trustListPublisher` instance.
      additionalProperties: false
    CreateTrustListSubscriptionRequestRestDTO:
      type: object
      required:
      - name
      - reference
      - type
      properties:
        name:
          type: string
          description: Provide a name for this subscription.
        reference:
          type: string
          format: uri
          description: Provide the reference URL for the trust list.
        role:
          $ref: '#/components/schemas/TrustListRoleRestEnum'
          description: Specify which ecosystem role this list corresponds to.
        type:
          $ref: '#/components/schemas/TrustListSubscriberId'
          description: |-
            The configured `trustListSubscriber` instance the trust list
            conforms to.
      additionalProperties: false
    CredentialClaimSchemaMappingResponseRestDTO:
      type: object
      required:
      - format
      - technicalKey
      properties:
        format:
          $ref: '#/components/schemas/CredentialFormat'
        namespace:
          type: string
        technicalKey:
          type: string
    CredentialClaimSchemaMappingRestDTO:
      type: object
      required:
      - format
      - technicalKey
      properties:
        format:
          type: string
        namespace:
          type:
          - string
          - 'null'
        technicalKey:
          type: string
      additionalProperties: false
    CredentialClaimSchemaRequestRestDTO:
      type: object
      required:
      - key
      - datatype
      - required
      properties:
        array:
          type: boolean
          description: If `true`, an array can be passed for this attribute during issuance.
        claims:
          type: array
          items:
            $ref: '#/components/schemas/CredentialClaimSchemaRequestRestDTO'
          description: |-
            If the `datatype` is `OBJECT`, the nested claims go in this array.
            Otherwise this array is empty.
        datatype:
          type: string
          description: The type of data accepted for this attribute.
          enum:
          - ARRAY
          - BIRTH_DATE
          - BOOLEAN
          - COUNT
          - DATE
          - EAA_CATEGORY
          - EMAIL
          - MDL_PICTURE
          - NUMBER
          - OBJECT
          - PICTURE
          - STRING
          - SWIYU_PICTURE
        key:
          type: string
        mappings:
          type: array
          items:
            $ref: '#/components/schemas/CredentialClaimSchemaMappingRestDTO'
        required:
          type: boolean
          description: |-
            If `true`, a value must be provided for this claim to complete
            issuance.
        translations:
          $ref: '#/components/schemas/CredentialClaimSchemaTranslationsRestDTO'
          description: Localized display strings for this claim's display name.
      additionalProperties: false
    CredentialClaimSchemaResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - key
      - datatype
      - required
      - array
      - claims
      - translations
      properties:
        array:
          type: boolean
        claims:
          type: array
          items:
            $ref: '#/components/schemas/CredentialClaimSchemaResponseRestDTO'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        datatype:
          type: string
        id:
          type: string
          format: uuid
        key:
          type: string
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        required:
          type: boolean
        translations:
          $ref: '#/components/schemas/CredentialClaimSchemaTranslationsRestDTO'
    CredentialClaimSchemaTranslationsRestDTO:
      type: object
      required:
      - name
      properties:
        name:
          $ref: '#/components/schemas/I18nString'
    CredentialClaimSchemaV2ResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - key
      - datatype
      - required
      - array
      - claims
      - translations
      properties:
        array:
          type: boolean
        claims:
          type: array
          items:
            $ref: '#/components/schemas/CredentialClaimSchemaV2ResponseRestDTO'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        datatype:
          type: string
        id:
          $ref: '#/components/schemas/ClaimSchemaId'
        key:
          type: string
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        mappings:
          type: array
          items:
            $ref: '#/components/schemas/CredentialClaimSchemaMappingResponseRestDTO'
        required:
          type: boolean
        translations:
          $ref: '#/components/schemas/CredentialClaimSchemaTranslationsRestDTO'
    CredentialDetailClaimExtResponseRestDTO:
      type: object
      required:
      - path
      - schema
      - value
      - userSelection
      - required
      properties:
        path:
          type: string
        required:
          type: boolean
        schema:
          $ref: '#/components/schemas/CredentialClaimSchemaResponseRestDTO'
        userSelection:
          type: boolean
        value:
          $ref: '#/components/schemas/CredentialDetailClaimValueResponseRestDTO_CredentialDetailClaimExtResponseRestDTO'
    CredentialDetailClaimResponseRestDTO:
      type: object
      required:
      - path
      - schema
      - value
      properties:
        path:
          type: string
        schema:
          $ref: '#/components/schemas/CredentialClaimSchemaResponseRestDTO'
        value:
          $ref: '#/components/schemas/CredentialDetailClaimValueResponseRestDTO_CredentialDetailClaimResponseRestDTO'
    CredentialDetailClaimValueResponseRestDTO_CredentialDetailClaimExtResponseRestDTO:
      oneOf:
      - type: boolean
      - type: number
        format: double
      - type: integer
        format: int64
      - type: string
      - type: array
        items:
          type: object
          required:
          - path
          - schema
          - value
          - userSelection
          - required
          properties:
            path:
              type: string
            required:
              type: boolean
            schema:
              $ref: '#/components/schemas/CredentialClaimSchemaResponseRestDTO'
            userSelection:
              type: boolean
            value:
              $ref: '#/components/schemas/CredentialDetailClaimValueResponseRestDTO_CredentialDetailClaimExtResponseRestDTO'
    CredentialDetailClaimValueResponseRestDTO_CredentialDetailClaimResponseRestDTO:
      oneOf:
      - type: boolean
      - type: number
        format: double
      - type: integer
        format: int64
      - type: string
      - type: array
        items:
          type: object
          required:
          - path
          - schema
          - value
          properties:
            path:
              type: string
            schema:
              $ref: '#/components/schemas/CredentialClaimSchemaResponseRestDTO'
            value:
              $ref: '#/components/schemas/CredentialDetailClaimValueResponseRestDTO_CredentialDetailClaimResponseRestDTO'
    CredentialDetailSchemaResponseRestDTO:
      type: object
      description: Credential schema used to issue the credential.
      required:
      - id
      - createdDate
      - lastModified
      - name
      - format
      - organisationId
      - schemaId
      - allowSuspension
      - requiresWalletInstanceAttestation
      - translations
      properties:
        allowSuspension:
          type: boolean
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        deletedAt:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        format:
          $ref: '#/components/schemas/CredentialFormat'
        id:
          $ref: '#/components/schemas/CredentialSchemaId'
        keyStorageSecurity:
          $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
          description: Storage security requirements the wallet's key storage must meet.
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        layoutProperties:
          $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
        layoutType:
          $ref: '#/components/schemas/CredentialSchemaLayoutType'
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        requiresWalletInstanceAttestation:
          type: boolean
        revocationMethod:
          $ref: '#/components/schemas/RevocationMethodId'
        schemaId:
          type: string
          description: Part of the `credentialSchema` property.
        translations:
          $ref: '#/components/schemas/CredentialSchemaTranslationsRestDTO'
    CredentialFormat:
      type: string
      description: Identifier of a formatter based in CoreConfig.format
    CredentialId:
      type: string
      format: uuid
    CredentialListIncludeEntityTypeRestEnum:
      type: string
      enum:
      - layoutProperties
      - translations
    CredentialListItemResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - state
      - type
      - lastModified
      - schema
      - role
      - protocol
      properties:
        consumedAt:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/CredentialId'
        issuanceDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        issuer:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        parentId:
          $ref: '#/components/schemas/CredentialId'
        profile:
          type: string
          description: Profile associated with this credential
        protocol:
          type: string
        revocationDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        role:
          $ref: '#/components/schemas/CredentialRoleRestEnum'
        schema:
          $ref: '#/components/schemas/CredentialSchemaListItemResponseRestDTO'
        state:
          $ref: '#/components/schemas/CredentialStateRestEnum'
        suspendEndDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        type:
          $ref: '#/components/schemas/CredentialTypeRestEnum'
        webhookDestinationUrl:
          type: string
    CredentialQueryFailureHintResponseRestDTO:
      type: object
      required:
      - reason
      properties:
        credentialSchema:
          $ref: '#/components/schemas/CredentialSchemaResponseRestDTO'
        reason:
          $ref: '#/components/schemas/CredentialQueryFailureReasonRestEnum'
    CredentialQueryFailureReasonRestEnum:
      type: string
      enum:
      - NO_CREDENTIAL
      - VALIDITY
      - CONSTRAINT
    CredentialQueryResponseRestDTO:
      allOf:
      - $ref: '#/components/schemas/ApplicableCredentialOrFailureHintRestEnum'
      - type: object
        required:
        - multiple
        properties:
          multiple:
            type: boolean
    CredentialRequestClaimRestDTO:
      type: object
      required:
      - claimId
      - path
      properties:
        claimId:
          $ref: '#/components/schemas/ClaimSchemaId'
          description: ID of the attribute from the credential schema.
        path:
          type: string
          description: Path to the particular claim key within the structure of the credential schema.
        value:
          type: string
          description: Claim being asserted in issuance.
      additionalProperties: false
    CredentialRevocationCheckRequestRestDTO:
      type: object
      description: Array of credentials to be checked for revocation status.
      required:
      - credentialIds
      properties:
        credentialIds:
          type: array
          items:
            $ref: '#/components/schemas/CredentialId'
        forceRefresh:
          type: boolean
      additionalProperties: false
    CredentialRevocationCheckResponseRestDTO:
      type: object
      required:
      - credentialId
      - status
      - success
      properties:
        credentialId:
          $ref: '#/components/schemas/CredentialId'
        reason:
          type: string
          description: |-
            Explanation of why the revocation check failed. Only present
            when `success: false`.
        status:
          $ref: '#/components/schemas/CredentialStateRestEnum'
        success:
          type: boolean
          description: |-
            Indicates whether the system performed the check as planned.
            When using `forceRefresh`, indicates whether the external resource
            was reached and gave a response. For mdocs this value will only be
            `true` if a new MSO was issued.
    CredentialRoleRestEnum:
      type: string
      description: The role the system has in relation to the credential.
      enum:
      - HOLDER
      - ISSUER
      - VERIFIER
    CredentialSchemaBackgroundPropertiesRestDTO:
      type: object
      properties:
        color:
          type: string
        image:
          type: string
      additionalProperties: false
    CredentialSchemaCodePropertiesRestDTO:
      type: object
      required:
      - attribute
      - type
      properties:
        attribute:
          type: string
        type:
          $ref: '#/components/schemas/CredentialSchemaCodeTypeRestEnum'
      additionalProperties: false
    CredentialSchemaCodeTypeRestEnum:
      type: string
      enum:
      - BARCODE
      - MRZ
      - QR_CODE
    CredentialSchemaDcqlResponseRestDTO:
      allOf:
      - $ref: '#/components/schemas/CredentialFormat'
    CredentialSchemaFormatRequestRestDTO:
      type: object
      required:
      - format
      properties:
        format:
          $ref: '#/components/schemas/CredentialFormat'
          description: Credential format identifier from the system configuration.
        schemaId:
          type: string
          description: Optional schema identifier for this format (e.g. DocType for mdoc, vct for SD-JWT VC).
      additionalProperties: false
    CredentialSchemaFormatResponseRestDTO:
      type: object
      required:
      - format
      - schemaId
      properties:
        format:
          $ref: '#/components/schemas/CredentialFormat'
        schemaId:
          type: string
    CredentialSchemaId:
      type: string
      format: uuid
    CredentialSchemaLayoutPropertiesRestDTO:
      type: object
      description: Design the appearance of the credential in the holder's wallet.
      properties:
        background:
          $ref: '#/components/schemas/CredentialSchemaBackgroundPropertiesRestDTO'
        code:
          $ref: '#/components/schemas/CredentialSchemaCodePropertiesRestDTO'
        logo:
          $ref: '#/components/schemas/CredentialSchemaLogoPropertiesRestDTO'
        pictureAttribute:
          type: string
        primaryAttribute:
          type: string
        secondaryAttribute:
          type: string
      additionalProperties: false
    CredentialSchemaLayoutType:
      type: string
      enum:
      - CARD
      - DOCUMENT
      - SINGLE_ATTRIBUTE
    CredentialSchemaListIncludeEntityTypeRestEnum:
      type: string
      enum:
      - layoutProperties
      - translations
    CredentialSchemaListItemResponseRestDTO:
      type: object
      description: Credential schema details.
      required:
      - id
      - createdDate
      - lastModified
      - name
      - format
      - importedSourceUrl
      - schemaId
      - allowSuspension
      - requiresWalletInstanceAttestation
      properties:
        allowSuspension:
          type: boolean
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        deletedAt:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        format:
          $ref: '#/components/schemas/CredentialFormat'
        id:
          type: string
          format: uuid
          description: |-
            UUID of this credential schema. Use this value as `credentialSchemaId`
            when creating credentials with this schema.
        importedSourceUrl:
          type: string
        keyStorageSecurity:
          $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
          description: Indication of what type of key storage the wallet should use.
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        layoutProperties:
          $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
        layoutType:
          $ref: '#/components/schemas/CredentialSchemaLayoutType'
        name:
          type: string
        requiresWalletInstanceAttestation:
          type: boolean
        revocationMethod:
          $ref: '#/components/schemas/RevocationMethodId'
        schemaId:
          type: string
          description: |-
            Document type or credential type identifier used by the credential
            format. This is the semantic identifier for the credential type, not
            the database ID of this schema record.
        translations:
          $ref: '#/components/schemas/CredentialSchemaTranslationsRestDTO'
    CredentialSchemaListItemV2ResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - formats
      - importedSourceUrl
      - allowSuspension
      - requiresWalletInstanceAttestation
      properties:
        allowRevocation:
          type: boolean
        allowSuspension:
          type: boolean
        batchSize:
          type: integer
          format: int32
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        formats:
          type: array
          items:
            $ref: '#/components/schemas/CredentialSchemaFormatResponseRestDTO'
        id:
          $ref: '#/components/schemas/CredentialSchemaId'
          description: |-
            UUID of this credential schema. Use this value as `credentialSchemaId`
            when creating credentials with this schema.
        importedSourceUrl:
          type: string
        keyStorageSecurity:
          $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
          description: Indication of what type of key storage the wallet should use.
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        layoutProperties:
          $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
        layoutType:
          $ref: '#/components/schemas/CredentialSchemaLayoutType'
        name:
          type: string
        requiresWalletInstanceAttestation:
          type: boolean
    CredentialSchemaLogoPropertiesRestDTO:
      type: object
      properties:
        backgroundColor:
          type: string
        fontColor:
          type: string
        image:
          type: string
      additionalProperties: false
    CredentialSchemaResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - format
      - organisationId
      - claims
      - schemaId
      - importedSourceUrl
      - allowSuspension
      - requiresWalletInstanceAttestation
      - translations
      properties:
        allowSuspension:
          type: boolean
        claims:
          type: array
          items:
            $ref: '#/components/schemas/CredentialClaimSchemaResponseRestDTO'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        dcql:
          $ref: '#/components/schemas/CredentialSchemaDcqlResponseRestDTO'
        format:
          $ref: '#/components/schemas/CredentialFormat'
        id:
          type: string
          format: uuid
          description: |-
            UUID of this credential schema. Use this value as `credentialSchemaId`
            when creating credentials with this schema.
        importedSourceUrl:
          type: string
        keyStorageSecurity:
          $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        layoutProperties:
          $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
        layoutType:
          $ref: '#/components/schemas/CredentialSchemaLayoutType'
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        requiresWalletInstanceAttestation:
          type: boolean
        revocationMethod:
          $ref: '#/components/schemas/RevocationMethodId'
        schemaId:
          type: string
          description: |-
            Document type or credential type identifier used by the credential
            format. This is the semantic identifier for the credential type, not
            the database ID of this schema record.
        transactionCode:
          $ref: '#/components/schemas/CredentialSchemaTransactionCodeRestDTO'
        translations:
          $ref: '#/components/schemas/CredentialSchemaTranslationsRestDTO'
    CredentialSchemaShareResponseRestDTO:
      type: object
      required:
      - url
      properties:
        url:
          type: string
    CredentialSchemaTransactionCodeRequestRestDTO:
      type: object
      required:
      - type
      - length
      properties:
        description:
          type: string
          description: |-
            Optional context provided to holders about the transaction code,
            such as where to find it or how to use it. Maximum 300 characters.
        length:
          type: integer
          format: int32
          description: Number of characters in generated codes. Must be between 4 and 10.
          minimum: 0
        type:
          $ref: '#/components/schemas/TransactionCodeTypeRestEnum'
          description: |-
            Character set for generated codes. `NUMERIC` uses digits 0-9.
            `ALPHANUMERIC` uses letters and digits.
      additionalProperties: false
    CredentialSchemaTransactionCodeRestDTO:
      type: object
      required:
      - type
      - length
      properties:
        description:
          type: string
        length:
          type: integer
          format: int32
          minimum: 0
        type:
          $ref: '#/components/schemas/TransactionCodeTypeRestEnum'
    CredentialSchemaTranslationsRestDTO:
      type: object
      required:
      - name
      properties:
        description:
          $ref: '#/components/schemas/I18nString'
        name:
          $ref: '#/components/schemas/I18nString'
    CredentialSchemaV2ResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - formats
      - organisationId
      - claims
      - importedSourceUrl
      - allowSuspension
      - requiresWalletInstanceAttestation
      - translations
      properties:
        allowRevocation:
          type: boolean
        allowSuspension:
          type: boolean
        batchSize:
          type: integer
          format: int32
        claims:
          type: array
          items:
            $ref: '#/components/schemas/CredentialClaimSchemaV2ResponseRestDTO'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        embeddedDisclosurePolicy:
          $ref: '#/components/schemas/DisclosurePolicy'
          description: |-
            An optional disclosure policy embedded in the credential schema.
            When present, the policy is transmitted to the wallet as part of
            credential metadata. Wallets evaluate this policy against incoming
            verifier requests and warn the holder if a violation is detected. See
            [Embedded Disclosure Policy](https://docs.procivis.ch/issue/embedded-disclosure-policy).
        formats:
          type: array
          items:
            $ref: '#/components/schemas/CredentialSchemaFormatResponseRestDTO'
        id:
          $ref: '#/components/schemas/CredentialSchemaId'
        importedSourceUrl:
          type: string
        keyStorageSecurity:
          $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        layoutProperties:
          $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
        layoutType:
          $ref: '#/components/schemas/CredentialSchemaLayoutType'
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        requiresWalletInstanceAttestation:
          type: boolean
        transactionCode:
          $ref: '#/components/schemas/CredentialSchemaTransactionCodeRestDTO'
        translations:
          $ref: '#/components/schemas/CredentialSchemaTranslationsRestDTO'
    CredentialSchemasExactColumn:
      type: string
      enum:
      - name
      - schemaId
    CredentialSetResponseRestDTO:
      type: object
      required:
      - required
      - options
      properties:
        options:
          type: array
          items:
            type: array
            items:
              type: string
        required:
          type: boolean
    CredentialSigningAlgValueRestEnum:
      oneOf:
      - type: string
      - type: integer
        format: int64
    CredentialStateRestEnum:
      type: string
      description: The state representation of the credential in the system.
      enum:
      - CREATED
      - PENDING
      - OFFERED
      - ACCEPTED
      - SUSPENDED
      - REJECTED
      - REVOKED
      - ERROR
      - INTERACTION_EXPIRED
    CredentialTypeRestEnum:
      type: string
      description: The type representation of the credential in the system.
      enum:
      - SINGLE
      - BATCH_PARENT
      - BATCH_ITEM
    DcqlSubmissionRestDTO:
      type: object
      required:
      - vp_token
      properties:
        vp_token:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          propertyNames:
            type: string
    DidDocumentRestDTO:
      type: object
      required:
      - '@context'
      - id
      - verificationMethod
      properties:
        '@context': {}
        alsoKnownAs:
          type: array
          items:
            type: string
        assertionMethod:
          type: array
          items:
            type: string
        authentication:
          type: array
          items:
            type: string
        capabilityDelegation:
          type: array
          items:
            type: string
        capabilityInvocation:
          type: array
          items:
            type: string
        id:
          $ref: '#/components/schemas/DidValue'
        keyAgreement:
          type: array
          items:
            type: string
        service:
          type: array
          items:
            $ref: '#/components/schemas/DidServiceEndointRestDTO'
        verificationMethod:
          type: array
          items:
            $ref: '#/components/schemas/DidVerificationMethodRestDTO'
    DidId:
      type: string
      format: uuid
    DidListItemResponseRestDTO:
      type: object
      description: DID details.
      required:
      - id
      - createdDate
      - lastModified
      - name
      - did
      - type
      - method
      - deactivated
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        deactivated:
          type: boolean
        did:
          $ref: '#/components/schemas/DidValue'
        id:
          $ref: '#/components/schemas/DidId'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        method:
          $ref: '#/components/schemas/DidMethodId'
        name:
          type: string
        type:
          $ref: '#/components/schemas/DidType'
    DidMethodId:
      type: string
      description: Identifier of a DID method based in CoreConfig.did
    DidPatchRequestRestDTO:
      type: object
      properties:
        deactivated:
          type: boolean
      additionalProperties: false
    DidResponseKeysRestDTO:
      type: object
      description: The key, or keys, defining the verification relationships of the DID.
      required:
      - authentication
      - assertionMethod
      - keyAgreement
      - capabilityInvocation
      - capabilityDelegation
      properties:
        assertionMethod:
          type: array
          items:
            $ref: '#/components/schemas/KeyListItemResponseRestDTO'
        authentication:
          type: array
          items:
            $ref: '#/components/schemas/KeyListItemResponseRestDTO'
        capabilityDelegation:
          type: array
          items:
            $ref: '#/components/schemas/KeyListItemResponseRestDTO'
        capabilityInvocation:
          type: array
          items:
            $ref: '#/components/schemas/KeyListItemResponseRestDTO'
        keyAgreement:
          type: array
          items:
            $ref: '#/components/schemas/KeyListItemResponseRestDTO'
    DidResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - did
      - type
      - method
      - keys
      - deactivated
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        deactivated:
          type: boolean
        did:
          $ref: '#/components/schemas/DidValue'
        id:
          $ref: '#/components/schemas/DidId'
        keys:
          $ref: '#/components/schemas/DidResponseKeysRestDTO'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        method:
          $ref: '#/components/schemas/DidMethodId'
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        type:
          $ref: '#/components/schemas/DidType'
    DidServiceEndointRestDTO:
      type: object
      required:
      - id
      - type
      - serviceEndpoint
      properties:
        id:
          type: string
        serviceEndpoint: {}
        type:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
    DidType:
      type: string
      description: Whether a DID was locally created or is the DID of a remote wallet.
      enum:
      - REMOTE
      - LOCAL
    DidValue:
      type: string
      format: uri
      examples:
      - did:key:z6MkqfAeg81kn2x4fns8j2rGq1bhdJhT6f3Wh88hLLEq24v2
    DidVerificationMethodRestDTO:
      type: object
      required:
      - id
      - type
      - controller
      - publicKeyJwk
      properties:
        controller:
          type: string
        id:
          type: string
        publicKeyJwk:
          $ref: '#/components/schemas/PublicJwk'
        type:
          type: string
    DisclosurePolicy:
      allOf:
      - $ref: '#/components/schemas/PolicyType'
      - type: object
        required:
        - id
        properties:
          description:
            type: string
          id:
            type: string
          url:
            type: string
    DisclosurePolicyCreateRequestRestDTO:
      allOf:
      - $ref: '#/components/schemas/PolicyType'
        description: |-
          The policy type. `none` permits disclosure to any relying party.
          `allowList` restricts disclosure to relying parties specified in
          `options.values`. `rootOfTrust` permits disclosure to any relying
          whose certificate was issued under the CA specified in `options.values`.
      - type: object
        properties:
          description:
            type: string
            description: |-
              A human-readable description of the policy, intended to help the
              wallet user understand why the restriction exists.
          url:
            type: string
            description: |-
              A URL pointing to further information about the policy, such as
              your disclosure terms as an issuer.
    DisclosurePolicyViolationRestDTO:
      type: object
      required:
      - id
      properties:
        description:
          type: string
        id:
          type: string
        url:
          type: string
    DisplayNameRestDTO:
      type: object
      required:
      - lang
      - value
      properties:
        lang:
          type: string
        value:
          type: string
    DocumentSignerMetadataRestDTO:
      type: object
      required:
      - name
      - type
      - displayName
      - description
      - logo
      properties:
        description:
          type: array
          items:
            $ref: '#/components/schemas/DisplayNameRestDTO'
        displayName:
          type: array
          items:
            $ref: '#/components/schemas/DisplayNameRestDTO'
        logo:
          type: string
        name:
          type: string
        type:
          $ref: '#/components/schemas/DocumentSignerTypeRestEnum'
    DocumentSignerTypeRestEnum:
      type: string
      enum:
      - WALLET_CENTRIC
      - RP_CENTRIC
    EditHolderWalletInstanceRequestRestDTO:
      type: object
      properties:
        trustCollections:
          type: array
          items:
            $ref: '#/components/schemas/TrustCollectionId'
          description: |-
            The trust collections the wallet subscribes to, selected from those
            made available by the Wallet Provider. The wallet will evaluate trust
            against the lists contained in these collections. To keep subscribed
            collections in sync with the Wallet Provider, run the
            `TRUST_COLLECTION_SYNC` task.
        trustedRpRequired:
          type: boolean
          description: |-
            When true, the wallet will only interact with entities that can be
            verified as trusted. Requires the Wallet Provider to have the
            `trustEcosystemsEnabled` feature flag enabled.
      additionalProperties: false
    EditVerifierInstanceRequestRestDTO:
      type: object
      properties:
        trustCollections:
          type: array
          items:
            $ref: '#/components/schemas/TrustCollectionId'
          description: |-
            The trust collections the verifier subscribes to, selected from
            those made available by the Verifier Provider. The verifier will
            evaluate trust against the lists contained in these collections.
            To keep subscribed collections in sync with the Verifier Provider,
            run the `TRUST_COLLECTION_SYNC` task.
        trustedIssuerRequired:
          type: boolean
          description: |-
            When true, the verifier will only validate presentations of
            credentials issued by trusted issuers. Requires the Verifier
            Provider to have the `trustEcosystemsEnabled` feature flag
            enabled.
      additionalProperties: false
    EmptyEntry:
      type: object
      additionalProperties: false
    EncryptionAlgorithm:
      type: string
      enum:
      - A128GCM
      - A256GCM
      - A128CBC-HS256
    EntityId:
      type: string
      format: uuid
    EntityResponseRestDTO:
      type: object
      required:
      - id
      properties:
        id:
          type: string
          format: uuid
    ErrorResponseRestDTO:
      type: object
      required:
      - code
      - message
      properties:
        cause:
          $ref: '#/components/schemas/Cause'
        code:
          type: string
        message:
          type: string
    EudiIntermediaryResponseRestDTO:
      type: object
      required:
      - identifier
      - website
      - country
      properties:
        country:
          type: string
        email:
          type: string
        identifier:
          type: string
        name:
          type: string
        phone:
          type: string
        website:
          type: string
          format: uri
    EudiSupervisoryAuthorityResponseRestDTO:
      type: object
      required:
      - email
      - phone
      - uri
      properties:
        email:
          type: string
        phone:
          type: string
        uri:
          type: string
    EudiTrustInformationResponseRestDTO:
      type: object
      required:
      - name
      - website
      - country
      - identifier
      - serviceDescription
      - supervisoryAuthority
      - isPublicSector
      properties:
        country:
          type: string
        email:
          type: string
        identifier:
          type: string
        intermediary:
          $ref: '#/components/schemas/EudiIntermediaryResponseRestDTO'
        isPublicSector:
          type: boolean
        name:
          type: string
        phone:
          type: string
        serviceDescription:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
            propertyNames:
              type: string
          example:
          - de: Demo Dienstleistung
            en: Demo Service
        supervisoryAuthority:
          $ref: '#/components/schemas/EudiSupervisoryAuthorityResponseRestDTO'
        website:
          type: string
          format: uri
    ExactCredentialFilterColumnRestEnum:
      type: string
      enum:
      - name
    ExactDidFilterColumnRestEnum:
      type: string
      enum:
      - name
      - did
    ExactIdentifierFilterColumnRestEnum:
      type: string
      enum:
      - name
    ExactKeyFilterColumnRestEnum:
      type: string
      enum:
      - name
    ExactProofFilterColumnRestEnum:
      type: string
      enum:
      - name
    ExactProofSchemaFilterColumnRestEnum:
      type: string
      enum:
      - name
    ExactTrustCollectionFilterColumnRestEnum:
      type: string
      enum:
      - name
    ExactTrustEntryFilterColumnRestEnum:
      type: string
      enum:
      - name
    ExactTrustListFilterColumnRestEnum:
      type: string
      enum:
      - name
    Extension:
      allOf:
      - {}
      - type: object
        required:
        - critical
        properties:
          critical:
            type: boolean
    ExternalHistorySource:
      type: string
      enum:
      - BRIDGE
      - STS
      - WRPR
      - BFF
    FeatureFlagsRestDTO:
      type: object
      required:
      - trustEcosystemsEnabled
      - refreshCredentialBatchEnabled
      - documentSigningEnabled
      properties:
        documentSigningEnabled:
          type: boolean
        refreshCredentialBatchEnabled:
          type: boolean
        trustEcosystemsEnabled:
          type: boolean
    GenericAlgs:
      type: object
      properties:
        alg:
          type: array
          items:
            type: string
      additionalProperties: false
    GetCredentialResponseRestDTO_CredentialDetailClaimExtResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - state
      - lastModified
      - schema
      - claims
      - role
      - type
      - protocol
      properties:
        claims:
          type: array
          items:
            type: object
            required:
            - path
            - schema
            - value
            - userSelection
            - required
            properties:
              path:
                type: string
              required:
                type: boolean
              schema:
                $ref: '#/components/schemas/CredentialClaimSchemaResponseRestDTO'
              userSelection:
                type: boolean
              value:
                $ref: '#/components/schemas/CredentialDetailClaimValueResponseRestDTO_CredentialDetailClaimExtResponseRestDTO'
          description: Claims made by the credential issuer.
        consumedAt:
          type: string
          format: date-time
          description: |-
            When this credential was used in a presentation. Only used for
            batch item credentials.
          example: 2023-06-09T14:19:57.000Z
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        holder:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
          description: Credential holder metadata.
        id:
          $ref: '#/components/schemas/CredentialId'
        interactionId:
          $ref: '#/components/schemas/InteractionId'
        issuanceDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        issuer:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
          description: Issuer metadata.
        issuerCertificate:
          $ref: '#/components/schemas/CertificateResponseRestDTO'
          description: Certificate details if issuer used an X.509 to issue credential.
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        mdocMsoValidity:
          $ref: '#/components/schemas/MdocMsoValidityResponseRestDTO'
          description: Validity details for ISO mdocs.
        parentId:
          $ref: '#/components/schemas/CredentialId'
          description: Batch parent (if batch item).
        profile:
          type: string
          description: Country profile associated with this credential.
        protocol:
          type: string
          description: Issuance protocol used to issue this credential.
        redirectUri:
          type: string
          description: URI holder is redirected to after credential issuance.
        remainingBatchItemCount:
          type: integer
          format: int32
          description: Number of non-consumed batch items (if batch parent).
          minimum: 0
        revocationDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        role:
          $ref: '#/components/schemas/CredentialRoleRestEnum'
          description: |-
            The role the system has in relation to the credential. For example,
            if the system issued the credential this value will be `ISSUER`. If
            the system received the credential as a wallet this value will be
            `HOLDER`.
        schema:
          $ref: '#/components/schemas/CredentialDetailSchemaResponseRestDTO'
          description: Schema of the credential.
        state:
          $ref: '#/components/schemas/CredentialStateRestEnum'
        subscriberInformation:
          type: string
          description: Optional subscriber information associated with this credential.
        suspendEndDate:
          type: string
          format: date-time
          description: Scheduled date for credential reactivation.
          example: 2023-06-09T14:19:57.000Z
        trustInformation:
          $ref: '#/components/schemas/TrustInformationRestDTO'
          description: Trust information of the issuer, if any received.
        type:
          $ref: '#/components/schemas/CredentialTypeRestEnum'
          description: |-
            Differentiates between single credentials issued alone, credentials
            issued as part of a batch, and parent credentials which represent
            a batch of credentials.
        walletInstanceAttestation:
          $ref: '#/components/schemas/WalletInstanceAttestationRestDTO'
          description: |-
            The wallet instance attestation that was provided by the holder's wallet
            during credential issuance. This field is only present if the wallet
            provided a valid attestation when the credential was issued. The
            attestation serves as proof that the wallet app instance is a
            legitimate installation and may be required for the issuance of certain
            credentials.
        walletUnitAttestation:
          $ref: '#/components/schemas/WalletUnitAttestationRestDTO'
          description: |-
            The wallet unit attestation, or "key attestation", that was provided
            by the holder's wallet during credential issuance. This field is
            only present if the wallet provided a valid attestation when the
            credential was issued, a requirement for the issuance of certain
            credentials such as EU PIDs.
        webhookDestinationUrl:
          type: string
    GetCredentialResponseRestDTO_CredentialDetailClaimResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - state
      - lastModified
      - schema
      - claims
      - role
      - type
      - protocol
      properties:
        claims:
          type: array
          items:
            type: object
            required:
            - path
            - schema
            - value
            properties:
              path:
                type: string
              schema:
                $ref: '#/components/schemas/CredentialClaimSchemaResponseRestDTO'
              value:
                $ref: '#/components/schemas/CredentialDetailClaimValueResponseRestDTO_CredentialDetailClaimResponseRestDTO'
          description: Claims made by the credential issuer.
        consumedAt:
          type: string
          format: date-time
          description: |-
            When this credential was used in a presentation. Only used for
            batch item credentials.
          example: 2023-06-09T14:19:57.000Z
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        holder:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
          description: Credential holder metadata.
        id:
          $ref: '#/components/schemas/CredentialId'
        interactionId:
          $ref: '#/components/schemas/InteractionId'
        issuanceDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        issuer:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
          description: Issuer metadata.
        issuerCertificate:
          $ref: '#/components/schemas/CertificateResponseRestDTO'
          description: Certificate details if issuer used an X.509 to issue credential.
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        mdocMsoValidity:
          $ref: '#/components/schemas/MdocMsoValidityResponseRestDTO'
          description: Validity details for ISO mdocs.
        parentId:
          $ref: '#/components/schemas/CredentialId'
          description: Batch parent (if batch item).
        profile:
          type: string
          description: Country profile associated with this credential.
        protocol:
          type: string
          description: Issuance protocol used to issue this credential.
        redirectUri:
          type: string
          description: URI holder is redirected to after credential issuance.
        remainingBatchItemCount:
          type: integer
          format: int32
          description: Number of non-consumed batch items (if batch parent).
          minimum: 0
        revocationDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        role:
          $ref: '#/components/schemas/CredentialRoleRestEnum'
          description: |-
            The role the system has in relation to the credential. For example,
            if the system issued the credential this value will be `ISSUER`. If
            the system received the credential as a wallet this value will be
            `HOLDER`.
        schema:
          $ref: '#/components/schemas/CredentialDetailSchemaResponseRestDTO'
          description: Schema of the credential.
        state:
          $ref: '#/components/schemas/CredentialStateRestEnum'
        subscriberInformation:
          type: string
          description: Optional subscriber information associated with this credential.
        suspendEndDate:
          type: string
          format: date-time
          description: Scheduled date for credential reactivation.
          example: 2023-06-09T14:19:57.000Z
        trustInformation:
          $ref: '#/components/schemas/TrustInformationRestDTO'
          description: Trust information of the issuer, if any received.
        type:
          $ref: '#/components/schemas/CredentialTypeRestEnum'
          description: |-
            Differentiates between single credentials issued alone, credentials
            issued as part of a batch, and parent credentials which represent
            a batch of credentials.
        walletInstanceAttestation:
          $ref: '#/components/schemas/WalletInstanceAttestationRestDTO'
          description: |-
            The wallet instance attestation that was provided by the holder's wallet
            during credential issuance. This field is only present if the wallet
            provided a valid attestation when the credential was issued. The
            attestation serves as proof that the wallet app instance is a
            legitimate installation and may be required for the issuance of certain
            credentials.
        walletUnitAttestation:
          $ref: '#/components/schemas/WalletUnitAttestationRestDTO'
          description: |-
            The wallet unit attestation, or "key attestation", that was provided
            by the holder's wallet during credential issuance. This field is
            only present if the wallet provided a valid attestation when the
            credential was issued, a requirement for the issuance of certain
            credentials such as EU PIDs.
        webhookDestinationUrl:
          type: string
    GetIdentifierListItemResponseRestDTO:
      type: object
      required:
      - id
      - name
      - createdDate
      - lastModified
      - state
      - type
      - isRemote
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/IdentifierId'
        isRemote:
          type: boolean
          description: |-
            Whether the identifier belongs to the system or comes from an interaction
            with an external actor.
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        state:
          $ref: '#/components/schemas/IdentifierStateRest'
        type:
          $ref: '#/components/schemas/IdentifierTypeRest'
    GetIdentifierListResponseRestDTO:
      type: object
      required:
      - totalPages
      - totalItems
      - values
      properties:
        totalItems:
          type: integer
          format: int64
          minimum: 0
        totalPages:
          type: integer
          format: int64
          minimum: 0
        values:
          type: array
          items:
            $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
    GetIdentifierResponseRestDTO:
      type: object
      required:
      - id
      - name
      - createdDate
      - lastModified
      - state
      - type
      - isRemote
      properties:
        certificateAuthorities:
          type: array
          items:
            $ref: '#/components/schemas/CertificateResponseRestDTO'
        certificates:
          type: array
          items:
            $ref: '#/components/schemas/CertificateResponseRestDTO'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        did:
          $ref: '#/components/schemas/DidResponseRestDTO'
        id:
          $ref: '#/components/schemas/IdentifierId'
        isRemote:
          type: boolean
        key:
          $ref: '#/components/schemas/KeyResponseRestDTO'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        state:
          $ref: '#/components/schemas/IdentifierStateRest'
        trustInformation:
          type: array
          items:
            $ref: '#/components/schemas/IdentifierTrustInformationResponseRestDTO'
        type:
          $ref: '#/components/schemas/IdentifierTypeRest'
    GetOrganisationDetailsResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        deactivatedAt:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          type: string
          format: uuid
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        parentOrganisation:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            The parent organization this organization inherits policy-level
            configuration from, if any.
        verifierInstance:
          $ref: '#/components/schemas/VerifierInstanceDetailResponseRestDTO'
          description: |-
            Wallet registration details for this organization's Business
            Wallet.
        walletInstance:
          $ref: '#/components/schemas/HolderWalletInstanceResponseRestDTO'
          description: |-
            Wallet registration details for this organization's Business
            Wallet.
        walletProvider:
          $ref: '#/components/schemas/WalletProviderDetailResponseRestDTO'
    GetProofSchemaListItemResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - expireDuration
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        deletedAt:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        expireDuration:
          type: integer
          format: int32
          description: |-
            The duration of storage of received proofs, in seconds. After the defined duration, the received proof and its data are deleted from the system.
            If 0, the proofs received when using this proof schema will not be deleted.
          minimum: 0
        id:
          type: string
          format: uuid
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
    GetProofSchemaResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - expireDuration
      - organisationId
      - proofInputSchemas
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        expireDuration:
          type: integer
          format: int32
          minimum: 0
        id:
          type: string
          format: uuid
        importedSourceUrl:
          type: string
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        proofInputSchemas:
          type: array
          items:
            $ref: '#/components/schemas/ProofInputSchemaResponseRestDTO'
    GetTrustCollectionResponseRestDTO:
      type: object
      required:
      - id
      - name
      - createdDate
      - lastModified
      - organisationId
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/TrustCollectionId'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        remoteTrustCollectionUrl:
          type: string
          format: uri
    GetTrustListPublicationResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - identifier
      - type
      - role
      - sequenceNumber
      - metadata
      - organisationId
      properties:
        content:
          type: string
          description: The trust list in JWT form.
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        deletedAt:
          type:
          - string
          - 'null'
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/TrustListPublicationId'
        identifier:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
          description: Identifier used for signing the trust list.
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        metadata:
          type: string
          description: |-
            Scheme information, originally passed as `params` in the
            API call to create the trust list.
        name:
          type: string
          description: Internal label for the trust list publication.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        role:
          $ref: '#/components/schemas/TrustListRoleRestEnum'
          description: The profile this trust list conforms to.
        sequenceNumber:
          type: integer
          format: int32
          description: |-
            The sequence number increments with each publication of
            the list.
          minimum: 0
        type:
          $ref: '#/components/schemas/TrustListPublisherId'
          description: |-
            The configured `trustListPublisher` instance used to
            publish this list.
    GetWalletInstancesResponseRestDTO:
      type: object
      required:
      - totalPages
      - totalItems
      - values
      properties:
        totalItems:
          type: integer
          format: int64
          minimum: 0
        totalPages:
          type: integer
          format: int64
          minimum: 0
        values:
          type: array
          items:
            $ref: '#/components/schemas/WalletInstanceResponseRestDTO'
    GlobalSettingsRestDTO:
      type: object
      required:
      - defaultLanguage
      properties:
        defaultLanguage:
          type: string
          description: |-
            Default language tag for the deployment, used where no lanugage
            is otherwise specified, for example, in credential schema creation.
    HandleInvitationRequestRestDTO:
      type: object
      required:
      - url
      properties:
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        redirectUri:
          type: string
          description: |-
            For issuer-initiated Authorization Code Flow, provide the authorization server
            with the URI it should return the user to once authorization is complete.
        transport:
          type: array
          items:
            type: string
            enum:
            - HTTP
            - MQTT
          description: |-
            For configurations with multiple transport protocols enabled you can
            specify which one to use for this interaction.
          example:
          - HTTP
        url:
          type: string
          format: uri
          description: Typically encoded as a QR code or deep link by the issuer or verifier.
          example: https://example.com/credential-offer
      additionalProperties: false
    HandleInvitationResponseRestDTO:
      type: object
      required:
      - interactionId
      - interactionType
      properties:
        authorizationCodeFlowUrl:
          type: string
          description: |-
            For issuer-initiated Authorization Code Flows, use this URL to start the
            authorization process with the authorization server.
        interactionId:
          $ref: '#/components/schemas/InteractionId'
        interactionType:
          $ref: '#/components/schemas/InteractionTypeRestEnum'
        keyAlgorithms:
          type: array
          items:
            type: string
        keyStorageSecurityLevels:
          type: array
          items:
            $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
        proofId:
          $ref: '#/components/schemas/ProofId'
          description: Requested proof.
        protocol:
          type: string
        requiresWalletInstanceAttestation:
          type: boolean
        txCode:
          $ref: '#/components/schemas/OpenID4VCITxCodeRestDTO'
          description: |-
            Metadata for entering a transaction code.
            If a pre-authorized code is issued with a transaction code object, the
            wallet user must input a transaction code to receive the offered credential.
            This code is typically sent through a separate channel such as SMS or email.
    HistoryAction:
      type: string
      enum:
      - ACCEPTED
      - CREATED
      - CSR_GENERATED
      - DEACTIVATED
      - DELETED
      - ERRORED
      - ISSUED
      - OFFERED
      - REJECTED
      - REQUESTED
      - REVOKED
      - PENDING
      - SUSPENDED
      - RESTORED
      - SHARED
      - IMPORTED
      - CLAIMS_REMOVED
      - ACTIVATED
      - WITHDRAWN
      - REMOVED
      - RETRACTED
      - UPDATED
      - REACTIVATED
      - EXPIRED
      - INTERACTION_CREATED
      - INTERACTION_ERRORED
      - INTERACTION_EXPIRED
      - DELIVERED
      - WRP_AC_RECEIVED
      - WRP_RC_RECEIVED
      - WRP_NR_RECEIVED
      - TRUST_RESOLVED
      - REFRESHED
      - SIGNED
    HistoryEntityType:
      type: string
      enum:
      - KEY
      - DID
      - CERTIFICATE
      - IDENTIFIER
      - CREDENTIAL
      - CREDENTIAL_SCHEMA
      - PROOF
      - PROOF_SCHEMA
      - ORGANISATION
      - BACKUP
      - WALLET_UNIT
      - USER
      - PROVIDER
      - WALLET_RELYING_PARTY
      - STS_ROLE
      - STS_ORGANISATION
      - STS_IAM_ROLE
      - STS_SESSION
      - STS_TOKEN
      - SIGNATURE
      - NOTIFICATION
      - SUPERVISORY_AUTHORITY
      - TRUST_LIST_PUBLICATION
      - TRUST_COLLECTION
      - TRUST_LIST_SUBSCRIPTION
      - VERIFIER_INSTANCE
      - QES_DOCUMENT
    HistoryErrorMetadataRestDTO:
      type: object
      required:
      - error_code
      - message
      properties:
        error_code:
          type: string
        message:
          type: string
    HistoryId:
      type: string
      format: uuid
    HistoryMetadataRestEnum:
      oneOf:
      - type: object
        description: Items lost during finalization of a backup.
        required:
        - UnexportableEntities
        properties:
          UnexportableEntities:
            $ref: '#/components/schemas/UnexportableEntitiesResponseRestDTO'
            description: Items lost during finalization of a backup.
      - type: object
        description: Metadata for error events.
        required:
        - ErrorMetadata
        properties:
          ErrorMetadata:
            $ref: '#/components/schemas/HistoryErrorMetadataRestDTO'
            description: Metadata for error events.
      - type: object
        description: The hash of a wallet unit's JWT.
        required:
        - WalletUnitJWT
        properties:
          WalletUnitJWT:
            type: string
            description: The hash of a wallet unit's JWT.
      - type: object
        description: |-
          Additional information from non-Core services recording history
          events.
        required:
        - External
        properties:
          External:
            description: |-
              Additional information from non-Core services recording history
              events.
      - type: object
        description: The name of the WRP the event relates to.
        required:
        - WalletRelyingParty
        properties:
          WalletRelyingParty:
            $ref: '#/components/schemas/WalletRelyingPartyMetadataRestDTO'
            description: The name of the WRP the event relates to.
      - type: object
        description: The trust resolution verdict.
        required:
        - TrustResolution
        properties:
          TrustResolution:
            $ref: '#/components/schemas/TrustResolutionMetadataRestDTO'
            description: The trust resolution verdict.
    HistoryResponseDetailRestDTO:
      type: object
      required:
      - id
      - createdDate
      - action
      - name
      - entityType
      - source
      properties:
        action:
          $ref: '#/components/schemas/HistoryAction'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        entityId:
          type: string
          format: uuid
        entityType:
          $ref: '#/components/schemas/HistoryEntityType'
        id:
          $ref: '#/components/schemas/HistoryId'
        metadata:
          $ref: '#/components/schemas/HistoryMetadataRestEnum'
          description: |-
            Structured metadata attached to the event. The variant present
            depends on the event type.
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        source:
          $ref: '#/components/schemas/HistorySource'
          description: Service that recorded the event.
        target:
          type: string
          description: Secondary entity involved in the event, if any.
        user:
          type: string
          description: |-
            Identifier of the user who triggered the event. Present only when
            STS authentication is in use.
    HistoryResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - action
      - name
      - entityType
      - source
      properties:
        action:
          $ref: '#/components/schemas/HistoryAction'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        entityId:
          type: string
          format: uuid
        entityType:
          $ref: '#/components/schemas/HistoryEntityType'
        id:
          $ref: '#/components/schemas/HistoryId'
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        source:
          $ref: '#/components/schemas/HistorySource'
          description: Service that recorded the event.
        target:
          type: string
          description: |-
            Identifier UUID of the external participant in the interaction, if
            applicable. For credential events, this is the counterpart's identifier
            (holder when the system is issuer, issuer when the system is holder).
            For presentation events, this is the holder's identifier when the system
            is verifier, or the verifier's identifier when the system is holder.
        user:
          type: string
          description: |-
            Identifier of the user who triggered the event. Present only when
            STS authentication is in use.
    HistorySearchTypeRestEnum:
      type: string
      enum:
      - ALL
      - CLAIM_NAME
      - CLAIM_VALUE
      - CREDENTIAL_SCHEMA_NAME
      - ISSUER_DID
      - ISSUER_NAME
      - VERIFIER_DID
      - VERIFIER_NAME
      - PROOF_SCHEMA_NAME
    HistorySource:
      type: string
      enum:
      - CORE
      - BRIDGE
      - STS
      - WRPR
      - BFF
      - QTSP
    HolderActivateWalletInstanceRequestRestDTO:
      type: object
      required:
      - keyType
      properties:
        keyType:
          type: string
          description: Key type for the new authentication key generated during activation.
        userIdToken:
          type: string
          description: Identity token obtained from the identity provider after user authentication.
      additionalProperties: false
    HolderRegisterWalletInstanceRequestRestDTO:
      type: object
      required:
      - walletProvider
      - keyType
      properties:
        keyType:
          type: string
          description: |-
            Choose a key type and the system will generate a key to use for
            registration.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        trustedRpRequired:
          type: boolean
          description: |-
            When true, the wallet will only interact with entities that can be
            verified as trusted. Requires the Wallet Provider to have the
            `trustEcosystemsEnabled` feature flag enabled.
        walletProvider:
          $ref: '#/components/schemas/WalletProviderRestDTO'
          description: Wallet Provider details.
      additionalProperties: false
    HolderRegisterWalletInstanceResponseRestDTO:
      type: object
      required:
      - id
      - status
      properties:
        id:
          $ref: '#/components/schemas/HolderWalletInstanceId'
        status:
          $ref: '#/components/schemas/WalletInstanceStatusRestEnum'
        userNonce:
          type:
          - string
          - 'null'
    HolderWalletInstanceDetailRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - providerWalletUnitId
      - walletProviderUrl
      - walletProviderType
      - walletProviderName
      - status
      - trustedRpRequired
      properties:
        authenticationKey:
          $ref: '#/components/schemas/KeyListItemResponseRestDTO'
        createdDate:
          type: string
          format: date-time
        id:
          $ref: '#/components/schemas/HolderWalletInstanceId'
        lastModified:
          type: string
          format: date-time
        providerWalletUnitId:
          $ref: '#/components/schemas/WalletInstanceId'
        status:
          $ref: '#/components/schemas/WalletInstanceStatusRestEnum'
        trustedRpRequired:
          type: boolean
        userNonce:
          type: string
        walletProviderName:
          type: string
        walletProviderType:
          $ref: '#/components/schemas/WalletProviderTypeRestEnum'
        walletProviderUrl:
          type: string
    HolderWalletInstanceId:
      type: string
      format: uuid
    HolderWalletInstanceResponseRestDTO:
      type: object
      required:
      - id
      - trustedRpRequired
      - walletProviderUrl
      - walletProviderName
      - authenticationKeyType
      properties:
        authenticationKeyType:
          type: string
        id:
          $ref: '#/components/schemas/HolderWalletInstanceId'
        trustedRpRequired:
          type: boolean
        walletProviderName:
          type: string
        walletProviderUrl:
          type: string
    I18nString:
      type: object
      additionalProperties:
        type: string
      propertyNames:
        type: string
    IdentifierFilterQueryParamsRestDTO:
      type: object
      properties:
        certificateRoles:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CertificateRoleRestEnum'
          description: |-
            Filter by certificate role. Returns identifiers containing at least
            one certificate that matches the specified roles, evaluated according
            to `certificateRolesMatchMode`.
        certificateRolesMatchMode:
          $ref: '#/components/schemas/CertificateRolesMatchModeRestEnum'
          description: |-
            Determines how `certificateRoles` is applied at the certificate level.
            `ANY` returns identifiers with a certificate holding at least one of
            the specified roles. `ALL` returns identifiers with a certificate
            holding all of the specified roles.
        createdDateAfter:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only identifiers created after this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        createdDateBefore:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only identifiers created before this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        didMethods:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DidMethodId'
          description: Filter by one or more DID methods.
        exact:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ExactIdentifierFilterColumnRestEnum'
          description: Set which filters apply in an exact way.
        ids:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IdentifierId'
          description: Filter by one or more UUIDs.
        isRemote:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Boolean'
            description: |-
              If true, return only identifiers from interactions with external
              actors. If false, return only identifiers local to the system.
        keyAlgorithms:
          type:
          - array
          - 'null'
          items:
            type: string
          description: |-
            Return keys or DIDs whose keys use the specified algorithm. Check the
            `keyAlgorithm` object of the configuration for supported options.
        keyRoles:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/KeyRoleRestEnum'
          description: Return keys used as one or more verification methods of a DID.
        keyStorages:
          type:
          - array
          - 'null'
          items:
            type: string
          description: |-
            Return keys or DIDs whose keys use the specified storage type. Check the
            `keyStorage` object of the configuration for supported options.
        lastModifiedAfter:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only identifiers last modified after this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        lastModifiedBefore:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only identifiers last modified before this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        name:
          type:
          - string
          - 'null'
          description: |-
            Return only identifiers with a name starting with this string.
            Not case-sensitive.
        organisationId:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/OrganisationId'
            description: |-
              Required when not using STS authentication mode. Specifies the
              organizational context for this operation. When using STS
              authentication, this value is derived from the token.
        states:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IdentifierStateRest'
          description: Filter by one or more identifier states.
        trustIssuanceSchemaId:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/CredentialSchemaId'
            description: |-
              Return only identifiers suitable for issuing with the provided
              credential schema.
        trustVerificationSchemaId:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/ProofSchemaId'
            description: |-
              Return only identifiers suitable for requesting a proof with the
              provided proof schema.
        types:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IdentifierTypeRest'
          description: Filter by one or more identifier types.
    IdentifierId:
      type: string
      format: uuid
    IdentifierStateRest:
      type: string
      enum:
      - ACTIVE
      - DEACTIVATED
    IdentifierTrustInformationResponseRestDTO:
      type: object
      required:
      - data
      - type
      properties:
        data:
          type: string
        type:
          $ref: '#/components/schemas/IdentifierTrustInformationTypeRestEnum'
        validFrom:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        validTo:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
    IdentifierTrustInformationTypeRestEnum:
      type: string
      enum:
      - REGISTRATION_CERTIFICATE
    IdentifierTypeRest:
      type: string
      enum:
      - DID
      - KEY
      - CERTIFICATE
      - CA
    ImportCredentialSchemaClaimSchemaRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - key
      - datatype
      - required
      properties:
        array:
          type: boolean
        claims:
          type: array
          items:
            $ref: '#/components/schemas/ImportCredentialSchemaClaimSchemaRestDTO'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        datatype:
          type: string
        id:
          type: string
          format: uuid
        key:
          type: string
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        mappings:
          type: array
          items:
            $ref: '#/components/schemas/CredentialClaimSchemaMappingRestDTO'
        required:
          type: boolean
        translations:
          $ref: '#/components/schemas/CredentialClaimSchemaTranslationsRestDTO'
      additionalProperties: false
    ImportCredentialSchemaLayoutPropertiesRestDTO:
      type: object
      properties:
        background:
          $ref: '#/components/schemas/CredentialSchemaBackgroundPropertiesRestDTO'
        code:
          $ref: '#/components/schemas/CredentialSchemaCodePropertiesRestDTO'
        logo:
          $ref: '#/components/schemas/CredentialSchemaLogoPropertiesRestDTO'
        pictureAttribute:
          type: string
        primaryAttribute:
          type: string
        secondaryAttribute:
          type: string
      additionalProperties: false
    ImportCredentialSchemaRequestRestDTO:
      type: object
      required:
      - schema
      properties:
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        schema:
          $ref: '#/components/schemas/ImportCredentialSchemaRequestSchemaRestDTO'
      additionalProperties: false
    ImportCredentialSchemaRequestSchemaRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - format
      - organisationId
      - claims
      - schemaId
      - importedSourceUrl
      properties:
        allowSuspension:
          type: boolean
        claims:
          type: array
          items:
            $ref: '#/components/schemas/ImportCredentialSchemaClaimSchemaRestDTO'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        dcql:
          $ref: '#/components/schemas/CredentialSchemaDcqlResponseRestDTO'
        format:
          type: string
        id:
          type: string
          format: uuid
        importedSourceUrl:
          type: string
        keyStorageSecurity:
          $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        layoutProperties:
          $ref: '#/components/schemas/ImportCredentialSchemaLayoutPropertiesRestDTO'
        layoutType:
          $ref: '#/components/schemas/CredentialSchemaLayoutType'
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        requiresWalletInstanceAttestation:
          type: boolean
        revocationMethod:
          type: string
        schemaId:
          type: string
        transactionCode:
          $ref: '#/components/schemas/ImportCredentialSchemaTransactionCodeRequestRestDTO'
        translations:
          $ref: '#/components/schemas/CredentialSchemaTranslationsRestDTO'
      additionalProperties: false
    ImportCredentialSchemaTransactionCodeRequestRestDTO:
      type: object
      required:
      - type
      - length
      properties:
        description:
          type: string
        length:
          type: integer
          format: int32
          minimum: 0
        type:
          $ref: '#/components/schemas/TransactionCodeTypeRestEnum'
      additionalProperties: false
    ImportCredentialSchemaV2FormatRestDTO:
      type: object
      required:
      - format
      - schemaId
      properties:
        format:
          $ref: '#/components/schemas/CredentialFormat'
          description: Credential format identifier from the system configuration.
        schemaId:
          type: string
          description: Schema identifier for this format (e.g. DocType for mdoc, vct for SD-JWT VC).
      additionalProperties: false
    ImportCredentialSchemaV2RequestRestDTO:
      type: object
      required:
      - schema
      properties:
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        schema:
          $ref: '#/components/schemas/ImportCredentialSchemaV2RequestSchemaRestDTO'
      additionalProperties: false
    ImportCredentialSchemaV2RequestSchemaRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - formats
      - organisationId
      - claims
      - importedSourceUrl
      properties:
        allowRevocation:
          type: boolean
          description: If `true`, credentials issued with this schema can be revoked.
        allowSuspension:
          type: boolean
        batchSize:
          type: integer
          format: int32
          description: Minimum batch size for issuance. Must be at least 2 if specified.
        claims:
          type: array
          items:
            $ref: '#/components/schemas/ImportCredentialSchemaClaimSchemaRestDTO'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        embeddedDisclosurePolicy:
          $ref: '#/components/schemas/DisclosurePolicy'
          description: |-
            An optional disclosure policy embedded in the credential schema.
            When present, the policy is transmitted to the wallet as part of
            credential metadata. Wallets evaluate this policy against incoming
            verifier requests and warn the holder if a violation is detected. See
            [Embedded Disclosure Policy](https://docs.procivis.ch/issue/embedded-disclosure-policy).
        formats:
          type: array
          items:
            $ref: '#/components/schemas/ImportCredentialSchemaV2FormatRestDTO'
          description: List of credential formats supported by this schema. At least one entry required.
        id:
          type: string
          format: uuid
        importedSourceUrl:
          type: string
        keyStorageSecurity:
          $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        layoutProperties:
          $ref: '#/components/schemas/ImportCredentialSchemaLayoutPropertiesRestDTO'
        layoutType:
          $ref: '#/components/schemas/CredentialSchemaLayoutType'
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        requiresWalletInstanceAttestation:
          type: boolean
        transactionCode:
          $ref: '#/components/schemas/ImportCredentialSchemaTransactionCodeRequestRestDTO'
        translations:
          $ref: '#/components/schemas/CredentialSchemaTranslationsRestDTO'
          description: Translations for the credential schema name and optional description.
      additionalProperties: false
    ImportProofSchemaClaimSchemaRestDTO:
      type: object
      required:
      - id
      - requested
      - required
      - key
      - dataType
      - array
      properties:
        array:
          type: boolean
        claims:
          type: array
          items:
            $ref: '#/components/schemas/ImportProofSchemaClaimSchemaRestDTO'
        dataType:
          type: string
          example: STRING
        id:
          type: string
          format: uuid
        key:
          type: string
        requested:
          type: boolean
        required:
          type: boolean
      additionalProperties: false
    ImportProofSchemaCredentialSchemaRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - format
      - importedSourceUrl
      - schemaId
      properties:
        allowSuspension:
          type: boolean
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        deletedAt:
          type: string
          format: date-time
        format:
          type: string
        id:
          type: string
          format: uuid
        importedSourceUrl:
          type: string
        keyStorageSecurity:
          $ref: '#/components/schemas/KeyStorageSecurityRestEnum'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        layoutProperties:
          $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
        layoutType:
          $ref: '#/components/schemas/CredentialSchemaLayoutType'
        name:
          type: string
        requiresWalletInstanceAttestation:
          type: boolean
        revocationMethod:
          type: string
        schemaId:
          type: string
        translations:
          $ref: '#/components/schemas/CredentialClaimSchemaTranslationsRestDTO'
      additionalProperties: false
    ImportProofSchemaInputSchemaRestDTO:
      type: object
      required:
      - claimSchemas
      - credentialSchema
      properties:
        claimSchemas:
          type: array
          items:
            $ref: '#/components/schemas/ImportProofSchemaClaimSchemaRestDTO'
        credentialSchema:
          $ref: '#/components/schemas/ImportProofSchemaCredentialSchemaRestDTO'
      additionalProperties: false
    ImportProofSchemaRequestRestDTO:
      type: object
      required:
      - schema
      properties:
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        schema:
          $ref: '#/components/schemas/ImportProofSchemaRestDTO'
      additionalProperties: false
    ImportProofSchemaRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - importedSourceUrl
      - organisationId
      - expireDuration
      - proofInputSchemas
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        expireDuration:
          type: integer
          format: int32
          minimum: 0
        id:
          $ref: '#/components/schemas/ProofSchemaId'
        importedSourceUrl:
          type: string
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        proofInputSchemas:
          type: array
          items:
            $ref: '#/components/schemas/ImportProofSchemaInputSchemaRestDTO'
      additionalProperties: false
    InitiateIssuanceAuthorizationDetailRestDTO:
      type: object
      required:
      - type
      - credentialConfigurationId
      properties:
        credentialConfigurationId:
          type: string
        type:
          type: string
    InitiateIssuanceRequestRestDTO:
      type: object
      required:
      - protocol
      - issuer
      - clientId
      properties:
        authorizationDetails:
          type: array
          items:
            $ref: '#/components/schemas/InitiateIssuanceAuthorizationDetailRestDTO'
          description: OpenID4VCI authorization request parameter.
        clientId:
          type: string
          description: OpenID4VCI authorization request parameter.
        issuer:
          type: string
          description: OpenID4VCI authorization request parameter.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Organization to place the issued credential into.
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        protocol:
          type: string
          description: Selected issuance protocol.
        redirectUri:
          type: string
          description: OpenID4VCI authorization request parameter.
        scope:
          type: array
          items:
            type: string
          description: OpenID4VCI authorization request parameter.
      additionalProperties: false
    InitiateIssuanceResponseRestDTO:
      type: object
      required:
      - url
      properties:
        url:
          type: string
          description: Authorization endpoint URL
    InteractionId:
      type: string
      format: uuid
      description: Interaction ID for issuance and verification
    InteractionTypeRestEnum:
      type: string
      enum:
      - ISSUANCE
      - VERIFICATION
    IssuanceAcceptRequestRestDTO:
      type: object
      required:
      - interactionId
      properties:
        didId:
          $ref: '#/components/schemas/DidId'
        holderWalletUnitId:
          type: string
          format: uuid
          description: Deprecated. The holder wallet instance registered for the linked organisation is used
          deprecated: true
        identifierId:
          $ref: '#/components/schemas/IdentifierId'
        interactionId:
          $ref: '#/components/schemas/InteractionId'
          description: The identifier associated with the particular issuance.
        keyId:
          $ref: '#/components/schemas/KeyId'
          description: |-
            If you are using a DID and it supports multiple keys for authentication,
            specify which key to use. If no key is specified the first suitable key listed
            will be used.
        txCode:
          type: string
      additionalProperties: false
    IssuanceRefreshResponseRestDTO:
      type: object
      required:
      - ids
      properties:
        ids:
          type: array
          items:
            $ref: '#/components/schemas/CredentialId'
    IssuanceRejectRequestRestDTO:
      type: object
      required:
      - interactionId
      properties:
        interactionId:
          $ref: '#/components/schemas/InteractionId'
      additionalProperties: false
    IssueWalletUnitAttestationRequestRestDTO:
      type: object
      properties:
        wia:
          type: array
          items:
            $ref: '#/components/schemas/IssueWiaRequestRestDTO'
        wua:
          type: array
          items:
            $ref: '#/components/schemas/IssueWuaRequestRestDTO'
      additionalProperties: false
    IssueWalletUnitAttestationResponseRestDTO:
      type: object
      properties:
        wia:
          type: array
          items:
            type: string
        wua:
          type: array
          items:
            type: string
    IssueWiaRequestRestDTO:
      type: object
      required:
      - proof
      properties:
        proof:
          type: string
      additionalProperties: false
    IssueWuaRequestRestDTO:
      type: object
      required:
      - proof
      - securityLevel
      properties:
        proof:
          type: string
        securityLevel:
          $ref: '#/components/schemas/KeyStorageSecurityLevelRestEnum'
      additionalProperties: false
    IssuerSchemaStatsResponseRestDTO:
      type: object
      required:
      - credentialSchemaId
      - credentialSchemaName
      - current
      properties:
        credentialSchemaId:
          $ref: '#/components/schemas/CredentialSchemaId'
        credentialSchemaName:
          type: string
        current:
          $ref: '#/components/schemas/IssuerStatsRestDTO'
          description: Statistics for the selected reporting period.
        previous:
          $ref: '#/components/schemas/IssuerStatsRestDTO'
          description: Comparison statistics for the equivalent preceding period.
    IssuerStatsRestDTO:
      type: object
      required:
      - issuedCount
      - suspendedCount
      - reactivatedCount
      - revokedCount
      - errorCount
      properties:
        errorCount:
          type: integer
          minimum: 0
        issuedCount:
          type: integer
          minimum: 0
        reactivatedCount:
          type: integer
          minimum: 0
        revokedCount:
          type: integer
          minimum: 0
        suspendedCount:
          type: integer
          minimum: 0
    IssuerTimelinesRestDTO:
      type: object
      required:
      - offered
      - issued
      - rejected
      - suspended
      - reactivated
      - revoked
      - error
      properties:
        error:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
        issued:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
        offered:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
        reactivated:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
        rejected:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
        revoked:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
        suspended:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
    JsonLDContextResponseRestDTO:
      type: object
      required:
      - '@context'
      properties:
        '@context':
          $ref: '#/components/schemas/JsonLDContextRestDTO'
    JsonLDContextRestDTO:
      type: object
      required:
      - '@protected'
      - id
      - type
      properties:
        '@protected':
          type: boolean
        '@version':
          type:
          - number
          - 'null'
          format: double
        id:
          type: string
        type:
          type: string
      additionalProperties:
        $ref: '#/components/schemas/JsonLDEntityRestDTO'
    JsonLDEntityRestDTO:
      oneOf:
      - $ref: '#/components/schemas/JsonLDInlineEntityRestDTO'
      - $ref: '#/components/schemas/JsonLDNestedEntityRestDTO'
    JsonLDInlineEntityRestDTO:
      type: object
      required:
      - '@id'
      properties:
        '@context':
          $ref: '#/components/schemas/JsonLDContextRestDTO'
        '@id':
          type: string
        '@type':
          type: string
    JsonLDNestedContextRestDTO:
      type: object
      required:
      - '@protected'
      - id
      - type
      properties:
        '@protected':
          type: boolean
        id:
          type: string
        type:
          type: string
      additionalProperties:
        $ref: '#/components/schemas/JsonLDEntityRestDTO'
    JsonLDNestedEntityRestDTO:
      type: object
      required:
      - '@context'
      - '@id'
      properties:
        '@context':
          $ref: '#/components/schemas/JsonLDNestedContextRestDTO'
        '@id':
          type: string
    JwkUse:
      oneOf:
      - type: string
        enum:
        - sig
      - type: string
        enum:
        - enc
      - type: object
        required:
        - Unknown
        properties:
          Unknown:
            type: string
      description: 'see: <https://datatracker.ietf.org/doc/html/rfc7517#section-4.2>'
    Jwks:
      type: object
      required:
      - keys
      properties:
        keys:
          type: array
          items:
            $ref: '#/components/schemas/PublicJwk'
    KeyGenerateCSRRequestProfileRest:
      type: string
      enum:
      - GENERIC
      - MDL
      - CA
    KeyGenerateCSRRequestRestDTO:
      type: object
      required:
      - profile
      - subject
      properties:
        profile:
          $ref: '#/components/schemas/KeyGenerateCSRRequestProfileRest'
        subject:
          $ref: '#/components/schemas/KeyGenerateCSRRequestSubjectRestDTO'
        subjectAlternativeName:
          $ref: '#/components/schemas/KeyGenerateCSRRequestSubjectAlternativeNameRestDTO'
          description: |-
            Optional Subject Alternative Name (SAN) configuration for the
            certificate. Use to specify alternative identifiers such as
            DNS names.
      additionalProperties: false
    KeyGenerateCSRRequestSubjectAlternativeNameRestDTO:
      type: object
      properties:
        DNSName:
          type: array
          items:
            type: string
          description: Provide the DNS name(s). Accepts wildcards.
      additionalProperties: false
    KeyGenerateCSRRequestSubjectRestDTO:
      type: object
      properties:
        commonName:
          type: string
          description: Common name to include in the CSR, typically the domain name of the organization.
        countryName:
          type: string
          description: Two-letter country code.
        localityName:
          type: string
        organisationName:
          type: string
        serialNumber:
          type: string
        stateOrProvinceName:
          type: string
      additionalProperties: false
    KeyGenerateCSRResponseRestDTO:
      type: object
      required:
      - content
      properties:
        content:
          type: string
    KeyId:
      type: string
      format: uuid
    KeyListItemResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - publicKey
      - keyType
      - storageType
      - isRemote
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/KeyId'
        isRemote:
          type: boolean
        keyType:
          type: string
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        publicKey:
          type: string
        storageType:
          type: string
    KeyRequestRestDTO:
      type: object
      required:
      - keyType
      - keyParams
      - name
      - storageType
      - storageParams
      properties:
        keyParams:
          type: object
          description: The parameters passed into the key algorithm.
        keyType:
          type: string
          description: |-
            Choose which key algorithm to use to create the key pair. Check
            the `keyAlgorithm` object of the configuration for supported options
            and reference the configuration instance.
          enum:
          - EDDSA
          - ECDSA
          - BBS_PLUS
          - ML_DSA
        name:
          type: string
          description: Must be unique within the organization.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        storageParams:
          type: object
          description: The parameters passed into the storage type.
        storageType:
          type: string
          description: |-
            Choose a key storage type. Check the `keyStorage`
            object of the configuration for supported options and reference the
            configuration instance.
          enum:
          - INTERNAL
          - SIGN8
      additionalProperties: false
    KeyResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - organisationId
      - name
      - publicKey
      - keyType
      - storageType
      - isRemote
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/KeyId'
        isRemote:
          type: boolean
        keyType:
          type: string
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        publicKey:
          type: string
        storageType:
          type: string
    KeyRoleRestEnum:
      type: string
      enum:
      - AUTHENTICATION
      - ASSERTION_METHOD
      - KEY_AGREEMENT
      - CAPABILITY_INVOCATION
      - CAPABILITY_DELEGATION
      - UPDATE_KEY
    KeyStorageSecurityLevelRestEnum:
      type: string
      enum:
      - iso_18045_high
      - iso_18045_moderate
      - iso_18045_enhanced-basic
      - iso_18045_basic
    KeyStorageSecurityRestEnum:
      type: string
      enum:
      - HIGH
      - MODERATE
      - ENHANCED_BASIC
      - BASIC
    LdpVcAlgs:
      type: object
      properties:
        proof_type:
          type: array
          items:
            type: string
      additionalProperties: false
    MdocAlgs:
      type: object
      properties:
        deviceauth_alg_values:
          type: array
          items:
            type: integer
            format: int32
        issuerauth_alg_values:
          type: array
          items:
            type: integer
            format: int32
      additionalProperties: false
    MdocMsoValidityResponseRestDTO:
      type: object
      required:
      - expiration
      - nextUpdate
      - lastUpdate
      properties:
        expiration:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        lastUpdate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        nextUpdate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
    MsoMdocMeta:
      type: object
      required:
      - doctype_value
      properties:
        doctype_value:
          type: string
    MultiLangString:
      type: object
      required:
      - lang
      - value
      properties:
        lang:
          type: string
        value:
          type: string
    MultiLangUri:
      type: object
      required:
      - lang
      - uriValue
      properties:
        lang:
          type: string
        uriValue:
          type: string
    NewOrganisationEntryRestDTO:
      type: object
      required:
      - organisation
      - createdDate
      properties:
        createdDate:
          type: string
          format: date-time
        organisation:
          $ref: '#/components/schemas/OrganisationId'
    NoIncludesSupported:
      type: object
    OAuthAuthorizationServerMetadataRestDTO:
      type: object
      required:
      - issuer
      properties:
        authorization_endpoint:
          type: string
        challenge_endpoint:
          type: string
        client_attestation_pop_signing_alg_values_supported:
          type: array
          items:
            type: string
        client_attestation_signing_alg_values_supported:
          type: array
          items:
            type: string
        code_challenge_methods_supported:
          type: array
          items:
            type: string
        dpop_signing_alg_values_supported:
          type: array
          items:
            type: string
        grant_types_supported:
          type: array
          items:
            type: string
        issuer:
          type: string
        jwks_uri:
          type: string
        pushed_authorization_request_endpoint:
          type: string
        response_types_supported:
          type: array
          items:
            type: string
        scopes_supported:
          type: array
          items:
            type: string
        token_endpoint:
          type: string
        token_endpoint_auth_methods_supported:
          type: array
          items:
            $ref: '#/components/schemas/TokenEndpointAuthMethod'
    OpenID4VCIAuthorizationCodeGrantRestDTO:
      type: object
      properties:
        authorization_server:
          type: string
        issuer_state:
          type: string
    OpenID4VCICredentialDefinitionRequestRestDTO:
      type: object
      required:
      - type
      - credentialSubject
      properties:
        credentialSubject:
          type: object
        type:
          type: array
          items:
            type: string
    OpenID4VCICredentialDefinitionRestDTO:
      type: object
      required:
      - type
      properties:
        '@context':
          type: array
          items:
            type: string
        type:
          type: array
          items:
            type: string
    OpenID4VCICredentialMetadataClaimResponseRestDTO:
      allOf:
      - type: object
        additionalProperties: {}
        propertyNames:
          type: string
      - type: object
        required:
        - path
        properties:
          display:
            type: array
            items:
              $ref: '#/components/schemas/OpenID4VCIIssuerMetadataClaimDisplayRestDTO'
          mandatory:
            type: boolean
          path:
            type: array
            items:
              type: string
    OpenID4VCICredentialMetadataResponseRestDTO:
      type: object
      properties:
        claims:
          type: array
          items:
            $ref: '#/components/schemas/OpenID4VCICredentialMetadataClaimResponseRestDTO'
        display:
          type: array
          items:
            $ref: '#/components/schemas/OpenID4VCIIssuerMetadataCredentialSupportedDisplayRestDTO'
    OpenID4VCICredentialRequestIdentifierRest:
      oneOf:
      - type: object
        required:
        - credential_configuration_id
        properties:
          credential_configuration_id:
            type: string
      - type: object
        required:
        - credential_identifier
        properties:
          credential_identifier:
            type: string
    OpenID4VCICredentialRequestProofsRest:
      oneOf:
      - type: object
        required:
        - jwt
        properties:
          jwt:
            type: array
            items:
              type: string
      - type: object
        required:
        - di_vp
        properties:
          di_vp:
            type: array
            items:
              type: string
      - type: object
        required:
        - attestation
        properties:
          attestation:
            type: array
            items:
              type: string
    OpenID4VCICredentialResponseEncryptionRequestRestDTO:
      type: object
      required:
      - jwk
      - enc
      properties:
        enc:
          $ref: '#/components/schemas/EncryptionAlgorithm'
        jwk:
          $ref: '#/components/schemas/PublicJwk'
        zip:
          $ref: '#/components/schemas/CompressionAlgorithm'
    OpenID4VCICredentialResponseEntryRestDTO:
      type: object
      required:
      - credential
      properties:
        credential:
          type: string
    OpenID4VCIErrorResponseRestDTO:
      type: object
      required:
      - error
      properties:
        error:
          $ref: '#/components/schemas/OpenID4VCIErrorRestEnum'
        error_description:
          type: string
    OpenID4VCIErrorRestEnum:
      oneOf:
      - type: string
        enum:
        - unsupported_grant_type
      - type: string
        enum:
        - invalid_grant
      - type: string
        enum:
        - invalid_request
      - type: string
        enum:
        - invalid_token
      - type: string
        enum:
        - invalid_nonce
      - type: string
        enum:
        - invalid_or_missing_proof
      - type: string
        enum:
        - unsupported_credential_format
      - type: string
        enum:
        - unsupported_credential_type
      - type: string
        enum:
        - credential_request_denied
      - type: string
        enum:
        - invalid_notification_id
      - type: string
        enum:
        - invalid_notification_request
      - type: object
        required:
        - runtime_error
        properties:
          runtime_error:
            type: string
    OpenID4VCIFinal1CredentialOfferRestDTO:
      type: object
      required:
      - credential_issuer
      - credential_configuration_ids
      - grants
      properties:
        credential_configuration_ids:
          type: array
          items:
            type: string
        credential_issuer:
          type: string
        grants:
          $ref: '#/components/schemas/OpenID4VCIGrantsRestDTO'
    OpenID4VCIFinal1CredentialRequestRestDTO:
      allOf:
      - $ref: '#/components/schemas/OpenID4VCICredentialRequestIdentifierRest'
      - type: object
        properties:
          credential_response_encryption:
            $ref: '#/components/schemas/OpenID4VCICredentialResponseEncryptionRequestRestDTO'
          proofs:
            $ref: '#/components/schemas/OpenID4VCICredentialRequestProofsRest'
    OpenID4VCIFinal1CredentialResponseRestDTO:
      type: object
      properties:
        credentials:
          type: array
          items:
            $ref: '#/components/schemas/OpenID4VCICredentialResponseEntryRestDTO'
        interval:
          type: integer
          format: int64
          minimum: 0
        notification_id:
          type: string
        redirectUri:
          type: string
        transaction_id:
          type: string
    OpenID4VCIGrantsRestDTO:
      oneOf:
      - type: object
        required:
        - urn:ietf:params:oauth:grant-type:pre-authorized_code
        properties:
          urn:ietf:params:oauth:grant-type:pre-authorized_code:
            $ref: '#/components/schemas/OpenID4VCIPreAuthorizedGrantRestDTO'
      - type: object
        required:
        - authorization_code
        properties:
          authorization_code:
            $ref: '#/components/schemas/OpenID4VCIAuthorizationCodeGrantRestDTO'
    OpenID4VCIIssuerMetadataBatchIssuanceRestDTO:
      type: object
      required:
      - batch_size
      properties:
        batch_size:
          type: integer
          format: int32
          minimum: 0
    OpenID4VCIIssuerMetadataClaimDisplayRestDTO:
      type: object
      properties:
        locale:
          type: string
        name:
          type: string
    OpenID4VCIIssuerMetadataCredentialMetadataImageRestDTO:
      type: object
      required:
      - uri
      properties:
        uri:
          type: string
    OpenID4VCIIssuerMetadataCredentialMetadataProcivisDesignRestDTO:
      type: object
      properties:
        code_attribute:
          type: string
        code_type:
          $ref: '#/components/schemas/CredentialSchemaCodeTypeRestEnum'
        picture_attribute:
          type: string
        primary_attribute:
          type: string
        secondary_attribute:
          type: string
    OpenID4VCIIssuerMetadataCredentialSupportedDisplayRestDTO:
      type: object
      required:
      - name
      properties:
        background_color:
          type: string
        background_image:
          $ref: '#/components/schemas/OpenID4VCIIssuerMetadataCredentialMetadataImageRestDTO'
        description:
          type: string
        locale:
          type: string
        logo:
          $ref: '#/components/schemas/OpenID4VCIIssuerMetadataLogoRestDTO'
        name:
          type: string
        procivis_design:
          $ref: '#/components/schemas/OpenID4VCIIssuerMetadataCredentialMetadataProcivisDesignRestDTO'
        text_color:
          type: string
    OpenID4VCIIssuerMetadataCredentialSupportedResponseRestDTO:
      type: object
      required:
      - format
      properties:
        credential_definition:
          $ref: '#/components/schemas/OpenID4VCICredentialDefinitionRestDTO'
        credential_metadata:
          $ref: '#/components/schemas/OpenID4VCICredentialMetadataResponseRestDTO'
        credential_signing_alg_values_supported:
          type: array
          items:
            $ref: '#/components/schemas/CredentialSigningAlgValueRestEnum'
        cryptographic_binding_methods_supported:
          type: array
          items:
            type: string
        disclosure_policy:
          $ref: '#/components/schemas/DisclosurePolicy'
        doctype:
          type: string
        format:
          type: string
        proof_types_supported:
          type: object
        scope:
          type: string
        vct:
          type: string
    OpenID4VCIIssuerMetadataDisplayResponseRestDTO:
      type: object
      required:
      - name
      properties:
        locale:
          type: string
        logo:
          $ref: '#/components/schemas/OpenID4VCIIssuerMetadataLogoRestDTO'
        name:
          type: string
    OpenID4VCIIssuerMetadataLogoRestDTO:
      type: object
      required:
      - uri
      properties:
        alt_text:
          type: string
        uri:
          type: string
    OpenID4VCIIssuerMetadataResponseRestDTO:
      type: object
      required:
      - credential_issuer
      - credential_endpoint
      - credential_configurations_supported
      properties:
        authorization_servers:
          type: array
          items:
            type: string
        batch_credential_issuance:
          $ref: '#/components/schemas/OpenID4VCIIssuerMetadataBatchIssuanceRestDTO'
        credential_configurations_supported:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/OpenID4VCIIssuerMetadataCredentialSupportedResponseRestDTO'
          propertyNames:
            type: string
        credential_endpoint:
          type: string
        credential_issuer:
          type: string
        display:
          type: array
          items:
            $ref: '#/components/schemas/OpenID4VCIIssuerMetadataDisplayResponseRestDTO'
        nonce_endpoint:
          type: string
        notification_endpoint:
          type: string
    OpenID4VCINonceResponseRestDTO:
      type: object
      required:
      - c_nonce
      properties:
        c_nonce:
          type: string
    OpenID4VCINotificationEventRest:
      type: string
      enum:
      - credential_accepted
      - credential_failure
      - credential_deleted
    OpenID4VCINotificationRequestRestDTO:
      type: object
      required:
      - notification_id
      - event
      properties:
        event:
          $ref: '#/components/schemas/OpenID4VCINotificationEventRest'
        event_description:
          type:
          - string
          - 'null'
        notification_id:
          type: string
    OpenID4VCIPreAuthorizedGrantRestDTO:
      type: object
      required:
      - pre-authorized_code
      properties:
        authorization_server:
          type: string
        pre-authorized_code:
          type: string
        tx_code:
          $ref: '#/components/schemas/OpenID4VCITxCodeRestDTO'
    OpenID4VCISwiyuIssuerMetadataCredentialSupportedResponseRestDTO:
      type: object
      required:
      - format
      - display
      - claims
      properties:
        claims:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/OpenID4VCICredentialMetadataClaimResponseRestDTO'
          propertyNames:
            type: string
        credential_definition:
          $ref: '#/components/schemas/OpenID4VCICredentialDefinitionRestDTO'
        credential_metadata:
          $ref: '#/components/schemas/OpenID4VCICredentialMetadataResponseRestDTO'
        credential_signing_alg_values_supported:
          type: array
          items:
            $ref: '#/components/schemas/CredentialSigningAlgValueRestEnum'
        cryptographic_binding_methods_supported:
          type: array
          items:
            type: string
        display:
          type: array
          items:
            $ref: '#/components/schemas/OpenID4VCIIssuerMetadataCredentialSupportedDisplayRestDTO'
        doctype:
          type: string
        format:
          type: string
        proof_types_supported:
          type: object
        scope:
          type: string
        vct:
          type: string
    OpenID4VCISwiyuIssuerMetadataResponseRestDTO:
      type: object
      required:
      - credential_issuer
      - credential_endpoint
      - credential_configurations_supported
      properties:
        authorization_servers:
          type: array
          items:
            type: string
        credential_configurations_supported:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/OpenID4VCISwiyuIssuerMetadataCredentialSupportedResponseRestDTO'
          propertyNames:
            type: string
        credential_endpoint:
          type: string
        credential_issuer:
          type: string
        display:
          type: array
          items:
            $ref: '#/components/schemas/OpenID4VCIIssuerMetadataDisplayResponseRestDTO'
        nonce_endpoint:
          type: string
        notification_endpoint:
          type: string
    OpenID4VCITokenRequestRestDTO:
      type: object
      required:
      - grant_type
      properties:
        grant_type:
          type: string
          example: urn:ietf:params:oauth:grant-type:pre-authorized_code
        pre-authorized_code:
          type: string
        refresh_token:
          type: string
        tx_code:
          type: string
    OpenID4VCITokenResponseRestDTO:
      type: object
      required:
      - access_token
      - token_type
      - expires_in
      properties:
        access_token:
          type: string
          example: secret
        expires_in:
          $ref: '#/components/schemas/TimestampRest'
        refresh_token:
          type: string
          example: secret
        refresh_token_expires_in:
          $ref: '#/components/schemas/TimestampRest'
        token_type:
          type: string
    OpenID4VCITxCodeInputModeRestEnum:
      type: string
      enum:
      - numeric
      - text
    OpenID4VCITxCodeRestDTO:
      type: object
      properties:
        description:
          type: string
        input_mode:
          $ref: '#/components/schemas/OpenID4VCITxCodeInputModeRestEnum'
        length:
          type: integer
          format: int64
    OpenID4VPDirectPostRequestRestDTO:
      allOf:
      - $ref: '#/components/schemas/VpSubmissionDataRestDTO'
      - type: object
        properties:
          state:
            oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/InteractionId'
    OpenID4VPDirectPostResponseRestDTO:
      type: object
      properties:
        redirect_uri:
          type: string
    OrganisationId:
      type: string
      format: uuid
    OrganisationListItemResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        deactivatedAt:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          type: string
          format: uuid
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        parentOrganisation:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            The parent organization this organization inherits policy-level
            configuration from, if any.
        walletProvider:
          $ref: '#/components/schemas/WalletProviderDetailResponseRestDTO'
    OrganisationOperationsCountRestDTO:
      type: object
      required:
      - organisation
      - current
      properties:
        current:
          type: integer
          description: Issuance (or verification) count for the reporting period.
          minimum: 0
        organisation:
          $ref: '#/components/schemas/OrganisationId'
        previous:
          type: integer
          description: |-
            Issuance (or verification) count for the equivalent preceding
            period.
          minimum: 0
    OrganisationStatsResponseRestDTO:
      type: object
      required:
      - current
      - timelines
      properties:
        current:
          $ref: '#/components/schemas/OrganisationSummaryStatsRestDTO'
          description: Statistics for the selected reporting period.
        previous:
          $ref: '#/components/schemas/OrganisationSummaryStatsRestDTO'
          description: Comparison statistics for the equivalent preceding period.
        timelines:
          $ref: '#/components/schemas/OrganisationTimelinesRestDTO'
          description: |-
            Detailed statistics over time for the reporting period. Each
            entry contains a timestamp and count; the interval between
            timestamps scales with the length of the reporting period.
    OrganisationSummaryStatsRestDTO:
      type: object
      required:
      - issuanceCount
      - verificationCount
      - credentialLifecycleOperationCount
      properties:
        credentialLifecycleOperationCount:
          type: integer
          description: |-
            Number of credential suspensions, reactivations, and revocations
            in the reporting period.
          minimum: 0
        issuanceCount:
          type: integer
          description: Number of credentials issued in the reporting period.
          minimum: 0
        verificationCount:
          type: integer
          description: Number of credentials verified in the reporting period.
          minimum: 0
    OrganisationTimelinesRestDTO:
      type: object
      required:
      - issuer
      - verifier
      properties:
        issuer:
          $ref: '#/components/schemas/IssuerTimelinesRestDTO'
          description: Detailed issuance statistics for the reporting period.
        verifier:
          $ref: '#/components/schemas/VerifierTimelinesRestDTO'
          description: Detailed verification statistics for the reporting period.
    PolicyType:
      oneOf:
      - type: object
        required:
        - policy
        properties:
          policy:
            type: string
            enum:
            - none
      - type: object
        required:
        - options
        - policy
        properties:
          options:
            $ref: '#/components/schemas/AllowListOptions'
          policy:
            type: string
            enum:
            - allowList
      - type: object
        required:
        - options
        - policy
        properties:
          options:
            $ref: '#/components/schemas/RootOfTrustOptions'
          policy:
            type: string
            enum:
            - rootOfTrust
    PostalAddress:
      type: object
      required:
      - lang
      - Country
      - StreetAddress
      properties:
        Country:
          type: string
        Locality:
          type:
          - string
          - 'null'
        PostalCode:
          type:
          - string
          - 'null'
        StateOrProvince:
          type:
          - string
          - 'null'
        StreetAddress:
          type: string
        lang:
          type: string
    PresentationDefinitionV2ResponseRestDTO:
      type: object
      required:
      - credentialQueries
      - credentialSets
      properties:
        credentialQueries:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/CredentialQueryResponseRestDTO'
          propertyNames:
            type: string
        credentialSets:
          type: array
          items:
            $ref: '#/components/schemas/CredentialSetResponseRestDTO'
    PresentationFormat:
      oneOf:
      - $ref: '#/components/schemas/EmptyEntry'
      - $ref: '#/components/schemas/SdJwtVcAlgs'
      - $ref: '#/components/schemas/LdpVcAlgs'
      - $ref: '#/components/schemas/W3CJwtAlgs'
      - $ref: '#/components/schemas/W3CLdpAlgs'
      - $ref: '#/components/schemas/MdocAlgs'
      - $ref: '#/components/schemas/GenericAlgs'
      - {}
    PresentationRejectRequestRestDTO:
      type: object
      required:
      - interactionId
      properties:
        interactionId:
          $ref: '#/components/schemas/InteractionId'
          description: The identifier associated with a particular verification interaction.
      additionalProperties: false
    PresentationSubmitV2CredentialRequestRestDTO:
      type: object
      required:
      - credentialId
      properties:
        credentialId:
          $ref: '#/components/schemas/CredentialId'
          description: Submitted credential.
        userSelections:
          type: array
          items:
            type: string
          description: Path of claims that were optionally selected by the user.
      additionalProperties: false
    PresentationSubmitV2RequestRestDTO:
      type: object
      required:
      - interactionId
      - submission
      properties:
        interactionId:
          $ref: '#/components/schemas/InteractionId'
        submission:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/PresentationSubmitV2CredentialRequestRestDTO'
          propertyNames:
            type: string
      additionalProperties: false
    ProofClaimRestDTO:
      type: object
      required:
      - schema
      - path
      properties:
        path:
          type: string
        schema:
          $ref: '#/components/schemas/ProofClaimSchemaResponseRestDTO'
        value:
          $ref: '#/components/schemas/ProofClaimValueRestDTO'
    ProofClaimSchemaResponseRestDTO:
      type: object
      description: The set of attributes being requested when using this proof schema.
      required:
      - id
      - requested
      - required
      - key
      - dataType
      - claims
      - array
      properties:
        array:
          type: boolean
        claims:
          type: array
          items:
            $ref: '#/components/schemas/ProofClaimSchemaResponseRestDTO'
        dataType:
          type: string
          description: The type of data accepted for this attribute.
          example: STRING
        id:
          type: string
          format: uuid
        key:
          type: string
        requested:
          type: boolean
          description: Marking attributes that are targeted with proof request
        required:
          type: boolean
          description: Requested as mandatory or optional
    ProofClaimValueRestDTO:
      oneOf:
      - type: string
      - type: array
        items:
          $ref: '#/components/schemas/ProofClaimRestDTO'
    ProofDetailResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - protocol
      - transport
      - state
      - role
      - organisationId
      - proofInputs
      properties:
        claimsRemovedAt:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        completedDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        engagement:
          type: string
        id:
          $ref: '#/components/schemas/ProofId'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        profile:
          type: string
        proofInputs:
          type: array
          items:
            $ref: '#/components/schemas/ProofInputRestDTO'
        protocol:
          type: string
        redirectUri:
          type: string
        requestedDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        retainUntilDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        role:
          $ref: '#/components/schemas/ProofRoleRestEnum'
        schema:
          $ref: '#/components/schemas/GetProofSchemaListItemResponseRestDTO'
        state:
          $ref: '#/components/schemas/ProofStateRestEnum'
        subscriberInformation:
          type: string
        transport:
          type: string
        trustInformation:
          $ref: '#/components/schemas/TrustInformationRestDTO'
          description: Trust information of the verifier, if any.
        verifier:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
        verifierCertificate:
          $ref: '#/components/schemas/CertificateResponseRestDTO'
        webhookDestinationUrl:
          type: string
    ProofId:
      type: string
      format: uuid
    ProofInputRestDTO:
      type: object
      required:
      - claims
      - credentialSchema
      properties:
        claims:
          type: array
          items:
            $ref: '#/components/schemas/ProofClaimRestDTO'
          description: |-
            The set of claims being asserted by the credential shared during the
            proof request.
        credential:
          $ref: '#/components/schemas/GetCredentialResponseRestDTO_CredentialDetailClaimResponseRestDTO'
          description: The credentials exchanged as part of the successfully shared proof.
        credentialSchema:
          $ref: '#/components/schemas/CredentialSchemaListItemResponseRestDTO'
    ProofInputSchemaRequestRestDTO:
      type: object
      required:
      - credentialSchemaId
      - claimSchemas
      properties:
        claimSchemas:
          type: array
          items:
            $ref: '#/components/schemas/ClaimProofSchemaRequestRestDTO'
          description: |-
            Defines the set of attributes being requested when making proof
            requests using this schema.
          minItems: 1
        credentialSchemaId:
          type: string
          format: uuid
          description: |-
            ID of the credential schema from which the `claimSchemas` object
            is assembled.
      additionalProperties: false
    ProofInputSchemaResponseRestDTO:
      type: object
      required:
      - claimSchemas
      - credentialSchema
      properties:
        claimSchemas:
          type: array
          items:
            $ref: '#/components/schemas/ProofClaimSchemaResponseRestDTO'
          description: Defines the set of attributes being requested when making proof requests using this schema.
        credentialSchema:
          $ref: '#/components/schemas/CredentialSchemaListItemResponseRestDTO'
    ProofListItemResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - protocol
      - transport
      - state
      - role
      properties:
        completedDate:
          type: string
          format: date-time
          description: When holder submitted valid proof.
          example: 2023-06-09T14:19:57.000Z
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        engagement:
          type: string
        id:
          $ref: '#/components/schemas/ProofId'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        profile:
          type: string
          description: Profile associated with this proof request
        protocol:
          type: string
          description: Verification protocol used.
        requestedDate:
          type: string
          format: date-time
          description: |-
            When proof request state changed from `PENDING` to `REQUESTED`.
            Not supported in all exchange protocols.
          example: 2023-06-09T14:19:57.000Z
        retainUntilDate:
          type: string
          format: date-time
          description: |-
            Time at which the data shared by the holder for this proof request will be deleted.
            Determined by the `expireDuration` parameter of the proof schema.
          example: 2023-06-09T14:19:57.000Z
        role:
          $ref: '#/components/schemas/ProofRoleRestEnum'
        schema:
          $ref: '#/components/schemas/GetProofSchemaListItemResponseRestDTO'
        state:
          $ref: '#/components/schemas/ProofStateRestEnum'
        transport:
          type: string
          description: Transport protocol used.
        verifier:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
        webhookDestinationUrl:
          type: string
    ProofRoleRestEnum:
      type: string
      description: The role the system has in relation to the proof.
      enum:
      - HOLDER
      - VERIFIER
    ProofSchemaId:
      type: string
      format: uuid
    ProofSchemaShareResponseRestDTO:
      type: object
      required:
      - url
      properties:
        url:
          type: string
    ProofStateRestEnum:
      type: string
      description: The state representation of the proof request in the system.
      enum:
      - CREATED
      - PENDING
      - REQUESTED
      - ACCEPTED
      - REJECTED
      - RETRACTED
      - ERROR
      - INTERACTION_EXPIRED
    ProposeProofRequestRestDTO:
      type: object
      required:
      - protocol
      - engagement
      properties:
        engagement:
          type: array
          items:
            type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: |-
            Required when not using STS authentication mode. Specifies the
            organizational context for this operation. When using STS
            authentication, this value is derived from the token.
        protocol:
          type: string
        uiMessage:
          type: string
      additionalProperties: false
    ProposeProofResponseRestDTO:
      type: object
      required:
      - proofId
      - interactionId
      properties:
        interactionId:
          $ref: '#/components/schemas/InteractionId'
        proofId:
          $ref: '#/components/schemas/ProofId'
        url:
          type:
          - string
          - 'null'
    ProviderTrustCollectionRestDTO:
      type: object
      required:
      - id
      - name
      - logo
      - displayName
      - description
      properties:
        description:
          type: array
          items:
            $ref: '#/components/schemas/DisplayNameRestDTO'
        displayName:
          type: array
          items:
            $ref: '#/components/schemas/DisplayNameRestDTO'
        id:
          $ref: '#/components/schemas/TrustCollectionId'
        logo:
          type: string
        name:
          type: string
    PublicJwk:
      oneOf:
      - allOf:
        - $ref: '#/components/schemas/PublicJwkEc'
        - type: object
          required:
          - kty
          properties:
            kty:
              type: string
              enum:
              - EC
      - allOf:
        - $ref: '#/components/schemas/PublicJwkRsa'
        - type: object
          required:
          - kty
          properties:
            kty:
              type: string
              enum:
              - RSA
      - allOf:
        - $ref: '#/components/schemas/PublicJwkEc'
        - type: object
          required:
          - kty
          properties:
            kty:
              type: string
              enum:
              - OKP
      - allOf:
        - $ref: '#/components/schemas/PublicJwkOct'
        - type: object
          required:
          - kty
          properties:
            kty:
              type: string
              enum:
              - oct
      - allOf:
        - $ref: '#/components/schemas/PublicJwkAkp'
          description: Specified in https://www.ietf.org/archive/id/draft-ietf-cose-dilithium-11.html
        - type: object
          required:
          - kty
          properties:
            kty:
              type: string
              enum:
              - AKP
        description: Specified in https://www.ietf.org/archive/id/draft-ietf-cose-dilithium-11.html
    PublicJwkAkp:
      type: object
      required:
      - alg
      - pub
      properties:
        alg:
          type: string
        kid:
          type: string
        pub:
          type: string
        use:
          $ref: '#/components/schemas/JwkUse'
    PublicJwkEc:
      type: object
      required:
      - crv
      - x
      properties:
        alg:
          type: string
        crv:
          type: string
        kid:
          type: string
        use:
          $ref: '#/components/schemas/JwkUse'
        x:
          type: string
        y:
          type: string
    PublicJwkOct:
      type: object
      required:
      - k
      properties:
        alg:
          type: string
        k:
          type: string
        kid:
          type: string
        use:
          $ref: '#/components/schemas/JwkUse'
    PublicJwkRsa:
      type: object
      required:
      - e
      - n
      properties:
        alg:
          type: string
        e:
          type: string
        kid:
          type: string
        n:
          type: string
        use:
          $ref: '#/components/schemas/JwkUse'
    QesAuthorizeRequestRestDTO:
      type: object
      required:
      - provider
      - document
      properties:
        document:
          type: string
          description: Base64-encoded document to be signed.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: Organizational context. Optional when resolvable from STS auth.
        provider:
          type: string
          description: Configured document signer name (for example, `SIGN8`).
        redirectUri:
          type: string
          description: |-
            Wallet deep link to which the provider redirects after authorization,
            appending the authorization `code`. When omitted, the configured
            default is used.
      additionalProperties: false
    QesAuthorizeResponseRestDTO:
      type: object
      required:
      - authorizationUrl
      - codeVerifier
      properties:
        authorizationUrl:
          type: string
          description: Authorization URL the wallet opens to identify and authorize signing.
        codeVerifier:
          type: string
          description: PKCE `code_verifier` to pass back to `/api/qes/v1/sign`.
    QesSignRequestRestDTO:
      type: object
      required:
      - provider
      - code
      - codeVerifier
      - document
      properties:
        code:
          type: string
          description: Authorization code from the document signer redirect.
        codeVerifier:
          type: string
          description: '`codeVerifier` returned from `/api/qes/v1/authorize`.'
        document:
          type: string
          description: |-
            Base64-encoded document to be signed. Must be identical to the
            document provided to `/api/qes/v1/authorize`.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: Organizational context. Optional when resolvable from STS auth.
        provider:
          type: string
          description: Configured document signer name (for example, `SIGN8`).
        redirectUri:
          type: string
          description: |-
            Wallet deep link. Must be identical to the one used at
            `/api/qes/v1/authorize`. When omitted, the configured default
            is used.
      additionalProperties: false
    QesSignResponseRestDTO:
      type: object
      required:
      - signedDocument
      properties:
        signedDocument:
          type: string
          description: Base64-encoded signed document returned by the QES provider.
    RegisterVerifierInstanceRequestRestDTO:
      type: object
      required:
      - organisationId
      - verifierProviderUrl
      - type
      properties:
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
          description: The verifier unit's organization.
        trustedIssuerRequired:
          type: boolean
          description: |-
            When true, the verifier will only validate presentations of
            credentials issued by trusted issuers. Requires the Verifier
            Provider to have the `trustEcosystemsEnabled` feature flag
            enabled.
        type:
          type: string
          description: Reference a configured `verifierProvider` instance.
        verifierProviderUrl:
          type: string
          description: The Verifier Provider's reference URL.
      additionalProperties: false
    RegisterVerifierInstanceResponseRestDTO:
      type: object
      required:
      - id
      properties:
        id:
          $ref: '#/components/schemas/VerifierInstanceId'
    RegisterWalletUnitRequestRestDTO:
      type: object
      required:
      - walletProvider
      - os
      properties:
        os:
          $ref: '#/components/schemas/WalletInstanceOsRestEnum'
        proof:
          type: string
        publicKey:
          $ref: '#/components/schemas/PublicJwk'
        walletProvider:
          type: string
      additionalProperties: false
    RegisterWalletUnitResponseRestDTO:
      type: object
      required:
      - id
      properties:
        id:
          $ref: '#/components/schemas/WalletInstanceId'
        nonce:
          type: string
        userNonce:
          type: string
    ResolveJsonLDContextResponseRestDTO:
      type: object
      required:
      - context
      properties:
        context: {}
    ResolveTrustEntriesRequestRestDTO:
      type: object
      required:
      - identifiers
      properties:
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/IdentifierId'
        roles:
          type: array
          items:
            $ref: '#/components/schemas/TrustListRoleRestEnum'
        trustCollectionIds:
          type: array
          items:
            $ref: '#/components/schemas/TrustCollectionId'
      additionalProperties: false
    ResolvedTrustEntriesResponseRestDTO:
      type: object
      required:
      - identifier
      - trustEntries
      properties:
        identifier:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
        trustEntries:
          type: array
          items:
            $ref: '#/components/schemas/ResolvedTrustEntryResponseRestDTO'
    ResolvedTrustEntryResponseRestDTO:
      type: object
      required:
      - source
      properties:
        metadata:
          $ref: '#/components/schemas/TrustEntityResponseRestEnum'
        source:
          $ref: '#/components/schemas/ResolvedTrustEntrySourceResponseRestDTO'
    ResolvedTrustEntrySourceResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - reference
      - type
      - state
      - trustCollection
      properties:
        createdDate:
          type: string
          format: date-time
        id:
          $ref: '#/components/schemas/TrustListSubscriptionId'
        lastModified:
          type: string
          format: date-time
        name:
          type: string
        reference:
          type: string
        role:
          $ref: '#/components/schemas/TrustListRoleRestEnum'
        state:
          $ref: '#/components/schemas/TrustListSubscriptionStateRestEnum'
        trustCollection:
          $ref: '#/components/schemas/TrustCollectionListItemResponseRestDTO'
        type:
          $ref: '#/components/schemas/TrustListSubscriberId'
    ResponseSubmissionRestDTO:
      type: object
      required:
      - response
      properties:
        response:
          type: string
    RevocationListId:
      type: string
      format: uuid
    RevocationMethodId:
      type: string
      description: Identifier of a revocation method based in CoreConfig.revocation
    RootOfTrustOption:
      type: object
      required:
      - dn
      - serial
      properties:
        dn:
          type: string
        serial:
          type: string
    RootOfTrustOptions:
      type: object
      required:
      - values
      properties:
        values:
          type: array
          items:
            $ref: '#/components/schemas/RootOfTrustOption'
          description: |-
            A list of entries defining the permitted relying parties.
            Each entry must include both the `dn` and `serial` of the
            CA. Use the subject DN as it appears in the CA's own certificate.
    SdJwtVcAlgs:
      type: object
      properties:
        kb-jwt_alg_values:
          type: array
          items:
            type: string
        sd-jwt_alg_values:
          type: array
          items:
            type: string
      additionalProperties: false
    SdJwtVcClaimDisplayRestDTO:
      type: object
      required:
      - lang
      - label
      properties:
        label:
          type: string
        lang:
          type: string
    SdJwtVcClaimRestDTO:
      type: object
      required:
      - path
      - display
      properties:
        display:
          type: array
          items:
            $ref: '#/components/schemas/SdJwtVcClaimDisplayRestDTO'
        path:
          type: array
          items: {}
        sd:
          $ref: '#/components/schemas/SdJwtVcClaimSdRestEnum'
    SdJwtVcClaimSdRestEnum:
      type: string
      enum:
      - always
      - allowed
      - never
    SdJwtVcDisplayMetadataRestDTO:
      type: object
      required:
      - lang
      - name
      properties:
        lang:
          type: string
        name:
          type: string
        rendering:
          $ref: '#/components/schemas/SdJwtVcRenderingRestDTO'
    SdJwtVcIssuerMetadataJwksRestDTO:
      type: object
      required:
      - keys
      properties:
        keys:
          type: array
          items:
            $ref: '#/components/schemas/PublicJwk'
    SdJwtVcIssuerMetadataRestDTO:
      type: object
      required:
      - issuer
      properties:
        issuer:
          type: string
        jwks:
          $ref: '#/components/schemas/SdJwtVcIssuerMetadataJwksRestDTO'
        jwks_uri:
          type: string
    SdJwtVcMeta:
      type: object
      required:
      - vct_values
      properties:
        vct_values:
          type: array
          items:
            type: string
    SdJwtVcRenderingRestDTO:
      type: object
      properties:
        simple:
          $ref: '#/components/schemas/SdJwtVcSimpleRenderingRestDTO'
    SdJwtVcSimpleRenderingLogoRestDTO:
      type: object
      required:
      - uri
      properties:
        altText:
          type: string
        uri:
          type: string
          format: uri
    SdJwtVcSimpleRenderingRestDTO:
      type: object
      properties:
        backgroundColor:
          type: string
        logo:
          $ref: '#/components/schemas/SdJwtVcSimpleRenderingLogoRestDTO'
        textColor:
          type: string
    SdJwtVcTypeMetadataResponseRestDTO:
      type: object
      required:
      - vct
      - display
      - claims
      properties:
        claims:
          type: array
          items:
            $ref: '#/components/schemas/SdJwtVcClaimRestDTO'
        display:
          type: array
          items:
            $ref: '#/components/schemas/SdJwtVcDisplayMetadataRestDTO'
        layout_properties:
          $ref: '#/components/schemas/CredentialSchemaLayoutPropertiesRestDTO'
        name:
          type: string
        schema: {}
        schema_uri:
          type: string
          format: uri
        vct:
          type: string
    SearchType:
      type: string
      enum:
      - CLAIM_NAME
      - CLAIM_VALUE
      - CREDENTIAL_SCHEMA_NAME
    ShareCredentialResponseRestDTO:
      type: object
      required:
      - url
      properties:
        expiresAt:
          type: string
          format: date-time
          description: |-
            URL becomes unusable by wallet holder at this time. Call the share
            endpoint again to get a new URL.
          example: 2023-06-09T14:19:57.000Z
        transactionCode:
          type: string
          description: |-
            The generated one-time code required for the holder to complete
            credential issuance. Must be transmitted to the holder through a
            secure out-of-band channel such as SMS or email to a verified
            contact.
        url:
          type: string
          description: Share URL, typically encoded as a QR code.
    ShareProofRequestParamsRestDTO:
      type: object
      properties:
        clientIdScheme:
          $ref: '#/components/schemas/ClientIdSchemeRestEnum'
      additionalProperties: false
    ShareProofRequestRestDTO:
      type: object
      properties:
        params:
          $ref: '#/components/schemas/ShareProofRequestParamsRestDTO'
      additionalProperties: false
    ShareProofResponseRestDTO:
      type: object
      required:
      - url
      properties:
        expiresAt:
          type: string
          format: date-time
          description: |-
            URL becomes unusable by wallet holder at this time. Call the share
            endpoint again to get a new URL.
          example: 2023-06-09T14:19:57.000Z
        url:
          type: string
          description: Share URL, typically encoded as a QR code.
    SignatureRevocationCheckRequestRestDTO:
      type: object
      required:
      - signatureIds
      properties:
        signatureIds:
          type: array
          items:
            type: string
            format: uuid
    SignatureRevocationCheckResponseRestDTO:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/SignatureStatusInfoRestDTO'
    SignatureStateRestEnum:
      type: string
      enum:
      - ACTIVE
      - REVOKED
    SignatureStatusInfoRestDTO:
      type: object
      required:
      - state
      - type
      properties:
        state:
          $ref: '#/components/schemas/SignatureStateRestEnum'
        type:
          $ref: '#/components/schemas/SignerId'
    SignerId:
      type: string
      description: Identifier of a signer based in CoreConfig.signer
    SortDirection:
      type: string
      enum:
      - ASC
      - DESC
    SortableCredentialColumnRestEnum:
      type: string
      enum:
      - createdDate
      - schema.name
      - issuer
      - state
    SortableCredentialSchemaColumnRestEnum:
      type: string
      enum:
      - name
      - createdDate
    SortableDidColumnRestDTO:
      type: string
      enum:
      - name
      - createdDate
      - method
      - type
      - did
      - deactivated
    SortableHistoryColumnRestDTO:
      type: string
      enum:
      - createdDate
      - action
      - entityType
      - source
      - user
      - organisationId
    SortableIdentifierColumnRest:
      type: string
      enum:
      - name
      - createdDate
      - type
      - state
    SortableIssuerStatisticsColumnRestDTO:
      type: string
      enum:
      - issued
      - revoked
      - suspended
      - reactivated
      - error
    SortableKeyColumnRestDTO:
      type: string
      enum:
      - name
      - createdDate
      - publicKey
      - keyType
      - storageType
    SortableListTrustListSubscriptionColumnRestEnum:
      type: string
      enum:
      - name
      - reference
      - role
      - type
      - lastModified
      - createdDate
    SortableOrganisationColumnRestDTO:
      type: string
      enum:
      - createdDate
    SortableProofColumnRestEnum:
      type: string
      enum:
      - schema.name
      - verifier
      - createdDate
      - state
    SortableProofSchemaColumnRestEnum:
      type: string
      enum:
      - name
      - createdDate
    SortableSystemInteractionStatisticsColumnRestDTO:
      type: string
      enum:
      - issued
      - verified
      - credentialLifecycleOperation
      - error
    SortableSystemManagementStatisticsColumnRestDTO:
      type: string
      enum:
      - credentialSchema
      - proofSchema
      - identifier
    SortableTrustCollectionColumnRestEnum:
      type: string
      enum:
      - name
      - lastModified
      - createdDate
    SortableTrustEntryColumnRestEnum:
      type: string
      enum:
      - identifier
      - state
      - lastModified
      - createdDate
    SortableTrustListPublicationColumnRestEnum:
      type: string
      enum:
      - role
      - type
      - name
      - lastModified
      - createdDate
    SortableVerifierStatisticsColumnRestDTO:
      type: string
      enum:
      - accepted
      - rejected
      - error
    SortableWalletInstanceColumnRest:
      type: string
      enum:
      - createdDate
      - lastModified
      - name
      - status
      - os
      - userSub
    SuspendCredentialRequestRestDTO:
      type: object
      properties:
        suspendEndDate:
          type: string
          format: date-time
          description: Specify the time when the credential will reactivate, or omit for an indefinite suspension.
          example: 2023-06-09T14:19:57.000Z
      additionalProperties: false
    SystemInteractionCountsRestDTO:
      type: object
      required:
      - issuedCount
      - verifiedCount
      - credentialLifecycleOperationCount
      - errorCount
      properties:
        credentialLifecycleOperationCount:
          type: integer
          description: |-
            Number of credential suspensions, reactivations, and revocations
            in the reporting period.
          minimum: 0
        errorCount:
          type: integer
          description: |-
            Number of credential interactions resulting in an error
            in the reporting period.
          minimum: 0
        issuedCount:
          type: integer
          description: Number of credentials issued in the reporting period.
          minimum: 0
        verifiedCount:
          type: integer
          description: Number of credentials verified in the reporting period.
          minimum: 0
    SystemInteractionStatsResponseRestDTO:
      type: object
      required:
      - organisationId
      - current
      properties:
        current:
          $ref: '#/components/schemas/SystemInteractionCountsRestDTO'
          description: Statistics for the selected reporting period.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        previous:
          $ref: '#/components/schemas/SystemInteractionCountsRestDTO'
          description: Comparison statistics for the equivalent preceding period.
    SystemManagementCountsRestDTO:
      type: object
      required:
      - credentialSchemaCreatedCount
      - proofSchemaCreatedCount
      - identifierCreatedCount
      properties:
        credentialSchemaCreatedCount:
          type: integer
          minimum: 0
        identifierCreatedCount:
          type: integer
          minimum: 0
        proofSchemaCreatedCount:
          type: integer
          minimum: 0
    SystemManagementStatsResponseRestDTO:
      type: object
      required:
      - organisationId
      - current
      properties:
        current:
          $ref: '#/components/schemas/SystemManagementCountsRestDTO'
          description: Statistics for the selected reporting period.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        previous:
          $ref: '#/components/schemas/SystemManagementCountsRestDTO'
          description: Comparison statistics for the equivalent preceding period.
    SystemOperationsCountRestDTO:
      type: object
      required:
      - issuanceCount
      - verificationCount
      - credentialLifecycleOperationCount
      - sessionTokenCount
      - activeWalletUnitCount
      properties:
        activeWalletUnitCount:
          type: integer
          description: |-
            Number of wallet units with status `active` for the
            reporting period.
          minimum: 0
        credentialLifecycleOperationCount:
          type: integer
          description: |-
            Number of credential suspensions, reactivations, and revocations
            across all organizations for the reporting period.
          minimum: 0
        issuanceCount:
          type: integer
          description: |-
            Number of credentials issued across all organizations for the
            reporting period.
          minimum: 0
        sessionTokenCount:
          type: integer
          description: |-
            Number of session tokens created, reflecting user activity
            levels.
          minimum: 0
        verificationCount:
          type: integer
          description: |-
            Number of credential verifications across all organizations
            for the reporting period.
          minimum: 0
    SystemStatsResponseRestDTO:
      type: object
      required:
      - current
      - topIssuers
      - topVerifiers
      - newestOrganisations
      properties:
        current:
          $ref: '#/components/schemas/SystemOperationsCountRestDTO'
          description: System-wide statistics for the reporting period.
        newestOrganisations:
          type: array
          items:
            $ref: '#/components/schemas/NewOrganisationEntryRestDTO'
          description: Most recently created organizations, ranked by creation date.
        previous:
          $ref: '#/components/schemas/SystemOperationsCountRestDTO'
          description: Comparison statistics for the equivalent preceding period.
        topIssuers:
          type: array
          items:
            $ref: '#/components/schemas/OrganisationOperationsCountRestDTO'
          description: |-
            Organizations with the highest issuance counts for the reporting
            period, randed in descending order.
        topVerifiers:
          type: array
          items:
            $ref: '#/components/schemas/OrganisationOperationsCountRestDTO'
          description: |-
            Organizations with the highest verification counts for the
            reporting period, randed in descending order.
    TEAddress:
      type: object
      properties:
        TEElectronicAddress:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/MultiLangUri'
        TEPostalAddress:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/PostalAddress'
    TaskRequestRestDTO:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: |-
            Name of the task to run, as defined in the `task` configuration
            object.
          enum:
          - CERTIFICATE_CHECK
          - HOLDER_CHECK_CREDENTIAL_STATUS
          - INTERACTION_EXPIRATION_CHECK
          - RETAIN_PROOF_CHECK
          - SUSPEND_CHECK
          - TRUST_COLLECTION_SYNC
          - TRUST_LIST_SUBSCRIPTION_UPDATE
          - WEBHOOK_NOTIFY
        params:
          type:
          - object
          - 'null'
          description: Task-specific parameters. Most tasks require no parameters.
      additionalProperties: false
    TaskResponseRestDTO:
      allOf:
      - description: Task execution result. The structure varies by task type.
    TimeSeriesPointRestDTO:
      type: object
      required:
      - timestamp
      - count
      properties:
        count:
          type: integer
          minimum: 0
        timestamp:
          type: string
          format: date-time
    TimestampRest:
      type: integer
      format: int64
    TokenEndpointAuthMethod:
      oneOf:
      - type: string
        enum:
        - client_secret_basic
      - type: string
        enum:
        - client_secret_post
      - type: string
        enum:
        - none
      - type: string
        description: |-
          Attestation-based client authentication
          Spec: <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-attestation-based-client-auth>
        enum:
        - attest_jwt_client_auth
      - type: object
        description: Custom/extension authentication method
        required:
        - Other
        properties:
          Other:
            type: string
            description: Custom/extension authentication method
      description: |-
        Token endpoint authentication method.

        Spec: <https://datatracker.ietf.org/doc/html/rfc7591#section-2>

        Standard values from IANA "OAuth Token Endpoint Authentication Methods" registry.
        Custom/extension values are captured by the `Other` variant.
    TokenValidationRestDTO:
      type: object
      required:
      - aud
      - iss
      - jwksUri
      properties:
        aud:
          type: string
        iss:
          type: string
        jwksUri:
          type: string
    TransactionCodeTypeRestEnum:
      type: string
      enum:
      - NUMERIC
      - ALPHANUMERIC
    TrustCollectionFilterQueryParamsRestDTO:
      type: object
      properties:
        createdDateAfter:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists created after this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        createdDateBefore:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists created before this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        exact:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ExactTrustCollectionFilterColumnRestEnum'
          description: Set which filters apply in an exact way.
        ids:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TrustCollectionId'
          description: Filter by one or more UUIDs.
        includeParentOrganisationCollections:
          $ref: '#/components/schemas/Boolean'
          description: |-
            If true, include trust collections from the parent organization.
            If false, return only this organization's own trust collections.
        lastModifiedAfter:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists last modified after this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        lastModifiedBefore:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists last modified before this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        name:
          type:
          - string
          - 'null'
          description: |-
            Return only trust collections with a name starting with this string.
            Not case-sensitive.
        organisationId:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/OrganisationId'
            description: |-
              Required when not using STS authentication mode. Specifies the
              organizational context for this operation. When using STS
              authentication, this value is derived from the token.
    TrustCollectionId:
      type: string
      format: uuid
    TrustCollectionInfoRestDTO:
      allOf:
      - $ref: '#/components/schemas/ProviderTrustCollectionRestDTO'
      - type: object
        required:
        - selected
        properties:
          selected:
            type: boolean
            description: When true, the wallet is subscribed to this trust collection.
    TrustCollectionListItemResponseRestDTO:
      type: object
      required:
      - id
      - name
      - createdDate
      - lastModified
      - organisationId
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/TrustCollectionId'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        remoteTrustCollectionUrl:
          type: string
          format: uri
    TrustCollectionResponseRestDTO:
      type: object
      required:
      - name
      - trustLists
      properties:
        name:
          type: string
        trustLists:
          type: array
          items:
            $ref: '#/components/schemas/TrustListRestDTO'
    TrustCollectionsDetailRestDTO:
      type: object
      required:
      - trustCollections
      properties:
        trustCollections:
          type: array
          items:
            $ref: '#/components/schemas/TrustCollectionInfoRestDTO'
          description: Trust collections available from the Wallet Provider.
    TrustEntityResponseRestEnum:
      oneOf:
      - type: object
        required:
        - LOTE
        properties:
          LOTE:
            $ref: '#/components/schemas/TrustedEntityInformation'
      - type: object
        required:
        - TSL
        properties:
          TSL:
            $ref: '#/components/schemas/TslServiceEntryRestDTO'
    TrustEntryFilterQueryParamsRestDTO:
      type: object
      properties:
        createdDateAfter:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust entries created after this time.
            Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        createdDateBefore:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust entries created before this time.
            Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        identifierIds:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/IdentifierId'
          description: Filter by one or more identifier UUIDs.
        ids:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TrustEntryId'
          description: Filter by one or more UUIDs.
        lastModifiedAfter:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust entries last modified after this time.
            Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        lastModifiedBefore:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust entries last modified before this time.
            Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        states:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TrustEntryStateRestEnum'
          description: Filter by one or more trust entry states.
    TrustEntryId:
      type: string
      format: uuid
    TrustEntryListItemResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - state
      - identifier
      - params
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/TrustEntryId'
        identifier:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
          description: Identifier of the trusted entity.
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        params:
          type: string
          description: Entity and service information for the trusted entity.
        state:
          $ref: '#/components/schemas/TrustEntryStateRestEnum'
          description: The entry's current state on the trust list publication.
    TrustEntryStateRestEnum:
      type: string
      enum:
      - ACTIVE
      - SUSPENDED
      - REMOVED
    TrustInformationDetailResponseRestDTO:
      type: object
      properties:
        eudiEcosystem:
          $ref: '#/components/schemas/EudiTrustInformationResponseRestDTO'
          description: |-
            EUDI trust information received from Access Certificates,
            Registration Certificates, or National Registry public APIs.
    TrustInformationRestDTO:
      type: object
      required:
      - receivedAt
      - result
      properties:
        name:
          type: string
        receivedAt:
          type: string
          format: date-time
        result:
          $ref: '#/components/schemas/TrustResolutionResultRestEnum'
    TrustListPublicationFilterQueryParamsRestDTO:
      type: object
      properties:
        createdDateAfter:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists created after this time.
            Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        createdDateBefore:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists created before this time.
            Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        exact:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ExactTrustListFilterColumnRestEnum'
          description: Set which filters apply in an exact way.
        ids:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TrustListPublicationId'
          description: Filter by one or more UUIDs.
        lastModifiedAfter:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists last modified after this time.
            Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        lastModifiedBefore:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists last modified before this time.
            Timestamp in RFC3339 format (for example '2023-06-09T14:19:57.000Z').
        name:
          type:
          - string
          - 'null'
          description: |-
            Return only trust lists with a name starting with this string.
            Not case-sensitive.
        organisationId:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/OrganisationId'
            description: |-
              Required when not using STS authentication mode. Specifies the
              organizational context for this operation. When using STS
              authentication, this value is derived from the token.
        roles:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TrustListRoleRestEnum'
          description: Filter by one or more trust list roles.
        types:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Filter by one or more trust list types.
    TrustListPublicationId:
      type: string
      format: uuid
    TrustListPublicationListItemResponseRestDTO:
      type: object
      required:
      - id
      - name
      - createdDate
      - lastModified
      - organisationId
      - type
      - role
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        deletedAt:
          type:
          - string
          - 'null'
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/TrustListPublicationId'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
          description: Internal label for the trust list publication.
        organisationId:
          $ref: '#/components/schemas/OrganisationId'
        role:
          $ref: '#/components/schemas/TrustListRoleRestEnum'
          description: The profile this trust list conforms to.
        type:
          $ref: '#/components/schemas/TrustListPublisherId'
          description: |-
            The configured `trustListPublisher` instance used to
            publish the list.
    TrustListPublisherId:
      type: string
      description: Identifier of a trust list based in CoreConfig.trust_list_publisher
    TrustListRestDTO:
      type: object
      required:
      - name
      - id
      - reference
      - type
      properties:
        id:
          $ref: '#/components/schemas/TrustListSubscriptionId'
        name:
          type: string
        reference:
          type: string
        role:
          $ref: '#/components/schemas/TrustListRoleRestEnum'
        type:
          $ref: '#/components/schemas/TrustListSubscriberId'
    TrustListRoleRestEnum:
      type: string
      enum:
      - PID_PROVIDER
      - WALLET_PROVIDER
      - WRP_AC_PROVIDER
      - PUB_EEA_PROVIDER
      - QEAA_PROVIDER
      - QESRC_PROVIDER
      - WRP_RC_PROVIDER
      - NATIONAL_REGISTRY_REGISTRAR
      - ISSUER
      - VERIFIER
    TrustListSubscriberId:
      type: string
      description: Identifier of a trust list based in CoreConfig.trust_list_subscriber
    TrustListSubscriptionExactColumnRestEnum:
      type: string
      enum:
      - name
      - reference
    TrustListSubscriptionFilterQueryParamsRestDTO:
      type: object
      properties:
        createdDateAfter:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists created after this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        createdDateBefore:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists created before this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        exact:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TrustListSubscriptionExactColumnRestEnum'
          description: Set which filters apply in an exact way.
        ids:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TrustListSubscriptionId'
          description: Filter by one or more UUIDs.
        lastModifiedAfter:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists last modified after this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        lastModifiedBefore:
          type:
          - string
          - 'null'
          format: date-time
          description: |-
            Return only trust lists last modified before this time.
            Timestamp in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
        name:
          type:
          - string
          - 'null'
          description: |-
            Return only trust list subscriptions with a name starting with this string.
            Not case-sensitive.
        reference:
          type:
          - string
          - 'null'
          description: |-
            Return only trust list subscriptions with a reference starting with this string.
            Not case-sensitive.
        roles:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TrustListRoleRestEnum'
        states:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TrustListSubscriptionStateRestEnum'
        types:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TrustListSubscriberId'
    TrustListSubscriptionId:
      type: string
      format: uuid
    TrustListSubscriptionListItemResponseRestDTO:
      type: object
      required:
      - id
      - name
      - createdDate
      - lastModified
      - reference
      - type
      - state
      properties:
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/TrustListSubscriptionId'
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        reference:
          type: string
        role:
          $ref: '#/components/schemas/TrustListRoleRestEnum'
        state:
          $ref: '#/components/schemas/TrustListSubscriptionStateRestEnum'
        type:
          $ref: '#/components/schemas/TrustListSubscriberId'
    TrustListSubscriptionStateRestEnum:
      type: string
      enum:
      - ACTIVE
      - ERROR
    TrustResolutionMetadataRestDTO:
      type: object
      required:
      - result
      properties:
        result:
          $ref: '#/components/schemas/TrustResolutionResultRestEnum'
    TrustResolutionResultRestEnum:
      type: string
      enum:
      - TRUSTED
      - UNTRUSTED
      - UNKNOWN
    TrustedEntityInformation:
      type: object
      required:
      - TEName
      properties:
        TEAddress:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/TEAddress'
        TEInformationExtensions:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Extension'
        TEInformationURI:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/MultiLangUri'
        TEName:
          type: array
          items:
            $ref: '#/components/schemas/MultiLangString'
        TETradeName:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/MultiLangString'
    TslServiceEntryRestDTO:
      type: object
      required:
      - serviceName
      - serviceTypeIdentifier
      - serviceStatus
      properties:
        serviceName:
          type: string
        serviceStatus:
          type: string
        serviceTypeIdentifier:
          type: string
    UnexportableEntitiesResponseRestDTO:
      type: object
      required:
      - credentials
      - keys
      - dids
      - total_credentials
      - total_keys
      - total_dids
      properties:
        credentials:
          type: array
          items:
            $ref: '#/components/schemas/GetCredentialResponseRestDTO_CredentialDetailClaimResponseRestDTO'
        dids:
          type: array
          items:
            $ref: '#/components/schemas/DidListItemResponseRestDTO'
        keys:
          type: array
          items:
            $ref: '#/components/schemas/KeyListItemResponseRestDTO'
        total_credentials:
          type: integer
          format: int64
          minimum: 0
        total_dids:
          type: integer
          format: int64
          minimum: 0
        total_keys:
          type: integer
          format: int64
          minimum: 0
    UpdateScreenRestDTO:
      type: object
      properties:
        link:
          type: string
    UpdateTrustEntryRequestRestDTO:
      type: object
      properties:
        params:
          description: |-
            Optional entity and service information fields. See the
            [Scheme Operators Guide](https://docs.procivis.ch/trust/etsi/scheme-operators)
            for details.
        state:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/TrustEntryStateRestEnum'
            description: Update the entry's state on the trust list publication.
      additionalProperties: false
    UpsertOrganisationRequestRestDTO:
      type: object
      required:
      - deactivate
      properties:
        deactivate:
          type: boolean
          example: true
        parentOrganisation:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/OrganisationId'
            description: |-
              Optionally assign a parent organization to share policy-level
              configuration, such as trust collections, across a one-level hierarchy.
              The provided organization must not have a parent organization.
        walletProvider:
          type:
          - string
          - 'null'
          description: |-
            Specify which configured `walletProvider` this organization will use
            to issue attestations to wallet units.
          example: PROCIVIS_ONE
        walletProviderIssuer:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/IdentifierId'
            description: |-
              Specify which identifier to use as the attestation issuer. This can
              be any type of identifier but it must be backed by an ECDSA key.
      additionalProperties: false
    UserAuthenticationRestDTO:
      type: object
      required:
      - required
      - identityProvider
      - clientId
      - redirectUri
      properties:
        clientId:
          type: string
        identityProvider:
          type: string
        redirectUri:
          type: string
        required:
          type: boolean
        tokenValidation:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/TokenValidationRestDTO'
    VerifierInstanceDetailResponseRestDTO:
      type: object
      required:
      - id
      - trustedIssuerRequired
      properties:
        id:
          $ref: '#/components/schemas/VerifierInstanceId'
        trustedIssuerRequired:
          type: boolean
          description: |-
            When true, the verifier will only validate presentations of
            credentials issued by trusted issuers. Requires the Verifier
            Provider to have the `trustEcosystemsEnabled` feature flag
            enabled.
    VerifierInstanceId:
      type: string
      format: uuid
    VerifierProviderAppVersionResponseDTO:
      type: object
      properties:
        minimum:
          type: string
        minimumRecommended:
          type: string
        reject:
          type: array
          items:
            type: string
        updateScreen:
          $ref: '#/components/schemas/VerifierProviderUpdateScreenResponseDTO'
    VerifierProviderResponseDTO:
      type: object
      required:
      - verifierName
      - name
      - trustCollections
      - featureFlags
      properties:
        appVersion:
          $ref: '#/components/schemas/VerifierProviderAppVersionResponseDTO'
        featureFlags:
          $ref: '#/components/schemas/FeatureFlagsRestDTO'
        name:
          type: string
        trustCollections:
          type: array
          items:
            $ref: '#/components/schemas/ProviderTrustCollectionRestDTO'
        verifierName:
          type: string
          deprecated: true
    VerifierProviderUpdateScreenResponseDTO:
      type: object
      required:
      - link
      properties:
        link:
          type: string
    VerifierSchemaStatsResponseRestDTO:
      type: object
      required:
      - proofSchemaId
      - proofSchemaName
      - current
      properties:
        current:
          $ref: '#/components/schemas/VerifierStatsRestDTO'
          description: Statistics for the selected reporting period.
        previous:
          $ref: '#/components/schemas/VerifierStatsRestDTO'
          description: Comparison statistics for the equivalent preceding period.
        proofSchemaId:
          $ref: '#/components/schemas/ProofSchemaId'
        proofSchemaName:
          type: string
    VerifierStatsRestDTO:
      type: object
      required:
      - acceptedCount
      - rejectedCount
      - errorCount
      properties:
        acceptedCount:
          type: integer
          description: Number of successful credential verifications.
          minimum: 0
        errorCount:
          type: integer
          description: Number of credential verifications resulting in error.
          minimum: 0
        rejectedCount:
          type: integer
          description: Number of credential verifications rejected.
          minimum: 0
    VerifierTimelinesRestDTO:
      type: object
      required:
      - pending
      - accepted
      - rejected
      - error
      properties:
        accepted:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
        error:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
        pending:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
        rejected:
          type: array
          items:
            $ref: '#/components/schemas/TimeSeriesPointRestDTO'
    VpSubmissionDataRestDTO:
      oneOf:
      - $ref: '#/components/schemas/DcqlSubmissionRestDTO'
        description: DCQL submission with vp_token map structure
      - $ref: '#/components/schemas/ResponseSubmissionRestDTO'
        description: Response submission with response field (JWE encrypted payload)
      description: |-
        Represents the different types of VP token submissions supported by OpenID4VP.
        Untagged serialization automatically detects the submission type.
    W3CJwtAlgs:
      type: object
      properties:
        alg_values:
          type: array
          items:
            type: string
      additionalProperties: false
    W3CLdpAlgs:
      type: object
      properties:
        cryptosuite_values:
          type: array
          items:
            type: string
        proof_type_values:
          type: array
          items:
            type: string
      additionalProperties: false
    W3cVcMeta:
      type: object
      required:
      - type_values
      properties:
        type_values:
          type: array
          items:
            type: array
            items:
              type: string
    WalletInstanceAttestationRestDTO:
      type: object
      required:
      - name
      - link
      - attestation
      properties:
        attestation:
          type: string
        link:
          type: string
        name:
          type: string
    WalletInstanceId:
      type: string
      format: uuid
    WalletInstanceOsRestEnum:
      type: string
      enum:
      - IOS
      - ANDROID
      - WEB
    WalletInstanceResponseRestDTO:
      type: object
      required:
      - id
      - createdDate
      - lastModified
      - name
      - os
      - status
      - walletProviderType
      - walletProviderName
      properties:
        authenticationKeyJwk:
          $ref: '#/components/schemas/PublicJwk'
        createdDate:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        id:
          $ref: '#/components/schemas/WalletInstanceId'
        lastIssuance:
          type:
          - string
          - 'null'
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        lastModified:
          type: string
          format: date-time
          example: 2023-06-09T14:19:57.000Z
        name:
          type: string
        os:
          $ref: '#/components/schemas/WalletInstanceOsRestEnum'
        status:
          $ref: '#/components/schemas/WalletInstanceStatusRestEnum'
        userSub:
          type: string
        walletProviderName:
          type: string
        walletProviderType:
          $ref: '#/components/schemas/WalletProviderTypeRestEnum'
    WalletInstanceStatusRestEnum:
      type: string
      enum:
      - ACTIVE
      - REVOKED
      - PENDING
      - UNATTESTED
      - ERROR
    WalletProviderDetailResponseRestDTO:
      type: object
      properties:
        issuer:
          $ref: '#/components/schemas/GetIdentifierListItemResponseRestDTO'
          description: Identifier used by this organization to provide wallets.
        providerName:
          type: string
          description: |-
            Wallet Provider configuration used by this organization to provide
            wallets.
    WalletProviderMetadataResponseRestDTO:
      type: object
      required:
      - walletUnitAttestation
      - name
      - trustCollections
      - documentSigners
      - featureFlags
      properties:
        appVersion:
          $ref: '#/components/schemas/AppVersionRestDTO'
        documentSigners:
          type: array
          items:
            $ref: '#/components/schemas/DocumentSignerMetadataRestDTO'
        featureFlags:
          $ref: '#/components/schemas/FeatureFlagsRestDTO'
        name:
          type: string
        trustCollections:
          type: array
          items:
            $ref: '#/components/schemas/ProviderTrustCollectionRestDTO'
        userAuthentication:
          $ref: '#/components/schemas/UserAuthenticationRestDTO'
        walletUnitAttestation:
          $ref: '#/components/schemas/WalletUnitAttestationMetadataRestDTO'
    WalletProviderRestDTO:
      type: object
      required:
      - url
      - type
      properties:
        type:
          $ref: '#/components/schemas/WalletProviderTypeRestEnum'
          description: Choose the Wallet Provider implementation.
        url:
          type: string
          description: |-
            Full URL for the GET Wallet Provider metadata endpoint,
            for example: <domain>/ssi/wallet-provider/v1/<walletProvider>
      additionalProperties: false
    WalletProviderTypeRestEnum:
      type: string
      enum:
      - PROCIVIS_ONE
    WalletRelyingPartyMetadataRestDTO:
      type: object
      required:
      - name
      properties:
        name:
          type: string
    WalletUnitActivationRequestRestDTO:
      type: object
      properties:
        attestation:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        attestationKeyProof:
          type: string
        deviceSigningKeyProof:
          type: string
        userIdToken:
          type: string
      additionalProperties: false
    WalletUnitAttestationMetadataRestDTO:
      type: object
      required:
      - appIntegrityCheckRequired
      - enabled
      - required
      properties:
        appIntegrityCheckRequired:
          type: boolean
        enabled:
          type: boolean
        required:
          type: boolean
    WalletUnitAttestationRestDTO:
      type: object
      required:
      - attestation
      properties:
        attestation:
          type: string
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: Local management access token
    openID4VCI:
      type: http
      scheme: bearer
      description: OpenID4VCI token
    remote-agent:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Remote Trust-entity owner access token
    wallet-unit:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Wallet unit proof of authentication key possession.
tags:
- name: other
  description: |-
    System information and configuration. Use these endpoints to inspect
    your deployment's available components - credential formats, protocols,
    key algorithms, and many more - and to retrieve other system-level
    information.
  x-displayName: System Information
- name: organisation_management
  description: |-
    The organization is the fundamental unit in Procivis One.
    All issuing, holding, and verifying actions are performed by an
    organization. Keys, DIDs, credentials, and proofs belong exclusively
    to the organization that created them.
  x-displayName: Organizations
- name: key
  description: |-
    Manage cryptographic keys. Keys are the foundation of identifiers — used to
    create DIDs, certificates, and CAs, or as identifiers directly. Private keys
    are stored securely and never exposed through the API.

    Related guide: [Keys](https://docs.procivis.ch/keys)
  x-displayName: Keys
- name: identifier_management
  description: |-
    Create and manage identifiers of different types for different identity
    ecosystems. An identifier is needed to issue, hold, or verify.
  x-displayName: Identifiers
- name: certificate_management
  description: |-
    Manage certificates in the system. To add a certificate as an identifier,
    see the Identifiers endpoints.
  x-displayName: Certificates
- name: did_management
  description: |-
    Use the identifier API to create DIDs. The system assigns an ID to both
    the identifier and the DID. Use the DID ID returned from the identifier
    response with this DID API for management operations like deactivation.
  x-displayName: DIDs
- name: credential_schema_management
  description: |-
    A credential schema defines the structure and format of a credential,
    including the attributes that issuers make claims about. Schemas also
    specify how issued credentials should be presented in digital wallets,
    whether revocation methods are used, and issuer preferences for wallet
    storage type.

    The system supports the creation of as many credential schemas as needed.
  x-displayName: Credential Schemas
- name: credential_management
  description: |-
    Issue credentials and manage the lifecycle of issued credentials, including
    suspension, reactivation, revocation and status check for holders and verifiers.

    Create a credential by specifying a schema and making claims about a subject.
    Then create a share endpoint URL for the wallet holder to access the offered
    credential. Suspension and revocation options are determined by the schema.
  x-displayName: Credentials
- name: proof_schema_management
  description: |-
    Manage proof schemas, which define the claims requested from a holder during
    verification. A proof schema can combine claims from any number of credential
    schemas in your organization.

    Related guide: [Proof schemas](https://docs.procivis.ch/proof-schemas)
  x-displayName: Proof Schemas
- name: proof_management
  description: |-
    A proof request is a request of one or more claims from a wallet holder.

    Create a proof request then create a share endpoint URL for the holder
    to access the request. Any proof shared is verified.

    This resource also includes claim data deletion and presentation definition,
    a filtering function for wallet holders to see what credentials stored in
    their wallet match a proof request.

    Related guide: [Verify](https://docs.procivis.ch/verify)
  x-displayName: Proof Requests
- name: interaction
  description: |-
    For wallet agents, handle interactions with issuers and verifiers.

    When the holder scans the QR code offered by an issuer or a verifier, the
    handle invitation endpoint takes the encoded url and returns the interaction
    ID along with either the credential being offered or the proof being requested.

    The holder then makes the choice to accept or reject the exchange.

    Related guide: [Wallets](https://docs.procivis.ch/hold)
  x-displayName: Wallet Interaction
- name: history_management
  description: |-
    Manage and query the event history log. External services use this API
    to submit history entries to Core's centralized history service; all
    consumers use it to list or retrieve recorded events.
  x-displayName: History
- name: wallet_instance
  description: For Wallet Providers, manage wallet instances and attestations issued by the system.
  x-displayName: Wallet Instances (Provider)
- name: holder_wallet_instance
  description: For wallet units, register with the Wallet Provider, check status and get trust information.
  x-displayName: Wallet Instances (Holder)
- name: verifier_instance
  description: For verifier units, register with the Verifier Provider and get trust information.
  x-displayName: Verifier Instances
- name: signature
  description: Create and revoke signatures.
  x-displayName: Signatures
- name: qes
  description: Document signing.
  x-displayName: Qualified Electronic Signature (QES)
- name: jsonld
  description: Retrieve cached JSON-LD context documents.
  x-displayName: JSON-LD
- name: task
  description: |-
    Trigger configured maintenance and operational tasks.
    Tasks can also be run from the CLI or scheduled as cron
    jobs. See [Regular Tasks](https://docs.procivis.ch/reference/configuration/core#regular-tasks)
    for supported task types and their parameters.
  x-displayName: Tasks
- name: cache
  description: |-
    Manage the remote entity cache. See [Caching](https://docs.procivis.ch/configure/caching)
    for configuration.
  x-displayName: Cache
- name: trust_list_publication_management
  description: Publish and manage trust lists.
  x-displayName: Trust List Publications
- name: trust_collection_management
  description: Manage collections of trust list subscriptions.
  x-displayName: Trust List Collections
- name: statistics
  description: |-
    Retrieve organizational and system statistics including issuance and
    verification counts, and active wallet unit counts.
  x-displayName: Statistics
- name: ssi
  description: |
    :::warning

    These endpoints handle low-level mechanisms in interactions between agents.
    Deep understanding of the involved protocols is recommended.

    :::
  x-displayName: (Advanced) SSI
- name: openid4vci-final1_0
  description: |
    :::warning

    These endpoints handle low-level mechanisms in interactions between agents.
    Deep understanding of the involved protocols is recommended.

    :::
  x-displayName: (Advanced) OID4VCI Final 1.0
- name: openid4vp-final-1.0
  description: |
    :::warning

    These endpoints handle low-level mechanisms in interactions between agents.
    Deep understanding of the involved protocols is recommended.

    :::
  x-displayName: (Advanced) OID4VP Final 1.0
- name: openid4vci-final1_0-swiyu
  description: |
    :::warning

    These endpoints handle low-level mechanisms in interactions between agents.
    Deep understanding of the involved protocols is recommended.

    :::
  x-displayName: (Advanced) OID4VCI Final 1.0 - swiyu
- name: openid4vp-final-1.0-swiyu
  description: |
    :::warning

    These endpoints handle low-level mechanisms in interactions between agents.
    Deep understanding of the involved protocols is recommended.

    :::
  x-displayName: (Advanced) OID4VP Final 1.0 - swiyu
externalDocs:
  url: https://docs.procivis.ch/
  description: See the documentation
