openapi: 3.1.0
info:
  title: Wallet-Relying Party Registry API
  description: |
    The Wallet-Relying Party Registry API enables management of
    a registry for wallet-relying parties within the EU digital
    identity ecosystem, allowing organizations to register, update,
    and query relying parties that interact with EUDI wallets. This
    facilitates the governance and oversight of entities authorized
    to request and verify credentials from EU Digital Identity Wallets.
  contact:
    name: Procivis One Docs
    url: https://www.procivis.ch/en/procivis-one#signup
  version: v1.73.2
servers:
- url: ""
- url: https://www.procivis-one.com
  description: Generated server url
security:
- bearer: []
tags:
- name: wallet-relying-party-controller
  description: Manage a National Registry of wallet-relying parties.
  x-displayName: National Registry
- name: registration-certificate-controller
  description: Issue and manage Registration Certificates.
  x-displayName: Registration Certificates
- name: access-certificate-controller
  description: Issue and manage Access Certificates.
  x-displayName: Access Certificates
- name: supervisory-authority-controller
  description: Create supervisory authorities for a national registry.
  x-displayName: Supervisory Authorities
- name: public-wrp-controller
  description: |
    Publicly accessible endpoints for querying registered wallet-relying parties.
    Use these endpoints to retrieve WRP records by identifier or legal entity, and
    to verify whether a specific intended use, credential type, or privacy policy
    is declared for a given WRP.
  x-displayName: Public WRP
- name: well-known-controller
  description: Standard well-known URIs for token verification.
  x-displayName: Well-Known
- name: configuration-controller
  description: Retrieve service configuration.
  x-displayName: Configuration
- name: build-info-controller
  description: Retrieve service version information.
  x-displayName: Version
- name: Actuator
  description: Monitor and interact
  externalDocs:
    description: Spring Boot Actuator Web API Documentation
    url: https://docs.spring.io/spring-boot/docs/current/actuator-api/html/
