openapi: 3.0.0
info:
  version: '2'
  title: Data Matching API
  description: >
    This API provides services for maintaining matching definitions used as
    configuration

    for matching jobs, as well as services for matching data with a job.
servers:
  - description: Production
    url: https://api.cdq.com/data-matching/rest
    x-cdq-soap-url: https://api.corporate-data-league.ch/data-matching/soap/v2
security:
  - apiKey: []
tags:
  - name: Analytics
    description: >
      Provides functionalities for generating and polling data matching reports.
      These endpoints support creating reports 

      and checking their status, ensuring comprehensive analytics for data
      matching activities.
  - name: Data Matching
    description: >
      Provides functionalities for managing Data Matching Definitions, which are
      configurations for matching jobs to identify 

      duplicates or link records across data sources. These endpoints support
      creating, reading, updating, and 

      deleting these configurations.
  - name: Duplicate Matching
    description: >
      Provides functionalities for managing duplications within a single data
      source. These endpoints support creating 

      Deduplication Job and checking the Deduplication Job Status.
  - name: Entity Matching
    description: >
      Provides functionalities for matching business partners. These endpoints
      support matching business partners against 

      data matching definitions, ensuring comprehensive analytics for data
      matching activities.
  - name: Linkage Matching
    description: >
      Provides functionalities for managing linkages across multiple data
      sources. These endpoints support creating 

      Linkage Job and checking the Linkage Job Status.
  - name: Public
    description: |
      Provides functionalities for polling the Matching Reports.
  - name: User Feedback
    description: >
      Provides functionalities for managing user feedback related to data
      matching decisions. 
