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.68.0
servers:
- url: https://wallet-relying-party-registry.dev.procivis-one.com
  description: Generated server url
security:
- bearer: []
tags:
- name: wallet-relying-party-controller
  description: Add wallet-relying parties to the registry and manage entries.
  x-displayName: Registry
- 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/wallet-relying-party/v1:
    get:
      tags:
      - wallet-relying-party-controller
      summary: List wallet-relying parties
      description: |
        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: 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"
    post:
      tags:
      - wallet-relying-party-controller
      summary: Create a wallet-relying party
      description: |
        Register a new wallet-relying party in the 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"
  /api/wallet-relying-party/v1/{walletRelyingPartyId}:
    get:
      tags:
      - wallet-relying-party-controller
      summary: Retrieve a wallet-relying party
      description: |
        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"
    delete:
      tags:
      - wallet-relying-party-controller
      summary: Delete a wallet-relying party
      description: 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
    patch:
      tags:
      - wallet-relying-party-controller
      summary: Update a wallet-relying party
      description: |
        Update an existing registration. Changes to intended uses or requested
        credentials may require re-issuance of registration certificates. 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
  /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"
  /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
components:
  schemas:
    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.
        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: |
            Official identifiers that uniquely identify this organization, such
            as EUID, VAT number, or LEI. At least one identifier is required. The
            EUID (European Unique Identifier) is preferred for cross-border
            recognition. Each identifier must specify its type and the value as
            it appears in the official record.
          items:
            $ref: "#/components/schemas/CreateIdentifierRequestDTO"
      required:
      - country
      - 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.
        claimSchemaIds:
          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:
            type: string
            format: uuid
      required:
      - credentialSchemaId
    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.
        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. This value must
            match an option from `walletRelyingPartyRegistry.identifierTypes.value`
            in the configuration.
      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"
        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:
            type: string
            format: uuid
        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.
        organisationId:
          type: string
          format: uuid
      required:
      - entitlements
      - name
      - supportUris
    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
    EntityResponseDTO:
      type: object
      properties:
        id:
          type: string
    UpdateContactRequestDTO:
      type: object
      properties:
        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/UpdateIdentifierRequestDTO"
    UpdateCredentialRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        credentialSchemaId:
          type: string
          format: uuid
        claimSchemaIds:
          type: array
          items:
            type: string
            format: uuid
    UpdateIdentifierRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        value:
          type: string
        type:
          type: string
    UpdateIntendedUseRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        validityStart:
          type: string
          format: date-time
        validityEnd:
          type: string
          format: date-time
        credentials:
          type: array
          items:
            $ref: "#/components/schemas/UpdateCredentialRequestDTO"
        purposes:
          type: array
          items:
            $ref: "#/components/schemas/UpdatePurposeRequestDTO"
        privacyPolicies:
          type: array
          items:
            $ref: "#/components/schemas/UpdatePrivacyPolicyRequestDTO"
    UpdateLegalPersonRequestDTO:
      type: object
      properties:
        legalNames:
          type: array
          items:
            type: string
        establishedByLaw:
          type: array
          items:
            type: string
        contact:
          $ref: "#/components/schemas/UpdateContactRequestDTO"
    UpdateNaturalPersonRequestDTO:
      type: object
      properties:
        givenName:
          type: string
        surname:
          type: string
        birthdate:
          type: string
          format: date
        birthplace:
          type: string
        contact:
          $ref: "#/components/schemas/UpdateContactRequestDTO"
    UpdatePrivacyPolicyRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        policyUri:
          type: string
        type:
          type: string
    UpdatePurposeRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        language:
          type: string
        purpose:
          type: string
    UpdateServiceDescriptionRequestDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        language:
          type: string
        description:
          type: string
    UpdateWalletRelyingPartyRequestDTO:
      type: object
      properties:
        name:
          type: string
        isPublicSector:
          type: boolean
        state:
          type: string
          enum:
          - ACTIVE
          - REVOKED
          - SUSPENDED
        supportUris:
          type: array
          items:
            type: string
        serviceDescriptions:
          type: array
          items:
            $ref: "#/components/schemas/UpdateServiceDescriptionRequestDTO"
        entitlements:
          type: array
          items:
            type: string
        attestations:
          type: array
          items:
            type: string
            format: uuid
        intermediaries:
          type: array
          items:
            type: string
            format: uuid
          uniqueItems: true
        intendedUses:
          type: array
          items:
            $ref: "#/components/schemas/UpdateIntendedUseRequestDTO"
        legalPerson:
          $ref: "#/components/schemas/UpdateLegalPersonRequestDTO"
        naturalPerson:
          $ref: "#/components/schemas/UpdateNaturalPersonRequestDTO"
    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
      required:
      - createdDate
      - id
      - lastModified
      - name
      - organisationId
      - state
    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
    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
        claimSchemaIds:
          type: array
          items:
            type: string
            format: uuid
      required:
      - createdDate
      - credentialSchemaId
      - id
      - lastModified
    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
    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:
            type: string
            format: uuid
      required:
      - createdDate
      - id
      - lastModified
      - name
      - organisationId
      - state
      - supportUris
    ConfigurationResponseDTO:
      type: object
      properties:
        walletRelyingPartyRegistry:
          $ref: "#/components/schemas/WRPRConfigurationResponseDTO"
        modifiedDate:
          type: string
          format: date-time
      required:
      - modifiedDate
      - walletRelyingPartyRegistry
    I18nResponseDTO:
      type: object
      properties:
        en:
          type: string
        de:
          type: string
    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/SimpleConfigEntryResponseDTO"
      required:
      - contactCountries
      - establishedByLawTypes
      - identifierTypes
      - languages
      - privacyPolicyTypes
    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
    Link:
      type: object
      properties:
        href:
          type: string
        templated:
          type: boolean
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