paths:
  /api/reg-cert-provider/v1/revocation-check:
    post:
      tags:
      - registration-certificate-controller
      summary: Check state for each certificate
      description: |+
        **Permissions:** `TASK_CREATE`

      operationId: certificateRevocationCheck
      responses:
        "400":
          description: Business rule error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "204":
          description: No Content
      x-permissions:
      - TASK_CREATE
  /api/reg-cert-provider/certificate/v1:
    get:
      tags:
      - registration-certificate-controller
      summary: Retrieve Registration Certificates by identifier
      description: |
        **Permissions:** `REGISTRATION_CERTIFICATE_LIST`

        Pass an ETSI identifier to return certificates for the given
        wallet-relying party.
      operationId: getRegistrationCertificatesByIdentifier
      parameters:
      - name: identifier
        in: query
        required: false
        schema:
          type: string
      - name: intendedUseIdentifiers
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
      - name: organisationId
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: page
        in: query
        description: Page to display.
        required: false
        schema:
          type: integer
          format: int32
          description: Page to display.
      - name: pageSize
        in: query
        description: Set the number of entities returned on each page.
        required: false
        schema:
          type: integer
          format: int32
          description: Set the number of entities returned on each page.
      - name: name
        in: query
        description: Return only entities with a name starting with this string. Not
          case-sensitive.
        required: false
        schema:
          type: string
          description: Return only entities with a name starting with this string.
            Not case-sensitive.
      - name: sort
        in: query
        description: Sort by certain values in the response body.
        required: false
        schema:
          type: string
          description: Sort by certain values in the response body.
      - name: exact
        in: query
        required: false
        schema:
          type: array
          description: Set which filters apply in an exact way.
          items:
            type: string
      - name: sortDirection
        in: query
        description: "Direction to sort results by. If a sorting value is passed,\
          \ the direction defaults to `ASC`."
        required: false
        schema:
          type: string
          default: DESC
          description: "Direction to sort results by. If a sorting value is passed,\
            \ the direction defaults to `ASC`."
          enum:
          - ASC
          - DESC
      - name: createdDateAfter
        in: query
        description: Return only entities created after this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created after this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: createdDateBefore
        in: query
        description: Return only entities created before this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created before this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedAfter
        in: query
        description: Return only events 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
          description: Return only events last modified after this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedBefore
        in: query
        description: Return only events 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
          description: Return only events last modified before this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      responses:
        "400":
          description: Invalid query param
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchEntityResponseDTOListRegistrationCertificateResponseDTO"
      x-permissions:
      - REGISTRATION_CERTIFICATE_LIST
    post:
      tags:
      - registration-certificate-controller
      summary: Create Registration Certificate
      description: |
        **Permissions:** `REGISTRATION_CERTIFICATE_CREATE`

        Creates and signs a Registration Certificate for a wallet-relying
        party (WRP). Pass the public registry URL for the WRP and choose
        an identifier to use for signing.
      operationId: createCertificate
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateRegistrationCertificateRequestDTO"
        required: true
      responses:
        "400":
          description: Invalid certificate data
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EntityResponseDTO"
      x-permissions:
      - REGISTRATION_CERTIFICATE_CREATE
  /api/reg-cert-provider/certificate/v1/{certificateId}/revoke:
    post:
      tags:
      - registration-certificate-controller
      summary: Revoke a Registration Certificate
      description: |+
        **Permissions:** `SIGNATURE_REVOKE`

      operationId: revokeCertificate
      parameters:
      - name: certificateId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "400":
          description: Business rule error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "404":
          description: Registration certificate not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "204":
          description: No Content
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EntityResponseDTO"
      x-permissions:
      - SIGNATURE_REVOKE
  /api/national-registry/wallet-relying-party/v1:
    get:
      tags:
      - wallet-relying-party-controller
      summary: List wallet-relying parties
      description: |
        **Permissions:** `WRP_LIST`

        Search and filter registered wallet-relying parties. Supports filtering
        by name, entitlement type, registration status, and date ranges. Results
        are paginated and can be sorted by name, creation date, or status.
      operationId: getWalletRelyingParties
      parameters:
      - name: sort
        in: query
        description: Sort by certain values in the response body.
        required: false
        schema:
          type: string
          default: createdDate
          description: Sort by certain values in the response body.
          enum:
          - name
          - createdDate
          - state
      - name: exact
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          $ref: "#/components/schemas/exact"
      - name: entitlements
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
      - name: states
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - ACTIVE
            - REVOKED
            - SUSPENDED
      - name: identifier
        in: query
        description: This is the ETSI identifier.
        required: false
        schema:
          type: string
          description: This is the ETSI identifier.
      - name: organisationId
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: page
        in: query
        description: Page to display.
        required: false
        schema:
          type: integer
          format: int32
          description: Page to display.
      - name: pageSize
        in: query
        description: Set the number of entities returned on each page.
        required: false
        schema:
          type: integer
          format: int32
          description: Set the number of entities returned on each page.
      - name: name
        in: query
        description: Return only entities with a name starting with this string. Not
          case-sensitive.
        required: false
        schema:
          type: string
          description: Return only entities with a name starting with this string.
            Not case-sensitive.
      - name: sortDirection
        in: query
        description: "Direction to sort results by. If a sorting value is passed,\
          \ the direction defaults to `ASC`."
        required: false
        schema:
          type: string
          default: DESC
          description: "Direction to sort results by. If a sorting value is passed,\
            \ the direction defaults to `ASC`."
          enum:
          - ASC
          - DESC
      - name: createdDateAfter
        in: query
        description: Return only entities created after this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created after this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: createdDateBefore
        in: query
        description: Return only entities created before this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created before this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedAfter
        in: query
        description: Return only events 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
          description: Return only events last modified after this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedBefore
        in: query
        description: Return only events 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
          description: Return only events last modified before this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      responses:
        "400":
          description: Business rule error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchEntityResponseDTOListWalletRelyingPartyResponseDTO"
      x-permissions:
      - WRP_LIST
    post:
      tags:
      - wallet-relying-party-controller
      summary: Add a wallet-relying party
      description: |
        **Permissions:** `WRP_CREATE`

        Register a new wallet-relying party in a National Registry. Organizations
        must register before they can request data from EUDI Wallets. Registration
        captures the organization's identity, the specific data they intend to request,
        and the purposes for which they will use it.
      operationId: createWalletRelyingParty
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateWalletRelyingPartyRequestDTO"
        required: true
      responses:
        "400":
          description: Invalid wallet-relying party data
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EntityResponseDTO"
      x-permissions:
      - WRP_CREATE
  /api/national-registry/supervisory-authority/v1:
    get:
      tags:
      - supervisory-authority-controller
      summary: List supervisory authorities
      description: |-
        **Permissions:** `SUPERVISORY_AUTHORITY_LIST`

        Returns a list of supervisory authorities.
      operationId: getSupervisoryAuthorities
      parameters:
      - name: sort
        in: query
        description: Sort by certain values in the response body.
        required: false
        schema:
          type: string
          default: createdDate
          description: Sort by certain values in the response body.
          enum:
          - createdDate
      - name: exact
        in: query
        description: Set which filters apply in an exact way.
        required: false
        schema:
          $ref: "#/components/schemas/exact"
      - name: organisationId
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: page
        in: query
        description: Page to display.
        required: false
        schema:
          type: integer
          format: int32
          description: Page to display.
      - name: pageSize
        in: query
        description: Set the number of entities returned on each page.
        required: false
        schema:
          type: integer
          format: int32
          description: Set the number of entities returned on each page.
      - name: name
        in: query
        description: Return only entities with a name starting with this string. Not
          case-sensitive.
        required: false
        schema:
          type: string
          description: Return only entities with a name starting with this string.
            Not case-sensitive.
      - name: sortDirection
        in: query
        description: "Direction to sort results by. If a sorting value is passed,\
          \ the direction defaults to `ASC`."
        required: false
        schema:
          type: string
          default: DESC
          description: "Direction to sort results by. If a sorting value is passed,\
            \ the direction defaults to `ASC`."
          enum:
          - ASC
          - DESC
      - name: createdDateAfter
        in: query
        description: Return only entities created after this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created after this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: createdDateBefore
        in: query
        description: Return only entities created before this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created before this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedAfter
        in: query
        description: Return only events 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
          description: Return only events last modified after this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedBefore
        in: query
        description: Return only events 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
          description: Return only events last modified before this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      responses:
        "400":
          description: Business rule error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchEntityResponseDTOListSupervisoryAuthoritiesResponseDTO"
      x-permissions:
      - SUPERVISORY_AUTHORITY_LIST
    post:
      tags:
      - supervisory-authority-controller
      summary: Create Supervisory Authority
      description: |-
        **Permissions:** `SUPERVISORY_AUTHORITY_CREATE`

        Register a new supervisory authority.
      operationId: createSupervisoryAuthority
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSupervisoryAuthorityRequestDTO"
        required: true
      responses:
        "400":
          description: Invalid supervisory authority data
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EntityResponseDTO"
      x-permissions:
      - SUPERVISORY_AUTHORITY_CREATE
  /api/access-cert-provider/v1/revocation-check:
    post:
      tags:
      - access-certificate-controller
      summary: Check state for each access certificate
      description: |+
        **Permissions:** `TASK_CREATE`

      operationId: accessCertificateRevocationCheck
      responses:
        "400":
          description: Business rule error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "204":
          description: No Content
      x-permissions:
      - TASK_CREATE
  /api/access-cert-provider/certificate/v1:
    get:
      tags:
      - access-certificate-controller
      summary: Retrieve Access Certificates by identifier
      description: |
        **Permissions:** `ACCESS_CERTIFICATE_LIST`

        Pass an ETSI identifier to return certificates for the given
        wallet-relying party.
      operationId: getAccessCertificatesByIdentifier
      parameters:
      - name: identifier
        in: query
        required: false
        schema:
          type: string
      - name: organisationId
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: page
        in: query
        description: Page to display.
        required: false
        schema:
          type: integer
          format: int32
          description: Page to display.
      - name: pageSize
        in: query
        description: Set the number of entities returned on each page.
        required: false
        schema:
          type: integer
          format: int32
          description: Set the number of entities returned on each page.
      - name: name
        in: query
        description: Return only entities with a name starting with this string. Not
          case-sensitive.
        required: false
        schema:
          type: string
          description: Return only entities with a name starting with this string.
            Not case-sensitive.
      - name: sort
        in: query
        description: Sort by certain values in the response body.
        required: false
        schema:
          type: string
          description: Sort by certain values in the response body.
      - name: exact
        in: query
        required: false
        schema:
          type: array
          description: Set which filters apply in an exact way.
          items:
            type: string
      - name: sortDirection
        in: query
        description: "Direction to sort results by. If a sorting value is passed,\
          \ the direction defaults to `ASC`."
        required: false
        schema:
          type: string
          default: DESC
          description: "Direction to sort results by. If a sorting value is passed,\
            \ the direction defaults to `ASC`."
          enum:
          - ASC
          - DESC
      - name: createdDateAfter
        in: query
        description: Return only entities created after this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created after this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: createdDateBefore
        in: query
        description: Return only entities created before this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created before this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedAfter
        in: query
        description: Return only events 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
          description: Return only events last modified after this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedBefore
        in: query
        description: Return only events 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
          description: Return only events last modified before this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      responses:
        "400":
          description: Invalid query param
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchEntityResponseDTOListAccessCertificateResponseDTO"
      x-permissions:
      - ACCESS_CERTIFICATE_LIST
    post:
      tags:
      - access-certificate-controller
      summary: Create Access Certificate
      description: |
        **Permissions:** `ACCESS_CERTIFICATE_CREATE`

        Creates and signs an Access Certificate for a wallet-relying
        party (WRP).
      operationId: createAccessCertificate
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateAccessCertificateRequestDTO"
        required: true
      responses:
        "400":
          description: Invalid certificate data
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EntityResponseDTO"
      x-permissions:
      - ACCESS_CERTIFICATE_CREATE
  /api/access-cert-provider/certificate/v1/{certificateId}/revoke:
    post:
      tags:
      - access-certificate-controller
      summary: Revoke an Access Certificate
      description: |+
        **Permissions:** `SIGNATURE_REVOKE`

      operationId: revokeCertificate_1
      parameters:
      - name: certificateId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "400":
          description: Business rule error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "404":
          description: Access certificate not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "204":
          description: No Content
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EntityResponseDTO"
      x-permissions:
      - SIGNATURE_REVOKE
  /api/national-registry/wallet-relying-party/v1/{walletRelyingPartyId}:
    get:
      tags:
      - wallet-relying-party-controller
      summary: Retrieve a wallet-relying party
      description: |
        **Permissions:** `WRP_DETAIL`

        Returns complete registration details for a specific wallet-relying party,
        including all intended use cases, credentials they may request, and
        intermediary relationships.
      operationId: getWalletRelyingById
      parameters:
      - name: walletRelyingPartyId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "400":
          description: Business rule error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "404":
          description: Wallet-relying party not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DetailWalletRelyingPartyResponseDTO"
      x-permissions:
      - WRP_DETAIL
    delete:
      tags:
      - wallet-relying-party-controller
      summary: Delete a wallet-relying party
      description: |-
        **Permissions:** `WRP_DELETE`

        Deletes a wallet-relying party from the registry.
      operationId: deleteWalletRelyingParty
      parameters:
      - name: walletRelyingPartyId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "400":
          description: Invalid wallet-relying party data
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "204":
          description: No Content
      x-permissions:
      - WRP_DELETE
    patch:
      tags:
      - wallet-relying-party-controller
      summary: Update a wallet-relying party
      description: |
        **Permissions:** `WRP_EDIT` `WRP_REACTIVATE` `WRP_REVOKE` `WRP_SUSPEND`

        Update an existing registration. Change
        the `state` to suspend, reactivate, or revoke a wallet-relying party.
      operationId: updateWalletRelyingParty
      parameters:
      - name: walletRelyingPartyId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateWalletRelyingPartyRequestDTO"
        required: true
      responses:
        "400":
          description: Invalid wallet-relying party data
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "204":
          description: No Content
      x-permissions:
      - WRP_EDIT
      - WRP_REACTIVATE
      - WRP_REVOKE
      - WRP_SUSPEND
  /wrp:
    get:
      tags:
      - public-wrp-controller
      summary: Retrieve the WRP JWT for given query criteria
      description: |
        Returns a signed JWT containing information about the wallet-relying party.
      operationId: getJwts
      parameters:
      - name: identifier
        in: query
        description: Filter by Wallet-Relying Party identifier
        required: false
        schema:
          type: string
          description: Filter by Wallet-Relying Party identifier
      - name: legalname
        in: query
        description: Filter by legal name
        required: false
        schema:
          type: string
          description: Filter by legal name
      - name: tradename
        in: query
        description: Filter by trade name
        required: false
        schema:
          type: string
          description: Filter by trade name
      - name: policy
        in: query
        description: Filter by policy URI or type
        required: false
        schema:
          type: string
          description: Filter by policy URI or type
      - name: entitlement
        in: query
        description: Filter by entitlement
        required: false
        schema:
          type: string
          description: Filter by entitlement
      - name: credentialmeta
        in: query
        description: Filter by the contents of 'meta' attribute of a Credential
        required: false
        schema:
          type: string
          description: Filter by the contents of 'meta' attribute of a Credential
      - name: credentialformat
        in: query
        description: Additional filter to narrow down 'Meta' matches with matching
          also the 'format' attribute
        required: false
        schema:
          type: string
          description: Additional filter to narrow down 'Meta' matches with matching
            also the 'format' attribute
      - name: usesintermediary
        in: query
        description: Filter by intermediary identifier
        required: false
        schema:
          type: string
          description: Filter by intermediary identifier
      - name: isintermediary
        in: query
        description: Filter by intermediary status (true/false)
        required: false
        schema:
          type: boolean
          description: Filter by intermediary status (true/false)
      - name: intendeduseidentifier
        in: query
        description: Filter by value of the intended use identifier
        required: false
        schema:
          type: string
          description: Filter by value of the intended use identifier
      - name: limit
        in: query
        description: The number of items to return per page
        required: false
        schema:
          type: integer
          format: int32
          default: 20
          description: The number of items to return per page
          maximum: 1000
      - name: cursor
        in: query
        description: The cursor for the next page of results
        required: false
        schema:
          type: string
          description: The cursor for the next page of results
      responses:
        "400":
          description: Business rule error
          content:
            application/jwt:
              schema:
                type: string
                format: byte
        "500":
          description: Internal server error
          content:
            application/jwt:
              schema:
                type: string
                format: byte
        "200":
          description: OK
          content:
            application/jwt:
              schema:
                type: string
                format: byte
  /wrp/{identifier}:
    get:
      tags:
      - public-wrp-controller
      summary: Retrieve the WRP JWT for given legal entity
      description: |
        Returns a signed JWT containing information about the wallet-relying party
        belonging to a given legal entity.
      operationId: getJwtForIdentifier
      parameters:
      - name: identifier
        in: path
        required: true
        schema:
          type: string
      responses:
        "400":
          description: Business rule error
          content:
            application/jwt:
              schema:
                type: string
                format: byte
        "500":
          description: Internal server error
          content:
            application/jwt:
              schema:
                type: string
                format: byte
        "404":
          description: Wallet-relying party not found
          content:
            application/jwt:
              schema:
                type: string
                format: byte
        "200":
          description: OK
          content:
            application/jwt:
              schema:
                type: string
                format: byte
  /wrp/check-intended-use:
    get:
      tags:
      - public-wrp-controller
      description: |
        Checks whether a given wallet-relying party has declared an intended use
        with the queried ID, or for a specific credential format, claim path, or
        privacy policy.
      operationId: checkIntendedUse
      parameters:
      - name: rpidentifier
        in: query
        description: Wallet Relying Party identifier
        required: true
        schema:
          type: string
          description: Wallet Relying Party identifier
      - name: intendeduseidentifier
        in: query
        description: Registry-level intended use identifier
        required: false
        schema:
          type: string
          description: Registry-level intended use identifier
      - name: credentialformat
        in: query
        description: "Credential format (e.g. dc+sd-jwt, mso_mdoc)"
        required: false
        schema:
          type: string
          description: "Credential format (e.g. dc+sd-jwt, mso_mdoc)"
      - name: claimpath
        in: query
        description: Claim path within the credential (e.g. IBAN)
        required: false
        schema:
          type: string
          description: Claim path within the credential (e.g. IBAN)
      - name: credentialmeta
        in: query
        description: Credential meta attribute (e.g. BankAccount)
        required: false
        schema:
          type: string
          description: Credential meta attribute (e.g. BankAccount)
      - name: policyurl
        in: query
        description: Privacy policy URL
        required: false
        schema:
          type: string
          description: Privacy policy URL
      responses:
        "400":
          description: Business rule error
          content:
            application/jwt:
              schema:
                type: string
                format: byte
        "500":
          description: Internal server error
          content:
            application/jwt:
              schema:
                type: string
                format: byte
        "404":
          description: Wallet-relying party not found
          content:
            application/jwt:
              schema:
                type: string
                format: byte
        "200":
          description: OK
          content:
            application/jwt:
              schema:
                type: string
                format: byte
  /api/reg-cert-provider/wallet-relying-party/v1:
    get:
      tags:
      - registration-certificate-controller
      summary: Get Registration Certificate summary
      description: |
        **Permissions:** `REGISTRATION_CERTIFICATE_LIST`

        Returns one certificate per wallet-relying party for display purposes.
        For each party, returns the certificate with the validity date furthest
        in the future.
      operationId: getAggregatedRegistrationCertificates
      parameters:
      - name: organisationId
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: page
        in: query
        description: Page to display.
        required: false
        schema:
          type: integer
          format: int32
          description: Page to display.
      - name: pageSize
        in: query
        description: Set the number of entities returned on each page.
        required: false
        schema:
          type: integer
          format: int32
          description: Set the number of entities returned on each page.
      - name: name
        in: query
        description: Return only entities with a name starting with this string. Not
          case-sensitive.
        required: false
        schema:
          type: string
          description: Return only entities with a name starting with this string.
            Not case-sensitive.
      - name: sort
        in: query
        description: Sort by certain values in the response body.
        required: false
        schema:
          type: string
          description: Sort by certain values in the response body.
      - name: exact
        in: query
        required: false
        schema:
          type: array
          description: Set which filters apply in an exact way.
          items:
            type: string
      - name: sortDirection
        in: query
        description: "Direction to sort results by. If a sorting value is passed,\
          \ the direction defaults to `ASC`."
        required: false
        schema:
          type: string
          default: DESC
          description: "Direction to sort results by. If a sorting value is passed,\
            \ the direction defaults to `ASC`."
          enum:
          - ASC
          - DESC
      - name: createdDateAfter
        in: query
        description: Return only entities created after this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created after this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: createdDateBefore
        in: query
        description: Return only entities created before this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created before this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedAfter
        in: query
        description: Return only events 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
          description: Return only events last modified after this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedBefore
        in: query
        description: Return only events 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
          description: Return only events last modified before this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      responses:
        "400":
          description: Invalid query param
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchEntityResponseDTOAggregatedRegistrationCertificateResponseDTO"
      x-permissions:
      - REGISTRATION_CERTIFICATE_LIST
  /api/config/v1:
    get:
      tags:
      - configuration-controller
      summary: Retrieve registry configuration
      description: Returns wallet-relying party registry configuration
      operationId: getConfiguration
      responses:
        "400":
          description: Business rule error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConfigurationResponseDTO"
  /api/build-info/v1:
    get:
      tags:
      - build-info-controller
      summary: Retrieve Procivis One version
      description: Returns the Procivis One version.
      operationId: getBuildInfo
      responses:
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BuildInfoResponseDTO"
  /api/access-cert-provider/wallet-relying-party/v1:
    get:
      tags:
      - access-certificate-controller
      summary: Get Access Certificate summary
      description: |
        **Permissions:** `ACCESS_CERTIFICATE_LIST`

        Returns one certificate per wallet-relying party for display purposes.
        For each party, returns the certificate with the validity date farthest
        in the future.
      operationId: getAggregatedAccessCertificates
      parameters:
      - name: organisationId
        in: query
        required: false
        schema:
          type: string
          format: uuid
      - name: page
        in: query
        description: Page to display.
        required: false
        schema:
          type: integer
          format: int32
          description: Page to display.
      - name: pageSize
        in: query
        description: Set the number of entities returned on each page.
        required: false
        schema:
          type: integer
          format: int32
          description: Set the number of entities returned on each page.
      - name: name
        in: query
        description: Return only entities with a name starting with this string. Not
          case-sensitive.
        required: false
        schema:
          type: string
          description: Return only entities with a name starting with this string.
            Not case-sensitive.
      - name: sort
        in: query
        description: Sort by certain values in the response body.
        required: false
        schema:
          type: string
          description: Sort by certain values in the response body.
      - name: exact
        in: query
        required: false
        schema:
          type: array
          description: Set which filters apply in an exact way.
          items:
            type: string
      - name: sortDirection
        in: query
        description: "Direction to sort results by. If a sorting value is passed,\
          \ the direction defaults to `ASC`."
        required: false
        schema:
          type: string
          default: DESC
          description: "Direction to sort results by. If a sorting value is passed,\
            \ the direction defaults to `ASC`."
          enum:
          - ASC
          - DESC
      - name: createdDateAfter
        in: query
        description: Return only entities created after this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created after this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: createdDateBefore
        in: query
        description: Return only entities created before this time. Timestamp in RFC3339
          format (e.g. '2023-06-09T14:19:57.000Z').
        required: false
        schema:
          type: string
          format: date-time
          description: Return only entities created before this time. Timestamp in
            RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedAfter
        in: query
        description: Return only events 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
          description: Return only events last modified after this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      - name: lastModifiedBefore
        in: query
        description: Return only events 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
          description: Return only events last modified before this time. Timestamp
            in RFC3339 format (e.g. '2023-06-09T14:19:57.000Z').
      responses:
        "400":
          description: Invalid query param
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchEntityResponseDTOAggregatedAccessCertificateResponseDTO"
      x-permissions:
      - ACCESS_CERTIFICATE_LIST
  /actuator:
    get:
      tags:
      - Actuator
      summary: Actuator root web endpoint
      operationId: links
      responses:
        "200":
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    $ref: "#/components/schemas/Link"
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    $ref: "#/components/schemas/Link"
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    $ref: "#/components/schemas/Link"
  /actuator/health:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'health'
      operationId: health
      responses:
        "200":
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
  /.well-known/jwks.json:
    get:
      tags:
      - well-known-controller
      summary: JWKS
      description: This endpoint provides public keys used for verifying JWT app tokens.
      operationId: getJwks
      responses:
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponseDTO"
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/JwksResponseDTO"
components:
  schemas:
    ErrorResponseDTO:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        cause:
          $ref: "#/components/schemas/HttpErrorResponseDTO"
        code:
          type: string
        message:
          type: string
        data: {}
        stackTrace:
          type: string
      required:
      - code
      - message
    HttpErrorResponseDTO:
      type: object
      properties:
        url:
          type: string
        code:
          type: integer
          format: int32
        message:
          type: string
        cause:
          $ref: "#/components/schemas/ProcivisErrorCauseResponseDTO"
    ProcivisErrorCauseResponseDTO:
      type: object
      properties:
        url:
          type: string
        code:
          type: integer
          format: int32
        message:
          type: string
    CreateRegistrationCertificateRequestDTO:
      type: object
      properties:
        validityStart:
          type: string
          format: date-time
          description: |
            Pass nothing to start validity now, or choose a datetime
            in the future.
        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.
        issuer:
          type: string
          format: uuid
          description: |
            Certificate identifier for signing the Registration Certificate.
            Ensure the certificate is registered on the appropriate trust lists.
        issuerCertificate:
          type: string
          format: uuid
          description: |
            For certificate identifiers with multiple certificates, choose a
            certificate to use for signing. If left empty, one will be chosen
            automatically.
        intendedUseIdentifier:
          type: string
          description: |
            Registrar-provided unique identifier of the registered intended use.
        wrpNationalRegistryIdentifier:
          type: string
          description: |
            Identifier of wallet-relying party as it is listed in the national
            registry.
        wrpNationalRegistryName:
          type: string
          description: |
            Name of National Registry where the wallet-relying party is listed.
            This must reference a configuration object in
            `walletRelyingPartyRegistry.nationalRegistries`.
        intermediaryNationalRegistryIdentifier:
          type: string
          description: Identifier of intermediary as it is listed in the national
            registry.
        intermediaryId:
          type: string
          format: uuid
          description: |
            Only relevant if your organization acts as both a registrar and a
            certificate provider. References an intermediary record in your registrar
            service to pre-populate display values in the certificate provider
            interface.
        wrpId:
          type: string
          format: uuid
          description: |
            Only relevant if your organization acts as both a registrar and a
            certificate provider. References a wallet-relying party record in
            your registrar service to pre-populate display values in the certificate
            provider interface.
        organisationId:
          type: string
          format: uuid
          description: "If not in STS authentication mode, provide an organization\
            \ ID."
      required:
      - issuer
      - wrpNationalRegistryIdentifier
      - wrpNationalRegistryName
    EntityResponseDTO:
      type: object
      properties:
        id:
          type: string
    CreateAttestationRequestDTO:
      type: object
      properties:
        credentialSchemaId:
          type: string
          format: uuid
          description: |
            Reference to a credential schema ID. This is the credential type
            being requested (for example, a national ID, driving license,
            diploma or other credential type). The credential schema must be
            registered in the same organization as the national register.
        meta:
          type: string
        format:
          type: string
      required:
      - credentialSchemaId
      - format
      - meta
    CreateClaimRequestDTO:
      type: object
      properties:
        path:
          type: string
          description: |
            A JSON pointer to a specific attribute within the credential.
          minLength: 1
        claimSchemaId:
          type: string
          format: uuid
          description: |
            For those credential schemas internal to the organization,
            optionally pass the ID of the claim within the schema.
        values:
          type: array
          description: |
            Values the service provider is permitted to request. If provided,
            the wallet will only return this claim when the credential's
            value at the given path matches one of the listed values.
          items:
            type: string
      required:
      - path
    CreateContactRequestDTO:
      type: object
      properties:
        country:
          type: string
          description: |
            The country where the organization is legally established. This
            determines which Member State's registry the organization
            belongs to and which supervisory authorities have jurisdiction.
            This value must match an option from
            `walletRelyingPartyRegistry.contactCountries.value` in the
            configuration.
          minLength: 1
        emails:
          type: array
          description: |
            Email addresses for matters relating to the organization's registration
            and use of wallet data.
          items:
            type: string
        phoneNumbers:
          type: array
          description: |
            Phone numbers for matters relating to registration and wallet data usage.
            Must include the international dialing prefix (for example, +49 for
            Germany).
          items:
            type: string
        urls:
          type: array
          description: |
            Website addresses for general information about the organization.
            These help wallet users verify they are sharing data with a
            legitimate organization.
          items:
            type: string
          minItems: 1
        postalAddress:
          type: string
          description: |
            The physical address where the organization is established. This is
            stored for regulatory purposes but is not exposed through the public
            registry API.
          minLength: 1
        identifiers:
          type: array
          description: |
            One or more official identifiers for this organization. At least one
            identifier matching the registry's configured `primaryIdentifierType`
            is required, and all provided identifiers must use a type defined in
            the registry's `identifierTypes`. The EUID (European Unique Identifier)
            is the preferred identifier type where available, as it enables
            cross-border recognition across EU Member States. Each identifier
            must include its type and the exact value as it appears in the
            official record.
          items:
            $ref: "#/components/schemas/CreateIdentifierRequestDTO"
          minItems: 1
      required:
      - country
      - identifiers
      - postalAddress
      - urls
    CreateCredentialRequestDTO:
      type: object
      properties:
        credentialSchemaId:
          type: string
          format: uuid
          description: |
            Reference to a credential schema ID. This is the credential type
            being requested (for example, a national ID, driving license,
            diploma or other credential type). The credential schema must be
            registered in the same organization as the national register.
        claims:
          type: array
          description: |
            The specific attributes needed from within the credential. If
            omitted, all attributes in the credential may be requested. To
            support data minimization, list only the attributes actually
            needed. For example, an age verification use case may only need
            the birth date from an ID credential, not the full name or address.
            Specify the claim schema ID(s) from the credential schema.
          items:
            $ref: "#/components/schemas/CreateClaimRequestDTO"
        meta:
          type: string
          description: |
            Format-specific metadata describing the credential type and
            validity properties being registered. For SD-JWT VC credentials,
            follow the structure defined in the OpenID4VP Section B.3.5. For
            ISO mdoc credentials, follow section B.2.3.
        format:
          type: string
          description: |
            The credential format for this attestation, such as `dc+sd-jwt`
            or `mso_mdoc`. Valid values are defined in the OpenID4VP specification
            (Appendix B) and the EU attestation catalog.
      required:
      - credentialSchemaId
      - format
      - meta
    CreateIdentifierRequestDTO:
      type: object
      properties:
        value:
          type: string
          description: |
            The identifier exactly as it appears in the official record. For VAT
            numbers and certain national identifiers, this should include the
            two-letter country prefix.
          minLength: 1
        type:
          type: string
          description: |
            The identifier scheme, such as EUID, VAT, LEI or national business
            register number. This determines how the identifier value is
            validated and how it can be used for cross-border verification.
          minLength: 1
      required:
      - type
      - value
    CreateIntendedUseRequestDTO:
      type: object
      properties:
        validityStart:
          type: string
          format: date-time
          description: |
            When this intended use becomes active. Requests made before this
            date will not be valid.
        validityEnd:
          type: string
          format: date-time
          description: |
            When this intended use expires. After this date, the organization
            can no longer request data for this purpose. If omitted, the
            intended use remains valid until explicitly revoked.
        credentials:
          type: array
          description: |
            The specific credentials (attestations) this organization will
            request from wallets for this intended use. Each credential
            specifies a type and the particular attributes needed. Organizations
            should request only the minimum attributes necessary for their
            stated purpose.
          items:
            $ref: "#/components/schemas/CreateCredentialRequestDTO"
        purposes:
          type: array
          description: |
            Localized explanations of why this data is being requested, written
            for wallet users who must decide whether to share their information.
            This should reference the legal basis for processing under GDPR
            Article 6. Provide translations for all languages where the service
            operates.
          items:
            $ref: "#/components/schemas/CreatePurposeRequestDTO"
        privacyPolicies:
          type: array
          description: |
            Links to the privacy policy governing this intended use. The privacy
            policy must explain how data will be processed, stored, and
            protected. Provide localized versions for all languages where the
            service operates.
          items:
            $ref: "#/components/schemas/CreatePrivacyPolicyRequestDTO"
      required:
      - validityStart
    CreateLegalPersonRequestDTO:
      type: object
      properties:
        legalNames:
          type: array
          description: |
            The official registered name(s) of the organization as stated
            in business registry records. This must match what appears in
            the official record referenced by the organization's identifier.
          items:
            type: string
        establishedByLaw:
          type: array
          description: |
            For public sector bodies or entities created by statute,
            references to the legal instruments that established the
            organization. This helps document the legal basis for the
            organization's existence and may be relevant for determining
            applicable registration requirements. This value must match
            an option from
            `walletRelyingPartyRegistry.establishedByLawTypes.value` in
            the configuration.
          items:
            type: string
        contact:
          $ref: "#/components/schemas/CreateContactRequestDTO"
          description: Contact and identification details for the organization.
      required:
      - contact
      - legalNames
    CreateNaturalPersonRequestDTO:
      type: object
      properties:
        givenName:
          type: string
          description: |
            The first name(s) of the individual, including middle names where
            applicable, exactly as recorded in official identity documents.
        surname:
          type: string
          description: |
            The family name(s) of the individual, exactly as recorded in official
            identity documents.
        birthdate:
          type: string
          format: date
          description: |
            The individual's date of birth as recorded in official identity
            documents. Used together with other attributes to uniquely identify
            the person.
        birthplace:
          type: string
          description: |
            The individual's place of birth as recorded in official identity
            documents. Used together with other attributes to uniquely identify
            the person.
        contact:
          $ref: "#/components/schemas/CreateContactRequestDTO"
          description: |
            Contact and identification details for the individual's professional
            capacity.
      required:
      - birthdate
      - birthplace
      - contact
      - givenName
      - surname
    CreatePrivacyPolicyRequestDTO:
      type: object
      properties:
        policyUri:
          type: string
          description: |
            URL where the privacy policy can be accessed. This should be
            a stable URL that remains valid for the duration of the
            registration.
        type:
          type: string
          description: |
            The type of policy document. This value must match an option from
            `walletRelyingPartyRegistry.privacyPolicyTypes.value` in the
            configuration.
      required:
      - policyUri
      - type
    CreatePurposeRequestDTO:
      type: object
      properties:
        language:
          type: string
          description: |
            The language of this purpose statement. This value must match an option
            from `walletRelyingPartyRegistry.languages.value` in the configuration.
        purpose:
          type: string
          description: |
            A clear explanation of why the data is needed, such as "To verify your
            age for purchasing age-restricted products" or "To confirm your identity
            when opening a bank account". This text is displayed to wallet users at
            the moment they are asked to share data.
      required:
      - language
      - purpose
    CreateServiceDescriptionRequestDTO:
      type: object
      properties:
        language:
          type: string
          description: |
            This value must match an option from
            `walletRelyingPartyRegistry.languages.value` in the
            configuration.
        description:
          type: string
          description: |
            A clear, concise description of the services provided, written
            for a general audience. Avoid legal or technical jargon.
      required:
      - description
      - language
    CreateWalletRelyingPartyRequestDTO:
      type: object
      properties:
        name:
          type: string
          description: |
            A user-friendly name that wallet users will see when asked
            to share their data. This can be a trade name or service name
            that is recognizable to the public, even if it differs from
            the formal legal name.
        isPublicSector:
          type: boolean
          description: |
            Whether this organization is a public sector body. Public bodies
            may have different legal bases for requesting personal data under
            GDPR and may be subject to different registration requirements.
        supportUris:
          type: array
          description: |
            One or more URIs where users can contact the organization for
            support or to exercise their data rights, particularly data deletion
            requests. At least one website URI or email address is strongly
            recommended. Wallet users may be directed here to request deletion
            of data they have shared.
          items:
            type: string
          minItems: 1
        serviceDescriptions:
          type: array
          description: |
            Localized descriptions of the services this organization provides.
            These help wallet users understand what kind of organization is
            requesting their data. Provide descriptions in all languages
            relevant to your user base.
          items:
            $ref: "#/components/schemas/CreateServiceDescriptionRequestDTO"
          minItems: 1
        entitlements:
          type: array
          description: |
            The formal roles this organization is authorized to perform in the
            wallet ecosystem. Most organizations register as "Service_Provider"
            to request data from wallets. Attestation providers (organizations
            that issue credentials to wallets) must also register their provider
            role, such as "QEAA_Provider" or "PUB_EAA_Provider". An organization
            that both issues and consumes credentials must register both
            entitlements.
          items:
            type: string
          minItems: 1
        intermediaries:
          type: array
          description: |
            Reference to other registered wallet-relying parties that will
            handle wallet interactions on behalf of this organization. When
            using an intermediary, the intermediary's systems connect to wallets
            using their own access certificate, but present this organization's
            registration certificate. The wallet user sees this organization's
            identity and purpose, not the intermediary's.
          items:
            type: string
            format: uuid
          uniqueItems: true
        intendedUses:
          type: array
          description: |
            The specific purposes for which this organization will request data
            from wallets. Each intended use defines a distinct purpose, the
            credentials and attributes needed, and the applicable privacy policy.
            Organizations that only act as intermediaries do not register
            intended uses.
          items:
            $ref: "#/components/schemas/CreateIntendedUseRequestDTO"
        attestations:
          type: array
          description: |
            For organizations registered as attestation providers (for example,
            QEAA_Provider or PID_Provider), this lists the credential types they
            issue to wallets. Reference credential schemas from the Catologue of
            Attestations where available.
          items:
            $ref: "#/components/schemas/CreateAttestationRequestDTO"
        legalPerson:
          $ref: "#/components/schemas/CreateLegalPersonRequestDTO"
          description: |
            Identity information for an organization registering as a
            wallet-relying party. Use this when registering a company, public
            body, association, or any other incorporated entity. Exactly one of
            `legalPerson` or `naturalPerson` must be provided.
        naturalPerson:
          $ref: "#/components/schemas/CreateNaturalPersonRequestDTO"
          description: |
            Identity information for an individual registering as a
            wallet-relying party. Use this section when registering a sole
            trader, freelance professional, or other self-employed individual
            who operates under their own name rather than through an
            incorporated entity. Exactly one of `legalPerson` or
            `naturalPerson` must be provided.
        supervisoryAuthority:
          type: string
          format: uuid
          description: |
            Identifier of the supervisory authority responsible for this
            wallet-relying party.
        organisationId:
          type: string
          format: uuid
      required:
      - entitlements
      - name
      - serviceDescriptions
      - supervisoryAuthority
      - supportUris
    CreateSupervisoryAuthorityRequestDTO:
      type: object
      properties:
        legalPerson:
          $ref: "#/components/schemas/CreateLegalPersonRequestDTO"
        naturalPerson:
          $ref: "#/components/schemas/CreateNaturalPersonRequestDTO"
        organisationId:
          type: string
          format: uuid
    CreateAccessCertificateRequestDTO:
      type: object
      properties:
        validityStart:
          type: string
          format: date-time
          description: |
            Pass nothing to start validity now or choose a datetime
            in the future.
        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.
        issuer:
          type: string
          format: uuid
          description: |
            Certificate Authority identifier for signing the Access
            Certificate. Ensure the CA is registered on the appropriate
            trust lists.
        issuerCertificate:
          type: string
          format: uuid
          description: |
            For certificate identifiers with multiple certificates, choose a
            certificate to use for signing. If left empty, one will be chosen
            automatically.
        wrpNationalRegistryIdentifier:
          type: string
          description: |
            Identifier of wallet-relying party as it is listed in the national
            registry.
        wrpNationalRegistryName:
          type: string
          description: |
            Name of National Registry where the wallet-relying party is listed.
            This must reference a configuration object in
            `walletRelyingPartyRegistry.nationalRegistries`.
        wrpId:
          type: string
          format: uuid
          description: |
            Only relevant if your organization acts as both a registrar and a
            certificate provider. References a wallet-relying party record in
            your registrar service to pre-populate display values in the certificate
            provider interface.
        organisationId:
          type: string
          format: uuid
          description: "If not in STS authentication mode, provide an organization\
            \ ID."
        csr:
          type: string
          description: |
            The Certificate Signing Request (CSR) from the wallet-relying party in
            PEM format. Used to verify proof of possession of the private key and
            to extract the public key for the Access Certificate.
      required:
      - csr
      - issuer
      - wrpNationalRegistryIdentifier
      - wrpNationalRegistryName
    UpdateAttestationRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        credentialSchemaId:
          type: string
          format: uuid
        meta:
          type: string
        format:
          type: string
    UpdateClaimRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        path:
          type: string
          description: |
            A JSON pointer to a specific attribute within the credential.
        claimSchemaId:
          type: string
          format: uuid
          description: |
            For those credential schemas internal to the organization,
            optionally pass the ID of the claim within the schema.
        values:
          type: array
          description: |
            Values the service provider is permitted to request. If provided,
            the wallet will only return this claim when the credential's
            value at the given path matches one of the listed values.
          items:
            type: string
    UpdateContactRequestDTO:
      type: object
      properties:
        country:
          type: string
          description: |
            The country where the organization is legally established. This
            determines which Member State's registry the organization
            belongs to and which supervisory authorities have jurisdiction.
            This value must match an option from
            `walletRelyingPartyRegistry.contactCountries.value` in the
            configuration.
        emails:
          type: array
          description: |
            Email addresses for matters relating to the organization's
            registration and use of wallet data.
          items:
            type: string
        phoneNumbers:
          type: array
          description: |
            Phone numbers for matters relating to registration and wallet data
            usage. Must include the international dialing prefix (for example,
            +49 for Germany).
          items:
            type: string
        urls:
          type: array
          description: |
            Website addresses for general information about the organization.
            These help wallet users verify they are sharing data with a
            legitimate organization.
          items:
            type: string
        postalAddress:
          type: string
          description: |
            The physical address where the organization is established. This is
            stored for regulatory purposes but is not exposed through the public
            registry API.
        identifiers:
          type: array
          description: |
            One or more official identifiers for this organization. At least one
            identifier matching the registry's configured `primaryIdentifierType`
            is required, and all provided identifiers must use a type defined in
            the registry's `identifierTypes`. The EUID (European Unique Identifier)
            is the preferred identifier type where available, as it enables
            cross-border recognition across EU Member States. Each identifier
            must include its type and the exact value as it appears in the
            official record.
          items:
            $ref: "#/components/schemas/UpdateIdentifierRequestDTO"
    UpdateCredentialRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        credentialSchemaId:
          type: string
          format: uuid
          description: |
            Reference to a credential schema ID. This is the credential type
            being requested (for example, a national ID, driving license,
            diploma or other credential type). The credential schema must be
            registered in the same organization as the national register.
        meta:
          type: string
          description: |
            Format-specific metadata describing the credential type and
            validity properties being registered. For SD-JWT VC credentials,
            follow the structure defined in the OpenID4VP Section B.3.5. For
            ISO mdoc credentials, follow section B.2.3.
        format:
          type: string
          description: |
            The credential format for this attestation, such as `dc+sd-jwt`
            or `mso_mdoc`. Valid values are defined in the OpenID4VP
            specification (Appendix B) and the EU attestation catalog.
        claims:
          type: array
          description: |
            The specific attributes needed from within the credential. If
            omitted, all attributes in the credential may be requested. To
            support data minimization, list only the attributes actually
            needed. For example, an age verification use case may only need
            the birth date from an ID credential, not the full name or address.
            Specify the claim schema ID(s) from the credential schema.
          items:
            $ref: "#/components/schemas/UpdateClaimRequestDTO"
    UpdateIdentifierRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        value:
          type: string
          description: |
            The identifier exactly as it appears in the official record. For VAT
            numbers and certain national identifiers, this should include the
            two-letter country prefix.
        type:
          type: string
          description: |
            The identifier scheme, such as EUID, VAT, LEI or national business
            register number. This determines how the identifier value is
            validated and how it can be used for cross-border verification.
    UpdateIntendedUseRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        validityStart:
          type: string
          format: date-time
          description: |
            When this intended use becomes active. Requests made before this
            date will not be valid.
        validityEnd:
          type: string
          format: date-time
          description: |
            When this intended use expires. After this date, the organization
            can no longer request data for this purpose. If omitted, the
            intended use remains valid until explicitly revoked.
        credentials:
          type: array
          description: |
            The specific credentials (attestations) this organization will
            request from wallets for this intended use. Each credential
            specifies a type and the particular attributes needed. Organizations
            should request only the minimum attributes necessary for their
            stated purpose.
          items:
            $ref: "#/components/schemas/UpdateCredentialRequestDTO"
        purposes:
          type: array
          description: |
            Localized explanations of why this data is being requested, written
            for wallet users who must decide whether to share their information.
            This should reference the legal basis for processing under GDPR
            Article 6. Provide translations for all languages where the service
            operates.
          items:
            $ref: "#/components/schemas/UpdatePurposeRequestDTO"
        privacyPolicies:
          type: array
          description: |
            Links to the privacy policy governing this intended use. The privacy
            policy must explain how data will be processed, stored, and
            protected. Provide localized versions for all languages where the
            service operates.
          items:
            $ref: "#/components/schemas/UpdatePrivacyPolicyRequestDTO"
    UpdateLegalPersonRequestDTO:
      type: object
      properties:
        legalNames:
          type: array
          description: |
            The official registered name(s) of the organization as stated
            in business registry records. This must match what appears in
            the official record referenced by the organization's identifier.
          items:
            type: string
        establishedByLaw:
          type: array
          description: |
            For public sector bodies or entities created by statute,
            references to the legal instruments that established the
            organization. This helps document the legal basis for the
            organization's existence and may be relevant for determining
            applicable registration requirements. This value must match
            an option from
            `walletRelyingPartyRegistry.establishedByLawTypes.value` in
            the configuration.
          items:
            type: string
        contact:
          $ref: "#/components/schemas/UpdateContactRequestDTO"
          description: Contact and identification details for the organization.
    UpdateNaturalPersonRequestDTO:
      type: object
      properties:
        givenName:
          type: string
          description: |
            The first name(s) of the individual, including middle names where
            applicable, exactly as recorded in official identity documents.
        surname:
          type: string
          description: |
            The family name(s) of the individual, exactly as recorded in official
            identity documents.
        birthdate:
          type: string
          format: date
          description: |
            The individual's date of birth as recorded in official identity
            documents. Used together with other attributes to uniquely identify
            the person.
        birthplace:
          type: string
          description: |
            The individual's place of birth as recorded in official identity
            documents. Used together with other attributes to uniquely identify
            the person.
        contact:
          $ref: "#/components/schemas/UpdateContactRequestDTO"
          description: |
            Contact and identification details for the individual's professional
            capacity.
    UpdatePrivacyPolicyRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        policyUri:
          type: string
          description: |
            URL where the privacy policy can be accessed. This should be
            a stable URL that remains valid for the duration of the
            registration.
        type:
          type: string
          description: |
            The type of policy document. This value must match an option from
            `walletRelyingPartyRegistry.privacyPolicyTypes.value` in the
            configuration.
    UpdatePurposeRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        language:
          type: string
          description: |
            The language of this purpose statement. This value must match an option
            from `walletRelyingPartyRegistry.languages.value` in the configuration.
        purpose:
          type: string
          description: |
            A clear explanation of why the data is needed, such as "To verify
            your age for purchasing age-restricted products" or "To confirm your
            identity when opening a bank account". This text is displayed to
            wallet users at the moment they are asked to share data.
    UpdateServiceDescriptionRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        language:
          type: string
          description: |
            This value must match an option from
            `walletRelyingPartyRegistry.languages.value` in the
            configuration.
        description:
          type: string
          description: |
            A clear, concise description of the services provided, written
            for a general audience. Avoid legal or technical jargon.
    UpdateWalletRelyingPartyRequestDTO:
      type: object
      properties:
        name:
          type: string
          description: |
            A user-friendly name that wallet users will see when asked
            to share their data. This can be a trade name or service name
            that is recognizable to the public, even if it differs from
            the formal legal name.
        isPublicSector:
          type: boolean
          description: |
            Whether this organization is a public sector body. Public bodies
            may have different legal bases for requesting personal data under
            GDPR and may be subject to different registration requirements.
        state:
          type: string
          description: |
            Use this to suspend, reactivate, or revoke a wallet-relying
            party.
          enum:
          - ACTIVE
          - REVOKED
          - SUSPENDED
        supportUris:
          type: array
          description: |
            One or more URIs where users can contact the organization for
            support or to exercise their data rights, particularly data deletion
            requests. At least one website URI or email address is strongly
            recommended. Wallet users may be directed here to request deletion
            of data they have shared.
          items:
            type: string
        serviceDescriptions:
          type: array
          description: |
            Localized descriptions of the services this organization provides.
            These help wallet users understand what kind of organization is
            requesting their data. Provide descriptions in all languages
            relevant to your user base.
          items:
            $ref: "#/components/schemas/UpdateServiceDescriptionRequestDTO"
        entitlements:
          type: array
          description: |
            The formal roles this organization is authorized to perform in the
            wallet ecosystem. Most organizations register as "Service_Provider"
            to request data from wallets. Attestation providers (organizations
            that issue credentials to wallets) must also register their provider
            role, such as "QEAA_Provider" or "PUB_EAA_Provider". An organization
            that both issues and consumes credentials must register both
            entitlements.
          items:
            type: string
        attestations:
          type: array
          description: |
            For organizations registered as attestation providers (for example,
            QEAA_Provider or PID_Provider), this lists the credential types they
            issue to wallets. Reference credential schemas from the Catologue of
            Attestations where available.
          items:
            $ref: "#/components/schemas/UpdateAttestationRequestDTO"
        intermediaries:
          type: array
          description: |
            Reference to other registered wallet-relying parties that will
            handle wallet interactions on behalf of this organization. When
            using an intermediary, the intermediary's systems connect to wallets
            using their own access certificate, but present this organization's
            registration certificate. The wallet user sees this organization's
            identity and purpose, not the intermediary's.
          items:
            type: string
            format: uuid
          uniqueItems: true
        intendedUses:
          type: array
          description: |
            The specific purposes for which this organization will request data
            from wallets. Each intended use defines a distinct purpose, the
            credentials and attributes needed, and the applicable privacy policy.
            Organizations that only act as intermediaries do not register
            intended uses.
          items:
            $ref: "#/components/schemas/UpdateIntendedUseRequestDTO"
        supervisoryAuthority:
          type: string
          format: uuid
          description: |
            Identifier of the supervisory authority responsible for this
            wallet-relying party.
        legalPerson:
          $ref: "#/components/schemas/UpdateLegalPersonRequestDTO"
          description: |
            Identity information for an organization registering as a
            wallet-relying party. Use this when registering a company, public
            body, association, or any other incorporated entity. Exactly one of
            `legalPerson` or `naturalPerson` must be provided.
        naturalPerson:
          $ref: "#/components/schemas/UpdateNaturalPersonRequestDTO"
          description: |
            Identity information for an individual registering as a
            wallet-relying party. Use this section when registering a sole
            trader, freelance professional, or other self-employed individual
            who operates under their own name rather than through an
            incorporated entity. Exactly one of `legalPerson` or
            `naturalPerson` must be provided.
    AggregatedRegistrationCertificateResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        minValidityDate:
          type: string
          format: date-time
        maxExpiryDate:
          type: string
          format: date-time
        walletRelyingPartyName:
          type: string
        walletRelyingPartyIdentifier:
          type: string
        walletRelyingPartyNationalRegistryName:
          type: string
        walletRelyingPartyIntermediaryId:
          type: string
        walletRelyingPartyIntermediaryName:
          type: string
      required:
      - createdDate
      - id
      - lastModified
      - maxExpiryDate
      - minValidityDate
      - walletRelyingPartyIdentifier
      - walletRelyingPartyName
      - walletRelyingPartyNationalRegistryName
    SearchEntityResponseDTOAggregatedRegistrationCertificateResponseDTO:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: "#/components/schemas/AggregatedRegistrationCertificateResponseDTO"
        totalItems:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
      required:
      - totalItems
      - totalPages
      - values
    ListRegistrationCertificateResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        validityStart:
          type: string
          format: date-time
        validityEnd:
          type: string
          format: date-time
        state:
          type: string
          enum:
          - ACTIVE
          - EXPIRED
          - NOT_YET_ACTIVE
          - REVOKED
        certificate:
          type: string
        coreIssuerIdentifierId:
          type: string
          format: uuid
        intendedUseIdentifier:
          type: string
        intermediaryId:
          type: string
        intermediaryName:
          type: string
      required:
      - certificate
      - coreIssuerIdentifierId
      - createdDate
      - id
      - intendedUseIdentifier
      - lastModified
      - state
      - validityEnd
      - validityStart
    SearchEntityResponseDTOListRegistrationCertificateResponseDTO:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: "#/components/schemas/ListRegistrationCertificateResponseDTO"
        totalItems:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
      required:
      - totalItems
      - totalPages
      - values
    exact:
      type: array
      description: Set which filters apply in an exact way.
      enum:
      - name
      items:
        type: string
        description: Set which filters apply in an exact way.
        enum:
        - name
    ListWalletRelyingPartyResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        name:
          type: string
        entitlements:
          type: array
          items:
            type: string
        state:
          type: string
          description: The current registration status.
          enum:
          - ACTIVE
          - REVOKED
          - SUSPENDED
        organisationId:
          type: string
          format: uuid
        isPublicSector:
          type: boolean
        supportUris:
          type: array
          items:
            type: string
          minItems: 1
      required:
      - createdDate
      - id
      - lastModified
      - name
      - organisationId
      - state
      - supportUris
    SearchEntityResponseDTOListWalletRelyingPartyResponseDTO:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: "#/components/schemas/ListWalletRelyingPartyResponseDTO"
        totalItems:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
      required:
      - totalItems
      - totalPages
      - values
    DetailAttestationResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        credentialSchemaId:
          type: string
          format: uuid
        meta:
          type: string
        format:
          type: string
      required:
      - createdDate
      - credentialSchemaId
      - format
      - id
      - lastModified
      - meta
    DetailClaimResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        path:
          type: string
        claimSchemaId:
          type: string
          format: uuid
        values:
          type: array
          items:
            type: string
      required:
      - createdDate
      - id
      - lastModified
      - path
    DetailContactResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        country:
          type: string
        emails:
          type: array
          items:
            type: string
        phoneNumbers:
          type: array
          items:
            type: string
        urls:
          type: array
          items:
            type: string
        postalAddress:
          type: string
        identifiers:
          type: array
          items:
            $ref: "#/components/schemas/DetailIdentifierResponseDTO"
      required:
      - country
      - createdDate
      - id
      - lastModified
      - postalAddress
      - urls
    DetailCredentialResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        credentialSchemaId:
          type: string
          format: uuid
        claims:
          type: array
          items:
            $ref: "#/components/schemas/DetailClaimResponseDTO"
        meta:
          type: string
        format:
          type: string
      required:
      - createdDate
      - credentialSchemaId
      - format
      - id
      - lastModified
      - meta
    DetailIdentifierResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        value:
          type: string
        type:
          type: string
      required:
      - createdDate
      - id
      - lastModified
      - type
      - value
    DetailIntendedUseResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        validityStart:
          type: string
          format: date-time
        validityEnd:
          type: string
          format: date-time
        credentials:
          type: array
          items:
            $ref: "#/components/schemas/DetailCredentialResponseDTO"
        purposes:
          type: array
          items:
            $ref: "#/components/schemas/DetailPurposeResponseDTO"
        privacyPolicies:
          type: array
          items:
            $ref: "#/components/schemas/DetailPrivacyPolicyResponseDTO"
      required:
      - createdDate
      - id
      - lastModified
      - validityStart
    DetailIntermediaryResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        name:
          type: string
      required:
      - createdDate
      - id
      - lastModified
      - name
    DetailLegalPersonResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        legalNames:
          type: array
          items:
            type: string
        establishedByLaw:
          type: array
          items:
            type: string
        contact:
          $ref: "#/components/schemas/DetailContactResponseDTO"
      required:
      - contact
      - createdDate
      - id
      - lastModified
      - legalNames
    DetailNaturalPersonResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        givenName:
          type: string
        surname:
          type: string
        birthdate:
          type: string
          format: date
        birthplace:
          type: string
        contact:
          $ref: "#/components/schemas/DetailContactResponseDTO"
      required:
      - birthdate
      - birthplace
      - contact
      - createdDate
      - givenName
      - id
      - lastModified
      - surname
    DetailPrivacyPolicyResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        policyUri:
          type: string
        type:
          type: string
      required:
      - createdDate
      - id
      - lastModified
      - policyUri
      - type
    DetailPurposeResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        language:
          type: string
        purpose:
          type: string
      required:
      - createdDate
      - id
      - language
      - lastModified
      - purpose
    DetailServiceDescriptionResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        language:
          type: string
        description:
          type: string
      required:
      - createdDate
      - description
      - id
      - language
      - lastModified
    DetailSupervisoryAuthorityResponseDTO:
      type: object
      properties:
        legalPerson:
          $ref: "#/components/schemas/DetailLegalPersonResponseDTO"
        naturalPerson:
          $ref: "#/components/schemas/DetailNaturalPersonResponseDTO"
        organisationId:
          type: string
          format: uuid
    DetailWalletRelyingPartyResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        name:
          type: string
        entitlements:
          type: array
          items:
            type: string
        state:
          type: string
          description: The current registration status.
          enum:
          - ACTIVE
          - REVOKED
          - SUSPENDED
        organisationId:
          type: string
          format: uuid
        isPublicSector:
          type: boolean
        supportUris:
          type: array
          items:
            type: string
          minItems: 1
        intermediaries:
          type: array
          items:
            $ref: "#/components/schemas/DetailIntermediaryResponseDTO"
        serviceDescriptions:
          type: array
          items:
            $ref: "#/components/schemas/DetailServiceDescriptionResponseDTO"
        intendedUses:
          type: array
          items:
            $ref: "#/components/schemas/DetailIntendedUseResponseDTO"
        legalPerson:
          $ref: "#/components/schemas/DetailLegalPersonResponseDTO"
        naturalPerson:
          $ref: "#/components/schemas/DetailNaturalPersonResponseDTO"
        attestations:
          type: array
          items:
            $ref: "#/components/schemas/DetailAttestationResponseDTO"
        supervisoryAuthority:
          $ref: "#/components/schemas/DetailSupervisoryAuthorityResponseDTO"
      required:
      - createdDate
      - id
      - lastModified
      - name
      - organisationId
      - state
      - supportUris
    ListSupervisoryAuthoritiesResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        givenName:
          type: string
        surname:
          type: string
        legalNames:
          type: array
          items:
            type: string
        organisationId:
          type: string
          format: uuid
      required:
      - createdDate
      - id
      - lastModified
      - organisationId
    SearchEntityResponseDTOListSupervisoryAuthoritiesResponseDTO:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: "#/components/schemas/ListSupervisoryAuthoritiesResponseDTO"
        totalItems:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
      required:
      - totalItems
      - totalPages
      - values
    ConfigurationResponseDTO:
      type: object
      properties:
        walletRelyingPartyRegistry:
          $ref: "#/components/schemas/WRPRConfigurationResponseDTO"
        modifiedDate:
          type: string
          format: date-time
      required:
      - modifiedDate
      - walletRelyingPartyRegistry
    EntitlementTypeResponseDTO:
      type: object
      properties:
        display:
          $ref: "#/components/schemas/I18nResponseDTO"
        value:
          type: string
        requireAttestation:
          type: boolean
      required:
      - display
      - requireAttestation
      - value
    I18nResponseDTO:
      type: object
      properties:
        en:
          type: string
        de:
          type: string
    IdentifierTypeResponseDTO:
      type: object
      properties:
        display:
          $ref: "#/components/schemas/I18nResponseDTO"
        value:
          type: string
        legalPersonCode:
          type: string
        naturalPersonCode:
          type: string
      required:
      - display
      - value
    NationalRegistryConfigEntryResponseDTO:
      type: object
      properties:
        url:
          type: string
        internal:
          type: boolean
        display: {}
        order:
          type: integer
          format: int32
      required:
      - display
      - url
    SimpleConfigEntryResponseDTO:
      type: object
      properties:
        display:
          $ref: "#/components/schemas/I18nResponseDTO"
        value:
          type: string
      required:
      - display
      - value
    WRPRConfigurationResponseDTO:
      type: object
      properties:
        languages:
          type: array
          items:
            $ref: "#/components/schemas/SimpleConfigEntryResponseDTO"
        privacyPolicyTypes:
          type: array
          items:
            $ref: "#/components/schemas/SimpleConfigEntryResponseDTO"
        establishedByLawTypes:
          type: array
          items:
            $ref: "#/components/schemas/SimpleConfigEntryResponseDTO"
        contactCountries:
          type: array
          items:
            $ref: "#/components/schemas/SimpleConfigEntryResponseDTO"
        identifierTypes:
          type: array
          items:
            $ref: "#/components/schemas/IdentifierTypeResponseDTO"
        entitlementTypes:
          type: array
          items:
            $ref: "#/components/schemas/EntitlementTypeResponseDTO"
        primaryLanguage:
          type: string
        primaryIdentifierType:
          type: string
        registryUrl:
          type: string
        nationalRegistries:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/NationalRegistryConfigEntryResponseDTO"
        certificatePolicy:
          type: string
      required:
      - certificatePolicy
      - contactCountries
      - entitlementTypes
      - establishedByLawTypes
      - identifierTypes
      - languages
      - nationalRegistries
      - primaryIdentifierType
      - primaryLanguage
      - privacyPolicyTypes
      - registryUrl
    BuildInfoResponseDTO:
      type: object
      properties:
        name:
          type: string
        time:
          type: string
          format: date-time
        version:
          type: string
        group:
          type: string
        artifact:
          type: string
        javaVersion:
          type: string
        description:
          type: string
        commitSha:
          type: string
        pipelineId:
          type: string
        commitBranch:
          type: string
        commitTag:
          type: string
    AggregatedAccessCertificateResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        minValidityDate:
          type: string
          format: date-time
        maxExpiryDate:
          type: string
          format: date-time
        walletRelyingPartyName:
          type: string
        walletRelyingPartyIdentifier:
          type: string
        walletRelyingPartyNationalRegistryName:
          type: string
      required:
      - createdDate
      - id
      - lastModified
      - maxExpiryDate
      - minValidityDate
      - walletRelyingPartyIdentifier
      - walletRelyingPartyName
      - walletRelyingPartyNationalRegistryName
    SearchEntityResponseDTOAggregatedAccessCertificateResponseDTO:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: "#/components/schemas/AggregatedAccessCertificateResponseDTO"
        totalItems:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
      required:
      - totalItems
      - totalPages
      - values
    ListAccessCertificateResponseDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdDate:
          type: string
          format: date-time
        lastModified:
          type: string
          format: date-time
        validityStart:
          type: string
          format: date-time
        validityEnd:
          type: string
          format: date-time
        state:
          type: string
          enum:
          - ACTIVE
          - EXPIRED
          - NOT_YET_ACTIVE
          - REVOKED
        certificate:
          type: string
        coreIssuerIdentifierId:
          type: string
          format: uuid
      required:
      - certificate
      - coreIssuerIdentifierId
      - createdDate
      - id
      - lastModified
      - state
      - validityEnd
      - validityStart
    SearchEntityResponseDTOListAccessCertificateResponseDTO:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: "#/components/schemas/ListAccessCertificateResponseDTO"
        totalItems:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
      required:
      - totalItems
      - totalPages
      - values
    Link:
      type: object
      properties:
        href:
          type: string
        templated:
          type: boolean
    JwksKeyResponseDTO:
      type: object
      properties:
        alg:
          type: string
        kid:
          type: string
        kty:
          type: string
        use:
          type: string
        crv:
          type: string
        x:
          type: string
        "y":
          type: string
        k:
          type: string
        e:
          type: string
        "n":
          type: string
      required:
      - crv
      - kty
    JwksResponseDTO:
      type: object
      properties:
        keys:
          type: array
          items:
            $ref: "#/components/schemas/JwksKeyResponseDTO"
      required:
      - keys
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