paths:
  /configurations/entityresolution:
    get:
      x-wsdl: false
      x-cdq-beta: true
      tags:
        - Configurations
      summary: List Identity Resolution Configurations.
      description: >-
        <b style="color: white; background: #077fbb; border-radius: 5px;
        margin-left: 0; padding: 2px 10px; font-size: 14px; vertical-align:
        super;">BETA</b><br>List all identity resolution configurations of the
        current user.
      parameters:
        - name: limit
          description: Maximum number of configurations to return. Used for pagination.
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/Limit'
        - name: startAfter
          description: >-
            ID of the last configuration returned in the previous request. Used
            for pagination.
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/StartAfter'
        - in: query
          name: defaultConfiguration
          required: false
          description: >-
            Limit search to configurations with provided default flag value. If
            left empty, all configurations will be returned.
          schema:
            type: boolean
            example: true
            default: null
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceConfigurationResponsePage'
              examples:
                identityResolutionConfigurations:
                  summary: Page of identity resolution configurations
                  value:
                    startAfter: '0'
                    nextStartAfter: '1'
                    total: 2
                    values:
                      - name: demo config
                        id: 63a1d4a07c855600fa769329
                        createdAt: '2022-12-20T15:28:32.684Z'
                        modifiedAt: '2022-12-20T15:28:32.684Z'
                        createdBy: demo
                      - name: demo config
                        id: 63a1d5a13b5faf2f613164c0
                        createdAt: '2022-12-20T15:32:49.579Z'
                        modifiedAt: '2022-12-20T15:32:49.579Z'
                        createdBy: demo
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '401':
          description: Unauthorized access.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
  /configurations/entityresolution/{configurationId}:
    get:
      x-wsdl: false
      x-cdq-beta: true
      tags:
        - Configurations
      summary: Read Identity Resolution Configuration
      description: >-
        <b style="color: white; background: #077fbb; border-radius: 5px;
        margin-left: 0; padding: 2px 10px; font-size: 14px; vertical-align:
        super;">BETA</b><br>Read an identity resolution configuration of the
        current user.
      parameters:
        - $ref: '#/components/parameters/configurationId'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceConfigurationResponse'
              examples:
                getConfiguration:
                  summary: Showcase response of identity resolution configuration
                  value:
                    name: Demo config
                    configuration:
                      candidateSearchConfiguration:
                        maxCandidates: 10
                        searchAttributes:
                          - jsonPath: $.record['Country']
                      generalMatchingConfiguration:
                        threshold: 0.8
                        thresholdMaybe: 0.6
                        matchingAttributes:
                          - name: Name
                            jsonPath: businessPartner.record['Country']
                            cleaners:
                              - name: LegalFormCleaner
                                parameters:
                                  - name: configProperty
                                    value: >-
                                      businessPartner.addresses[0].country.shortName
                            high: 1
                            low: 0.5
                            comparator:
                              name: QGramComparator
                              parameters:
                                - name: formula
                                  value: JACCARD
                    id: 63a1d4a07c855600fa769329
                    createdAt: '2022-12-20T15:28:32.684Z'
                    modifiedAt: '2022-12-20T15:28:32.684Z'
                    createdBy: demo
        '400':
          description: Bad request, for example, missing organization ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '401':
          description: Unauthorized access.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
  /configurations/entityresolution/{configurationId}/versions/{version}:
    get:
      x-wsdl: false
      x-cdq-beta: true
      tags:
        - Configurations
      summary: Read Identity Resolution Configuration Version
      description: >-
        <b style="color: white; background: #077fbb; border-radius: 5px;
        margin-left: 0; padding: 2px 10px; font-size: 14px; vertical-align:
        super;">BETA</b><br>Read a specific version of an identity resolution
        configuration by id and version number.
      parameters:
        - $ref: '#/components/parameters/configurationId'
        - $ref: '#/components/parameters/configurationVersion'
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceConfigurationVersionResponse'
  /entityresolution/attributepaths:
    get:
      x-wsdl: false
      x-cdq-beta: true
      tags:
        - Identity Resolution
      summary: Get BusinessPartner's Attribute Paths
      description: >-
        <b style="color: white; background: #077fbb; border-radius: 5px;
        margin-left: 0; padding: 2px 10px; font-size: 14px; vertical-align:
        super;">BETA</b><br>Get all attribute paths of BusinessPartner.
      parameters: []
      responses:
        '200':
          description: A list of attribute paths
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttributePathsResult'
                examples:
                  attributePaths:
                    summary: List of available attribute paths
                    value:
                      paths:
                        - businessPartner.id
                        - businessPartner.externalContext.identifiers[]
                        - businessPartner.externalContext.identifiers[].value
                        - >-
                          businessPartner.externalContext.identifiers[].type.technicalKey
                      status:
                        code: 200
                        technicalKey: OK
                        details:
                          - id: 200000000
                            message: Successful request.
                            technicalKey: DEFAULT_OK
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
  /entityresolution/cleaners:
    get:
      x-wsdl: false
      x-cdq-beta: true
      tags:
        - Identity Resolution
      summary: List Available Cleaners
      description: >-
        <b style="color: white; background: #077fbb; border-radius: 5px;
        margin-left: 0; padding: 2px 10px; font-size: 14px; vertical-align:
        super;">BETA</b><br>List all available cleaners for identity resolution.
      parameters: []
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CleanersResult'
              examples:
                cleaners:
                  summary: List of available cleaners
                  value:
                    cleaners:
                      - name: lower case normalizer
                        technicalkey: lowercasenormalizer
                      - name: legal form cleaner
                        technicalkey: legalformcleaner
                        parameters:
                          - name: configproperty
                            description: >-
                              json path referencing the country shortname of the
                              businesspartner
                    status:
                      code: 200
                      technicalkey: ok
                      details:
                        - id: 200000000
                          message: successful request.
                          technicalkey: default_ok
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
  /entityresolution/comparators:
    get:
      x-wsdl: false
      x-cdq-beta: true
      tags:
        - Identity Resolution
      summary: List Available Comparators
      description: >-
        <b style="color: white; background: #077fbb; border-radius: 5px;
        margin-left: 0; padding: 2px 10px; font-size: 14px; vertical-align:
        super;">BETA</b><br>List all available comparators for identity
        resolution.
      parameters: []
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComparatorsResult'
                examples:
                  comparators:
                    summary: List of available comparators
                    value:
                      comparators:
                        - name: Dice similarity coefficient Comparator
                          technicalKey: DiceCoefficientComparator
                        - name: Q-Gram Comparator
                          technicalKey: QGramComparator
                          parameters:
                            - name: tokenizer
                              description: >-
                                Tokenizer to use to produce q-grams. Allowed
                                values are: 'BASIC', 'POSITIONAL', 'ENDS'.
                            - name: q
                              description: The size of the q-gram.
                            - name: formula
                              description: >-
                                Formula to use to compute similarity. Allowed
                                values are: 'OVERLAP', 'JACCARD', 'DICE'.
                      status:
                        code: 200
                        technicalKey: OK
                        details:
                          - id: 200000000
                            message: Successful request.
                            technicalKey: DEFAULT_OK
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
  /entityresolution/searchattributepaths:
    get:
      x-wsdl: false
      x-cdq-beta: true
      tags:
        - Identity Resolution
      summary: Get Available Paths
      description: >-
        <b style="color: white; background: #077fbb; border-radius: 5px;
        margin-left: 0; padding: 2px 10px; font-size: 14px; vertical-align:
        super;">BETA</b><br>Get all available paths for search in index-api.
      parameters: []
      responses:
        '200':
          description: A list of search attributes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchAttributeResult'
                examples:
                  searchAttributes:
                    summary: List of available search attributes
                    value:
                      searchAttributes:
                        - jsonPath: $.record['Country']
                        - jsonPath: $.record['Name']
                      status:
                        code: 200
                        technicalKey: OK
                        details:
                          - id: 200000000
                            message: Successful request.
                            technicalKey: DEFAULT_OK
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
  /entityresolution/entitymatchinglinks:
    get:
      x-wsdl: false
      x-cdq-beta: true
      tags:
        - Entity Matching Links
      summary: Retrieve duplicate business partner records
      description: >-
        <b style="color: white; background: #077fbb; border-radius: 5px;
        margin-left: 0; padding: 2px 10px; font-size: 14px; vertical-align:
        super;">BETA</b><br>Returns a paginated list of potential duplicate
        business partner records based on search criteria
      parameters:
        - $ref: '#/components/parameters/entityMatchingScoreParam'
        - $ref: '#/components/parameters/entityDataMonitorParam'
        - $ref: '#/components/parameters/entityBusinessPartnerParam'
        - $ref: '#/components/parameters/entityLinkStatusParam'
        - $ref: '#/components/parameters/limitParamMax250'
        - $ref: '#/components/parameters/startAfterParam'
        - $ref: '#/components/parameters/entityMatchingFeaturesOnQueryParam'
        - $ref: '#/components/parameters/dataSourceParam'
      responses:
        '200':
          description: Successful response with list of duplicates
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityMatchingLinks'
              examples:
                default:
                  value:
                    limit: 20
                    total: 125
                    startAfter: aXhcYWdlIjoxLCJzaXplIjoyMH0=
                    nextStartAfter: eyJwYWdlIjoyLCJzaXplIjoyMH0=
                    values:
                      - storageId: 72d6900fce6b326088f5d9d91099e3e6
                        createdAt: '2024-02-15T10:30:00Z'
                        createdBy: system
                        modifiedAt: '2024-02-15T10:30:00Z'
                        modifiedBy: system
                        entityA:
                          dataSourceId: SAD_ERP
                          businessPartnerId: BP000001
                        entityB:
                          dataSourceId: SAD_ERP
                          businessPartnerId: BP000002
                        confidence:
                          overallScore: 0.95
                          status: MATCH
                          explanation:
                            attributeMatchingExplanation:
                              - jsonPath: businessPartner.name
                                valueA: Acme Corporation GmbH
                                valueB: ACME Corp. GmbH
                                similarity: 0.92
                              - jsonPath: businessPartner.address.street
                                valueA: 123 Main Street
                                valueB: 123 Main St.
                                similarity: 0.98
                        linkStatus: INFERRED
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
  /entityresolution/entitymatchinglinks/{id}:
    patch:
      x-wsdl: false
      x-cdq-beta: true
      tags:
        - Entity Matching Links
      summary: Update entity matching link status
      description: >
        <b style="color: white; background: #077fbb; border-radius: 5px;
        margin-left: 0; padding: 2px 10px; font-size: 14px; vertical-align:
        super;">BETA</b><br>Update the link status of an entity matching link.
        Allows changing status from:

        - INFERRED to RETRACTED or ASSERTED

        - RETRACTED to ASSERTED

        - ASSERTED to RETRACTED


        Note: Cannot change status back to INFERRED once it has been manually
        modified.
      parameters:
        - name: id
          in: path
          description: ID of the entity matching link to update
          required: true
          schema:
            $ref: '#/components/schemas/EntityMatchingLinkId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntityMatchingLinkUpdate'
            examples:
              retract_link:
                summary: Retract a matching link
                value:
                  linkStatus: RETRACTED
                  linkStatusUserComment: Small Update - completely wrong duplicate
              assert_link:
                summary: Assert a matching link
                value:
                  linkStatus: ASSERTED
                  linkStatusUserComment: Verified as correct match
              no_comment:
                summary: Update without comment
                value:
                  linkStatus: RETRACTED
      responses:
        '200':
          description: Successfully updated entity matching link
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityMatchingLinkUpdateResult'
        '400':
          description: Invalid request parameters or invalid status transition
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '404':
          description: Entity matching link not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorWithStatus'
  /v2/deduplicationjobs:
    post:
      x-wsdl: false
      tags:
        - Duplicate Matching
      summary: Start Deduplication Job
      description: Starts a Deduplication Job for the given storage.
      parameters: []
      requestBody:
        $ref: '#/components/requestBodies/DuplicateMatchingJobRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateMatchingJob'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /matchingreports:
    post:
      x-wsdl: false
      tags:
        - Analytics
      summary: Build Matching Reports
      description: Requests the building of data matching reports.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchingReports'
        '201':
          description: Created
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MatchingReportsRequest'
        description: cmd
        required: true
  /matchingreports/{id}:
    get:
      tags:
        - Analytics
        - Public
      x-wsdl: false
      summary: Poll Matching Reports
      description: Polls the status of the matching reports.
      parameters:
        - name: id
          in: path
          description: ID of the matching report.
          example: null
          required: true
          schema:
            type: string
            example: 65dcc3c60cecd503bcc88c92
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchingReports'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /datamatchingdefinitions:
    post:
      tags:
        - Data Matching
      summary: Create Data Matching Definition
      description: |
        Create a new Data Matching Definition with the given configuration.

        Configuration example:

        ```
          <?xml version="1.0" standalone="no" ?>
          <duke>
              <object class="no.priv.garshol.duke.comparators.QGramComparator" name="NameComparator">
                  <param name="formula" value="DICE"/>
                  <param name="q" value="3"/>
              </object>
              <schema>
                  <threshold>0.7</threshold>
                  <property type="ignore">
                      <name>STORAGE_ID</name>
                  </property>
                  <property type="ignore">
                      <name>DATA_SOURCE_ID</name>
                  </property>
                  <property type="id">
                      <name>BUSINESS_PARTNER_ID</name>
                  </property>
                  <property lookup="required">
                      <name>COUNTRY_SHORTNAME</name>
                      <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator>
                      <low>0.0</low>
                      <high>0.5</high>
                  </property>
                  <property lookup="true">
                      <name>NAME</name>
                      <comparator>NameComparator</comparator>
                      <low>0.1</low>
                      <high>0.9</high>
                  </property>
              </schema>
              <database class="no.priv.garshol.duke.databases.LuceneDatabase">
                  <param name="max-search-hits" value="100"/>
                  <param name="min-relevance" value="0.9"/>
                  <param name="fuzzy-search" value="true"/>
                  <param name="boost-mode" value="INDEX"/>
              </database>

              <data-source class="cdq.cdl.matching.datasource.MatchingDataSource">
                  <column
                          cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner" name="businessPartner.address.country.shortName" property="COUNTRY_SHORTNAME"/>
                  <column
                          cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"
                          configProperty="COUNTRY_SHORTNAME" name="businessPartner.names[0].value" property="NAME"/>
              </data-source>
          </duke>

        ```
      parameters: []
      requestBody:
        $ref: '#/components/requestBodies/DataMatchingDefinitionCreate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataMatchingDefinition'
        '400':
          $ref: '#/components/responses/400_BadRequest'
    get:
      tags:
        - Data Matching
      summary: List Data Matching Definitions
      description: Read a page of existing Data Matching Definitions.
      parameters:
        - $ref: '#/components/parameters/pageQueryParam'
        - $ref: '#/components/parameters/pageSizeQueryParam'
        - $ref: '#/components/parameters/matchingTypeQueryParam'
        - $ref: '#/components/parameters/workspaceIdParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataMatchingDefinitionPage'
        '400':
          $ref: '#/components/responses/400_BadRequest'
        '403':
          $ref: '#/components/responses/403_Forbidden'
  /datamatchingdefinitions/{id}:
    get:
      tags:
        - Data Matching
      summary: Read Data Matching Definition
      description: Read an existing Data Matching Definition by its ID.
      parameters:
        - name: id
          description: ID of the Data Matching Definition.
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/DataMatchingDefinitionId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataMatchingDefinition'
        '400':
          $ref: '#/components/responses/400_BadRequest'
        '403':
          $ref: '#/components/responses/403_Forbidden'
    put:
      tags:
        - Data Matching
      summary: Update Data Matching Definition
      description: >-
        Update an existing Data Matching Definition with the given
        configuration.
      parameters:
        - name: id
          description: ID of the Data Matching Definition.
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/DataMatchingDefinitionId'
      requestBody:
        $ref: '#/components/requestBodies/DataMatchingDefinitionUpdate'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataMatchingDefinition'
        '400':
          $ref: '#/components/responses/400_BadRequest'
        '403':
          $ref: '#/components/responses/403_Forbidden'
    delete:
      tags:
        - Data Matching
      summary: Delete Date Matching Definition
      description: Delete a Data Matching Definition by its ID.
      parameters:
        - name: id
          description: ID of the Data Matching Definition.
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/DataMatchingDefinitionId'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_BadRequest'
        '403':
          $ref: '#/components/responses/403_Forbidden'
  /deduplicationjobs/{id}:
    get:
      tags:
        - Duplicate Matching
      summary: Poll Deduplication Job Status
      description: Polls the status of the Deduplication Job.
      parameters:
        - name: id
          in: path
          description: ID of the deduplication job.
          required: true
          schema:
            type: string
            example: 65dcc3c60cecd503bcc88c92
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateMatchingJob'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /linkagejobs:
    post:
      tags:
        - Linkage Matching
      summary: Start Linkage Job
      description: Initiate a new linkage job
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkMatchingJobRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkMatchingJob'
        '400':
          $ref: '#/components/responses/400_BadRequest'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /linkagejobs/{id}:
    get:
      tags:
        - Linkage Matching
      summary: Poll Linkage Job Status
      description: Check the status of a linkage job by its ID.
      parameters:
        - name: id
          description: ID of the linkage job.
          in: path
          required: true
          schema:
            type: string
            example: 65dcc3c60cecd503bcc88c92
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkMatchingJob'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /matchingdecisionjobs:
    post:
      x-wsdl: false
      tags:
        - User Feedback
      summary: Matching Decision Import
      description: >
        To start importing an Identity Linkage Decision import file, use the
        following request.


        ```

        POST
        https://api.corporate-data-league.ch/data-matching/rest/jobs/matchingdecisionjobs
          ?file=@{YOUR FILE}
          ?decisionLogId={YOUR MatchingDecisionLog ID}
        ```


        With using output file from duplication or linkage job.

        Please remember not to remove the mandatory columns when modifying this
        file: No Match Feedback, Matching Group, Storage ID, Data Source ID,
        Record ID.


        The response is shown below. Use the returned `id` to
        [poll](https://developer.cdq.com/reference-docs/data-matching/V2/tag/User-Feedback/paths/~1matchingdecisionjobs~1%7Bid%7D/get/)
        the import job status.


        ```

        {
            "id" : "{YOUR JOB ID}"
            ...
        }

        ```


        This import leads to the following link in the MatchingDecisionLog.


        ```

        {
           "id" : "{AUTO GENERATED}",
           "decisionLogId" : "b7d528eace273a10aeb00825f48b5b18",
           "entities" : [{
               "storageId": "b7d528eace273a10aeb00825f48b5b18",
               "dataSourceId": "5f9fc1b97e1e490001fcfc9e",
               "businessPartnerId": "5e60dfdbd5fa2d000166ab4a"
             },
             {
               "storageId": "b7d528eace273a10aeb00825f48b5b18",
               "dataSourceId": "5f9fc1b97e1e490001fcfc9e",
               "businessPartnerId": "5e60dfdbd5fa2d000166ab4b"
             }]
         }
        ```
      parameters: []
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              description: Matching Decision Import Job.
              properties:
                file:
                  type: string
                  format: binary
                  description: >-
                    XLSX or CSV file to be uploaded (SOAP currently only
                    supports CSV).
                  example: file.xlsx
                decisionLogId:
                  type: string
                  description: Target MatchingDecisionLog ID for this import.
                  example: 5e60dfdbd5fa2d000166ab4a
              required:
                - decisionLogId
                - file
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchingDecisionImportJob'
        '400':
          $ref: '#/components/responses/400_BadRequest'
  /matchingdecisionjobs/{id}:
    get:
      tags:
        - User Feedback
      summary: Matching Decision Import Status
      description: |
        Polls the status of the matching decision import job.
      parameters:
        - name: id
          in: path
          description: ID of the Matching Decision Import Job.
          required: true
          schema:
            type: string
            example: 65dcc3c60cecd503bcc88c92
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchingDecisionImportJob'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /userfeedbacks:
    get:
      x-wsdl: false
      tags:
        - User Feedback
      summary: List User Feedbacks
      description: Read available Matching Decision Logs across your organization.
      parameters:
        - $ref: '#/components/parameters/startAfterParam'
        - $ref: '#/components/parameters/limitParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchingDecisionLogs'
        '201':
          description: Created
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - User Feedback
      summary: Create User Feedback
      description: Create Matching Decision Log where decisions will be stored.
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MatchingDecisionLogCreateRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchingDecisionLog'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /userfeedbacks/{id}:
    parameters:
      - name: id
        description: ID of the Matching Decision Log.
        in: path
        required: true
        schema:
          type: string
          example: 9cfa14e7-51f5-4490-88e4-667501575b41
    get:
      x-wsdl: false
      tags:
        - User Feedback
      summary: Read User Feedback
      description: Read Matching Decision Logs details provided by ID.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchingDecisionLogResult'
        '201':
          description: Created
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
    post:
      tags:
        - User Feedback
      summary: Create Identity Link
      description: Add Identity Links to the Matching Decision Log identified by ID.
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityLinkCreateRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityLinkCreateResult'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    delete:
      tags:
        - User Feedback
      summary: Delete User Feedback
      description: >-
        Delete the Matching Decision Log identified by ID. !Warning! action
        cannot be reverted!
      parameters: []
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400_BadRequest'
        '403':
          $ref: '#/components/responses/403_Forbidden'
  /userfeedbacks/{id}/clear:
    post:
      x-wsdl: false
      tags:
        - User Feedback
      summary: Clear User Feedback
      description: >-
        Remove all links from the Matching Decision Log identified by ID.
        !Warning! action cannot be reverted!
      parameters:
        - name: id
          description: ID of the Matching Decision Log.
          in: path
          required: true
          schema:
            type: string
            example: 9cfa14e7-51f5-4490-88e4-667501575b41
      responses:
        '200':
          description: OK
        '201':
          description: Created
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /userfeedbacks/identitylinks:
    get:
      x-wsdl: false
      tags:
        - User Feedback
      summary: List Identity Links
      description: Read Identity Links from the Matching Decision Log identified by ID.
      parameters:
        - $ref: '#/components/parameters/startAfterParam'
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/decisionLogParam'
        - $ref: '#/components/parameters/storageParam'
        - $ref: '#/components/parameters/dataSourceParam'
        - $ref: '#/components/parameters/businessPartnerParam'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityLinks'
        '201':
          description: Created
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-KEY
  parameters:
    businessPartnerIdQueryParam:
      name: businessPartnerId
      description: >-
        Business Partner ID provided by CDQ that is unique across all stored
        Business Partners in CDQ Cloud. Used to filter results by this ID.
      in: query
      schema:
        $ref: '#/components/schemas/BusinessPartnerId'
    businessPartnerStorageQueryParam:
      name: storageId
      description: Unique Storage identifier.
      in: query
      schema:
        $ref: '#/components/schemas/BusinessPartnerStorageId'
    businessPartnerExternalIdQueryParam:
      name: externalId
      description: Business Partner External ID.
      in: query
      schema:
        $ref: '#/components/schemas/BusinessPartnerExternalId'
    identityLinkStoragePathParam:
      name: storageId
      description: ID of an identity link storage.
      in: path
      required: true
      schema:
        type: string
        example: 65dcc3c60cecd503bcc88c92
    identityLinkIdPathParam:
      name: id
      description: Specifies the Identity Link by ID.
      in: path
      required: true
      schema:
        type: string
        example: 65dcc3c60cecd503bcc88c92
    identityLinkStatusFilterQueryParam:
      name: linkStatus
      description: Used to filter identity links by link status.
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/LinkStatusEnum'
    identityLinkMatchingScoreFilterQueryParam:
      name: matchingScore
      description: Used to filter by Matching Score.
      in: query
      schema:
        type: number
        example: '0.8'
    createdAtFromFilterQueryParam:
      name: createdAtFrom
      description: Date in format yyyy-mm-ddTHH:mm:ss, used for filtering by createdAt.
      in: query
      schema:
        type: string
        example: '2025-08-29T09:46:53Z'
    createdAtToFilterQueryParam:
      name: createdAtTo
      description: Date in format yyyy-mm-ddTHH:mm:ss, used for filtering by createdAt.
      in: query
      schema:
        type: string
        example: '2025-08-29T09:46:53Z'
    modifiedAtFromFilterQueryParam:
      name: modifiedAtFrom
      description: Date in format yyyy-mm-ddTHH:mm:ss, used for filtering by createdAt.
      in: query
      schema:
        type: string
        example: '2025-08-29T09:46:53Z'
    modifiedAtToFilterQueryParam:
      name: modifiedAtTo
      description: Date in format yyyy-mm-ddTHH:mm:ss, used for filtering by createdAt.
      in: query
      schema:
        type: string
        example: '2025-08-29T09:46:53Z'
    featuresOnQueryParam:
      name: featuresOn
      description: Enable additional features.
      in: query
      required: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/IdentityLinksReadFeatureEnum'
    entityMatchingScoreParam:
      name: matchingScore
      in: query
      required: true
      description: Minimum matching score threshold
      schema:
        type: number
        format: double
        default: 0.8
        minimum: 0
        maximum: 1
        example: 0.8
    entityDataMonitorParam:
      name: dataMonitorId
      description: Unique Data Monitor identifier
      in: query
      required: true
      schema:
        type: string
        example: 72d6900fce6b326088f5d9d91049e3e6
    entityBusinessPartnerParam:
      name: businessPartnerId
      description: >-
        Business Partner ID provided by CDQ that is unique across all stored
        Business Partners in CDQ Cloud
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/BusinessPartnerId'
    entityLinkStatusParam:
      name: status
      description: Status of the entity matching link
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/EntityLinkStatusEnum'
    entityMatchingFeaturesOnQueryParam:
      name: featuresOn
      description: Enable additional features for entity matching links.
      in: query
      required: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/EntityMatchingLinksReadFeatureEnum'
    usernameHeaderParam:
      name: X-Credential-Username
      description: |
        Parameter used for passing the username.
        The header can take form of:
          * username (e.g. "lukaszmichta")
          * user id (e.g. "87b1bdb1-ba87-4522-b363-c5a0e6e917b3")
      in: header
      required: true
      schema:
        type: string
        example: 87b1bdb1-ba87-4522-b363-c5a0e6e917b3
    pageQueryParam:
      name: page
      description: Number of the retrieved result page.
      in: query
      required: false
      schema:
        type: integer
        format: int32
        example: '1'
        minimum: 0
        default: 0
    pageSizeQueryParam:
      name: pageSize
      description: Maximum number of items to be returned in the result page.
      in: query
      required: false
      schema:
        type: integer
        format: int32
        example: '20'
        minimum: 1
        default: 20
    startAfterParam:
      name: startAfter
      description: >-
        Indicator for the next page. Used together with nextStartAfter from the
        result.
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/StartAfter'
    limitParam:
      name: limit
      description: Number of items to be returned.
      in: query
      required: false
      schema:
        type: integer
        format: int32
        example: '100'
        minimum: 1
        default: 20
    limitParamMax250:
      name: limit
      description: Number of items to be returned.
      in: query
      required: false
      schema:
        type: integer
        format: int32
        example: '100'
        minimum: 1
        maximum: 250
        default: 20
    decisionLogParam:
      name: linkStorageId
      description: Link Storage Id.
      in: query
      required: true
      schema:
        type: string
        example: 72d6900fce6b326088f5d9d91049e3e6
    storageParam:
      name: storageId
      description: Unique Storage identifier.
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/BusinessPartnerStorageId'
    dataSourceParam:
      name: dataSourceId
      description: Unique Storage's Data Source identifier.
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/BusinessPartnerStorageDataSourceId'
    businessPartnerParam:
      name: businessPartnerId
      description: >-
        Business Partner ID provided by CDQ that is unique across all stored
        Business Partners in CDQ Cloud. Used to filter results by this ID.
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/BusinessPartnerId'
    matchingTypeQueryParam:
      name: matchingType
      description: Type of the matching configuration.
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/MatchingType'
    workspaceIdParam:
      name: workspaceId
      description: ID of the workspace.
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/WorkspaceId'
    configurationId:
      in: path
      name: configurationId
      description: ID of the configuration.
      required: true
      schema:
        type: string
        example: c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4
    configurationVersion:
      in: path
      name: version
      required: true
      description: Version number of the configuration.
      schema:
        type: integer
        example: 1
  requestBodies:
    BusinessPartnersMatchRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BusinessPartnersMatchRequest'
      required: true
    DuplicateMatchingJobRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DuplicateMatchingJobRequest'
      required: true
    DataMatchingDefinitionCreate:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DataMatchingDefinitionCreate'
      required: true
    DataMatchingDefinitionUpdate:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DataMatchingDefinitionUpdate'
      required: true
    BusinessPartnersEntityResolutionMatchRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BusinessPartnersEntityResolutionMatchRequest'
      required: true
    BusinessPartnersEntityResolutionCompareRequest:
      content:
        application/json:
          schema:
            $ref: >-
              #/components/schemas/BusinessPartnersEntityResolutionCompareRequest
      required: true
  responses:
    400_BadRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      description: The sent request is malformed.
    403_Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      description: Permission denied.
  schemas:
    DuplicateMatchingRequests:
      description: Duplicate Matching requests
      type: object
      properties:
        requests:
          type: array
          items:
            $ref: '#/components/schemas/DuplicateMatchingRequest'
    DuplicateMatchingRequest:
      type: object
      description: Duplicate Matching request
      properties:
        businessPartnerId:
          $ref: '#/components/schemas/BusinessPartnerId'
        storageId:
          $ref: '#/components/schemas/BusinessPartnerStorageId'
        dataSourceId:
          $ref: '#/components/schemas/BusinessPartnerStorageDataSourceId'
        businessPartnerExternalId:
          $ref: '#/components/schemas/BusinessPartnerExternalId'
        businessPartner:
          $ref: '#/components/schemas/schemas-BusinessPartner'
    DuplicateMatchingResults:
      description: Results of duplicate matching
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DuplicateMatchingResult'
    DuplicateMatchingResult:
      description: Result of duplicate matching
      type: object
      properties:
        businessPartner:
          $ref: '#/components/schemas/DuplicateMatchResultEntity'
        duplicateMatches:
          $ref: '#/components/schemas/DuplicateMatchResults'
    DuplicateMatchResults:
      type: object
      description: Duplicate Match results.
      properties:
        duplicateMatches:
          type: array
          description: List of duplicate matches.
          items:
            $ref: '#/components/schemas/DuplicateMatchResult'
    DuplicateMatchResult:
      type: object
      description: Duplicate Match result.
      properties:
        entity:
          $ref: '#/components/schemas/DuplicateMatchResultEntity'
        confidence:
          $ref: '#/components/schemas/MatchingConfidenceSearchResult'
    DuplicateMatchResultEntity:
      type: object
      description: Duplicate Match result entity.
      properties:
        businessPartnerId:
          $ref: '#/components/schemas/BusinessPartnerId'
        addressId:
          $ref: '#/components/schemas/AddressExternalId'
        organizationId:
          $ref: '#/components/schemas/OrganizationId'
        workspaceId:
          $ref: '#/components/schemas/WorkspaceId'
        storageId:
          $ref: '#/components/schemas/BusinessPartnerStorageId'
        dataSourceId:
          $ref: '#/components/schemas/BusinessPartnerStorageDataSourceId'
        businessPartnerExternalId:
          $ref: '#/components/schemas/BusinessPartnerExternalId'
        addressExternalId:
          $ref: '#/components/schemas/AddressExternalId'
    IdentityLinkSearchResult:
      type: object
      description: Identity Link search result.
      properties:
        id:
          type: string
          description: ID of Identity Link.
          example: 65dcc3c60cecd503bcc88c92
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAt'
        entityA:
          $ref: '#/components/schemas/IdentityLinkEntity'
        entityB:
          $ref: '#/components/schemas/IdentityLinkEntity'
        confidence:
          $ref: '#/components/schemas/MatchingConfidenceSearchResult'
        linkStatus:
          $ref: '#/components/schemas/LinkStatus'
    IdentityLinkEntity:
      type: object
      description: Identity Link entity.
      properties:
        businessPartnerId:
          $ref: '#/components/schemas/BusinessPartnerId'
        addressId:
          type: string
          description: Address identifier within a Business Partner.
          example: '1'
        organizationId:
          $ref: '#/components/schemas/OrganizationId'
        workspaceId:
          $ref: '#/components/schemas/WorkspaceId'
        storageId:
          $ref: '#/components/schemas/BusinessPartnerStorageId'
        dataSourceId:
          $ref: '#/components/schemas/BusinessPartnerStorageDataSourceId'
        businessPartnerExternalId:
          $ref: '#/components/schemas/BusinessPartnerExternalId'
        addressExternalId:
          $ref: '#/components/schemas/AddressExternalId'
    MatchingConfidenceSearchResult:
      type: object
      description: Matching confidence search result.
      properties:
        overallScore:
          type: number
          description: Overall score of the match.
          example: '0.8'
        businessPartnerScore:
          type: number
          description: Business Partner score of the match.
          example: '0.8'
        addressScore:
          type: number
          description: Address score of the match.
          example: '0.8'
        confidenceStatus:
          $ref: '#/components/schemas/ConfidenceStatus'
        matchingExplanation:
          type: array
          description: List of matching explanations.
          items:
            $ref: '#/components/schemas/AttributeMatchingExplanation'
    ConfidenceStatus:
      type: string
      description: >-
        Represents decision on the existing link between Business Partner
        entities.
      example: MATCH
    ConfidenceStatusEnum:
      type: string
      description: >-
        Represents decision on the existing link between Business Partner
        entities.
      example: MATCH
      enum:
        - MATCH
        - MAYBE_MATCH
        - DIFFERENT
      x-enumDescriptions:
        MATCH: >-
          The match between two entities is that high, that it can be said that
          two entities are identical.
        MAYBE_MATCH: >-
          The match between two entities is between lower matching threshold and
          higher matching threshold. Based on similarity it cannot be said that
          two entities are identical.
        DIFFERENT: >-
          The match between two entities is too low to decide if those are
          identical, it can be said that two entities are different.
    AttributeMatchingExplanation:
      type: object
      description: Attribute matching explanation.
      properties:
        jsonPath:
          type: string
          description: JSON path to the attribute in the record.
          example: attributeJsonPath
        valueA:
          type: string
          description: Value of property under the json path from entityA.
          example: valueA
        valueB:
          type: string
          description: Value of property under the json path from entityB.
          example: valueB
        similarity:
          type: number
          description: Number value of similarity between valueA and valueB.
          example: '0.8'
      required:
        - jsonPath
        - valueA
        - valueB
        - similarity
    LinkStatus:
      type: string
      description: Value of Link status.
      example: INFERRED
    LinkStatusEnum:
      type: string
      description: Link status enum.
      example: INFERRED
      enum:
        - INFERRED
        - ASSERTED
        - RETRACTED
      x-enumDescriptions:
        INFERRED: >-
          This status means that the link was identified as a result of the
          matching process. It is purely algorithm based.
        ASSERTED: This status means that the link was manually reviewed and approved.
        RETRACTED: >-
          Status was `INFERRED` but status was manually changed. This can be
          either customer stating that the link was not valid, the data of the
          records changed or matching configuration was altered.
    IdentityLinkUpdate:
      type: object
      description: Update of identity link.
      properties:
        id:
          type: string
          description: ID of Identity Link.
          example: 65dcc3c60cecd503bcc88c92
        status:
          $ref: '#/components/schemas/ConfidenceStatusEnum'
      required:
        - status
    IdentityLinkUpdateResult:
      type: object
      description: Result of updating identity link.
      properties:
        id:
          type: string
          description: ID of the identity link.
          example: 65dcc3c60cecd503bcc88c92
        status:
          type: string
          description: |
            * OK - identity link has been updated
            * NOT_FOUND - identity link is not found
          example: OK
    IdentityLinkDelete:
      type: object
      description: Deletion of identity link.
      properties:
        id:
          type: string
          description: ID of the identity link.
          example: 65dcc3c60cecd503bcc88c92
    IdentityLinkDeleteResult:
      type: object
      description: Result of deleting identity link.
      properties:
        identityLink:
          $ref: '#/components/schemas/IdentityLinkDelete'
        status:
          type: string
          description: |
            * OK - identity link has been removed
            * NOT_FOUND - identity link is not found
          example: OK
    BusinessPartnerMatchingProfile:
      type: object
      description: Matching profile for a Business Partner.
      properties:
        externalId:
          $ref: '#/components/schemas/BusinessPartnerExternalId'
        matchingProfile:
          $ref: '#/components/schemas/MatchingProfile'
    BusinessPartnersMatchRequest:
      type: object
      description: Request to match Business Partners.
      required:
        - candidates
        - pattern
        - dataMatchingDefinitionId
      properties:
        candidates:
          type: array
          description: List of Business Partners to be matched.
          minItems: 1
          maxItems: 1000
          items:
            $ref: '#/components/schemas/BusinessPartner'
        pattern:
          $ref: '#/components/schemas/BusinessPartner'
        dataMatchingDefinitionId:
          $ref: '#/components/schemas/DataMatchingDefinitionId'
    Name:
      type: object
      description: Name of a Business Partner.
      allOf:
        - $ref: '#/components/schemas/schemas-Name'
        - type: object
          description: Name of a Business Partner.
          properties:
            nameValueClassification:
              $ref: '#/components/schemas/NameValueClassification'
    MatchingProfile:
      type: object
      description: >-
        Matching profile used for the match. It contains the matching threshold
        and the matching scores.
      properties:
        matchingScores:
          $ref: '#/components/schemas/MatchingScores'
    MatchingScores:
      type: object
      description: >-
        List of the numerical value of similarity between Business Partners or
        addresses enhanced with the overall score.
      properties:
        overall:
          $ref: '#/components/schemas/MatchingScore'
        businessPartner:
          $ref: '#/components/schemas/MatchingScore'
        address:
          $ref: '#/components/schemas/MatchingScore'
    MatchingScore:
      type: object
      description: >-
        Shows numerical value of similarity between Business Partners or address
        stored in the Data Mirror and the Business Partner from the request.
      properties:
        classification:
          $ref: '#/components/schemas/MatchingClassification'
        value:
          type: number
          description: Matching score value.
          example: '0.9'
        explanation:
          type: string
          description: Explanation for matching score value.
          example: >-
            BP: [overall: [IDENTIFIER: 0.55; overall: 0.55;]] A: [overall:
            [COUNTRY_SHORTNAME: 0.5; overall: 0.5;]]
    MatchingClassification:
      type: object
      description: >-
        Classification of the matching score. It can be `HIGH`, `MEDIUM` or
        `LOW`.
      properties:
        technicalKey:
          type: string
          description: Technical key of the Matching Classification.
          example: HIGH
        name:
          type: string
          description: Name of the Matching Classification.
          example: My Matching Configuration
    BusinessPartner:
      type: object
      description: >-
        An organization which has some degree of involvement with another
        organization's business dealings. Typically, a company's Business
        Partner is another company in the role of a customer, a supplier, a
        vendor, or a service provider. In the CDL context, the Business Partner
        is the core managed entity. A Business Partner is globally uniquely
        identifiable by a CDL ID, and all managed information such as addresses,
        documents, and hierarchies is linked to a Business Partner.
      properties:
        id:
          $ref: '#/components/schemas/BusinessPartnerId'
        names:
          type: array
          description: List of names of the Business Partner.
          items:
            $ref: '#/components/schemas/Name'
        legalForm:
          $ref: '#/components/schemas/schemas-LegalForm'
        identifiers:
          type: array
          description: List of identifiers of the Business Partner.
          items:
            $ref: '#/components/schemas/schemas-Identifier'
        categories:
          type: array
          description: List of categories of the Business Partner.
          items:
            $ref: '#/components/schemas/BusinessPartnerCategory'
        status:
          $ref: '#/components/schemas/BusinessPartnerStatus'
        addresses:
          type: array
          description: List of addresses of the Business Partner.
          items:
            $ref: '#/components/schemas/schemas-Address'
        externalId:
          $ref: '#/components/schemas/BusinessPartnerExternalId'
        profile:
          $ref: '#/components/schemas/PartnerProfile'
        formattedSapRecord:
          $ref: '#/components/schemas/FormattedSapRecord'
        relations:
          type: array
          description: List of relations of the Business Partner.
          items:
            $ref: '#/components/schemas/BusinessPartnerRelation'
        bankAccounts:
          type: array
          description: List of bank accounts of the Business Partner.
          items:
            $ref: '#/components/schemas/BankAccount'
        types:
          type: array
          description: List of types of the Business Partner.
          items:
            $ref: '#/components/schemas/BusinessPartnerType'
        dataSource:
          $ref: '#/components/schemas/BusinessPartnerStorageDataSourceName'
        record:
          type: string
          description: >
            Stringified JSON of an individual Business Partner record.
            Characters: backslash `\` and double quote `"` must be escaped
            (respectively: `\\\\` and `\"`). Fields containing `.` are
            unallowed. Maximum size: 15MB.
          example: '{"name": "BUSINESSPARTNER_NAME", ...}'
    ApiError:
      type: object
      description: Detailed information about API errors.
      properties:
        status:
          $ref: '#/components/schemas/HttpStatus'
        path:
          $ref: '#/components/schemas/HttpPath'
        timestamp:
          $ref: '#/components/schemas/ApiErrorTimestamp'
        error:
          $ref: '#/components/schemas/HttpError'
        message:
          $ref: '#/components/schemas/ApiErrorMessage'
    DuplicateMatchingJobRequest:
      type: object
      description: Used to start a new Deduplication Job for the given storage.
      properties:
        storageId:
          $ref: '#/components/schemas/BusinessPartnerStorageId'
        countryShortNames:
          type: array
          description: >-
            If set, only the records that belong to the countries identified by
            these short names are processed. By default, all records of the
            storage (means from all countries) are processed (considering other
            filters).
          items:
            $ref: '#/components/schemas/CountryShortName'
        dataSourceIds:
          type: array
          description: >-
            If set, only the records that belong to the data sources identified
            by these IDs are processed. By default, all records of the storage
            (means from all data sources) are processed (considering other
            filters).
          items:
            $ref: '#/components/schemas/BusinessPartnerStorageDataSourceId'
        decisionLogIds:
          type: array
          description: >-
            If set, feedback from listed Matching Decision Logs will be
            considered.
          items:
            type: string
            description: ID of the Matching Decision Log.
            example: 65dcb1d68f01e37c2cf9bbb2
        dataMatchingDefinitionId:
          $ref: '#/components/schemas/DataMatchingDefinitionId'
        reportsRequest:
          $ref: '#/components/schemas/DuplicateReportsRequestParams'
    DuplicateReportsRequestParams:
      type: object
      description: Parameters for reports generation for the Deduplication Job.
      properties:
        reportsConfiguration:
          $ref: '#/components/schemas/DuplicateReportsConfiguration'
    JobTag:
      type: string
      description: Tag that can be used to tag the job.
      example: Custom tag
      maxLength: 100
    DuplicateReportsConfiguration:
      type: object
      description: Configuration for reports generation for the Deduplication Job.
      properties:
        duplicateMatching:
          $ref: '#/components/schemas/DuplicateMatchingReportConfiguration'
        duplicateConsolidation:
          $ref: '#/components/schemas/DuplicateConsolidationReportConfiguration'
    IdentityLinksReadFeatureEnum:
      type: string
      description: Features to be activated for reading identity links.
      example: NUMBER_OF_TOTAL
      enum:
        - NUMBER_OF_TOTAL
      x-enumDescriptions:
        NUMBER_OF_TOTAL: When enabled it will fetch total number of records.
    EntityMatchingLinks:
      type: object
      description: List of entity matching links.
      properties:
        status:
          $ref: '#/components/schemas/Status'
        startAfter:
          $ref: '#/components/schemas/StartAfter'
        limit:
          $ref: '#/components/schemas/Limit'
        nextStartAfter:
          $ref: '#/components/schemas/NextStartAfter'
        total:
          $ref: '#/components/schemas/PageTotal'
        values:
          type: array
          description: List of entity matching links.
          items:
            $ref: '#/components/schemas/EntityMatchingLink'
    EntityMatchingLink:
      type: object
      description: Represents relations between entities in a given storage.
      properties:
        id:
          $ref: '#/components/schemas/EntityMatchingLinkId'
        storageId:
          type: string
          description: Uniquely identifying ID of entity matching link's the storage.
          example: 96f89e48aa7b331c82fb30c02d0f7154
        dataMonitorId:
          type: string
          description: Unique Data Monitor identifier.
          example: 72d6900fce6b326088f5d9d91049e3e6
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        createdBy:
          $ref: '#/components/schemas/CreatedBy'
        modifiedBy:
          $ref: '#/components/schemas/ModifiedBy'
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAt'
        entityA:
          $ref: '#/components/schemas/MatchingEntity'
        entityB:
          $ref: '#/components/schemas/MatchingEntity'
        confidence:
          $ref: '#/components/schemas/MatchingConfidence'
        linkStatus:
          $ref: '#/components/schemas/EntityLinkStatusEnum'
        linkStatusUserComment:
          type: string
          description: Optional user comment explaining the link status
          maxLength: 512
          example: Verified during manual review process
    EntityMatchingLinkId:
      type: string
      description: ID of the Entity Matching Link.
      example: '5712566172571652'
    MatchingEntity:
      type: object
      description: >-
        Represents a business entity in the system with its unique identifiers
        and source information.
      required:
        - dataSourceId
        - businessPartnerId
        - externalId
      properties:
        dataSourceId:
          $ref: '#/components/schemas/BusinessPartnerStorageDataSourceId'
        businessPartnerId:
          $ref: '#/components/schemas/BusinessPartnerId'
        externalId:
          $ref: '#/components/schemas/BusinessPartnerExternalId'
    EntityMatchingLinkUpdate:
      type: object
      description: Request to update an entity matching link status
      required:
        - linkStatus
      properties:
        linkStatus:
          $ref: '#/components/schemas/EntityLinkStatusUpdateEnum'
        linkStatusUserComment:
          type: string
          description: Optional user comment explaining the status change
          maxLength: 128
          example: Small Update - completely wrong duplicate
    EntityLinkStatusUpdateEnum:
      type: string
      description: Entity link status update enum (excludes INFERRED)
      example: RETRACTED
      enum:
        - ASSERTED
        - RETRACTED
      x-enumDescriptions:
        ASSERTED: Manually verified and approved as a correct match
        RETRACTED: Manually marked as incorrect match or duplicate
    EntityMatchingLinkUpdateResult:
      type: object
      description: Result of updating an entity matching link
      properties:
        id:
          $ref: '#/components/schemas/EntityMatchingLinkId'
        linkStatus:
          $ref: '#/components/schemas/EntityLinkStatusEnum'
        linkStatusUserComment:
          type: string
          description: User comment associated with the status change
          example: Small Update - completely wrong duplicate
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAt'
        modifiedBy:
          $ref: '#/components/schemas/ModifiedBy'
        status:
          $ref: '#/components/schemas/Status'
    MatchingConfidence:
      type: object
      description: >-
        Represents the confidence level of a match between two entities,
        including scoring and status information.
      required:
        - overallScore
        - status
      properties:
        overallScore:
          type: number
          format: double
          minimum: 0
          maximum: 1
          description: >-
            Overall confidence score of the match between two entities (0.0 to
            1.0).
          example: 0.95
        status:
          $ref: '#/components/schemas/EntityMatchingStatusEnum'
        explanation:
          $ref: '#/components/schemas/EntityMatchExplanation'
    EntityMatchingStatusEnum:
      type: string
      description: Confidence status enum.
      example: MATCH
      enum:
        - MATCH
        - NO_MATCH
        - POSSIBLE_MATCH
    EntityLinkStatusEnum:
      type: string
      description: Link status enum.
      example: INFERRED
      enum:
        - INFERRED
        - ASSERTED
        - RETRACTED
      x-enumDescriptions:
        INFERRED: >-
          This status means that the link was identified as a result of the
          matching process. It is purely algorithm based.
        ASSERTED: This status means that the link was manually reviewed and approved.
        RETRACTED: >-
          Status was `INFERRED` but status was manually changed. This can be
          either customer stating that the link was not valid, the data of the
          records changed or matching configuration was altered.
    EntityMatchExplanation:
      type: object
      description: >-
        Detailed explanation of why entities were considered matches, breaking
        down the matching logic by attributes.
      properties:
        attributeMatchingExplanation:
          type: array
          items:
            $ref: '#/components/schemas/EntityAttributeMatch'
    EntityAttributeMatch:
      type: object
      description: >-
        Detailed comparison of a specific attribute between two entities,
        including their values and similarity score.
      required:
        - jsonPath
        - valueA
        - valueB
        - similarity
      properties:
        jsonPath:
          type: string
          description: >-
            JSON path indicating the location of the matched attribute in the
            entity structure.
          example: businessPartner.name
        valueA:
          type: string
          description: Value of the attribute from the first entity being compared.
          example: Acme Corporation
        valueB:
          type: string
          description: Value of the attribute from the second entity being compared.
          example: ACME Corp
        similarity:
          type: number
          format: double
          minimum: 0
          maximum: 1
          description: >-
            Numerical score indicating how similar the two values are (0.0 to
            1.0).
          example: 0.85
    EntityMatchingLinksReadFeatureEnum:
      type: string
      description: Features to be activated for reading identity links.
      example: NUMBER_OF_TOTAL
      enum:
        - NUMBER_OF_TOTAL
      x-enumDescriptions:
        NUMBER_OF_TOTAL: When enabled it will fetch total number of records.
    LinkMatchingJobRequest:
      type: object
      description: Request to start a linkage matching job.
      properties:
        patternSources:
          type: array
          description: >-
            The source, in form of a BusinessPartner storage (at least one but
            can be more), to get the pattern records for the matching.
          items:
            $ref: '#/components/schemas/DataMatchingSource'
          minItems: 1
        matchSources:
          type: array
          description: >-
            The source, in form of a BusinessPartner storage (at least one but
            can be more), to get the match records for the matching.
          items:
            $ref: '#/components/schemas/DataMatchingSource'
          minItems: 1
        countryShortNames:
          type: array
          description: >-
            If set, only the records that belong to the countries identified by
            these short names are processed. By default all records of the
            storage (means from all countries) are processed (considering other
            filters).
          items:
            $ref: '#/components/schemas/CountryShortName'
        dataMatchingDefinitionId:
          type: string
          description: >-
            ID of the DataMatchingDefinition that should be used to perform the
            link matching.
          example: 6461e6113b1865304b3038b6
          required:
            - patternSources
            - matchSources
            - dataMatchingDefinitionId
        decisionLogIds:
          type: array
          description: >-
            If set, feedback from listed Matching Decision Logs will be
            considered.
          items:
            type: string
            description: ID of the Matching Decision Log.
            example: 65dcb1d68f01e37c2cf9bbb2
    LinkageMatchingReportType:
      type: string
      description: Type of the linkage matching report.
      example: EXCEL
      default: EXCEL
      enum:
        - EXCEL
        - JOB_RESULTS
      x-enumDescriptions:
        EXCEL: Excel report.
        JOB_RESULTS: Job results.
    DataMatchingSource:
      type: object
      description: A source of data for matching.
      properties:
        storageId:
          $ref: '#/components/schemas/BusinessPartnerStorageId'
        dataSourceIds:
          type: array
          description: >-
            Optional list of DataSource IDs of the storage (identified by the
            storageId) that should be used for matching.
          items:
            $ref: '#/components/schemas/BusinessPartnerStorageDataSourceId'
      required:
        - storageId
    LinkMatchingJob:
      type: object
      description: A job to perform linkage matching.
      properties:
        id:
          $ref: '#/components/schemas/JobId'
        patternSources:
          type: array
          description: >-
            The source, in form of a BusinessPartner storage (at least one but
            can be more), to get the pattern records for the matching.
          items:
            $ref: '#/components/schemas/DataMatchingSource'
          minItems: 1
        matchSources:
          type: array
          description: >-
            The source, in form of a BusinessPartner storage (at least one but
            can be more), to get the match records for the matching.
          items:
            $ref: '#/components/schemas/DataMatchingSource'
          minItems: 1
        countryShortNames:
          type: array
          description: List of country short names.
          items:
            $ref: '#/components/schemas/CountryShortName'
        dataMatchingDefinitionId:
          $ref: '#/components/schemas/DataMatchingDefinitionId'
        decisionLogIds:
          type: array
          description: >-
            If set, feedback from listed Matching Decision Logs will be
            considered.
          items:
            type: string
            description: ID of the Matching Decision Log.
            example: 65dcb1d68f01e37c2cf9bbb2
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        createdBy:
          $ref: '#/components/schemas/CreatedBy'
        status:
          $ref: '#/components/schemas/JobStatus'
        progress:
          $ref: '#/components/schemas/JobProgress'
    JobStatus:
      type: string
      description: Curation Job execution status.
      example: RUNNING
      enum:
        - ARCHIVED
        - UNKNOWN
        - CREATED
        - PERSISTED
        - SCHEDULED
        - WAITING
        - COULDNT_START
        - RUNNING
        - FINISHED
        - DIED
        - CANCELED
        - FAILED
      x-enumDescriptions:
        ARCHIVED: The job is archived.
        UNKNOWN: The job status is unknown.
        CREATED: The job has been created.
        PERSISTED: The job has been persisted.
        SCHEDULED: The job is scheduled.
        WAITING: The job is waiting.
        COULDNT_START: The job could not be started.
        RUNNING: The job is running.
        FINISHED: The job has finished.
        DIED: The job has died.
        CANCELED: The job has been canceled.
        FAILED: The job has failed.
    DataMatchingDefinitionCreate:
      type: object
      description: >-
        Structured data entity that encapsulates the parameters necessary for
        the instantiation of a new Data Matching Definition.
      required:
        - name
        - type
        - xmlDukeConfiguration
      properties:
        name:
          type: string
          maxLength: 30
          description: A human-readable Name for the Data Matching Definition instance.
          example: Custom Matching Definition Name
        type:
          $ref: '#/components/schemas/MatchingType'
        xmlDukeConfiguration:
          type: string
          description: Holds the Duke XML configuration for data matching.
          example: <duke>...</duke>
        reportConfiguration:
          $ref: '#/components/schemas/ReportConfiguration'
        goldenRecordConfiguration:
          $ref: '#/components/schemas/GoldenRecordConfiguration'
        workspace:
          $ref: '#/components/schemas/Workspace'
    Workspace:
      type: object
      description: Collaboration space to share/configure configurations.
      properties:
        id:
          $ref: '#/components/schemas/WorkspaceId'
    DataMatchingDefinitionUpdate:
      type: object
      description: >-
        Structured data entity that encapsulates the parameters necessary for
        updating an existing Data Matching Definition.
      required:
        - name
        - type
        - xmlDukeConfiguration
      properties:
        name:
          type: string
          maxLength: 30
          description: A human-readable name for the Data Matching Definition instance.
          example: Custom Matching Definition Name
        type:
          $ref: '#/components/schemas/MatchingType'
        xmlDukeConfiguration:
          type: string
          description: Holds the Duke XML configuration for data matching.
          example: <duke>...</duke>
        reportConfiguration:
          $ref: '#/components/schemas/ReportConfiguration'
        goldenRecordConfiguration:
          $ref: '#/components/schemas/GoldenRecordConfiguration'
        workspace:
          $ref: '#/components/schemas/Workspace'
    DataMatchingDefinition:
      type: object
      description: Data structure that encapsulates the configuration details.
      properties:
        id:
          $ref: '#/components/schemas/DataMatchingDefinitionId'
        name:
          type: string
          maxLength: 30
          description: A human-readable name for the Data Matching Definition instance.
          example: Custom Matching Definition Name
        creatorUsername:
          $ref: '#/components/schemas/UserId'
        creatorOrganization:
          $ref: '#/components/schemas/OrganizationId'
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        lastModifiedAt:
          $ref: '#/components/schemas/ModifiedAt'
        type:
          $ref: '#/components/schemas/MatchingType'
        xmlDukeConfiguration:
          type: string
          description: Holds the Duke XML configuration for data matching.
          example: <duke>...</duke>
        reportConfiguration:
          $ref: '#/components/schemas/ReportConfiguration'
        goldenRecordConfiguration:
          $ref: '#/components/schemas/GoldenRecordConfiguration'
        workspace:
          $ref: '#/components/schemas/Workspace'
    MatchingType:
      type: string
      description: Type of the matching configuration.
      example: DEDUPLICATION
      enum:
        - DEDUPLICATION
        - LINKAGE
      x-enumDescriptions:
        DEDUPLICATION: >-
          The matching configuration is used to identify duplicates in a
          storage.
        LINKAGE: >-
          The matching configuration is used to identify links between records
          in different storages.
    ReportConfiguration:
      type: object
      description: >-
        Configuration for generating reports related to the Data Matching
        Definition.
      properties:
        header:
          type: array
          description: List of column mappings for the header of the report.
          items:
            $ref: '#/components/schemas/ColumnMapping'
    ColumnMapping:
      type: object
      description: Mapping of a column in the report to an attribute in the result object.
      properties:
        attributeJsonPath:
          type: string
          description: JSON path to the attribute in the result object.
          example: attributeJsonPath
        columnName:
          type: string
          description: |
            Name of the column in the report.

            Accessible values are:
            * `External ID`
            * `NAME1`
            * `NAME2`
            * `Tax Number 1`
            * `Tax Number 2`
            * `VAT Number`
          example: External ID
    GoldenRecordConfiguration:
      type: object
      description: >-
        Configuration for creating Golden Records in the context of Data
        Matching.
      properties:
        decisionStrategy:
          $ref: '#/components/schemas/DecisionStrategy'
        creationStrategy:
          $ref: '#/components/schemas/CreationStrategy'
    DecisionStrategy:
      type: object
      description: Defines how the decision tree is created.
      properties:
        root:
          $ref: '#/components/schemas/DecisionNode'
    DecisionNode:
      type: object
      description: Defines a node in the decision tree.
      properties:
        rule:
          $ref: '#/components/schemas/Rule'
        yesBranch:
          $ref: '#/components/schemas/DecisionNode'
        noBranch:
          $ref: '#/components/schemas/DecisionNode'
    CreationStrategy:
      type: object
      description: >-
        Defines the strategy for creating Golden Records in the context of Data
        Matching.
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/CreationType'
        protectedAttributes:
          type: array
          description: List of attributes of base record that should be kept.
          items:
            type: string
            description: |
              Name of an attribute in the report.

              Available values are:
              * `External ID`
              * `NAME1`
              * `NAME2`
              * `Tax Number 1`
              * `Tax Number 2`
              * `VAT Number`
            example: External ID
        recordExclusionRules:
          type: array
          description: >-
            List of rules to exclude certain records from Golden Record creation
            (e.g. has a deletion flag).
          items:
            $ref: '#/components/schemas/Rule'
        attributeEnhancementRules:
          type: array
          description: >-
            List of rules to define if and how a certain attribute should be
            included or removed from the Golden Record.
          items:
            $ref: '#/components/schemas/EnhancementRule'
    CreationType:
      type: string
      description: Defines how an attributes should be added to the Golden Record.
      example: CONSTANT
      enum:
        - CONSTANT
        - MAJORITY
        - JOIN_DISTINCT
      x-enumDescriptions:
        CONSTANT: The value of the attribute is set to a constant value.
        MAJORITY: >-
          The value of the attribute is set to the value that occurs most often
          in Golden Records.
        JOIN_DISTINCT: >-
          The value of the attribute is set to the distinct value of the
          attribute in Golden Record.
    ExecutionType:
      type: string
      description: |
        Defines options for handling attributes.
      example: SET
      enum:
        - SET
        - ENRICH
        - REMOVE
      x-enumDescriptions:
        SET: The value of the attribute is set to the new value.
        ENRICH: >-
          The value of the attribute is only set if the Golden Record does not
          have a value yet.
        REMOVE: The value of the attribute is removed from the Golden Record.
    EnhancementRule:
      type: object
      description: Defines how the attributes of the Golden Record are chosen.
      properties:
        attributes:
          type: array
          description: List of attributes affected by this rule of enhancement.
          minItems: 1
          items:
            type: string
            description: |
              Name of the attribute.

              Available values are:
              * `External ID`
              * `NAME1`
              * `NAME2`
              * `Tax Number 1`
              * `Tax Number 2`
              * `VAT Number`
            example: External ID
        constraintChain:
          $ref: '#/components/schemas/ConstraintChain'
        creationType:
          $ref: '#/components/schemas/CreationType'
        creationConstant:
          type: string
          description: Constant value that should be used for the attribute.
          example: constantValue
        executionType:
          $ref: '#/components/schemas/ExecutionType'
        fallbackExecutionType:
          $ref: '#/components/schemas/ExecutionType'
      required:
        - attributes
        - executionType
    ConstraintChain:
      type: object
      description: Defines a chain of constraints that are applied to the attributes.
      properties:
        constraints:
          type: array
          description: List of attributes affected by this rule of enhancement.
          items:
            $ref: '#/components/schemas/Rule'
        allRecordsShouldMatch:
          type: boolean
          description: >-
            If true, all records should match the constraints. If false, at
            least one record should match the constraints.
          example: 'true'
        constraintChainType:
          $ref: '#/components/schemas/ConstraintChainType'
    ConstraintChainType:
      type: string
      description: Defines the type of the constraint chain.
      example: AND
      enum:
        - AND
        - OR
      x-enumDescriptions:
        AND: All constraints should match.
        OR: At least one constraint should match.
    Rule:
      type: object
      description: Defines a rule that can be used to filter records.
      properties:
        type:
          $ref: '#/components/schemas/RuleType'
        jsonPath:
          type: string
          description: JSON path to the attribute in the record.
          example: attributeJsonPath
        valueType:
          $ref: '#/components/schemas/ValueType'
        expectedValues:
          type: array
          description: List of expected values for the attribute.
          items:
            type: string
            description: Expected value for the attribute.
            example: expectedValue
    RuleType:
      type: string
      description: Defines the type of the rule.
      example: HAS_VALUE
      enum:
        - HAS_VALUE
        - HAS_NOT_VALUE
        - HAS_VALUE_IN
        - HAS_NOT_VALUE_IN
        - HAS_VALUE_LIKE
        - HAS_NOT_VALUE_LIKE
        - HAS_HIGHEST_VALUE
        - HAS_LOWEST_VALUE
        - IS_MARKED
        - IS_NOT_MARKED
        - IS_MOST_COMPLETE
        - HAS_HIGHEST_MATCH_SCORE
      x-enumDescriptions:
        HAS_VALUE: The attribute has a value.
        HAS_NOT_VALUE: The attribute has no value.
        HAS_VALUE_IN: The attribute has a value that is in the list of expected values.
        HAS_NOT_VALUE_IN: The attribute has no value that is in the list of expected values.
        HAS_VALUE_LIKE: The attribute has a value that is like the expected value.
        HAS_NOT_VALUE_LIKE: The attribute has no value that is like the expected value.
        HAS_HIGHEST_VALUE: The attribute has the highest value.
        HAS_LOWEST_VALUE: The attribute has the lowest value.
        IS_MARKED: The record is marked.
        IS_NOT_MARKED: The record is not marked.
        IS_MOST_COMPLETE: The record is the most complete.
        HAS_HIGHEST_MATCH_SCORE: The record has the highest match score.
    ValueType:
      type: string
      description: Defines the type of the value.
      example: TEXT
      enum:
        - TEXT
        - DATE
        - NUMBER
        - FLOATING_POINT_NUMBER
      x-enumDescriptions:
        TEXT: The value is a text.
        DATE: The value is a date.
        NUMBER: The value is a number.
        FLOATING_POINT_NUMBER: The value is a floating point number.
    DataMatchingDefinitionPage:
      type: object
      description: Page of DataMatchingDefinitions.
      properties:
        page:
          $ref: '#/components/schemas/Page'
        pageSize:
          $ref: '#/components/schemas/PageSize'
        numberOfPages:
          type: integer
          format: int32
          description: The number of pages available.
          example: '3'
        total:
          $ref: '#/components/schemas/PageTotal'
        values:
          type: array
          description: List of Data Matching Definitions.
          items:
            $ref: '#/components/schemas/DataMatchingDefinition'
    MatchingReportType:
      type: string
      description: Type of the matching report file output.
      example: EXCEL
      default: EXCEL
      enum:
        - EXCEL
        - CSV
        - JOB_RESULTS
      x-enumDescriptions:
        EXCEL: Excel file.
        CSV: CSV file.
        JOB_RESULTS: Job results.
    DuplicateMatchingJob:
      type: object
      description: Job to deduplicate Business Partners.
      properties:
        id:
          $ref: '#/components/schemas/JobId'
        storageId:
          $ref: '#/components/schemas/BusinessPartnerStorageId'
        dataMatchingDefinitionId:
          $ref: '#/components/schemas/DataMatchingDefinitionId'
        dataSourceIds:
          type: array
          description: List of Data Source IDs.
          items:
            $ref: '#/components/schemas/BusinessPartnerStorageDataSourceId'
        decisionLogIds:
          type: array
          description: >-
            If set, feedback from listed Matching Decision Logs will be
            considered.
          items:
            type: string
            description: ID of the Matching Decision Log.
            example: 65dcb1d68f01e37c2cf9bbb2
        countryShortNames:
          type: array
          description: List of country short names.
          items:
            $ref: '#/components/schemas/CountryShortName'
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        createdBy:
          $ref: '#/components/schemas/CreatedBy'
        status:
          $ref: '#/components/schemas/JobStatus'
        progress:
          $ref: '#/components/schemas/JobProgress'
    BusinessPartnersEntityResolutionMatchRequest:
      type: object
      description: Request to match Business Partners.
      required:
        - candidates
        - pattern
        - dataMatchingDefinitionId
      properties:
        candidates:
          type: array
          description: List of Business Partners to be matched.
          minItems: 1
          maxItems: 1000
          items:
            $ref: '#/components/schemas/BusinessPartner'
        pattern:
          $ref: '#/components/schemas/BusinessPartner'
        dataMatchingDefinitionId:
          $ref: '#/components/schemas/DataMatchingDefinitionId'
        showMatchingStatuses:
          type: array
          description: List of matching statuses to be shown in the result.
          default:
            - MATCH
            - MAYBE_MATCH
          items:
            $ref: '#/components/schemas/EntityMatchingStatusEnum'
    BusinessPartnersEntityResolutionCompareRequest:
      type: object
      description: Request to compare custom Business Partner values.
      properties:
        cleaners:
          type: array
          description: List of cleaners to use with both values.
          items:
            $ref: '#/components/schemas/MatchingAttributeCleaner'
        comparators:
          type: array
          description: List of cleaners to use for comparing values.
          items:
            $ref: '#/components/schemas/MatchingAttributeComparator'
        valueA:
          type: string
          description: Base value to which comparison is made.
          example: CDQ AG
        valueB:
          type: string
          description: Value compared to the base.
          example: CDQ AG
    BusinessPartnersEntityResolutionComparisonResult:
      type: object
      description: Result of comparing values.
      properties:
        comparatorName:
          type: string
          description: Technical key of the comparator that was used.
          example: Levenshtein
        valueA:
          type: string
          description: First value used for comparison.
          example: CDQ AG
        valueB:
          type: string
          description: Second value used for comparison.
          example: CDQ AG
        valueACleaned:
          type: string
          description: Form of Value A after all cleaners have been applied.
          example: cdq
        valueBCleaned:
          type: string
          description: Form of Value B after all cleaners have been applied.
          example: cdq
        similarity:
          type: number
          description: >-
            Double precision number representing the calculated similarity
            between the given values.
          example: '0.8'
    ExternalContextIdentifier:
      type: object
      description: Describe own identifiers of a record (others than just the external ID).
      properties:
        value:
          $ref: '#/components/schemas/ExternalContextIdentifierValue'
        type:
          $ref: '#/components/schemas/ExternalContextIdentifierType'
    ExternalContextIdentifierType:
      type: object
      description: External identifiers type associated with the Business Partner.
      properties:
        technicalKey:
          $ref: '#/components/schemas/ExternalContextIdentifierTypeTechnicalKey'
    IdentifierType:
      type: object
      description: Type of the identifier.
      properties:
        url:
          $ref: '#/components/schemas/IdentifierTypeUrl'
        name:
          $ref: '#/components/schemas/IdentifierTypeName'
        technicalKey:
          $ref: '#/components/schemas/IdentifierTypeTechnicalKey'
    Thoroughfare:
      type: object
      description: >-
        Details of the access route along which buildings, lots, or land are
        located, such as street, road, channel, crescent, avenue, etc. This also
        includes canals or banks on which houses or boat houses are located
        where people live.
      properties:
        type:
          $ref: '#/components/schemas/ThoroughfareType'
        shortName:
          $ref: '#/components/schemas/ThoroughfareShortName'
        number:
          $ref: '#/components/schemas/ThoroughfareNumber'
        direction:
          $ref: '#/components/schemas/ThoroughfareDirection'
        value:
          $ref: '#/components/schemas/ThoroughfareValue'
    PostalDeliveryPoint:
      type: object
      description: A single mailbox or other place at which postal mail is delivered.
      properties:
        type:
          $ref: '#/components/schemas/PostalDeliveryPointType'
        shortName:
          $ref: '#/components/schemas/PostalDeliveryPointShortName'
        number:
          $ref: '#/components/schemas/PostalDeliveryPointNumber'
        value:
          $ref: '#/components/schemas/PostalDeliveryPointValue'
    Locality:
      type: object
      description: >-
        A locality is a named densely populated area (a place) such as town,
        village, suburb, etc. A locality composes of many individual addresses.
        Many localities exist in an [administrative
        area](https://meta.cdq.com/Address/administrative_area). A locality can
        also have several levels of sub localities.
      properties:
        type:
          $ref: '#/components/schemas/LocalityType'
        shortName:
          $ref: '#/components/schemas/LocalityShortName'
        value:
          $ref: '#/components/schemas/LocalityValue'
    ThoroughfareType:
      type: object
      description: Type of the [Thoroughfare](https://meta.cdq.com/Address/thoroughfare).
      properties:
        name:
          $ref: '#/components/schemas/ThoroughfareTypeName'
        url:
          $ref: '#/components/schemas/ThoroughfareTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/ThoroughfareTypeTechnicalKey'
    LocalityType:
      type: object
      description: Type of the [Locality](https://meta.cdq.com/Address/locality).
      properties:
        name:
          $ref: '#/components/schemas/LocalityTypeName'
        url:
          $ref: '#/components/schemas/LocalityTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/LocalityTypeTechnicalKey'
    PremiseType:
      type: object
      description: Type of the Premise.
      properties:
        name:
          $ref: '#/components/schemas/PremiseTypeName'
        url:
          $ref: '#/components/schemas/PremiseTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/PremiseTypeTechnicalKey'
    Premise:
      type: object
      description: >-
        A premise is a tract of land including its buildings. A premise may have
        several sublevels to precisely identify.
      properties:
        value:
          $ref: '#/components/schemas/PremiseValue'
        shortName:
          $ref: '#/components/schemas/PremiseShortName'
        number:
          $ref: '#/components/schemas/PremiseNumber'
        type:
          $ref: '#/components/schemas/PremiseType'
    AdministrativeArea:
      type: object
      description: A top-level geographical or political area division in a country.
      properties:
        value:
          $ref: '#/components/schemas/AdministrativeAreaValue'
        shortName:
          $ref: '#/components/schemas/AdministrativeAreaShortName'
        type:
          $ref: '#/components/schemas/AdministrativeAreaType'
    AdministrativeAreaType:
      type: object
      description: >-
        Type of the [Administrative
        Area](https://meta.cdq.com/Address/administrative_area).
      properties:
        name:
          $ref: '#/components/schemas/AdministrativeAreaTypeName'
        url:
          $ref: '#/components/schemas/AdministrativeAreaTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/AdministrativeAreaTypeTechnicalKey'
    PostCode:
      type: object
      description: >-
        A country specific code for a certain
        [address](https://meta.cdq.com/Address) component or an combination of
        [address](https://meta.cdq.com/Address) components, e.g.
        [locality](https://meta.cdq.com/Address/locality).
      properties:
        value:
          $ref: '#/components/schemas/PostCodeValue'
        type:
          $ref: '#/components/schemas/PostCodeType'
    PostCodeType:
      type: object
      description: Type of the Post Code.
      properties:
        name:
          $ref: '#/components/schemas/PostCodeTypeName'
        url:
          $ref: '#/components/schemas/PostCodeTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/PostCodeTypeTechnicalKey'
    PostalDeliveryPointType:
      type: object
      description: A single mailbox or other place at which postal mail is delivered.
      properties:
        name:
          $ref: '#/components/schemas/PostalDeliveryPointTypeName'
        url:
          $ref: '#/components/schemas/PostalDeliveryPointTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/PostalDeliveryPointTypeTechnicalKey'
    Country:
      type: object
      description: >-
        Country consisting of the country name and country code (ISO 3166-1
        alpha-2).
      properties:
        shortName:
          $ref: '#/components/schemas/CountryShortName'
        value:
          $ref: '#/components/schemas/CountryValue'
    ApiErrorWithStatus:
      type: object
      description: Detailed information about API errors.
      properties:
        status:
          $ref: '#/components/schemas/Status'
    Status:
      type: object
      description: Details about status or error of a service
      required:
        - code
        - technicalKey
        - details
      properties:
        code:
          $ref: '#/components/schemas/HttpStatusCode'
        technicalKey:
          $ref: '#/components/schemas/HttpStatusTechnicalKey'
        details:
          type: array
          items:
            $ref: '#/components/schemas/StatusDetails'
        path:
          $ref: '#/components/schemas/HttpPath'
        timestamp:
          $ref: '#/components/schemas/StatusTimestamp'
    MatchingReportsRequest:
      type: object
      description: Request to create a new matching report.
      properties:
        matchingJobId:
          $ref: '#/components/schemas/JobId'
        reportsConfiguration:
          $ref: '#/components/schemas/MatchingReportsConfiguration'
    MatchingReports:
      type: object
      description: Represents details of a Data Matching report job.
      properties:
        id:
          $ref: '#/components/schemas/JobId'
        status:
          $ref: '#/components/schemas/schemas-JobStatus'
        statusMessage:
          $ref: '#/components/schemas/JobStatusMessage'
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        finishedAt:
          type: string
          description: >-
            ISO 8601 representation of the timestamp when the Matching Report
            was finished.
          example: '2025-08-29T09:46:53Z'
        user:
          $ref: '#/components/schemas/UserId'
        attachments:
          type: array
          description: List of attachments that are part of the report.
          items:
            $ref: '#/components/schemas/Attachment'
        progress:
          $ref: '#/components/schemas/JobProgress'
        reportsConfiguration:
          $ref: '#/components/schemas/MatchingReportsConfiguration'
    Attachment:
      type: object
      description: Attachment generated in the report.
      properties:
        name:
          type: string
          description: Name of the attachment.
          example: filename.xlsx
        type:
          type: string
          description: Type of the attachment.
          example: REPORT_COLLECTION
        url:
          type: string
          description: URL/path to the attachment.
          example: cdl-runtime-data/folder/filename.xlsx
        tags:
          type: array
          description: List of tags
          items:
            type: string
            description: Tags of attachment.
            example: REPORT_FILE_12
    MatchingDecisionLogCreateRequest:
      type: object
      description: Request to create a new matching decision log.
      properties:
        name:
          type: string
          description: Name of the matching decision log.
          example: decisionLogOne
    MatchingDecisionLogs:
      type: object
      description: List of matching decision logs.
      properties:
        startAfter:
          $ref: '#/components/schemas/StartAfter'
        limit:
          $ref: '#/components/schemas/Limit'
        values:
          type: array
          description: List of matching decision logs.
          items:
            $ref: '#/components/schemas/MatchingDecisionLog'
        nextStartAfter:
          $ref: '#/components/schemas/NextStartAfter'
    MatchingDecisionLog:
      type: object
      description: Decision Log made during data matching.
      properties:
        id:
          type: string
          description: Uniquely identifying ID of the decision log.
          example: 65dcc3c60cecd503bcc88c92
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        name:
          type: string
          description: Name of the decision log.
          example: decisionLogOne
        organization:
          type: string
          description: Uniquely identifying ID of the organization.
          example: 12345678-1234-5678-1234-567812345678
    MatchingDecisionLogResult:
      type: object
      description: Result of the matching decision log creation.
      properties:
        matchingDecisionLog:
          $ref: '#/components/schemas/MatchingDecisionLog'
        status:
          type: string
          description: |
            status:
              * `OK` - Decision log has been fetched successfully
              * `NOT_FOUND` - Decision log does not exist
          example: OK
        message:
          type: string
          description: Message of the status.
          example: Decision log has been fetched successfully
    IdentityLinkCreateRequest:
      type: object
      description: Request to create identity links.
      properties:
        links:
          type: array
          description: List of identity links to be created.
          minItems: 1
          maxItems: 1000
          items:
            $ref: '#/components/schemas/IdentityLinkCreate'
      required:
        - links
    IdentityLinkCreate:
      type: object
      description: Identity link to be created between two Business Partners.
      properties:
        entries:
          type: array
          description: List of identity link entries.
          minItems: 2
          maxItems: 2
          items:
            $ref: '#/components/schemas/IdentityLinkEntry'
      required:
        - entries
    IdentityLinkEntry:
      type: object
      description: Entry of the identity link.
      properties:
        storageId:
          $ref: '#/components/schemas/BusinessPartnerStorageId'
        dataSourceId:
          $ref: '#/components/schemas/BusinessPartnerStorageDataSourceId'
        businessPartnerId:
          $ref: '#/components/schemas/BusinessPartnerId'
      required:
        - storageId
        - dataSourceId
        - businessPartnerId
    IdentityLink:
      type: object
      description: Represents relations between entities in a given storage.
      properties:
        id:
          type: string
          description: Uniquely identifying ID of the identity link.
          example: 654477e4b930b62e0ceb4950
        linkStorageId:
          type: string
          description: Uniquely identifying ID of identity link's the storage.
          example: 96f89e48aa7b331c82fb30c02d0f7154
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        createdBy:
          $ref: '#/components/schemas/CreatedBy'
        linkStatus:
          type: string
          description: |
            Status of the identity link.
            * INFERRED: The link has been inferred by the system.
            * ASSERTED: The link has been asserted by the user.
            * RETRACTED: The link has been retracted by the user.
          example: INFERRED
        linkKind:
          type: string
          description: |
            Enum indicating confidence of an identity link.
            * SAME: The two entities are the same.
            * MAYBESAME: The two entities are likely the same.
            * DIFFERENT: The two entities are different.
          example: SAME
        entityA:
          $ref: '#/components/schemas/IdentityLinkEntry'
        entityB:
          $ref: '#/components/schemas/IdentityLinkEntry'
    IdentityLinks:
      type: object
      description: List of identity links.
      properties:
        startAfter:
          $ref: '#/components/schemas/StartAfter'
        limit:
          $ref: '#/components/schemas/Limit'
        values:
          type: array
          description: List of identity links.
          items:
            $ref: '#/components/schemas/IdentityLink'
        nextStartAfter:
          $ref: '#/components/schemas/NextStartAfter'
    IdentityLinkCreateResult:
      type: object
      description: Result of the identity link creation.
      properties:
        values:
          type: array
          description: List of identity links created.
          items:
            $ref: '#/components/schemas/IdentityLinkCreateStatus'
    IdentityLinkCreateStatus:
      type: object
      description: Status of the identity link creation.
      properties:
        status:
          type: string
          description: |
            status:
              * `OK` - Identity link has been created successfully
              * `FAILED` - Identity link creation has failed
          example: OK
        message:
          type: string
          description: Message of the status.
          example: Identity link has been created successfully
    MatchingDecisionImportJob:
      type: object
      description: Job to import matching decisions.
      properties:
        id:
          $ref: '#/components/schemas/JobId'
        domain:
          $ref: '#/components/schemas/WebsiteUrl'
        createdBy:
          $ref: '#/components/schemas/CreatedBy'
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAt'
        progress:
          $ref: '#/components/schemas/JobProgress'
        status:
          $ref: '#/components/schemas/schemas-JobStatus'
        statusMessage:
          $ref: '#/components/schemas/JobStatusMessage'
        decisionLogId:
          type: string
          description: ID of the decision log.
          example: 65dcb1d68f01e37c2cf9bbb2
        result:
          $ref: '#/components/schemas/MatchingDecisionImportJobResult'
    MatchingDecisionImportJobResult:
      type: object
      description: Result of the matching decision import job.
      properties:
        statistics:
          $ref: '#/components/schemas/MatchingDecisionImportJobStatistics'
    MatchingDecisionImportJobStatistics:
      type: object
      description: Statistics of the matching decision import job.
      properties:
        numberOfInserts:
          type: integer
          format: int32
          description: Number of inserted matching decisions.
          example: '100'
        numberOfFailed:
          type: integer
          format: int32
          description: Number of failed matching decisions.
          example: '0'
    DuplicateMonitorDeduplicateRequest:
      type: object
      description: Request for passing Business Partners for deduplication.
      properties:
        storageId:
          type: string
          description: Id of the storage
          example: 123abcd68f01e37c2cf9bbb2
        storageOrganizationId:
          type: string
          description: Id of the organization owning the storage
          example: OrganizationName
        configurationId:
          type: string
          description: Id of the configuration
          example: 123abcd68f01e37c2cf9bbb2
        businessPartnerIds:
          type: array
          items:
            type: string
            description: Id of a Business Partner
            example: 123abcd68f01e37c2cf9bbb2
        dataSourceIds:
          type: array
          items:
            type: string
            description: Id of a Data Source
            example: 5f9fc1b97e1e490001fcfc9e
        dataMonitorId:
          type: string
          description: Id of the Data Monitor
          example: 123abcd68f01e37c2cf9bbb2
    IdentityLinkDecisionCreateWorkerRequest:
      type: object
      description: >-
        Request to create worker for identity links from a chunk of matching
        decisions.
      allOf:
        - $ref: '#/components/schemas/IdentityLinkCreateRequest'
        - type: object
          description: Decision log to be used for identity link creation.
          properties:
            decisionLogId:
              type: string
              description: ID of the decision log.
              example: 65dcb1d68f01e37c2cf9bbb2
    IdentityLinkDecisionCreateResult:
      type: object
      description: Result of the identity link decision create task.
      properties:
        numberOfProcessed:
          type: integer
          description: Number of processed matching decisions.
          example: '100'
        numberOfCreated:
          type: integer
          description: Number of created identity links.
          example: '100'
        numberOfFailed:
          type: integer
          description: Number of failed identity links.
          example: '0'
        failures:
          type: array
          description: List of failed identity link creation.
          items:
            $ref: '#/components/schemas/IdentityLinkDecisionCreateFailureLog'
    IdentityLinkDecisionCreateFailureLog:
      type: object
      description: Log of failed identity link creation.
      properties:
        id:
          type: string
          description: Failure log ID.
          example: '567326478287468742'
        identityLink:
          $ref: '#/components/schemas/IdentityLinkEntry'
        message:
          type: string
          description: Message of the failure.
          example: This record could not be stored due to timeout.
    IdentityResolutionConfiguration:
      type: object
      description: Configuration for Identity Resolution
      properties:
        candidateSearchConfiguration:
          $ref: '#/components/schemas/CandidateSearchConfiguration'
        generalMatchingConfiguration:
          $ref: '#/components/schemas/MatchingConfiguration'
        scopedMatchingConfigurations:
          $ref: '#/components/schemas/ScopedMatchingConfigurations'
    CandidateSearchConfiguration:
      type: object
      description: |
        Configuration for candidate search.
      properties:
        maxCandidates:
          type: integer
          format: int32
          description: Maximum number of candidates to return.
          minimum: 1
          maximum: 200
          default: 10
          example: 10
        searchAttributes:
          type: array
          description: |
            List of attributes to use for candidate search.
          items:
            $ref: '#/components/schemas/SearchAttribute'
    SearchAttribute:
      type: object
      description: >
        All JSONPath expressions must follow
        [RFC9535](https://www.rfc-editor.org/rfc/rfc9535) syntax. List of
        attributes can be obtained by dedicated endpoint.
      properties:
        jsonPath:
          type: string
          description: |
            RFC9535-compliant JSON path to the attribute.
            Possible values:
             - `$.identifiers[?(@.type.technicalKey=='GS1_GLN')].value`
             - `$.addresses[0].country.value`
             - `$.record['Country']`
          example: $.externalId
    MatchingConfiguration:
      type: object
      description: Configuration for Matching
      properties:
        threshold:
          type: number
          format: double
          description: The threshold for the data matching.
          example: '0.5'
          default: 0
          minimum: 0
          maximum: 1
        thresholdMaybe:
          type: number
          format: double
          description: Threshold for maybe matching.
          example: '0.6'
          default: 0
          minimum: 0
          maximum: 1
        matchingAttributes:
          type: array
          description: List of attributes to use for matching.
          items:
            $ref: '#/components/schemas/MatchingAttribute'
    ScopedMatchingConfigurations:
      type: array
      description: List of configurations for scoped matching
      items:
        $ref: '#/components/schemas/ScopedMatchingConfiguration'
    ScopedMatchingConfiguration:
      type: object
      description: Configuration for scoped matching
      properties:
        scope:
          $ref: '#/components/schemas/MatchingScope'
        matchingConfiguration:
          $ref: '#/components/schemas/MatchingConfiguration'
    MatchingScope:
      type: object
      description: Scope definition
      properties:
        jsonPath:
          type: string
          description: |
            RFC9535-compliant JSON path to the attribute.
            Possible values:
             - `businessPartner.identifiers[?(@.type.technicalKey=='GS1_GLN')].value`
             - `businessPartner.identifiers[0].value`
             - `businessPartner.record['Country']`
          example: businessPartner.addresses[0].country.shortName
        matchingValues:
          type: array
          description: >-
            List of values that trigger this scoped configuration when matched
            against the value extracted from the specified JSON path.
          items:
            $ref: '#/components/schemas/MatchingScopeValue'
          example:
            - DE
            - CH
            - AT
    MatchingScopeValue:
      type: string
      description: >-
        Value that trigger this scoped configuration when matched against the
        value extracted from the specified JSON path
      example: DE
    MatchingAttribute:
      type: object
      description: >
        All JSONPath expressions must follow
        [RFC9535](https://www.rfc-editor.org/rfc/rfc9535) syntax. List of
        attributes can be obtained by dedicated endpoint.
      properties:
        name:
          type: string
          description: Name of the attribute.
          example: Name
        jsonPath:
          type: string
          description: |
            RFC9535-compliant JSON path to the attribute.
            Possible values:
             - `businessPartner.identifiers[?(@.type.technicalKey=='GS1_GLN')].value`
             - `businessPartner.identifiers[0].value`
             - `record['Country']`
          example: businessPartner.identifiers[?(@.type.technicalKey=='GS1_GLN')].value
        cleaners:
          type: array
          description: List of cleaners to apply to the attribute.
          items:
            $ref: '#/components/schemas/MatchingAttributeCleaner'
        high:
          type: number
          format: double
          description: High weight for the attribute.
          example: 0.6
          default: 0
          minimum: 0
          maximum: 1
        low:
          type: number
          format: double
          description: Low weight for the attribute.
          example: 0.5
          default: 0
          minimum: 0
          maximum: 1
        comparator:
          $ref: '#/components/schemas/MatchingAttributeComparator'
    MatchingAttributeCleaner:
      type: object
      description: Configuration for cleaning attributes
      properties:
        name:
          type: string
          description: Name of the attribute.
          example: LowerCaseNormalizeCleaner
        parameters:
          type: array
          description: Configuration for the cleaner.
          example: JACCARD
          items:
            $ref: '#/components/schemas/MatchingAttributeParameter'
    MatchingAttributeComparator:
      type: object
      description: Configuration for comparing attributes
      properties:
        name:
          type: string
          description: Name of the comparator.
          example: QGramComparator
        parameters:
          type: array
          description: Configuration for the comparator.
          example: JACCARD
          items:
            $ref: '#/components/schemas/MatchingAttributeParameter'
    MatchingAttributeParameter:
      type: object
      description: Configuration for comparing attributes
      properties:
        name:
          type: string
          description: Name of the comparator.
          example: formula
        value:
          type: string
          description: Configuration for the comparator.
          example: JACCARD
    WorkspaceConfigurationResponsePage:
      type: object
      description: Page of workspace configurations.
      properties:
        startAfter:
          $ref: '#/components/schemas/StartAfter'
        nextStartAfter:
          $ref: '#/components/schemas/NextStartAfter'
        total:
          $ref: '#/components/schemas/PageTotal'
        values:
          type: array
          description: List of workspace configurations.
          items:
            $ref: '#/components/schemas/WorkspaceConfigurationSearchResult'
    WorkspaceConfigurationSearchResult:
      type: object
      description: Workspace configuration search result.
      properties:
        id:
          $ref: '#/components/schemas/ConfigurationId'
        name:
          $ref: '#/components/schemas/ConfigurationName'
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAt'
        createdBy:
          $ref: '#/components/schemas/CreatedBy'
    WorkspaceConfigurationResponse:
      type: object
      description: Contains the configuration and metadata.
      properties:
        id:
          $ref: '#/components/schemas/ConfigurationId'
        name:
          $ref: '#/components/schemas/ConfigurationName'
        version:
          $ref: '#/components/schemas/ConfigurationVersionNumber'
        configuration:
          $ref: '#/components/schemas/IdentityResolutionConfiguration'
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAt'
        createdBy:
          $ref: '#/components/schemas/CreatedBy'
        transactionId:
          $ref: '#/components/schemas/TransactionId'
    WorkspaceConfigurationVersionResponse:
      type: object
      description: Specific version of an identity resolution configuration.
      properties:
        id:
          type: string
          description: >-
            Unique identifier of the identity resolution configuration version.
            Not to be confused with the configuration ID.
          example: c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4
        name:
          type: string
          description: The name of the configuration
          example: Configuration Name
        configurationId:
          $ref: '#/components/schemas/ConfigurationId'
        version:
          $ref: '#/components/schemas/ConfigurationVersionNumber'
        configuration:
          $ref: '#/components/schemas/IdentityResolutionConfiguration'
        createdAt:
          type: string
          description: >-
            Date and time when the first version of the configuration was
            created (ISO 8601-compliant).
          example: '2025-08-29T09:46:53Z'
        modifiedAt:
          type: string
          description: >-
            Date and time when this version of the configuration was created
            (ISO 8601-compliant).
          example: '2025-08-29T09:46:53Z'
        createdBy:
          type: string
          description: User who created the first version of the configuration.
          example: '69129435489347624'
        modifiedBy:
          type: string
          description: User who created this version of the configuration.
          example: '76248934691294444'
    ConfigurationVersionNumber:
      type: integer
      description: Version number of the configuration.
      example: 1
    Cleaner:
      type: object
      description: Cleaner used for cleaning the data.
      properties:
        name:
          $ref: '#/components/schemas/CleanerName'
        technicalKey:
          $ref: '#/components/schemas/CleanerTechnicalKey'
        parameters:
          type: array
          description: Configuration for the cleaner.
          items:
            $ref: '#/components/schemas/CleanerParameter'
    CleanerName:
      type: string
      description: Name of the cleaner.
      example: Lower-case Normalization
    CleanerTechnicalKey:
      type: string
      description: Technical key of the cleaner.
      example: LowerCaseNormalizer
    CleanerParameter:
      type: object
      description: Parameter for the cleaner.
      properties:
        name:
          type: string
          description: Name of the cleaner.
          example: RegexpCleaner
        description:
          type: string
          description: Description of the cleaner.
          example: A regular expression to use on the attribute.
    Comparator:
      type: object
      description: Comparator used for comparing the data.
      properties:
        name:
          $ref: '#/components/schemas/ComparatorName'
        technicalKey:
          $ref: '#/components/schemas/ComparatorTechnicalKey'
        parameters:
          type: array
          description: Configuration for the cleaner.
          items:
            $ref: '#/components/schemas/ComparatorParameter'
    ComparatorName:
      type: string
      description: Name of the comparator
      example: QGram Comparator
    ComparatorTechnicalKey:
      type: string
      description: Technical key of the comparator.
      example: QGramComparator
    ComparatorParameter:
      type: object
      description: Parameter for the comparator.
      properties:
        name:
          type: string
          description: Name of the comparator.
          example: formula
        description:
          type: string
          description: Description of the comparator.
          example: A formula to use to compute the actual similarity
    RelatedConfigurationId:
      type: string
      description: Id of the related configuration
      example: a0200062daa56952a8640005
    RelatedConfigurationOwner:
      type: object
      description: Configuration which relates to the root configuration.
      properties:
        service:
          $ref: '#/components/schemas/RelatedConfigurationOwnerService'
        path:
          $ref: '#/components/schemas/RelatedConfigurationOwnerPath'
    RelatedConfigurationOwnerService:
      type: string
      description: Name of the service which is the owner of the configuration.
      example: reference-data-api
    RelatedConfigurationOwnerPath:
      type: string
      description: Endpoint used to read the related configuration.
      example: /public/configurations/businesspartnerlookup
    TransactionId:
      type: string
      description: >-
        Id of the transaction, pass it in subsequent requests to make them part
        of the transaction
      example: 8e37da1e-ee9d-4ee0-b03d-24a1f89988f2
    TransactionFeaturesOn:
      description: >-
        Features to be enabled. Do not use CREATE_TRANSACTION and
        COMMIT_TRANSACTION at the same time.
      type: array
      items:
        $ref: '#/components/schemas/TransactionFeatureParam'
    TransactionFeatureParam:
      type: string
      description: Feature used to control transaction process.
      example: CREATE_TRANSACTION
      enum:
        - CREATE_TRANSACTION
        - COMMIT_TRANSACTION
      x-enumDescriptions:
        CREATE_TRANSACTION: >-
          Creates a new transaction and makes the current request a part of it.
          By default turned off.
        COMMIT_TRANSACTION: Commit transaction. By default turned off.
    AttributePathsResult:
      type: object
      description: Result of the attribute paths request.
      properties:
        paths:
          type: array
          description: List of attribute paths.
          items:
            type: string
            description: Attribute path.
            example: businessPartner.addresses[].country.shortName
        status:
          $ref: '#/components/schemas/Status'
    CleanersResult:
      type: object
      description: Result of the cleaners request.
      properties:
        cleaners:
          type: array
          description: List of cleaners.
          items:
            $ref: '#/components/schemas/Cleaner'
        status:
          $ref: '#/components/schemas/Status'
    ComparatorsResult:
      type: object
      description: Result of the comparators request.
      properties:
        comparators:
          type: array
          description: List of comparators.
          items:
            $ref: '#/components/schemas/Comparator'
        status:
          $ref: '#/components/schemas/Status'
    SearchAttributeResult:
      type: object
      description: Result of the search attribute request.
      properties:
        searchAttributes:
          type: array
          description: List of search attributes.
          items:
            description: Search attribute
            type: string
            example: $.names[].type.technicalKey
        status:
          $ref: '#/components/schemas/Status'
    BusinessPartnerId:
      type: string
      description: >-
        A CDQ ID identifies a business partner uniquely in the context of the
        Corporate Data League.
      example: 63e635235c06b7396330fe40
    NameShortName:
      type: string
      description: The abbreviated variant of a company's full name.
      example: CDQ AG
    NameTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Name
        Type](https://meta.cdq.com/Business_partner/name/type).
      example: https://meta.cdq.com/Business_partner/name/type
    NameTypeName:
      type: string
      description: Display label for the Name Type.
      example: Local Name
    NameTypeTechnicalKey:
      type: string
      description: Technical Keys of the Name Type.
      example: LOCAL
    schemas-NameType:
      type: object
      description: >-
        The type of the name, e.g. a locally used name or an international
        version.
      properties:
        url:
          $ref: '#/components/schemas/NameTypeUrl'
        name:
          $ref: '#/components/schemas/NameTypeName'
        technicalKey:
          $ref: '#/components/schemas/NameTypeTechnicalKey'
    NameValue:
      type: string
      description: The actual name.
      example: Corporate Data Quality AG
    LanguageName:
      type: string
      description: ISO 639-1 name of language.
      example: German
    LanguageTechnicalKey:
      type: string
      description: ISO 639-1 two-letter code of languages.
      example: DE
    Language:
      type: object
      description: Naming of a language according to ISO 639-1.
      properties:
        name:
          $ref: '#/components/schemas/LanguageName'
        technicalKey:
          $ref: '#/components/schemas/LanguageTechnicalKey'
    schemas-Name:
      type: object
      description: The name of a business partner.
      properties:
        shortName:
          $ref: '#/components/schemas/NameShortName'
        type:
          $ref: '#/components/schemas/schemas-NameType'
        value:
          $ref: '#/components/schemas/NameValue'
        language:
          $ref: '#/components/schemas/Language'
    NormalizedName:
      type: string
      description: >-
        Normalized business partner name (without accents or special characters,
        all lower case).
      example: skoda auto as
    NameWithoutLegalForm:
      type: string
      description: Business partner name without legal form (if identified).
      example: skoda auto
    NameTermValue:
      type: string
      description: Value of the name term.
      example: Legal Form
    NameTermType:
      type: string
      description: Type of the term.
      example: LEGAL_FORM
    NameTerm:
      type: object
      description: Term which is used to calculate matching scores.
      properties:
        value:
          $ref: '#/components/schemas/NameTermValue'
        type:
          $ref: '#/components/schemas/NameTermType'
    NameValueClassification:
      type: object
      description: The classified terms. e.g. For CDQ AG -> cdq -> ag->LEGAL_FORM.
      properties:
        normalizedName:
          $ref: '#/components/schemas/NormalizedName'
        nameWithoutLegalForm:
          $ref: '#/components/schemas/NameWithoutLegalForm'
        terms:
          type: array
          items:
            $ref: '#/components/schemas/NameTerm'
    LegalFormName:
      type: string
      description: Display of the Legal Form.
      example: Aktiengesellschaft
    LegalFormMainAbbreviation:
      type: string
      description: >-
        The primary abbreviation of a legal form, i.e. the most commonly used
        abbreviation in a country.
      example: AG
    LegalFormCdlElfCode:
      deprecated: true
      type: string
      description: An unique identifier for CDL managed Legal Forms.
      example: AG
    LegalFormCategoryName:
      type: string
      maxLength: 40
      description: Descriptive display name of the Legal Form Category.
      example: Limited Liability Company
    LegalFormCategoryShortName:
      type: string
      maxLength: 15
      description: Short display name of the Legal Form Category.
      example: LLC
    LegalFormCategoryUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Legal Form
        Category](https://meta.cdq.com/Business_partner/legal_form/category).
      example: >-
        https://meta.cdq.com/Business_partner/legal_form/category/technical_key/LF001
    LegalFormCategoryTechnicalKey:
      type: string
      description: >-
        Technical Key of the [Legal Form
        Category](https://meta.cdq.com/Business_partner/legal_form/category).
      example: LIMITED
    LegalFormCategory:
      type: object
      description: The categorization of a Legal Form.
      properties:
        name:
          $ref: '#/components/schemas/LegalFormCategoryName'
        shortName:
          $ref: '#/components/schemas/LegalFormCategoryShortName'
        url:
          $ref: '#/components/schemas/LegalFormCategoryUrl'
        technicalKey:
          $ref: '#/components/schemas/LegalFormCategoryTechnicalKey'
    LegalFormUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of [Legal
        Form](https://meta.cdq.com/Business_partner/legal_form).
      example: https://meta.cdq.com/Business_partner/legal_form
    LegalFormTechnicalKey:
      type: string
      description: >-
        Technical Key of a Legal Form. Descriptions of below enums contain
        `Country Scope`, `International Name` and `Main Abraviation`.
      example: DE_9866
    schemas-LegalForm:
      type: object
      description: >-
        The legal form of a [business partner/type/legal
        entity](https://meta.cdq.com/Business_partner/type/legal_entity) is the
        form it takes in the eyes of the law governing it. The legal form of a
        [company](https://meta.cdq.com/Business_partner) is the general type it
        may legally use to identify itself according to the local, regional,
        national, or international law governing it. This is normally reflected
        in the ending abbreviation after the
        [company](https://meta.cdq.com/Business_partner)'s name (e.g. AG, Inc.,
        LLC, S.A.).
      properties:
        name:
          $ref: '#/components/schemas/LegalFormName'
        language:
          $ref: '#/components/schemas/Language'
        mainAbbreviation:
          $ref: '#/components/schemas/LegalFormMainAbbreviation'
        cdlElfCode:
          $ref: '#/components/schemas/LegalFormCdlElfCode'
        categories:
          type: array
          items:
            $ref: '#/components/schemas/LegalFormCategory'
        url:
          $ref: '#/components/schemas/LegalFormUrl'
        technicalKey:
          $ref: '#/components/schemas/LegalFormTechnicalKey'
    IdentifierValue:
      type: string
      description: Value of the identifier.
      example: CHE-218.608.886 HR/MWST
    IdentifierTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of an
        [Identifier](https://meta.cdq.com/Business_partner/identifier/type).
      example: https://meta.cdq.com/Business_partner/identifier/type
    IdentifierTypeName:
      type: string
      description: Display label for the Identifier.
      example: CH_VAT_ID
    IdentifierTypeTechnicalKey:
      type: string
      description: Technical key of the type of the Identifier.
      example: CH_VAT_ID
    schemas-IdentifierType:
      type: object
      description: Type of the identifier.
      properties:
        url:
          $ref: '#/components/schemas/IdentifierTypeUrl'
        name:
          $ref: '#/components/schemas/IdentifierTypeName'
        technicalKey:
          $ref: '#/components/schemas/IdentifierTypeTechnicalKey'
    IdentifierStatusName:
      type: string
      description: Display label for the Identifier Status Name.
      example: ACTIVE
    IdentifierStatusTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Identifier
        Status](https://meta.cdq.com/Business_partner/identifier/status).
      example: https://meta.cdq.com/Business_partner/identifier/status
    IdentifierStatusTechnicalKey:
      type: string
      description: Technical key of the Identifier Status.
      example: ACTIVE
    IdentifierStatus:
      type: object
      description: >-
        Identifier Status refers to the current state of a unique identification
        number.
      properties:
        name:
          $ref: '#/components/schemas/IdentifierStatusName'
        url:
          $ref: '#/components/schemas/IdentifierStatusTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/IdentifierStatusTechnicalKey'
    IssuingBodyName:
      type: string
      description: Preferred display label for an Issuing Body.
      example: Amtsgericht Aachen
    IssuingBodyShortName:
      type: string
      description: Preferred short display label for an Issuing Body.
      maxLength: 50
      example: Amtsgericht Aachen
    IssuingBodyDescription:
      type: string
      description: Description for an Issuing Body.
      example: Amtsgericht Aachen
    IssuingBodyUrl:
      description: >-
        URL to the documentation which summarizes all details of a [Issuing
        Body](https://meta.cdq.com/Business_partner/identifier/issuing_body).
      example: https://meta.cdq.com/Business_partner/identifier/issuing_body
      type: string
    IssuingBodyTechnicalKey:
      description: Technical key of the Issuing Body.
      example: Amtsgericht Aachen
      type: string
    CountryShortName:
      type: string
      description: Country code (ISO 3166-1 alpha-2).
      example: CH
    CountryValue:
      type: string
      description: Country name (ISO 3166-1 alpha-2).
      example: Switzerland
    schemas-Country:
      type: object
      description: >-
        Country consisting of the country name and country code (ISO 3166-1
        alpha-2).
      properties:
        shortName:
          $ref: '#/components/schemas/CountryShortName'
        value:
          $ref: '#/components/schemas/CountryValue'
    AdministrativeAreaValue:
      type: string
      description: >-
        Name of the [Administrative
        Area](https://meta.cdq.com/Address/administrative_area).
      example: Sankt Gallen
    AdministrativeAreaShortName:
      type: string
      description: >-
        Abbreviation for the [Administrative
        Area](https://meta.cdq.com/Address/administrative_area).
      example: SG
    AdministrativeAreaFipsCode:
      type: string
      description: >-
        FIPS codes are numbers which uniquely identify geographic areas. The
        number of digits in FIPS codes vary depending on the level of geography.
        State-level FIPS codes have two digits, county-level FIPS codes have
        five digits of which the first two are the FIPS code of the state to
        which the county belongs.
      example: SZ15
    AdministrativeAreaIsoCode:
      type: string
      description: >-
        ISO 3166-2 code which uniquely defines the names of countries and their
        subdivisions (e.g., provinces or states).
      example: CH-SG
    AdministrativeAreaTypeName:
      type: string
      description: Display label for the Administrative Area Type.
      example: COUNTY
    AdministrativeAreaTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the
        [Administrative
        Area](https://meta.cdq.com/Address/administrative_area/type).
      example: https://meta.cdq.com/Address/administrative_area/type
    AdministrativeAreaTypeTechnicalKey:
      type: string
      description: Technical key of the Administrative Area.
      example: COUNTY
    schemas-AdministrativeAreaType:
      type: object
      description: >-
        Type of the [Administrative
        Area](https://meta.cdq.com/Address/administrative_area).
      properties:
        name:
          $ref: '#/components/schemas/AdministrativeAreaTypeName'
        url:
          $ref: '#/components/schemas/AdministrativeAreaTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/AdministrativeAreaTypeTechnicalKey'
    schemas-AdministrativeArea:
      type: object
      description: A top-level geographical or political area division in a country.
      properties:
        value:
          $ref: '#/components/schemas/AdministrativeAreaValue'
        shortName:
          $ref: '#/components/schemas/AdministrativeAreaShortName'
        fipsCode:
          $ref: '#/components/schemas/AdministrativeAreaFipsCode'
        isoCode:
          $ref: '#/components/schemas/AdministrativeAreaIsoCode'
        type:
          $ref: '#/components/schemas/schemas-AdministrativeAreaType'
        language:
          $ref: '#/components/schemas/Language'
    Jurisdiction:
      type: object
      description: >-
        The authority of an official organization to make decisions and
        judgments in a particular administrative area.
      required:
        - country
      properties:
        country:
          $ref: '#/components/schemas/schemas-Country'
        administrativeAreas:
          type: array
          items:
            $ref: '#/components/schemas/schemas-AdministrativeArea'
    IssuingBodyGleifCode:
      type: string
      description: Code of Global Legal Entity Identifier Foundation (GLEIF)
      example: RA000004
    IssuingBodyLocalAuthorityCode:
      type: string
      description: Code of the local registration authority
      example: R3101
    IssuingBodyExternalUrl:
      type: string
      description: External url of the issuing body
      example: https://www.amtsgericht.de/muenchen
    IssuingBody:
      type: object
      description: >-
        An Issuing Body is an organization or government institution that is
        responsible for assigning unique identifiers to individuals,
        organizations, or objects.
      properties:
        name:
          $ref: '#/components/schemas/IssuingBodyName'
        shortName:
          $ref: '#/components/schemas/IssuingBodyShortName'
        names:
          type: array
          items:
            $ref: '#/components/schemas/schemas-Name'
        description:
          $ref: '#/components/schemas/IssuingBodyDescription'
        url:
          $ref: '#/components/schemas/IssuingBodyUrl'
        technicalKey:
          $ref: '#/components/schemas/IssuingBodyTechnicalKey'
        jurisdiction:
          $ref: '#/components/schemas/Jurisdiction'
        gleifCode:
          $ref: '#/components/schemas/IssuingBodyGleifCode'
        localAuthorityCode:
          $ref: '#/components/schemas/IssuingBodyLocalAuthorityCode'
        externalUrl:
          $ref: '#/components/schemas/IssuingBodyExternalUrl'
    schemas-Identifier:
      type: object
      description: >-
        Identifies a [Business Partner](https://meta.cdq.com/Business_partner)
        in a given context uniquely such as a VAT identification number.
      properties:
        value:
          $ref: '#/components/schemas/IdentifierValue'
        type:
          $ref: '#/components/schemas/schemas-IdentifierType'
        status:
          $ref: '#/components/schemas/IdentifierStatus'
        issuingBody:
          $ref: '#/components/schemas/IssuingBody'
    BusinessPartnerCategoryName:
      type: string
      description: Display name of the Business Partner Category Name.
      example: Hotel
    BusinessPartnerCategoryUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Business
        Partner Category](https://meta.cdq.com/Business_partner/category).
      example: https://meta.cdq.com/Business_partner/category
    BusinessPartnerCategoryTechnicalKey:
      type: string
      description: Technical Key of the Business Partner Category.
      example: HOTEL
    BusinessPartnerCategory:
      type: object
      description: >-
        A business partner category of a business partner groups similar
        business partners.
      properties:
        name:
          $ref: '#/components/schemas/BusinessPartnerCategoryName'
        url:
          $ref: '#/components/schemas/BusinessPartnerCategoryUrl'
        technicalKey:
          $ref: '#/components/schemas/BusinessPartnerCategoryTechnicalKey'
    BusinessPartnerStatusOfficialDenotation:
      type: string
      description: The status as provided by an official register.
      example: Good Standing
    BusinessPartnerStatusValidFrom:
      type: string
      description: >-
        Describes since when a business partner turned or will turn into the
        provided status. If no official date is known, the date of changing the
        status in the CDQ Community Data Pool or an external data source is
        provided.
      example: '2025-08-29T09:46:53Z'
    BusinessPartnerStatusValidUntil:
      type: string
      description: >-
        Describes until when a business partner had a certain status. If no
        official date is known, the date of changing the status in the CDQ
        Community Data Pool or an external data source is provided.
      example: '2025-08-29T09:46:53Z'
    BusinessPartnerStatusTypeName:
      type: string
      description: Display name of the Business Partner Status.
      example: In Liquidation
    BusinessPartnerStatusTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Business
        Partner Status](https://meta.cdq.com/Business_partner/status/type).
      example: https://meta.cdq.com/Business_partner/status/type
    BusinessPartnerStatusTypeTechnicalKey:
      type: string
      description: Technical Key of the Business Parter Status.
      example: IN_LIQUIDATION
    BusinessPartnerStatusType:
      type: object
      description: The standardized status which the business partner currently has.
      properties:
        name:
          $ref: '#/components/schemas/BusinessPartnerStatusTypeName'
        url:
          $ref: '#/components/schemas/BusinessPartnerStatusTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/BusinessPartnerStatusTypeTechnicalKey'
    BusinessPartnerStatus:
      type: object
      description: >-
        Describes the status of a business partner with respect to its level of
        activity (e.g. out of business) or legally relevant conditions (e.g. in
        liquidation).
      properties:
        officialDenotation:
          $ref: '#/components/schemas/BusinessPartnerStatusOfficialDenotation'
        validFrom:
          $ref: '#/components/schemas/BusinessPartnerStatusValidFrom'
        validUntil:
          $ref: '#/components/schemas/BusinessPartnerStatusValidUntil'
        type:
          $ref: '#/components/schemas/BusinessPartnerStatusType'
    CharacterSetName:
      type: string
      description: >-
        Name of character set. Supported character sets can be found
        [here](https://meta.cdq.com/Address/version/character_set).
      example: International
    CharacterSetTechnicalKey:
      type: string
      description: >-
        Technical key of character set. Supported character sets can be found
        [here](https://meta.cdq.com/Address/version/character_set).
      example: INTERNATIONAL
    CharacterSet:
      type: object
      description: Character set.
      properties:
        name:
          $ref: '#/components/schemas/CharacterSetName'
        technicalKey:
          $ref: '#/components/schemas/CharacterSetTechnicalKey'
    AddressVersion:
      type: object
      description: >-
        CDQ supports multiple versions of addresses comprising different
        charsets and languages. An address version is a unique combination of a
        character set and a language.
      properties:
        characterSet:
          $ref: '#/components/schemas/CharacterSet'
        language:
          $ref: '#/components/schemas/Language'
    AddressIdentifyingNameValue:
      type: string
      description: >-
        An identifying name assigned to an address. In most cases the
        identifying name refers to the name of a registered agent.
      example: John Doe
    AddressIdentifyingName:
      type: object
      description: >-
        An identifying name assigned to an address. In most cases the
        identifying name refers to the name of a registered agent.
      properties:
        value:
          $ref: '#/components/schemas/AddressIdentifyingNameValue'
    AddressExternalId:
      type: string
      description: >-
        ID the address has in the external system where the record originates
        from.
      example: '1'
    ProvenanceName:
      type: string
      description: Display Name of the Provenance Name.
      example: VIES
    ProvenanceUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the Provenance
        Name.
      example: >-
        https://meta.cdq.com/index.php?title=Property:Has_prefix&limit=500&offset=0&from=&until=&filter=
    ProvenanceTechnicalKey:
      type: string
      description: Technical Key of the Provenance Name.
      example: VIES
    ProvenanceCdqId:
      type: string
      description: The ID provided for a linkage with the source by CDQ.
      example: VIES:PL8660001429
    Provenance:
      type: object
      description: >-
        The source of the change or update. Could be the reference data source
        as VIES or Organization.
      properties:
        name:
          $ref: '#/components/schemas/ProvenanceName'
        url:
          $ref: '#/components/schemas/ProvenanceUrl'
        technicalKey:
          $ref: '#/components/schemas/ProvenanceTechnicalKey'
        cdqId:
          $ref: '#/components/schemas/ProvenanceCdqId'
    AddressMetadata:
      type: object
      description: Specifies the language and primary data provenance.
      properties:
        primaryProvenance:
          $ref: '#/components/schemas/Provenance'
        language:
          $ref: '#/components/schemas/Language'
    CareOfValue:
      type: string
      description: Value of the CareOf.
      example: CDQ GmbH c/o Product Department
    CareOf:
      type: object
      description: >-
        Signifies an intermediary who is responsible for transferring a piece of
        mail between the postal system and the final addressee. For example,
        when the addressee has no standard address, is under a corporate mail
        system, or is being manually forwarded mail sent to a more accessible
        location.
      properties:
        value:
          $ref: '#/components/schemas/CareOfValue'
    AddressContextValue:
      type: string
      description: Value of the Address Context.
      example: Production hall 7, Storage field 8.
    AddressContext:
      type: object
      description: >-
        The address context provides us with some additional information about
        the usage or specific recipient information of the addresses. It may
        hold multiple information organized as "tags".
      properties:
        value:
          $ref: '#/components/schemas/AddressContextValue'
    PostCodeValue:
      type: string
      description: Effective [post code](https://meta.cdq.com/Address/post_code).
      example: '9000'
    PostCodeTypeName:
      type: string
      description: Display label for the Post Code Type.
      example: Regular
    PostCodeTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the
        [Administrative Area](https://meta.cdq.com/Address/post_code/type).
      example: https://meta.cdq.com/Address/post_code/type
    PostCodeTypeTechnicalKey:
      type: string
      description: Technical key of the Post Code.
      example: REGULAR
    schemas-PostCodeType:
      type: object
      description: Type of the Post Code.
      properties:
        name:
          $ref: '#/components/schemas/PostCodeTypeName'
        url:
          $ref: '#/components/schemas/PostCodeTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/PostCodeTypeTechnicalKey'
    schemas-PostCode:
      type: object
      description: >-
        A country specific code for a certain
        [address](https://meta.cdq.com/Address) component or an combination of
        [address](https://meta.cdq.com/Address) components, e.g.
        [locality](https://meta.cdq.com/Address/locality).
      example: '9000'
      properties:
        value:
          $ref: '#/components/schemas/PostCodeValue'
        type:
          $ref: '#/components/schemas/schemas-PostCodeType'
    LocalityTypeName:
      type: string
      description: Display label for the Locality Type.
      example: City
    LocalityTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Locality
        Type](https://meta.cdq.com/Address/locality/type).
      example: https://meta.cdq.com/Address/locality/type
    LocalityTypeTechnicalKey:
      type: string
      description: Technical Key of the Locality Type.
      example: CITY
    schemas-LocalityType:
      type: object
      description: Type of the [Locality](https://meta.cdq.com/Address/locality).
      properties:
        name:
          $ref: '#/components/schemas/LocalityTypeName'
        url:
          $ref: '#/components/schemas/LocalityTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/LocalityTypeTechnicalKey'
    LocalityShortName:
      type: string
      description: Abbreviation of the [Locality](https://meta.cdq.com/Address/locality).
      example: St. Gallen
    LocalityValue:
      type: string
      description: Name of the [Locality](https://meta.cdq.com/Address/locality).
      example: Sankt Gallen
    schemas-Locality:
      type: object
      description: >-
        A locality is a named densely populated area (a place) such as town,
        village, suburb, etc. A locality composes of many individual addresses.
        Many localities exist in an [administrative
        area](https://meta.cdq.com/Address/administrative_area). A locality can
        also have several levels of sub localities.
      properties:
        type:
          $ref: '#/components/schemas/schemas-LocalityType'
        shortName:
          $ref: '#/components/schemas/LocalityShortName'
        value:
          $ref: '#/components/schemas/LocalityValue'
        language:
          $ref: '#/components/schemas/Language'
    ThoroughfareTypeName:
      type: string
      description: Display label for the Thoroughfare Type Name.
      example: Industrial zone
    ThoroughfareTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the
        [Thoroughfare Type](https://meta.cdq.com/Address/thoroughfare/type).
      example: https://meta.cdq.com/Address/thoroughfare/type
    ThoroughfareTypeTechnicalKey:
      type: string
      description: Technical key of the Thoroughfare Type.
      example: INDUSTRIAL_ZONE
    schemas-ThoroughfareType:
      type: object
      description: Type of the [Thoroughfare](https://meta.cdq.com/Address/thoroughfare).
      properties:
        name:
          $ref: '#/components/schemas/ThoroughfareTypeName'
        url:
          $ref: '#/components/schemas/ThoroughfareTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/ThoroughfareTypeTechnicalKey'
    ThoroughfareShortName:
      type: string
      description: >-
        Abbreviation of the
        [Thoroughfare](https://meta.cdq.com/Address/thoroughfare).
      example: Lukasstr. 4
    ThoroughfareNumber:
      type: string
      description: Number of the [Thoroughfare](https://meta.cdq.com/Address/thoroughfare).
      example: '4'
    ThoroughfareValue:
      type: string
      description: >-
        Comprehensive designation of the
        [Thoroughfare](https://meta.cdq.com/Address/thoroughfare) including the
        thoroughfare type such as Street, or Rue.
      example: Lukasstraße 4
    ThoroughfareName:
      type: string
      description: >-
        Pure name of the
        [Thoroughfare](https://meta.cdq.com/Address/thoroughfare) not comprising
        the thoroughfare type such as Street, or Rue.
      example: Lukasstraße
    ThoroughfareDirection:
      type: string
      description: >-
        Direction of the
        [Thoroughfare](https://meta.cdq.com/Address/thoroughfare).
      example: 221-bis Baker Street, North
    schemas-Thoroughfare:
      type: object
      description: >-
        Details of the access route along which buildings, lots, or land are
        located, such as street, road, channel, crescent, avenue, etc. This also
        includes canals or banks on which houses or boat houses are located
        where people live.
      properties:
        type:
          $ref: '#/components/schemas/schemas-ThoroughfareType'
        shortName:
          $ref: '#/components/schemas/ThoroughfareShortName'
        number:
          $ref: '#/components/schemas/ThoroughfareNumber'
        value:
          $ref: '#/components/schemas/ThoroughfareValue'
        name:
          $ref: '#/components/schemas/ThoroughfareName'
        direction:
          $ref: '#/components/schemas/ThoroughfareDirection'
        language:
          $ref: '#/components/schemas/Language'
    PremiseValue:
      type: string
      description: The actual value of a Premise in the language of the address.
      example: Lukasstraße 4
    PremiseShortName:
      type: string
      description: Abbreviation of the Premise.
      example: Lukasstr. 4
    PremiseNumber:
      type: string
      description: Number of the Premise.
      example: '4'
    PremiseTypeName:
      type: string
      description: Display label for the Premise Type.
      example: Factory
    PremiseTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Premise
        Type](https://meta.cdq.com/Address/premise/type).
      example: https://meta.cdq.com/Address/premise/type
    PremiseTypeTechnicalKey:
      type: string
      description: Technical key of the Premise Type.
      example: FACTORY
    schemas-PremiseType:
      type: object
      description: Type of the Premise.
      properties:
        name:
          $ref: '#/components/schemas/PremiseTypeName'
        url:
          $ref: '#/components/schemas/PremiseTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/PremiseTypeTechnicalKey'
    schemas-Premise:
      type: object
      description: >-
        A premise is a tract of land including its buildings. A premise may have
        several sub-levels to precisely identify.
      properties:
        value:
          $ref: '#/components/schemas/PremiseValue'
        shortName:
          $ref: '#/components/schemas/PremiseShortName'
        number:
          $ref: '#/components/schemas/PremiseNumber'
        type:
          $ref: '#/components/schemas/schemas-PremiseType'
        language:
          $ref: '#/components/schemas/Language'
    PostalDeliveryPointTypeName:
      type: string
      description: Display label for the Postal Delivery Point Type.
      example: Mailbox
    PostalDeliveryPointTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Postal
        Delivery Point](https://meta.cdq.com/Address/postal_delivery_point/type)
      example: https://meta.cdq.com/Address/postal_delivery_point/type
    PostalDeliveryPointTypeTechnicalKey:
      type: string
      description: Technical key of the Postal Delivery Point.
      example: MAILBOX
    schemas-PostalDeliveryPointType:
      type: object
      description: A single mailbox or other place at which postal mail is delivered.
      properties:
        name:
          $ref: '#/components/schemas/PostalDeliveryPointTypeName'
        url:
          $ref: '#/components/schemas/PostalDeliveryPointTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/PostalDeliveryPointTypeTechnicalKey'
    PostalDeliveryPointShortName:
      type: string
      description: >-
        Stort name of the [Postal Delivery
        Point](https://meta.cdq.com/Address/postal_delivery_point).
      example: St Gallen, Postfach 460
    PostalDeliveryPointNumber:
      type: string
      description: >-
        Number of the [Postal Delivery
        Point](https://meta.cdq.com/Address/postal_delivery_point).
      example: '460'
    PostalDeliveryPointValue:
      type: string
      description: >-
        Value of the [Postal Delivery
        Point](https://meta.cdq.com/Address/postal_delivery_point).
      example: Postfach
    schemas-PostalDeliveryPoint:
      type: object
      description: A single mailbox or other place at which postal mail is delivered.
      properties:
        type:
          $ref: '#/components/schemas/schemas-PostalDeliveryPointType'
        shortName:
          $ref: '#/components/schemas/PostalDeliveryPointShortName'
        number:
          $ref: '#/components/schemas/PostalDeliveryPointNumber'
        value:
          $ref: '#/components/schemas/PostalDeliveryPointValue'
        language:
          $ref: '#/components/schemas/Language'
    OpeningHour:
      type: object
      description: Time range in which the company is open.
      properties:
        openingHour:
          type: string
          description: Company openning hour.
          example: 09:00 AM
        closingHour:
          type: string
          description: Company closing hour.
          example: 05:00 PM
        weekday:
          type: string
          description: A day in the week in which the company is open.
          example: Monday
    GeographicCoordinatesLatitude:
      description: Plain on the earth's surface north or south of the equator.
      example: '47.439549'
      type: number
      format: double
    GeographicCoordinatesLongitude:
      description: Plain on the earth's surface east or west of a meridian.
      example: '9.395275'
      type: number
      format: double
    GeographicCoordinates:
      type: object
      description: Decimal geographic coordinates (WGS 84 - reference coordinate system).
      properties:
        latitude:
          $ref: '#/components/schemas/GeographicCoordinatesLatitude'
        longitude:
          $ref: '#/components/schemas/GeographicCoordinatesLongitude'
    AddressTypeName:
      type: string
      description: Display label for the Address Type.
      example: Legal Address
    AddressTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Address
        Type](https://meta.cdq.com/Address/type).
      example: https://meta.cdq.com/Address/type
    AddressTypeTechnicalKey:
      type: string
      description: Technical key of the Address Type.
      example: LEGAL_ADDRESS
    AddressType:
      type: object
      description: >-
        An address type characterizes an address. The type of an address is a
        structural statement and provides a truth that is applicable to any user
        (e.g. a legal address is a fact, or that an address is a PO BOX
        address), other than address functions that may differ from user to
        user. Address functions determine the particular business context in
        which an address is in use.
      properties:
        name:
          $ref: '#/components/schemas/AddressTypeName'
        url:
          $ref: '#/components/schemas/AddressTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/AddressTypeTechnicalKey'
    FormattedAddressCountry:
      type: string
      description: Country name.
      example: Switzerland
    FormattedAddressAdministrativeArea:
      type: string
      description: A top-level geographical or political area division in a country.
      example: Sankt Gallen
    FormattedAddressRegion:
      type: string
      description: Top level subdivision of a country.
      example: Sankt Gallen
    FormattedAddressRegionCode:
      type: string
      description: A country specific code for a certain address in the region.
      example: '9004'
    FormattedAddressLocality:
      type: string
      description: >-
        A locality is a named densely populated area (a place) such as town,
        village, suburb, etc. A locality composes of many individual addresses.
      example: Sankt Gallen
    FormattedAddressDistrict:
      type: string
      description: >-
        Type of administrative division that, in some countries, is managed by
        local government. Across the world, areas known as "districts" vary
        greatly in size, spanning regions or counties, several municipalities,
        subdivisions of municipalities, school district, or political district.
      example: City center
    FormattedAddressPostalCode:
      type: string
      description: A country specific code for a certain address.
      example: '9000'
    FormattedAddressThoroughfare:
      type: string
      description: >-
        Details of the access route along which buildings, lots, or land are
        located, such as street, road, channel, crescent, avenue.
      example: Lukassstrasse
    FormattedAddressPremise:
      type: string
      description: >-
        A premise is a tract of land including its buildings. A premise may have
        several sub-levels to precisely identify.
      example: Lukasstraße 4, Building 2, Floor 3, Room 4
    FormattedAddressInterurbanDeliveryPoint:
      type: string
      description: A single mailbox or other place at which postal mail is delivered.
      example: Sankt Gallen, Postfach 460
    FormattedAddressMailbox:
      type: string
      description: A location at an address where the post is delivered to.
      example: Postfach 460
    FormattedAddressPostOfficeBox:
      type: string
      description: >-
        A uniquely addressable lockable box located on the premises of a post
        office station.
      example: Postfach 460
    FormattedAddress:
      type: object
      description: A formatted address is a structured address of VIES data source.
      properties:
        country:
          $ref: '#/components/schemas/FormattedAddressCountry'
        administrativeArea:
          $ref: '#/components/schemas/FormattedAddressAdministrativeArea'
        region:
          $ref: '#/components/schemas/FormattedAddressRegion'
        regionCode:
          $ref: '#/components/schemas/FormattedAddressRegionCode'
        locality:
          $ref: '#/components/schemas/FormattedAddressLocality'
        district:
          $ref: '#/components/schemas/FormattedAddressDistrict'
        postalCode:
          $ref: '#/components/schemas/FormattedAddressPostalCode'
        thoroughfare:
          $ref: '#/components/schemas/FormattedAddressThoroughfare'
        premise:
          $ref: '#/components/schemas/FormattedAddressPremise'
        interurbanDeliveryPoint:
          $ref: '#/components/schemas/FormattedAddressInterurbanDeliveryPoint'
        mailbox:
          $ref: '#/components/schemas/FormattedAddressMailbox'
        postOfficeBox:
          $ref: '#/components/schemas/FormattedAddressPostOfficeBox'
    schemas-Address:
      type: object
      description: >-
        An address provides information about the physical location of a
        business partner. It can be specialized in a certain context(e.g.
        delivery address or invoice address).
      properties:
        version:
          $ref: '#/components/schemas/AddressVersion'
        identifyingName:
          $ref: '#/components/schemas/AddressIdentifyingName'
        externalId:
          $ref: '#/components/schemas/AddressExternalId'
        metadata:
          $ref: '#/components/schemas/AddressMetadata'
        careOf:
          $ref: '#/components/schemas/CareOf'
        contexts:
          type: array
          items:
            $ref: '#/components/schemas/AddressContext'
        country:
          $ref: '#/components/schemas/schemas-Country'
        administrativeAreas:
          type: array
          items:
            $ref: '#/components/schemas/schemas-AdministrativeArea'
        postCodes:
          type: array
          items:
            $ref: '#/components/schemas/schemas-PostCode'
        localities:
          type: array
          items:
            $ref: '#/components/schemas/schemas-Locality'
        thoroughfares:
          type: array
          items:
            $ref: '#/components/schemas/schemas-Thoroughfare'
        premises:
          type: array
          items:
            $ref: '#/components/schemas/schemas-Premise'
        postalDeliveryPoints:
          type: array
          items:
            $ref: '#/components/schemas/schemas-PostalDeliveryPoint'
        openingHours:
          type: array
          items:
            $ref: '#/components/schemas/OpeningHour'
        geographicCoordinates:
          $ref: '#/components/schemas/GeographicCoordinates'
        types:
          type: array
          items:
            $ref: '#/components/schemas/AddressType'
        formattedAddress:
          $ref: '#/components/schemas/FormattedAddress'
    BusinessPartnerExternalId:
      type: string
      description: >-
        Arbitrary identifier type to mark customer IDs that are "external" from
        CDQ's perspective. This is the identifier a customer provides to
        identify its records.
      example: The ID managed in the customer's SAP systems.
    ClassificationValue:
      type: string
      description: A textual description of the Classification.
      example: Manufacture of pesticides and other agrochemical products.
    ClassificationCode:
      type: string
      description: Code that classifies the business partner.
      example: 20.20Z
    ClassificationLevel:
      type: string
      description: >-
        Defines the hierarchy of classification codes. E.g. whether the industry
        code is a `primary` or `secondary` `SIC` code.
      example: primary
    ClassificationTypeName:
      type: string
      description: Display label for the Classification Type.
      example: NAF 2003
    ClassificationTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the
        [Classification
        Type](https://meta.cdq.com/Business_partner/partner_profile/classification/type)
      example: >-
        https://meta.cdq.com/Business_partner/partner_profile/classification/type
    ClassificationTypeTechnicalKey:
      type: string
      description: TechnicalKey for the Classification Type.
      example: NAF 2003
    ClassificationType:
      type: object
      description: >-
        Type of classification such as NACE, SIC, NAF or other industry
        classification standards.
      properties:
        name:
          $ref: '#/components/schemas/ClassificationTypeName'
        url:
          $ref: '#/components/schemas/ClassificationTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/ClassificationTypeTechnicalKey'
    Classification:
      type: object
      description: >-
        A business industry or activity classification is a system of
        categorizing businesses and organizations into specific industries or
        activities based on their primary products or services, functions, or
        activities. These classifications are often used by governments, trade
        organizations, and other institutions to collect and analyze data on
        economic activity and to track trends and changes in various sectors.
      properties:
        value:
          $ref: '#/components/schemas/ClassificationValue'
        code:
          $ref: '#/components/schemas/ClassificationCode'
        level:
          $ref: '#/components/schemas/ClassificationLevel'
        type:
          $ref: '#/components/schemas/ClassificationType'
    ContactEmailValue:
      type: string
      description: Value of the email address of the Business Partner.
      example: developer-portal@cdq.com
    ContactEmail:
      type: object
      description: Actual email address of the Business Partner.
      properties:
        value:
          $ref: '#/components/schemas/ContactEmailValue'
    ProfessionTypeName:
      type: string
      description: Name of the profession type.
      example: Doctor
    ProfessionTypeUrl:
      type: string
      description: URL to the documentation of the Profession Type Technical Key.
      example: >-
        https://meta.cdq.com/Business_partner/partner_profile/hcp_profile/general_license/profession_type/technical_key
    ProfessionTypeTechnicalKey:
      type: string
      description: Technical key of the profession type.
      example: DOCTOR
    ProfessionType:
      type: object
      description: The profession type of the Healthcare Professional.
      properties:
        name:
          $ref: '#/components/schemas/ProfessionTypeName'
        url:
          $ref: '#/components/schemas/ProfessionTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/ProfessionTypeTechnicalKey'
    LicenseStatusName:
      type: string
      description: Name of the license status.
      example: Granted
    LicenseStatusUrl:
      type: string
      description: URL to the documentation of the License Status Technical Key.
      example: >-
        https://meta.cdq.com/Business_partner/partner_profile/hcp_profile/general_license/license_status/technical_key
    LicenseStatusTechnicalKey:
      type: string
      description: Technical key of the license status.
      example: GRANTED
    LicenseStatus:
      type: object
      description: The license status of the Healthcare Professional.
      properties:
        name:
          $ref: '#/components/schemas/LicenseStatusName'
        url:
          $ref: '#/components/schemas/LicenseStatusUrl'
        technicalKey:
          $ref: '#/components/schemas/LicenseStatusTechnicalKey'
    GeneralLicense:
      type: object
      description: The general license of the Healthcare Professional.
      properties:
        professionType:
          $ref: '#/components/schemas/ProfessionType'
        licenseStatus:
          $ref: '#/components/schemas/LicenseStatus'
    PermissionStatusName:
      type: string
      description: Name of the permission status.
      example: Granted
    PermissionStatusUrl:
      type: string
      description: URL to the documentation of the Permission Status Technical Key.
      example: >-
        https://meta.cdq.com/Business_partner/partner_profile/hcp_profile/operational_permissions/permission_status/url
    PermissionStatusTechnicalKey:
      type: string
      description: Technical key of the permission status.
      example: GRANTED
    PermissionStatus:
      type: object
      description: The permission status of the operational permission.
      properties:
        name:
          $ref: '#/components/schemas/PermissionStatusName'
        url:
          $ref: '#/components/schemas/PermissionStatusUrl'
        technicalKey:
          $ref: '#/components/schemas/PermissionStatusTechnicalKey'
    ActivityStatusName:
      type: string
      description: |
        Name of the activity status.
        Possible values: 
        * Active - The operational permission is active.
        * Inactive - The operational permission is inactive.
      example: Inactive
    ActivityStatusUrl:
      type: string
      description: URL to the documentation of the Activity Status Technical Key.
      example: >-
        https://meta.cdq.com/Business_partner/partner_profile/hcp_profile/operational_permissions/activity_status/url
    ActivityStatusTechnicalKey:
      type: string
      description: Technical key of the activity status.
      example: INACTIVE
    ActivityStatus:
      type: object
      description: The activity status of the operational permission.
      properties:
        name:
          $ref: '#/components/schemas/ActivityStatusName'
        url:
          $ref: '#/components/schemas/ActivityStatusUrl'
        technicalKey:
          $ref: '#/components/schemas/ActivityStatusTechnicalKey'
    SelfDispensationStatusName:
      type: string
      description: Name of the self-dispensation status.
      example: 'No'
    SelfDispensationStatusUrl:
      type: string
      description: URL to the documentation of the Self Dispensation Status Technical Key.
      example: >-
        https://meta.cdq.com/Business_partner/partner_profile/hcp_profile/operational_permissions/self_dispensation_status/url
    SelfDispensationStatusTechnicalKey:
      type: string
      description: Technical key of the self-dispensation status.
      example: 'NO'
    SelfDispensationStatus:
      type: object
      description: The self-dispensation status of the Healthcare Professional.
      properties:
        name:
          $ref: '#/components/schemas/SelfDispensationStatusName'
        url:
          $ref: '#/components/schemas/SelfDispensationStatusUrl'
        technicalKey:
          $ref: '#/components/schemas/SelfDispensationStatusTechnicalKey'
    ControlledSubstancePurchasePermissionName:
      type: string
      description: Name of the controlled substance purchase permission.
      example: 'Yes'
    ControlledSubstancePurchasePermissionUrl:
      type: string
      description: >-
        URL to the documentation of the Controlled Substance Purchase Permission
        Technical Key.
      example: >-
        https://meta.cdq.com/Business_partner/partner_profile/hcp_profile/operational_permissions/controlled_substance_purchase_permission/url
    ControlledSubstancePurchasePermissionTechnicalKey:
      type: string
      description: Technical key of the controlled substance purchase permission.
      example: 'YES'
    ControlledSubstancePurchasePermission:
      type: object
      description: >-
        The controlled substance purchase permission of the Healthcare
        Professional.
      properties:
        name:
          $ref: '#/components/schemas/ControlledSubstancePurchasePermissionName'
        url:
          $ref: '#/components/schemas/ControlledSubstancePurchasePermissionUrl'
        technicalKey:
          $ref: >-
            #/components/schemas/ControlledSubstancePurchasePermissionTechnicalKey
    PracticeLocation:
      type: object
      description: The practice location of the Healthcare Professional.
      properties:
        practiceName:
          type: string
          description: The practice location of the Healthcare Professional.
          example: VIVOMED AG
        selfDispensationStatus:
          $ref: '#/components/schemas/SelfDispensationStatus'
        controlledSubstancePurchasePermission:
          $ref: '#/components/schemas/ControlledSubstancePurchasePermission'
    OperationalPermission:
      type: object
      description: The operational permission of the Healthcare Professional.
      properties:
        issuingAuthority:
          type: string
          description: The issuing authority of the operational permission.
          example: Swiss Medical Association
        permissionStatus:
          $ref: '#/components/schemas/PermissionStatus'
        activityStatus:
          $ref: '#/components/schemas/ActivityStatus'
        practiceLocations:
          type: array
          description: Practice locations of the Healthcare Professional.
          items:
            $ref: '#/components/schemas/PracticeLocation'
    HcpProfile:
      type: object
      description: >
        Healthcare Professional Profile informs about the status, licenses, and
        location of a natural person who is a member 

        of the medical, dental, pharmacy, or nursing professions or any other
        person who, in the course of his/her professional 

        activities, may prescribe, purchase, supply, recommend or administer a
        Medicinal Product and whose primary practice, 

        principal professional address or place of incorporation is in Europe.
      properties:
        generalLicense:
          $ref: '#/components/schemas/GeneralLicense'
        operationalPermissions:
          type: array
          description: Operational permissions of the Healthcare Professional.
          items:
            $ref: '#/components/schemas/OperationalPermission'
    MinorityIndicatorValue:
      type: string
      description: >-
        The actual value of the minority indicator, representing the minority
        group.
      example: Social enterprise
    MinorityIndicator:
      description: >
        The minority indicator determines the minority group to which a vendor
        belongs. Usually, the minority indicator is only relevant in the United
        States and it is used for reporting purposes only. There is a
        corresponding SAP field in the vendor master for maintaining the
        minority indicator.


        This feature is as of today dependent on data provided by a US based
        company: SupplierGateway.


        Additional documentation can be found
        [here](https://meta.cdq.com/Business_partner/partner_profile/minority_indicator).
      type: object
      properties:
        value:
          $ref: '#/components/schemas/MinorityIndicatorValue'
    PhoneNumberCountryPrefix:
      type: string
      description: The country prefix of a phone number.
      example: '+41'
    PhoneNumberNumber:
      type: string
      description: The complete phone number without any country prefixes.
      example: 71 571 10 40
    PhoneNumberTypeName:
      type: string
      description: Display label for a Phone Number Type Name.
      example: FAX
    PhoneNumberTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Phone
        Number
        Type](https://meta.cdq.com/Business_partner/partner_profile/phone_number/type).
      example: https://meta.cdq.com/Business_partner/partner_profile/phone_number/type
    PhoneNumberTypeTechnicalKey:
      type: string
      description: Technical Keys of the PhoneNumber.
      example: FAX
    PhoneNumberType:
      type: object
      description: >-
        The type of a phone number such as mobile phone or fixed line 
        [here](https://meta.cdq.com/Business_partner/partner_profile/phone_number/type).
      properties:
        name:
          $ref: '#/components/schemas/PhoneNumberTypeName'
        url:
          $ref: '#/components/schemas/PhoneNumberTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/PhoneNumberTypeTechnicalKey'
    PhoneNumberValue:
      type: string
      description: The actual complete phone number incl. country prefix.
      example: +41 71 571 10 40
    PhoneNumber:
      type: object
      description: >-
        The main phone number of a business partner, usually some info-line of
        the headquarter.
      properties:
        countryPrefix:
          $ref: '#/components/schemas/PhoneNumberCountryPrefix'
        number:
          $ref: '#/components/schemas/PhoneNumberNumber'
        type:
          $ref: '#/components/schemas/PhoneNumberType'
        value:
          $ref: '#/components/schemas/PhoneNumberValue'
    TagValue:
      type: string
      description: Value of the tag.
      example: Warehouse
    TagTypeTechnicalKey:
      type: string
      description: Technical Key of the Tag.
      example: WAREHOUSE
    TagType:
      description: A type that specifies the nature of the tag.
      type: object
      properties:
        technicalKey:
          $ref: '#/components/schemas/TagTypeTechnicalKey'
    Tag:
      type: object
      description: >-
        Describing and identifying a resource. Custom information about the
        resource in form of a tag.
      properties:
        value:
          $ref: '#/components/schemas/TagValue'
        type:
          $ref: '#/components/schemas/TagType'
    Tags:
      type: array
      items:
        $ref: '#/components/schemas/Tag'
    VatPayerStatusPublicationDate:
      type: string
      description: Date of publication
      example: '2025-08-29T09:46:53Z'
    PayerStatusName:
      type: string
      description: Name of Vat payer status. Available values RELIABLE and UNRELIABLE
      example: RELIABLE
    PayerStatusTechnicalKey:
      type: string
      description: Technical key of Vat payer status
      example: VAT_PAYER_STATUS
    PayerStatus:
      description: Information about payer status.
      type: object
      properties:
        name:
          $ref: '#/components/schemas/PayerStatusName'
        technicalKey:
          $ref: '#/components/schemas/PayerStatusTechnicalKey'
    RegistrationAuthorityId:
      type: string
      description: >-
        The reference code of the registration authority, taken from the
        Registration Authorities Code List maintained by GLEIF.
      example: RA000009
    RegistrationAuthorityEntityId:
      type: string
      description: The identifier of the Entity at the indicated registration authority.
      example: RA000009
    OtherRegistrationAuthorityId:
      type: string
      description: A legacy / historical reference code of a registration authority.
      example: RA000009
    RegistrationAuthority:
      description: Additional information about registration authority.
      type: object
      properties:
        registrationAuthorityId:
          $ref: '#/components/schemas/RegistrationAuthorityId'
        registrationAuthorityEntityId:
          $ref: '#/components/schemas/RegistrationAuthorityEntityId'
        otherRegistrationAuthorityId:
          $ref: '#/components/schemas/OtherRegistrationAuthorityId'
    VatPayerStatus:
      description: >-
        Information about VAT status including publication date and registration
        authority.
      type: object
      properties:
        publicationDate:
          $ref: '#/components/schemas/VatPayerStatusPublicationDate'
        status:
          $ref: '#/components/schemas/PayerStatus'
        registrationAuthority:
          $ref: '#/components/schemas/RegistrationAuthority'
    WebsiteUrl:
      type: string
      description: The actual company website URL.
      example: https://cdq.com
    WebsiteTypeName:
      type: string
      description: Display label for a Website Type Name
      example: Corporate Website
    WebsiteTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes [Website Type
        Name](https://meta.cdq.com/Business_Partner/partner_profile/website/type).
      example: https://meta.cdq.com/Business_Partner/partner_profile/website/type
    WebsiteTypeTechnicalKey:
      type: string
      description: Technical Keys of the Website Type Name.
      example: WEBSITE_TYPE_CORPORATE
    WebsiteType:
      type: object
      description: >-
        Describes the type of website of a business partner, e.g. corporate
        website, official LinkedIn profile, etc.
      properties:
        name:
          $ref: '#/components/schemas/WebsiteTypeName'
        url:
          $ref: '#/components/schemas/WebsiteTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/WebsiteTypeTechnicalKey'
    Website:
      type: object
      description: >-
        Webpages related to the business partner, e.g. the main corporate
        website as also provided by some company registers.
      properties:
        url:
          $ref: '#/components/schemas/WebsiteUrl'
        type:
          $ref: '#/components/schemas/WebsiteType'
    PartnerProfile:
      description: >-
        A business partner profile contains important information about a
        company, such as its classification, tags, contact details, or minority
        indicator.
      type: object
      properties:
        classifications:
          type: array
          items:
            $ref: '#/components/schemas/Classification'
        contactEmails:
          type: array
          items:
            $ref: '#/components/schemas/ContactEmail'
        hcpProfile:
          $ref: '#/components/schemas/HcpProfile'
        minorityIndicator:
          $ref: '#/components/schemas/MinorityIndicator'
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/PhoneNumber'
        tags:
          $ref: '#/components/schemas/Tags'
        vatPayerStatus:
          $ref: '#/components/schemas/VatPayerStatus'
        websites:
          type: array
          items:
            $ref: '#/components/schemas/Website'
    FormattedSapRecordName1:
      type: string
      description: A name1 filed of a business partner name.
      example: CDQ AG
    FormattedSapRecordName2:
      type: string
      description: A name2 filed of a business partner name.
      example: CDQ AG
    FormattedSapRecordName3:
      type: string
      description: A name3 filed of a business partner name.
      example: CDQ AG
    FormattedSapRecordName4:
      type: string
      description: A name4 filed of a business partner name.
      example: CDQ AG
    FormattedSapRecordNameCo:
      type: string
      description: The legal form name of a Legal Form.
      example: Aktiengesellschaft
    FormattedSapRecordLegalEntity:
      type: string
      description: The legal entity of a Legal Form.
      example: Aktiengesellschaft
    FormattedSapRecordLegalForm:
      type: string
      description: The legal form of a Legal Form.
      example: Aktiengesellschaft
    FormattedSapRecordIndSector:
      type: string
      description: >-
        A business industry or activity classification is a system of
        categorizing businesses and organizations into specific industries or
        activities based on their primary products or services, functions, or
        activities. These classifications are often used by governments, trade
        organizations, and other institutions to collect and analyze data on
        economic activity and to track trends and changes in various sectors.
      example: NAF
    FormattedSapRecordIndSectorCode:
      type: string
      description: >-
        A code of business industry or activity classification is a system of
        categorizing businesses and organizations into specific industries or
        activities based on their primary products or services, functions, or
        activities. These classifications are often used by governments, trade
        organizations, and other institutions to collect and analyze data on
        economic activity and to track trends and changes in various sectors.
      example: NAF
    FormattedSapRecordEmailAddress:
      type: string
      description: Email address of the Business Partner.
      example: bp@gmail.com
    FormattedSapRecordNarp:
      type: string
      description: >-
        An individual person, i.e. not an organization. An individual has no
        identifiers and has no legal form in its name.
      example: Friedrich Nietzsche
    FormattedSapRecordStceg:
      type: string
      description: VAT registration number.
      example: CHE-218.608.88
    FormattedSapRecordStcd1:
      type: string
      description: Standard tax number field1.
      example: CHE-218.608.88
    FormattedSapRecordStcd2:
      type: string
      description: Standard tax number field2.
      example: CHE-218.608.88
    FormattedSapRecordStcd3:
      type: string
      description: Standard tax number field3.
      example: CHE-218.608.88
    FormattedSapRecordStcd4:
      type: string
      description: Standard tax number field4.
      example: CHE-218.608.88
    FormattedSapRecordStcd5:
      type: string
      description: Standard tax number field5.
      example: CHE-218.608.88
    FormattedSapRecordUrl:
      type: string
      description: >-
        Webpages related to the business partner, e.g. the main corporate
        website as also provided by some company registers.
      example: www.cdq.com
    FormattedSapRecordTelNumber:
      type: string
      description: >-
        The main phone number of a business partner, usually some info-line of
        the headquarter.
      example: +41 71 571 10 40
    FormattedSapRecordCountry:
      type: string
      description: Country name.
      example: Switzerland
    FormattedSapRecordCountryCode:
      type: string
      description: Country code (ISO 3166-1 alpha-2)
      example: CH
    FormattedSapRecordRegion:
      type: string
      description: A top-level geographical or political area division in a country.
      example: Sankt Gallen
    FormattedSapRecordRegionCodeSap:
      type: string
      description: A Region specific code for a certain address.
      example: '9004'
    FormattedSapRecordRegionCode:
      type: string
      description: A country specific code for a certain address in the region.
      example: '9004'
    FormattedSapRecordCounty:
      type: string
      description: A sub-level geographical or political area division in a country.
      example: Sankt Gallen
    FormattedSapRecordCountyCode:
      type: string
      description: A county specific code for a certain address in the region.
      example: '9004'
    FormattedSapRecordTownship:
      type: string
      description: A sub-level geographical or political area division in a country.
      example: Sankt Gallen
    FormattedSapRecordTownshipCode:
      type: string
      description: A township specific code for a certain address in the region.
      example: '9004'
    FormattedSapRecordCity:
      type: string
      description: >-
        A locality is a named densely populated area (a place) such as town,
        village, suburb, etc. A locality composes of many individual addresses.
        Many localities exist in an [administrative
        area](https://meta.cdq.com/Address/administrative_area). A locality can
        also have several levels of sub localities.
      example: Sankt Gallen
    FormattedSapRecordDistrict:
      type: string
      description: Area of a country or city.
      example: St. Georgen
    FormattedSapRecordPostalCode:
      type: string
      description: A country specific code for a certain address.
      example: '9000'
    FormattedSapRecordPostalCode3:
      type: string
      description: A country specific code for a certain address.
      example: '9000'
    FormattedSapRecordStreet1:
      type: string
      description: >-
        Details of the access route along which buildings, lots, or land are
        located, such as street, road, channel, crescent, avenue, etc. This also
        includes canals or banks on which houses or boat houses are located
        where people live.
      example: Lukasstraße 4
    FormattedSapRecordStreet2:
      type: string
      description: Additional street filed.
      example: Lukasstraße 4
    FormattedSapRecordStreet5:
      type: string
      description: Additional street filed.
      example: Lukasstraße 4
    FormattedSapRecordHouseNum:
      type: string
      description: Number of the Thoroughfare.
      example: '4'
    FormattedSapRecordHouseNum2:
      type: string
      description: Additional number filed.
      example: '4'
    FormattedSapRecordBuilding:
      type: string
      description: >-
        A structure (such as a house, hospital, school, etc.) with a roof and
        walls that is used as a place for people to live, work, do activities,
        store things, etc.
      example: Office 2
    FormattedSapRecordFloor:
      type: string
      description: The floor/story of the building.
      example: '2'
    FormattedSapRecordRoomnumber:
      type: string
      description: A distinct room in a building.
      example: '123'
    FormattedSapRecordPoBoxCountry:
      type: string
      description: A location at an address where the post is delivered to.
      example: '9000'
    FormattedSapRecordPoBoxCity:
      type: string
      description: A location at an address where the post is delivered to.
      example: '9000'
    FormattedSapRecordPoBoxPostalCode:
      type: string
      description: A location at an address where the post is delivered to.
      example: '9000'
    FormattedSapRecordPoBox:
      type: string
      description: Des
      example: '9000'
    FormattedSapRecordLatitude:
      type: string
      description: Plain on the earth's surface north or south of the equator.
      example: '47.439549'
    FormattedSapRecordLongitude:
      type: string
      description: Plain on the earth's surface east or west of a meridian.
      example: '9.395275'
    FormattedSapRecord:
      description: >-
        Provides business partner and address information in a data structure
        similar to SAP Business Partner table BUT000 and SAP Business Address
        Services table ADRC. Field names are equal or very similar to SAP field
        names in order to simplify field mapping. Data for name and street
        fields is already split into chunks of max. 35 characters.
      type: object
      properties:
        name1:
          $ref: '#/components/schemas/FormattedSapRecordName1'
        name2:
          $ref: '#/components/schemas/FormattedSapRecordName2'
        name3:
          $ref: '#/components/schemas/FormattedSapRecordName3'
        name4:
          $ref: '#/components/schemas/FormattedSapRecordName4'
        nameCo:
          $ref: '#/components/schemas/FormattedSapRecordNameCo'
        legalEntity:
          $ref: '#/components/schemas/FormattedSapRecordLegalEntity'
        legalForm:
          $ref: '#/components/schemas/FormattedSapRecordLegalForm'
        indSector:
          $ref: '#/components/schemas/FormattedSapRecordIndSector'
        indSectorCode:
          $ref: '#/components/schemas/FormattedSapRecordIndSectorCode'
        emailAddress:
          $ref: '#/components/schemas/FormattedSapRecordEmailAddress'
        narp:
          $ref: '#/components/schemas/FormattedSapRecordNarp'
        stceg:
          $ref: '#/components/schemas/FormattedSapRecordStceg'
        stcd1:
          $ref: '#/components/schemas/FormattedSapRecordStcd1'
        stcd2:
          $ref: '#/components/schemas/FormattedSapRecordStcd2'
        stcd3:
          $ref: '#/components/schemas/FormattedSapRecordStcd3'
        stcd4:
          $ref: '#/components/schemas/FormattedSapRecordStcd4'
        stcd5:
          $ref: '#/components/schemas/FormattedSapRecordStcd5'
        url:
          $ref: '#/components/schemas/FormattedSapRecordUrl'
        telNumber:
          $ref: '#/components/schemas/FormattedSapRecordTelNumber'
        country:
          $ref: '#/components/schemas/FormattedSapRecordCountry'
        countryCode:
          $ref: '#/components/schemas/FormattedSapRecordCountryCode'
        region:
          $ref: '#/components/schemas/FormattedSapRecordRegion'
        regionCodeSap:
          $ref: '#/components/schemas/FormattedSapRecordRegionCodeSap'
        regionCode:
          $ref: '#/components/schemas/FormattedSapRecordRegionCode'
        county:
          $ref: '#/components/schemas/FormattedSapRecordCounty'
        countyCode:
          $ref: '#/components/schemas/FormattedSapRecordCountyCode'
        township:
          $ref: '#/components/schemas/FormattedSapRecordTownship'
        townshipCode:
          $ref: '#/components/schemas/FormattedSapRecordTownshipCode'
        city:
          $ref: '#/components/schemas/FormattedSapRecordCity'
        district:
          $ref: '#/components/schemas/FormattedSapRecordDistrict'
        postalCode:
          $ref: '#/components/schemas/FormattedSapRecordPostalCode'
        postalCode3:
          $ref: '#/components/schemas/FormattedSapRecordPostalCode3'
        street1:
          $ref: '#/components/schemas/FormattedSapRecordStreet1'
        street2:
          $ref: '#/components/schemas/FormattedSapRecordStreet2'
        street5:
          $ref: '#/components/schemas/FormattedSapRecordStreet5'
        houseNum:
          $ref: '#/components/schemas/FormattedSapRecordHouseNum'
        houseNum2:
          $ref: '#/components/schemas/FormattedSapRecordHouseNum2'
        building:
          $ref: '#/components/schemas/FormattedSapRecordBuilding'
        floor:
          $ref: '#/components/schemas/FormattedSapRecordFloor'
        roomnumber:
          $ref: '#/components/schemas/FormattedSapRecordRoomnumber'
        poBoxCountry:
          $ref: '#/components/schemas/FormattedSapRecordPoBoxCountry'
        poBoxCity:
          $ref: '#/components/schemas/FormattedSapRecordPoBoxCity'
        poBoxPostalCode:
          $ref: '#/components/schemas/FormattedSapRecordPoBoxPostalCode'
        poBox:
          $ref: '#/components/schemas/FormattedSapRecordPoBox'
        latitude:
          $ref: '#/components/schemas/FormattedSapRecordLatitude'
        longitude:
          $ref: '#/components/schemas/FormattedSapRecordLongitude'
    BusinessPartnerRelationStartedAt:
      type: string
      description: Describe when this relationship was first established.
      example: '2025-08-29T09:46:53Z'
    BusinessPartnerRelationEndedAt:
      type: string
      description: Describe when this relationship ended.
      example: '2025-08-29T09:46:53Z'
    BusinessPartnerRelationTypeName:
      type: string
      description: Display name of the Business Partner Relation Type.
      example: Commercial ultimate
    BusinessPartnerRelationTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of a [Business
        Partner Relation
        Type](https://meta.cdq.com/Business_partner/relation/type).
      example: https://meta.cdq.com/Business_partner/relation/type
    BusinessPartnerRelationTypeTechnicalKey:
      type: string
      description: Technical Key of the Business Partner Relation Type.
      example: COMMERCIAL_ULTIMATE
    BusinessPartnerRelationType:
      type: object
      description: >-
        Provides information about the type of the relationship between two
        Business Partners like:\ direct parent/child, ultimate parent, branch.
      properties:
        name:
          $ref: '#/components/schemas/BusinessPartnerRelationTypeName'
        url:
          $ref: '#/components/schemas/BusinessPartnerRelationTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/BusinessPartnerRelationTypeTechnicalKey'
    BusinessPartnerRelationClassName:
      type: string
      description: Display name of the Business Partner Relation Class.
      example: CDQ Hierarchy
    BusinessPartnerRelationClassUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of a [Business
        Partner Relation
        Class](https://meta.cdq.com/Business_partner/relation/class).
      example: https://meta.cdq.com/Business_partner/relation/class
    BusinessPartnerRelationClassTechnicalKey:
      type: string
      description: Technical Key of the Business Partner Relation Class.
      example: BUSINESS_PARTNER_RELATION_CLASS_CDQ_HIERARCHY
    BusinessPartnerRelationClass:
      type: object
      description: Provides information about the classification of the relation.
      properties:
        name:
          $ref: '#/components/schemas/BusinessPartnerRelationClassName'
        url:
          $ref: '#/components/schemas/BusinessPartnerRelationClassUrl'
        technicalKey:
          $ref: '#/components/schemas/BusinessPartnerRelationClassTechnicalKey'
    BusinessPartnerRelationStartNode:
      type: string
      description: >-
        It's a number of the business partner that plays a superior role over
        the other business partner. In means that, the company is parent of the
        second company (child) and has one of the relationship type like:\
        Domestic Ultimate Legal entity or Direct Legal entity.
      example: FR.RC:5664645
    BusinessPartnerRelationEndNode:
      type: string
      description: >-
        It's a number of the business partner that plays a subordinate role over
        the other business partner. In means that, the company is chile of the
        second company (parent) and has one of the special relationship types.
      example: FR.RC:5664645
    BusinessPartnerRelation:
      type: object
      description: >-
        Business Partner hierarchy, or any other kind of relation between two
        Business Partner entities. The data about relationships between
        companies come from official, external data sources.
      properties:
        startedAt:
          $ref: '#/components/schemas/BusinessPartnerRelationStartedAt'
        endedAt:
          $ref: '#/components/schemas/BusinessPartnerRelationEndedAt'
        type:
          $ref: '#/components/schemas/BusinessPartnerRelationType'
        class:
          $ref: '#/components/schemas/BusinessPartnerRelationClass'
        startNode:
          $ref: '#/components/schemas/BusinessPartnerRelationStartNode'
        endNode:
          $ref: '#/components/schemas/BusinessPartnerRelationEndNode'
    InternationalBankAccountIdentifier:
      type: string
      description: The IBAN of a bank account.
      example: CH8800781619278412000
    InternationalBankIdentifier:
      type: string
      description: (BIC/SWIFT) Bank identifier which is globally unique.
      example: KBSGCH22XXX
    NationalBankAccountIdentifier:
      type: string
      description: Identifier of a bank account in a national context, i.e. for a country.
      example: '619278412000'
    NationalBankIdentifier:
      type: string
      description: >-
        Bank identifier which is unique in a national context, i.e. for a
        country.
      example: '00781'
    BankName:
      description: The name of a bank.
      type: string
      example: Sparda Bank
    BankBranch:
      description: The branch of a bank.
      type: string
      example: Filiale München
    BankAddress:
      type: object
      description: The address where a bank resides.
      properties:
        localities:
          type: array
          items:
            $ref: '#/components/schemas/schemas-Locality'
        country:
          $ref: '#/components/schemas/schemas-Country'
        administrativeAreas:
          type: array
          items:
            $ref: '#/components/schemas/schemas-AdministrativeArea'
        postCodes:
          type: array
          items:
            $ref: '#/components/schemas/schemas-PostCode'
        thoroughfares:
          type: array
          items:
            $ref: '#/components/schemas/schemas-Thoroughfare'
    Bank:
      type: object
      description: >-
        Financial institution that accepts deposits, facilitates withdrawals and
        transfers, and provides various financial services such as loans,
        investments, and currency exchange.
      properties:
        name:
          $ref: '#/components/schemas/BankName'
        branch:
          $ref: '#/components/schemas/BankBranch'
        address:
          $ref: '#/components/schemas/BankAddress'
    BankAccount:
      type: object
      description: >-
        A bank account record holds information that universally describes a
        registered bank account.
      properties:
        internationalBankAccountIdentifier:
          $ref: '#/components/schemas/InternationalBankAccountIdentifier'
        internationalBankIdentifier:
          $ref: '#/components/schemas/InternationalBankIdentifier'
        nationalBankAccountIdentifier:
          $ref: '#/components/schemas/NationalBankAccountIdentifier'
        nationalBankIdentifier:
          $ref: '#/components/schemas/NationalBankIdentifier'
        bank:
          $ref: '#/components/schemas/Bank'
    BusinessPartnerTypeName:
      type: string
      description: Display name of the Business Partner Type Name.
      example: Legal Entity
    BusinessPartnerTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of a [Buisness
        Partner Type](https://meta.cdq.com/Business_partner/type).
      example: https://meta.cdq.com/Business_partner/type
    BusinessPartnerTypeTechnicalKey:
      type: string
      description: Technical key of the Business Partner Type.
      example: LEGAL_ENTITY
    BusinessPartnerType:
      type: object
      description: >-
        A distinct type a business partner is assigned to. It determines the
        business context a business partner is involved in. In the Corporate
        Data League, most business partners are legal entities.
      properties:
        name:
          $ref: '#/components/schemas/BusinessPartnerTypeName'
        url:
          $ref: '#/components/schemas/BusinessPartnerTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/BusinessPartnerTypeTechnicalKey'
    BusinessPartnerStorageDataSourceName:
      type: string
      description: Name of a data source of a storage.
      example: Internal customers
    DataMatchingDefinitionId:
      type: string
      description: Id of the data matching definition.
      example: 6461e6113b1865304b3038b6
    HttpStatus:
      type: integer
      description: RFC 7231 status code for this error.
      example: '400'
      deprecated: true
    HttpPath:
      type: string
      description: Requested path which caused this error.
      example: /v2/businesspartners/lookup
    ApiErrorTimestamp:
      type: string
      deprecated: true
      description: ISO 8601 representation of the timestamp.
      example: '2025-08-29T09:46:53Z'
    HttpError:
      type: string
      description: RFC 7231 error which belongs to the status code.
      example: BAD_REQUEST
      deprecated: true
    ApiErrorMessage:
      type: string
      deprecated: true
      description: Details about the error.
      example: This user is not allowed to access this service.
    BusinessPartnerStorageId:
      type: string
      description: Unique identifier of the Storage.
      example: 72d6900fce6b326088f5d9d91049e3e6
    BusinessPartnerStorageDataSourceId:
      type: string
      description: Unique identifier for a Data Source of the Storage.
      example: 648824a691d8d2503d65103e
    BuildToggle:
      type: boolean
      description: Enable to generate this report.
      example: 'false'
      default: false
    DuplicateMatchingIncludeSingles:
      type: boolean
      description: >-
        Enables singles (non duplicated records) for the duplicate matching
        report.
      example: 'false'
      default: false
    DuplicateMatchingReportConfiguration:
      type: object
      description: >-
        Generates a data matching report that doesn't include artificial golden
        records on top of each matching group. Optionally IncludeSingles feature
        can be set to true.
      properties:
        build:
          $ref: '#/components/schemas/BuildToggle'
        includeSingles:
          $ref: '#/components/schemas/DuplicateMatchingIncludeSingles'
    DuplicateConsolidationIncludeSingles:
      type: boolean
      description: >-
        Enables singles (non duplicated records) for the duplicate consolidation
        report.
      example: 'false'
      default: false
    DuplicateConsolidationReportConfiguration:
      type: object
      description: >-
        Generates a data matching report that includes artificial golden records
        on top of each matching group. Optionally IncludeSingles feature can be
        set to true.
      properties:
        build:
          $ref: '#/components/schemas/BuildToggle'
        includeSingles:
          $ref: '#/components/schemas/DuplicateConsolidationIncludeSingles'
    JobId:
      type: string
      description: Unique identifier of a job.
      example: 35f23c03-1c22-45fe-9484-3ffe769325de
    CreatedAt:
      type: string
      description: Date of creation (ISO 8601-compliant).
      example: '2025-08-29T09:46:53Z'
    CreatedBy:
      type: string
      description: Creator of a resource.
      example: '76248934691294444'
    JobProgress:
      type: integer
      description: Progress (%) of the job.
      example: '77'
      maximum: 100
      minimum: 0
    StartAfter:
      type: string
      description: The ID which is used to read the page.
      example: '5712566172571652'
    ModifiedAt:
      type: string
      description: Date of modification (ISO 8601-compliant).
      example: '2025-08-29T09:46:53Z'
    OrganizationId:
      type: string
      description: Uniquely identifying ID of the organization.
      example: cdq_monitor
    WorkspaceId:
      type: string
      description: Uniquely identifying ID of the workspace.
      example: c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4
    NextStartAfter:
      type: string
      description: Provides a value to be used as a startAfter in next page request.
      example: '5712566172571652'
    LinkageIncludeSingles:
      type: boolean
      description: Enables singles (non linked records) for the linkage report.
      example: 'false'
      default: false
    LinkageReportConfiguration:
      type: object
      description: >-
        Generates a linkage report. Optionally IncludeSingles feature can be set
        to true.
      properties:
        build:
          $ref: '#/components/schemas/BuildToggle'
        includeSingles:
          $ref: '#/components/schemas/LinkageIncludeSingles'
    MatchingReportsConfiguration:
      type: object
      description: Configuration for generating matching reports.
      properties:
        duplicateMatching:
          $ref: '#/components/schemas/DuplicateMatchingReportConfiguration'
        duplicateConsolidation:
          $ref: '#/components/schemas/DuplicateConsolidationReportConfiguration'
        linkage:
          $ref: '#/components/schemas/LinkageReportConfiguration'
    schemas-JobStatus:
      type: string
      description: Job execution status.
      example: RUNNING
    JobStatusMessage:
      type: string
      description: Additional information to explain the status.
      example: The job failed because storage is empty.
    UserId:
      type: string
      description: Unique ID of a user.
      example: johndoe
    Page:
      type: integer
      description: Current page number.
      example: '1'
      default: 0
      minimum: 0
    PageSize:
      type: integer
      description: Number of items per page.
      example: '100'
      default: 10
      minimum: 1
      maximum: 1000
    PageTotal:
      description: Total number of items which can be paged.
      example: '67'
      type: integer
    Limit:
      type: integer
      description: Number of items per page.
      example: '100'
    ConfigurationId:
      type: string
      description: Uniquely identifies a configuration.
      example: c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4
    ConfigurationName:
      type: string
      description: Display name for a configuration.
      example: Client configuration.
    HttpStatusCode:
      type: integer
      description: RFC 7231 status code for this error.
      example: '400'
    HttpStatusTechnicalKey:
      type: string
      description: Technical key describing the status or error
      example: OK
    StatusDetailsMessageId:
      type: integer
      description: 9-digit code which is uniquely identifying a message
      example: 200000004
    StatusDetailsMessage:
      type: string
      description: Human-readable message which may also be presented in user interface.
      example: Business Partner Name is mandatory.
    StatusDetailsTechnicalKey:
      type: string
      description: Technical key to uniquely identify a message.
      example: JOB_FINISHED
    JsonPath:
      type: string
      description: JSONPath as specified by the IETF standard
      example: $.businessPartner.names[0].value
    JsonObject:
      type: string
      description: Object provided in plain JSON format.
      example: '{ "key" : "value"}'
      additionalProperties: true
    StatusDetails:
      type: object
      description: Details about this status or error
      required:
        - id
        - message
      properties:
        id:
          $ref: '#/components/schemas/StatusDetailsMessageId'
        message:
          $ref: '#/components/schemas/StatusDetailsMessage'
        technicalKey:
          $ref: '#/components/schemas/StatusDetailsTechnicalKey'
        jsonPath:
          $ref: '#/components/schemas/JsonPath'
        jsonRecord:
          $ref: '#/components/schemas/JsonObject'
    StatusTimestamp:
      type: string
      description: ISO 8601 representation of the timestamp.
      example: '2025-08-29T09:46:53Z'
    ModifiedBy:
      type: string
      description: User or Client UUID which modified the resource.
      example: '76248934691294444'
    CorrelationId:
      type: string
      description: ID which uniquely chains a set of request()s and or task(s).
      example: 123e4567-e89b-12d3-a456-426614174000
    Task:
      type: object
      description: A task is a unit of work.
      properties:
        correlationId:
          $ref: '#/components/schemas/CorrelationId'
        userId:
          $ref: '#/components/schemas/UserId'
        jobId:
          $ref: '#/components/schemas/JobId'
    ExternalContextIdentifierValue:
      type: string
      description: Value of own identifiers of a record.
      example: '7250017031'
    ExternalContextIdentifierTypeTechnicalKey:
      type: string
      description: Technical key for the External Context Identifier Type.
      example: KUNNR
    schemas-ExternalContextIdentifierType:
      type: object
      description: Type of own identifiers of a record.
      properties:
        technicalKey:
          $ref: '#/components/schemas/ExternalContextIdentifierTypeTechnicalKey'
    schemas-ExternalContextIdentifier:
      type: object
      description: Describe own identifiers of a record (others than just the external Id).
      properties:
        value:
          $ref: '#/components/schemas/ExternalContextIdentifierValue'
        type:
          $ref: '#/components/schemas/schemas-ExternalContextIdentifierType'
    schemas-ExternalContext:
      type: object
      description: Describe own identifiers of a record (others than just the external Id).
      properties:
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/schemas-ExternalContextIdentifier'
    schemas-BusinessPartner:
      type: object
      description: >-
        An organization which has some degree of involvement with another
        organization's business dealings. Typically, a company's business
        partner is another company in the role of a customer, a supplier, a
        vendor, or a service provider. In the CDL context, the business partner
        is the core managed entity. A business partner is globally uniquely
        identifiable by a CDL ID, and all managed information such as addresses,
        documents, and hierarchies is linked to a business partner.
      properties:
        names:
          type: array
          items:
            $ref: '#/components/schemas/schemas-Name'
        legalForm:
          $ref: '#/components/schemas/schemas-LegalForm'
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/schemas-Identifier'
        categories:
          type: array
          items:
            $ref: '#/components/schemas/BusinessPartnerCategory'
        status:
          $ref: '#/components/schemas/BusinessPartnerStatus'
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/schemas-Address'
        externalId:
          $ref: '#/components/schemas/BusinessPartnerExternalId'
        profile:
          $ref: '#/components/schemas/PartnerProfile'
        formattedSapRecord:
          $ref: '#/components/schemas/FormattedSapRecord'
        relations:
          type: array
          items:
            $ref: '#/components/schemas/BusinessPartnerRelation'
        bankAccounts:
          type: array
          items:
            $ref: '#/components/schemas/BankAccount'
        types:
          type: array
          items:
            $ref: '#/components/schemas/BusinessPartnerType'
        externalContext:
          $ref: '#/components/schemas/schemas-ExternalContext'
    ReplyQueue:
      type: string
      description: >-
        Technical descriptor of reply queue where workers should put back the
        result.
      example: 647328648329632-34890742-3432
    Worker:
      type: string
      description: Worker which generated the result.
      example: pod-647328648329632-34890742-3432
    TaskStatus:
      type: string
      description: Task status.
      example: OK
    TaskMessage:
      type: string
      description: Details task status.
      example: The validation was successful.
    TaskResult:
      type: object
      description: Result or outcome of a task.
      properties:
        worker:
          $ref: '#/components/schemas/Worker'
        correlationId:
          $ref: '#/components/schemas/CorrelationId'
        status:
          $ref: '#/components/schemas/TaskStatus'
        message:
          $ref: '#/components/schemas/TaskMessage'
