openapi: 3.0.0
info:
  version: '2'
  title: Bankaccount Data API
  description: >-
    This API provides services to validate and to confirm bank account data, and
    to manage payment fraud cases
servers:
  - description: Production
    url: https://api.cdq.com/bankaccount-data/rest
    x-cdq-soap-url: https://api.corporate-data-league.ch/bankaccount-data/soap/v2
security:
  - apiKey: []
tags:
  - name: Bank Account Storages Management
    description: >
      Gather endpoints that provide functionalities for managing bank account
      storages. These functionalities include 

      creating a new storage for bank account data, reading the details of a
      specific bank account storage identified 

      by its storage ID, modifying the details of an existing bank account
      storage, deleting an existing bank account 

      storage, and removing all bank account data from a specific storage.
  - name: Bank Account Verification
    description: >
      Gather endpoints that provide functionalities for verifying bank account
      data. These functionalities include 

      confirming the reliability of given bank account data by CDL Trust Scores
      provided by other companies for the 

      given bank account, curating the given bank account, and uploading bank
      accounts for batch confirmation.
  - name: Bank Accounts
    description: >
      Gather endpoints that provide functionalities for managing bank accounts.
      These functionalities include reading 

      bank account data, upserting bank account data, deleting bank account
      data, creating a new data source, reading 

      all data sources, reading a data source by ID, and deleting a data source
      by ID.
  - name: Bank Data Lookup
    description: >
      Gather endpoints that provide functionalities for looking up bank
      information. These functionalities include 

      looking up bank information based on the given bank data lookup request.
  - name: Fraud Case Management
    description: >
      Gather endpoints that provide functionalities for managing fraud cases.
      These functionalities include creating a 

      new fraud case, reading the details of a specific fraud case identified by
      its case ID, modifying the details of 

      an existing fraud case, deleting an existing fraud case, and removing all
      fraud case data from a specific storage.
  - name: System Bank Data Sources
    description: >
      Gather endpoints that provide functionalities for managing system bank
      data sources. These functionalities include 

      creating a new data source, reading all data sources, reading a data
      source by ID, and deleting a data source by ID.
  - name: System Banks
    description: >
      Gather endpoints that provide functionalities for managing system banks.
      These functionalities include reading 

      system banks, upserting system bank data, deleting system bank data,
      creating a new data source, reading all data 

      sources, reading a data source by ID, and deleting a data source by ID.
  - name: Files
    description: >
      Gather endpoints that provide functionalities for managing files. These
      functionalities include uploading a file to S3.
paths:
  /v2/bankaccounts/tasks/{taskId}:
    parameters:
      - name: taskId
        description: Task ID
        in: path
        required: true
        schema:
          type: string
          pattern: ^[a-fA-F0-9]{24}$
          example: 652697d8eb91545eb14e64e6
    get:
      x-wsdl: true
      tags:
        - Bank Account Storages Management
      summary: Check Bank Account Upsert Status
      description: >-
        Check the status of a task that is inserting or updating bank accounts
        in the system.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountsUpsertStatus'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /bankaccountstorages/{storageId}:
    get:
      parameters:
        - $ref: '#/components/parameters/bankAccountStorageId'
        - $ref: '#/components/parameters/bankAccountStorageReadFeaturesOn'
      tags:
        - Bank Account Storages Management
      summary: Read Bank Account Storage
      description: >-
        Display the details of a specific bank account storage identified by its
        storage ID.
      responses:
        '200':
          description: Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountStorage'
            application/xml:
              schema:
                $ref: '#/components/schemas/BankAccountStorage'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
    put:
      parameters:
        - $ref: '#/components/parameters/bankAccountStorageId'
      tags:
        - Bank Account Storages Management
      summary: Update Bank Account Storage
      description: >-
        Modify the details of an existing bank account storage identified by its
        storage ID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankAccountStorageUpdate'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountStorage'
            application/xml:
              schema:
                $ref: '#/components/schemas/BankAccountStorage'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
  /v2/bankaccounts/confirm:
    post:
      x-wsdl: true
      tags:
        - Bank Account Verification
      summary: Confirm Reliability
      description: >
        Confirm the reliability of the given bank account against the CDQ
        Whitelist (trust score based on transactions)

        and the Blacklist (fraud cases).


        The BankAccount that is sent in the request needs to uniquely identify a
        bank account. Minimal sets of attributes

        that are considered valid to identify a bank account are:
          1. Only the IBAN (= internationalBankAccountIdentifier):
              ```
              {
                "bankAccount": {
                  "internationalBankAccountIdentifier": "CH8800781619278412000"
                }
              }
              ```
          2. The bank account number (= nationalBankAccountIdentifier) and the BIC (= internationalBankIdentifier):
              ```
              {
                "bankAccount": {
                  "nationalBankAccountIdentifier": "619278412000",
                  "internationalBankIdentifier": "KBSGCH22XXX"
                }
              }
              ```
          3. The bank account number (= nationalBankAccountIdentifier), bank code/number (= nationalBankIdentifier) and bank country code (= bankCountryCode):
              ```
              {
                "bankAccount": {
                  "bankCountryCode": "CH",
                  "nationalBankIdentifier": "00781",
                  "nationalBankAccountIdentifier": "619278412000"
                }
              }
              ```
        If attributes are missing to uniquely identify a bank account an
        ApiError will be returned.


        The response will always contain the BankAccount provided in the request
        and depending on the result found in the Whitelist

        or the Blacklist or neither, the following:

        1. A whitelist entry and no fraud case was found:
              ```
              {
                "bankAccountRequest": {
                  "internationalBankAccountIdentifier": "CH8800781619278412000"
                },
                "bankAccountConfirmed": {
                  "bankCountryCode": "CH",
                  "nationalBankIdentifier": "00781",
                  "nationalBankAccountIdentifier": "619278412000",
                  "internationalBankIdentifier": "KBSGCH22XXX",
                  "internationalBankAccountIdentifier": "CH8800781619278412000"
                }
                "numberOfCompanies": "5",
                "numberOfPayments": "42",
                "lastPaymentAt": "2019-01-24",
                "trustScore": "7"
              }
              ```
        2. A fraud case entry was found:
              ```
              {
                "bankAccountRequest": {
                  "internationalBankAccountIdentifier": "CH8800781619278412000"
                },
                "associatedFraudCases": [
                  {
                    "cdlId": "oaRnfC1D1Q",
                    ...
                  }
                ]
              }
              ```
        3. The bank account is unknown (no trust score and no fraud case
        exists):
              ```
              {
                "bankAccountRequest": {
                  "internationalBankAccountIdentifier": "CH8800781619278412000"
                }
              }
              ```
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            examples:
              checkByIban:
                summary: Check bank account score based on IBAN
                value:
                  bankAccount:
                    internationalBankAccountIdentifier: CH8800781619278412000
              checkByBIC:
                summary: >-
                  Check bank account score based on BIC and national bank
                  account identifier
                value:
                  bankAccount:
                    nationalBankAccountIdentifier: '619278412000'
                    internationalBankIdentifier: KBSGCH22XXX
              checkByBankCountryCode:
                summary: >-
                  Check bank account score based on national bank account
                  identifier and bank country code
                value:
                  bankAccount:
                    bankCountryCode: CH
                    nationalBankAccountIdentifier: '619278412000'
                    nationalBankIdentifier: '00781'
            schema:
              $ref: '#/components/schemas/BankAccountConfirmationRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountConfirmationResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /banks/lookup:
    post:
      tags:
        - Bank Data Lookup
      summary: Lookup Bank Information
      description: Lookup bank information based on the given bank data lookup request.
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankDataLookupRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankDataLookupResponse'
  /bankaccounts/confirm:
    get:
      deprecated: true
      tags:
        - Bank Account Verification
      summary: Confirm Bank Account
      description: >-
        -> Confirm reliability of given bank account data by CDL Trust Scores
        provided by other companies for the given bank account.
      parameters:
        - name: internationalBankAccountIdentifier
          description: >-
            Uniquely identifies a bank account on a global scale, without any
            additional information such as bank identifier or country code. Best
            known system is the International Bank Account Identifier (IBAN)
            specified by ISO 13616:2007 and managed by SWIFT. If you use this
            parameter to confirm a given bank account, you do not need any
            additional parameter.
          in: query
          schema:
            $ref: '#/components/schemas/InternationalBankAccountIdentifier'
        - name: internationalBankIdentifier
          description: >-
            Uniquely identifies a bank on global scale, without any additional
            information such as country code. Best known system is the
            International Bank Identifier (BIC, or SWIFT code) specified by ISO
            9362 and managed by SWIFT. If you use this parameter to confirm a
            given bank account without an IBAN, you have to provide in addition
            bank account information, i.e. country code and national bank
            account identifier.
          in: query
          schema:
            $ref: '#/components/schemas/InternationalBankIdentifier'
        - name: bankCountryCode
          description: >-
            To confirm national bank account information, you have to provide a
            country code to uniquely identify the bank account on a global
            scale. If you use this parameter to confirm a given bank account
            without an IBAN or BIC, you have to provide in addition a national
            bank identifier and a national bank account identifier.
          in: query
          schema:
            $ref: '#/components/schemas/CountryShortName'
        - name: nationalBankIdentifier
          description: >-
            Uniquely identifies a bank in a country, together with a country
            code parameter on a global scale. If you use this parameter to
            confirm a given bank account without an IBAN or BIC, you have to
            provide in addition a country code and a national bank account
            identifier.
          in: query
          schema:
            $ref: '#/components/schemas/NationalBankIdentifier'
        - name: nationalBankAccountIdentifier
          description: >-
            Uniquely identifies a bank account at a specific bank in a country,
            together with a country code parameter and a national bank
            identifier on a global scale. If you use this parameter to confirm a
            given bank account without an IBAN or BIC, you have to provide in
            addition a country code and a national bank identifier.
          in: query
          schema:
            $ref: '#/components/schemas/NationalBankAccountIdentifier'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountConfirmation'
            application/xml:
              schema:
                $ref: '#/components/schemas/BankAccountConfirmation'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
  /bankaccounts/curate:
    post:
      tags:
        - Bank Account Verification
      summary: Curate Bank Account
      description: >
        Curates the given bank account.


        The BankAccount that is sent in the request has to be uniquely
        identifiable.

        Minimal sets of attributes that identify a BankAccount are:
          1. Only the IBAN (= internationalBankAccountIdentifier):
              ```
              {
                "bankAccount": {
                  "internationalBankAccountIdentifier": "CH8800781619278412000"
                }
              }
              ```
          2. The bank account number (= nationalBankAccountIdentifier), bank code/number (= bank.nationalBankIdentifier) and bank country code (= bank.address.country.shortName):
              ```
              {
                "bankAccount": {
                  "nationalBankAccountIdentifier": "619278412000",
                  "bank" : {
                    "nationalBankIdentifier": "00781",
                    "address": {
                      "country": {
                        "shortName": "CH"
                      }
                    }
                  }
                }
              }
              ```
          3. The bank account number (= nationalBankAccountIdentifier), bank code/number (= bank.nationalBankIdentifier) and the BIC (= internationalBankIdentifier):
              ```
              {
                "bankAccount": {
                  "nationalBankAccountIdentifier": "619278412000",
                  "bank" : {
                    "nationalBankIdentifier": "00781",
                    "internationalBankIdentifier": "KBSGCH22XXX"
                  }
                }
              }
              ```

        If IBAN is not present in the request it will be generated only if there
        is sufficient data:

        - countryCode

        - internationalBankIdentifier

        - nationalBankAccountIdentifier


        Or


        - internationalBankIdentifier

        - nationalBankIdentifier

        - nationalBankAccountIdentifier


        For the following countries the generation of the
        internationalBankAccountIdentifier (IBAN)

        is NOT supported in the current version:


        AL, BA, BE, BG, BI, BR, DJ, EE, EG, ES, FI, FO, FR, HU, IS, IT, LY, MC,
        ME, MK,

        MR, NO, PL, PT, RS, SC, SD, SI, SM, TL, TR


        The response will always contain the original BankAccount provided in
        the request and a curated version of it. For example:
              ```
              {
                "originalBankAccount": {
                  "internationalBankAccountIdentifier": "CH8800781619278412000"
                },
                "curatedBankAccount": {
                  "internationalBankAccountIdentifier": "CH8800781619278412000"
                  "nationalBankAccountIdentifier": "619278412000",
                  "bank" : {
                    "nationalBankIdentifier": "00781",
                    "address": {
                      "country": {
                        "shortName": "CH"
                      }
                    }
                  }
                }
              }
              ```

        If the given request does not provide one of the combinations of
        attributes described above, an ApiError will be returned:
              ```
              {
                "timestamp": "...",
                "message": "...",
                "error": "Bad Request",
                "path": "...",
                "status": 400
              }
              ```
        Message contains concatenated descriptions of all errors that occurred
        in the request.
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankAccountCurationRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountCurationResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /bankaccounts:
    post:
      tags:
        - Bank Account Verification
      summary: Upload Bank Accounts
      description: Upload a CSV file with bank account data to be analyzed by several jobs.
      parameters:
        - $ref: '#/components/parameters/contentLengthHeaderParam'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              description: Bank account data to be uploaded for batch confirmation.
              properties:
                file:
                  description: >-
                    CSV file with the following headers in the first line, order
                    does not matter, International Account ID, International
                    Bank ID, Country Code, National Bank ID, National Account
                    ID. Maximum file size is 100 MB.
                  type: string
                  format: binary
                  example: file_name.csv
      responses:
        '200':
          description: ID of the created bank account storage.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountStorageId'
            application/xml:
              schema:
                $ref: '#/components/schemas/BankAccountStorageId'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
  /bankaccounts/jobs/confirmation:
    post:
      tags:
        - Bank Account Verification
      summary: Start Batch Confirmation
      description: >-
        -> Start a job to confirm all bank accounts provided by a previously
        uploaded CSV file, identified by the storage ID in the request object or
        from bank accounts of business partners in given business partner
        storage.
      parameters: []
      requestBody:
        description: >-
          Identifies a previously uploaded CSV file with bank account data or
          business partner storage with bank accounts to confirm.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankAccountDataConfirmationJobStartRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/BankAccountDataConfirmationJobStartRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
            application/xml:
              schema:
                $ref: '#/components/schemas/Job'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
  /bankaccounts/jobs:
    get:
      tags:
        - Bank Account Verification
      summary: Poll Batch Confirmation Status
      description: Get the status (including progress, if running) of a given job.
      parameters:
        - name: jobId
          description: The ID of the bank account data job to get the status for.
          in: query
          schema:
            $ref: '#/components/schemas/JobId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
            application/xml:
              schema:
                $ref: '#/components/schemas/Job'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
  /bankaccounts/statistics:
    get:
      tags:
        - Bank Account Verification
      summary: List Bank Account Statistics
      description: >-
        -> Calculates statistics from a bank account database and provides
        information about whitelist records, whitelist bank accounts, country
        distribution, etc.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountStatistics'
            application/xml:
              schema:
                $ref: '#/components/schemas/BankAccountStatistics'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
  /fraudcases:
    get:
      tags:
        - Fraud Case Management
      summary: List Fraud Cases
      description: Display a page of Fraud Cases.
      parameters:
        - name: page
          description: The page index. The index of the first page is 0.
          in: query
          schema:
            type: integer
            default: 0
            example: '0'
        - name: pageSize
          description: Number of records listed on one page.
          in: query
          schema:
            type: integer
            default: 200
            example: '200'
        - name: sort
          description: Defines the attributes to sort by.
          in: query
          schema:
            type: string
            default: creationTimestamp
            example: '-dateOfAttack'
        - name: search
          description: The phrase that the query will look for.
          in: query
          schema:
            type: string
            example: phrase
        - name: classification
          description: Classification used to filter results.
          in: query
          schema:
            $ref: '#/components/schemas/FraudCaseClassification'
      responses:
        '200':
          description: Page of Fraud Cases
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudCasePage'
            application/xml:
              schema:
                $ref: '#/components/schemas/FraudCasePage'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
    post:
      tags:
        - Fraud Case Management
      summary: Create Fraud Case
      description: Create a new Fraud Case with the given data.
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            examples:
              createFraudCase:
                summary: Create fraud case
                value:
                  fraudCase:
                    dateOfAttack: <DATE_OF_ATTACK>
                    type: FAKE_DOCUMENT
                    description: description
                    internalComment: comment
                    confirmationState: CONFIRMED
                    businessPartnerName: ''
                    businessPartnerCountryCode: ''
                    businessPartnerLocality: ''
                    fraudsterEmail: <EMAIL_ADDRESS>
                    fraudsterPhone: ''
                    bankAccount:
                      internationalBankAccountIdentifier: ''
                      internationalBankIdentifier: ''
                      bankCountryCode: ''
                      nationalBankIdentifier: ''
                      nationalBankAccountIdentifier: ''
            schema:
              $ref: '#/components/schemas/FraudCaseRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/FraudCaseRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudCase'
            application/xml:
              schema:
                $ref: '#/components/schemas/FraudCase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
  /fraudcases/{fraudCaseId}:
    put:
      tags:
        - Fraud Case Management
      summary: Update Fraud Case
      description: Update a Fraud Case with the given data.
      parameters:
        - name: fraudCaseId
          description: ID of the Fraud Case that is being updated.
          in: path
          required: true
          schema:
            type: string
            example: oaRnfC1D1Q
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FraudCaseRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/FraudCaseRequest'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudCase'
            application/xml:
              schema:
                $ref: '#/components/schemas/FraudCase'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
    delete:
      tags:
        - Fraud Case Management
      summary: Delete Fraud Case
      description: Delete a Fraud Case with the given ID.
      parameters:
        - name: fraudCaseId
          description: ID of the Fraud Case that is about to be deleted.
          in: path
          required: true
          schema:
            type: string
            example: ID?
      responses:
        '200':
          description: Deleted
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
  /fraudcases/{fraudCaseId}/triggeralert:
    post:
      tags:
        - Fraud Case Management
      summary: Fraud Alert
      description: Broadcast a fraud alert for the given Fraud Case.
      parameters:
        - name: fraudCaseId
          description: ID of the Fraud Case that the alert is about
          in: path
          required: true
          schema:
            type: string
            example: oaRnfC1D1Q
      responses:
        '200':
          description: Alert triggered
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
  /fraudcases/statistics:
    get:
      tags:
        - Fraud Case Management
      summary: Fraud Cases Statistics
      description: Get statistics about the Fraud Cases.
      parameters: []
      responses:
        '200':
          description: Fraud Cases Statistics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudCasesStatistics'
            application/xml:
              schema:
                $ref: '#/components/schemas/FraudCasesStatistics'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '406':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiError'
  /bankaccountstorages/{storageId}/import:
    post:
      tags:
        - Bank Accounts
      summary: Import Bank Accounts
      description: >-
        -> Start a job to import bank account records from a previously uploaded
        CSV file, identified by the storage ID in the request object.
      parameters:
        - $ref: '#/components/parameters/bankAccountStorageId'
      requestBody:
        description: >-
          Identifies a previously uploaded CSV file with bank accounts to
          import. If the data transformation definition ID is provided, it will
          override the one defined in the storage and use it in the job.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankAccountImportJobRequest'
      responses:
        '200':
          description: Bank account import job started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountImportJob'
  /bankaccountstorages/{storageId}/import/{id}:
    get:
      tags:
        - Bank Accounts
      summary: Import Job Progress
      description: >-
        Get bank account import job progress. It contains information about
        request that started the job.
      parameters:
        - name: id
          description: Job ID.
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/JobId'
        - $ref: '#/components/parameters/bankAccountStorageId'
      responses:
        '200':
          description: Bank account import job results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountImportJob'
  /bankaccountstorages/{storageId}/bankaccounts:
    parameters:
      - $ref: '#/components/parameters/bankAccountStorageId'
    get:
      parameters:
        - $ref: '#/components/parameters/startAfterBankAccountId'
        - name: limit
          in: query
          description: >-
            Number of results that should be fetched. Maximum 100 results can be
            returned in one page.
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            format: int32
            default: 100
            example: '100'
      x-wsdl: true
      tags:
        - Bank Account Storages Management
      summary: List Bank Accounts
      description: List bank accounts from a bank account storage in batches.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountsPage'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
    put:
      tags:
        - Bank Account Storages Management
      summary: Upsert Bank Accounts
      description: >
        Upsert bank accounts into bank account storage in batches. Maximum of
        1000 bank accounts are allowed per batch.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankAccountsUpsertRequest'
        description: BusinessPartnersUpsertRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountsUpsertResult'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /bankaccountstorages/{storageId}/bankaccounts/rawdata:
    parameters:
      - $ref: '#/components/parameters/bankAccountStorageId'
    put:
      tags:
        - Bank Account Storages Management
      summary: Upsert Raw Bank Accounts
      description: >
        Upsert bank accounts into bank account storage in batches. Maximum of
        1000 bank accounts are allowed per batch.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RawBankAccountsUpsertRequest'
        description: BusinessPartnersUpsertRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountsUpsertResult'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /bankaccountstorages/{storageId}/datamonitors:
    parameters:
      - name: storageId
        description: Unique identifier of the BankAccountStorage.
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/BankAccountStorageId'
    get:
      parameters:
        - $ref: '#/components/parameters/startAfter'
        - $ref: '#/components/parameters/limit'
      tags:
        - Bank Account Storage Data Monitors
      summary: List Bank Account Storage Data Monitors
      description: List all Data Monitors of the give Bank Account Storage.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataMonitorsPage'
          description: OK
    post:
      tags:
        - Bank Account Storage Data Monitors
      summary: Create Data Monitor
      description: >
        Create a new Bank Account Storage Data monitor.


        Data monitor is a concept for asynchronous processing of data.


        Data monitors should be unique by a pair: `bankAccountStorageId` +
        `type`.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataMonitorCreate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataMonitor'
          description: OK
  /bankaccountstorages/{storageId}/datamonitors/{dataMonitorId}:
    parameters:
      - name: storageId
        description: Unique identifier of the Bank Account Storage.
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/BankAccountStorageId'
      - name: dataMonitorId
        description: Unique ID of a Bank Account Storage Data Monitor.
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/DataMonitorId'
    put:
      tags:
        - Bank Account Storage Data Monitors
      summary: Update Data Monitor
      description: |
        Possibility to update fields of the Bank Account Storage Data Monitor.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataMonitorUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataMonitorUpsertsResult'
          description: OK
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
    get:
      tags:
        - Bank Account Storage Data Monitors
      summary: Read Data Monitor
      description: >
        Get a Data Monitor for specific Bank Account Storage based on provided
        ID.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataMonitor'
          description: OK
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
    delete:
      tags:
        - Bank Account Storage Data Monitors
      summary: Delete Data Monitor
      description: Delete a data monitor for specific Bank Account Storage.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataMonitorDeleteResult'
          description: OK
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
  /files/upload:
    post:
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileUploadRequest'
      tags:
        - Files
      summary: Request File Upload
      description: Create a file in S3 using returned upload link.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileUploadResponse'
components:
  parameters:
    AleiPrefix:
      name: aleiPrefix
      description: Alei Prefix
      in: path
      required: true
      schema:
        type: string
        example: DE.GCB
    LoadMetadata:
      name: loadMetadata
      description: Determines if metadata needs to be loaded
      in: query
      required: false
      schema:
        type: boolean
        example: true
    usernameHeaderParam:
      name: X-Credential-Username
      description: >
        Username that is passed as header parameter with the name
        X-Credential-Username.

        The header can take form of:
          * username (e.g. "johndoe")
          * user id (e.g. "87b1bdb1-ba87-4522-b363-c5a0e6e917b3")
      in: header
      required: true
      schema:
        type: string
        example: 87b1bdb1-ba87-4522-b363-c5a0e6e917b3
    contentLengthHeaderParam:
      name: Content-Length
      description: >
        The HTTP Content-Length header indicates the size, in bytes, of the
        message body sent to the recipient.
      in: header
      required: true
      schema:
        type: integer
        format: int64
        minimum: 0
        maximum: 1048576
        example: 256
    pageSize:
      name: pageSize
      in: query
      description: >-
        Number of results that should be fetched. Maximum 100 results can be
        returned in one page.
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        format: int32
        default: 100
        example: '100'
    page:
      name: page
      in: query
      description: Number of page.
      required: false
      schema:
        type: integer
        minimum: 0
        format: int32
        default: 0
        example: '0'
    startAfter:
      name: startAfter
      in: query
      description: Indicator for the next page.
      required: false
      schema:
        type: string
        example: 5c6a2c7e-9b0a-4e1a-8b0a-4e1a8b0a4e1a
    limit:
      name: limit
      in: query
      description: >-
        Number of results that should be fetched. Maximum 100 results can be
        returned in one page.
      required: false
      schema:
        type: integer
        format: int32
        default: 50
        minimum: 1
        maximum: 100
        example: '50'
    bankAccountStorageId:
      name: storageId
      description: ID of the bank account storage.
      in: path
      required: true
      schema:
        type: string
        pattern: ^[a-fA-F0-9]{24}$
        example: 652697d8eb91545eb14e64e6
    startAfterBankAccountId:
      name: startAfter
      description: ID of the first bank account.
      in: query
      required: false
      schema:
        type: string
        pattern: ^[a-fA-F0-9]{24}$
        example: 652697d8eb91545eb14e64e6
    bankAccountStorageReadFeaturesOn:
      name: featuresOn
      in: query
      required: false
      description: >
        A list of optional feature flags that specify additional details to
        include in the response. 

        Use this to enrich the returned bank account storage data with extra
        computed or summary fields.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/BankAccountStorageReadFeatureParam'
    startAfterQueryParam:
      name: startAfter
      description: >-
        [Pagination](https://developer.cdq.com/documentation/developer-guidelines/#pagination)
        cursor which should be filled with nextStartAfter value provided in the
        previous page read response.
      in: query
      required: false
      schema:
        type: string
        example: NjI4ZGNkZjAzYjlkMjY4NjhlNjQxNDRm
    limitQueryParam:
      name: limit
      description: Number of resources to be returned on the page.
      in: query
      required: false
      schema:
        type: integer
        format: int32
        minimum: 1
        default: 500
        example: '200'
  schemas:
    BankAccountConfirmationRequest:
      type: object
      description: A request to check if a BankAccount is trustworthy.
      required:
        - bankAccount
      properties:
        bankAccount:
          $ref: '#/components/schemas/BankAccount'
    BankAccountConfirmationResponse:
      type: object
      description: >-
        -> The confirmation response that contains the original request and
        depending on check a confirmed bank account with details of usage, a
        related fraud case or nothing.
      properties:
        bankAccountRequest:
          $ref: '#/components/schemas/BankAccount'
        bankAccountConfirmed:
          $ref: '#/components/schemas/BankAccount'
        numberOfCompanies:
          type: integer
          description: Number of companies that use this bank account.
          example: '5'
        numberOfPayments:
          type: integer
          description: Sum of payments performed by companies that use this bank account.
          example: '42'
        lastPaymentAt:
          type: string
          format: date
          description: >-
            Date of last payment made by any of the companies that use this bank
            account.
          example: '2025-10-14T07:32:28Z'
        trustScore:
          type: integer
          description: >-
            Trust score based on the number of payments done with this bank
            account.
          example: '7'
        bankAccountOwners:
          type: array
          description: Five frequentest bank account owner names.
          items:
            $ref: '#/components/schemas/BankAccountOwner'
        associatedFraudCases:
          type: array
          description: List of fraud cases associated with the bank account.
          items:
            $ref: '#/components/schemas/FraudCase'
    FraudCasePage:
      type: object
      description: Page of fraud cases.
      properties:
        page:
          type: integer
          description: The page index. The index of the first page is 0.
          example: '0'
        pageSize:
          type: integer
          description: Number of records listed on one page.
          example: '20'
        numberOfPages:
          type: integer
          description: Total number of pages.
          example: '10'
        recordCount:
          type: integer
          format: int64
          description: Total number of records.
          example: '2000'
        sortField:
          type: string
          description: The field used for sorting.
          example: dateOfAttack
        ascending:
          type: boolean
          description: Sort order.
          example: 'true'
        fraudCases:
          type: array
          description: List of fraud cases.
          items:
            $ref: '#/components/schemas/FraudCase'
    FraudCase:
      type: object
      description: >-
        -> Represents a fraud case with properties such as the unique identifier
        of the case, its version, the date of the attack, and the type of the
        fraud case.
      properties:
        cdlId:
          type: string
          description: Unique identifier of the fraud case.
          example: oaRnfC1D1Q
        version:
          type: integer
          format: int64
          description: Version of the fraud case.
          example: '1'
        dateOfAttack:
          type: string
          format: offset-date-time
          description: Date of the attack.
          example: '1662010915'
        type:
          $ref: '#/components/schemas/FraudCaseType'
        description:
          type: string
          description: Description of the fraud case.
          example: Fraud case description
        internalComment:
          type: string
          description: Internal comment of the fraud case.
          example: Internal comment
        confirmationState:
          $ref: '#/components/schemas/ConfirmationState'
        classification:
          required: true
          $ref: '#/components/schemas/FraudCaseClassificationParam'
        businessPartnerName:
          $ref: '#/components/schemas/NameValue'
        businessPartnerCountryCode:
          $ref: '#/components/schemas/CountryShortName'
        businessPartnerLocality:
          $ref: '#/components/schemas/LocalityValue'
        fraudsterEmail:
          type: string
          description: Email of the fraudster.
          example: thisisnot@fraud.com
        fraudsterPhone:
          type: string
          description: Phone of the fraudster.
          example: '+49123456789'
        fraudsterWebsite:
          type: string
          description: Website of the fraudster.
          example: www.thisisnotafraud.com
        alternativePayee:
          type: string
          description: Alternative payee of the fraud case.
          example: Alternative payee's name
        bankAccount:
          $ref: '#/components/schemas/BankAccount'
        archived:
          type: boolean
          description: Indicates if the fraud case is archived.
          example: 'false'
        alertTriggered:
          type: boolean
          description: Indicates if an alert was triggered.
          example: 'false'
        createdAt:
          type: string
          format: offset-date-time
          description: Creation timestamp of the fraud case.
          example: '1662010915'
        creatorOrganization:
          type: string
          description: Creator organization of the fraud case.
          example: Organization name
        createdBy:
          type: string
          description: Creator user of the fraud case.
          example: User name
        disclosedAttributes:
          type: array
          description: |
            Available disclosed attributes:
              * `BANKACCOUNT_BANK_COUNTRY_CODE`: Bank account bank country code.
              * `BANKACCOUNT_BANK_NAME`: Bank account bank name.
              * `BANKACCOUNT_INTERNATIONAL_BANK_IDENTIFIER`: Bank account international bank identifier.
              * `BANKACCOUNT_INTERNATIONAL_BANK_ACCOUNT_IDENTIFIER`: Bank account international bank account identifier.
              * `BANKACCOUNT_NATIONAL_BANK_IDENTIFIER`: Bank account national bank identifier.
              * `BANKACCOUNT_NATIONAL_BANK_ACCOUNT_IDENTIFIER`: Bank account national bank account identifier.
              * `FRAUDCASE_CDL_ID`: Fraud case CDL ID.
              * `FRAUDCASE_ALTERNATIVE_PAYEE`: Fraud case alternative payee.
              * `FRAUDCASE_BUSINESS_PARTNER_NAME`: Fraud case business partner name.
              * `FRAUDCASE_BUSINESS_PARTNER_COUNTRY_CODE`: Fraud case business partner country code.
              * `FRAUDCASE_BUSINESS_PARTNER_LOCALITY`: Fraud case business partner locality.
              * `FRAUDCASE_DATE_OF_ATTACK`: Fraud case date of attack.
              * `FRAUDCASE_CREATION_TIMESTAMP`: Fraud case creation timestamp.
              * `FRAUDCASE_DESCRIPTION`: Fraud case description.
              * `FRAUDCASE_INTERNAL_COMMENT`: Fraud case internal comment.
              * `FRAUDCASE_FRAUDSTER_EMAIL`: Fraud case fraudster email.
              * `FRAUDCASE_FRAUDSTER_PHONE`: Fraud case fraudster phone.
              * `FRAUDCASE_FRAUDSTER_WEBSITE`: Fraud case fraudster website.
              * `FRAUDCASE_TYPE`: Fraud case type.
              * `FRAUDCASE_CONFIRMATION_STATE`: Fraud case confirmation state.
              * `FRAUDCASE_CREATOR_ORGANIZATION`: Fraud case creator organization.
              * `FRAUDCASE_CREATOR_USER`: Fraud case creator user.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_BANK_NAME`: Fraud case disclosed attributes bank account bank name.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_BANK_COUNTRY_CODE`: Fraud case disclosed attributes bank account bank country code.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_INTERNATIONAL_BANK_IDENTIFIER`: Fraud case disclosed attributes bank account international bank identifier.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_INTERNATIONAL_BANK_ACCOUNT_IDENTIFIER`: Fraud case disclosed attributes bank account international bank account identifier.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_NATIONAL_BANK_IDENTIFIER`: Fraud case disclosed attributes bank account national bank identifier.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_NATIONAL_BANK_ACCOUNT_IDENTIFIER`: Fraud case disclosed attributes bank account national bank account identifier.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_ALTERNATIVE_PAYEE`: Fraud case disclosed attributes fraud case alternative payee.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_BUSINESS_PARTNER_NAME`: Fraud case disclosed attributes fraud case business partner name.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_BUSINESS_PARTNER_COUNTRY_CODE`: Fraud case disclosed attributes fraud case business partner country code.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_BUSINESS_PARTNER_LOCALITY`: Fraud case disclosed attributes fraud case business partner locality.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_DATE_OF_ATTACK`: Fraud case disclosed attributes fraud case date of attack.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CREATION_TIMESTAMP`: Fraud case disclosed attributes fraud case creation timestamp.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_DESCRIPTION`: Fraud case disclosed attributes fraud case description.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_FRAUDSTER_EMAIL`: Fraud case disclosed attributes fraud case fraudster email.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_FRAUDSTER_PHONE`: Fraud case disclosed attributes fraud case fraudster phone.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_FRAUDSTER_WEBSITE`: Fraud case disclosed attributes fraud case fraudster website.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_TYPE`: Fraud case disclosed attributes fraud case type.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CONFIRMATION_STATE`: Fraud case disclosed attributes fraud case confirmation state.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CREATOR_ORGANIZATION`: Fraud case disclosed attributes fraud case creator organization.
              * `FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CREATOR_USER`: Fraud case disclosed attributes fraud case creator user.
          items:
            $ref: '#/components/schemas/DisclosedAttributesParam'
        relatedFraudCases:
          type: integer
          format: int64
          description: Number of related fraud cases.
          example: '5'
    FraudCaseType:
      type: string
      description: |
        Fraud case type. Available options:
          * `ACTIVE_WARNING`: Active warning.
          * `ANNOUNCEMENT`: Announcement. 
          * `FAKE_DOCUMENT`: Fake document.
          * `FAKE_EMAIL`: Fake email.
          * `FAKE_PRESIDENT_CALL`: Fake president call.
          * `FALSIFIED_INVOICE`: Falsified invoice.
      example: ACTIVE_WARNING
    ConfirmationState:
      type: string
      description: |
        Confirmation state. Available options:
          * `CONFIRMED`: Confirmed.
          * `SUSPECTED`: Suspected.
      example: CONFIRMED
    DisclosedAttributesParam:
      type: string
      description: Disclosed attribute of the fraud case.
      example: BANKACCOUNT_BANK_NAME
      enum:
        - BANKACCOUNT_BANK_COUNTRY_CODE
        - BANKACCOUNT_BANK_NAME
        - BANKACCOUNT_INTERNATIONAL_BANK_IDENTIFIER
        - BANKACCOUNT_INTERNATIONAL_BANK_ACCOUNT_IDENTIFIER
        - BANKACCOUNT_NATIONAL_BANK_IDENTIFIER
        - BANKACCOUNT_NATIONAL_BANK_ACCOUNT_IDENTIFIER
        - FRAUDCASE_CDL_ID
        - FRAUDCASE_ALTERNATIVE_PAYEE
        - FRAUDCASE_BUSINESS_PARTNER_NAME
        - FRAUDCASE_BUSINESS_PARTNER_COUNTRY_CODE
        - FRAUDCASE_BUSINESS_PARTNER_LOCALITY
        - FRAUDCASE_DATE_OF_ATTACK
        - FRAUDCASE_CREATION_TIMESTAMP
        - FRAUDCASE_DESCRIPTION
        - FRAUDCASE_INTERNAL_COMMENT
        - FRAUDCASE_FRAUDSTER_EMAIL
        - FRAUDCASE_FRAUDSTER_PHONE
        - FRAUDCASE_FRAUDSTER_WEBSITE
        - FRAUDCASE_TYPE
        - FRAUDCASE_CONFIRMATION_STATE
        - FRAUDCASE_CREATOR_ORGANIZATION
        - FRAUDCASE_CREATOR_USER
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_BANK_NAME
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_BANK_COUNTRY_CODE
        - >-
          FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_INTERNATIONAL_BANK_IDENTIFIER
        - >-
          FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_INTERNATIONAL_BANK_ACCOUNT_IDENTIFIER
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_NATIONAL_BANK_IDENTIFIER
        - >-
          FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_NATIONAL_BANK_ACCOUNT_IDENTIFIER
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_ALTERNATIVE_PAYEE
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_BUSINESS_PARTNER_NAME
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_BUSINESS_PARTNER_COUNTRY_CODE
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_BUSINESS_PARTNER_LOCALITY
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_DATE_OF_ATTACK
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CREATION_TIMESTAMP
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_DESCRIPTION
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_FRAUDSTER_EMAIL
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_FRAUDSTER_PHONE
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_FRAUDSTER_WEBSITE
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_TYPE
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CONFIRMATION_STATE
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CREATOR_ORGANIZATION
        - FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CREATOR_USER
      x-enumDescriptions:
        BANKACCOUNT_BANK_COUNTRY_CODE: Bank account bank country code.
        BANKACCOUNT_BANK_NAME: Bank account bank name.
        BANKACCOUNT_INTERNATIONAL_BANK_IDENTIFIER: Bank account international bank identifier.
        BANKACCOUNT_INTERNATIONAL_BANK_ACCOUNT_IDENTIFIER: Bank account international bank account identifier.
        BANKACCOUNT_NATIONAL_BANK_IDENTIFIER: Bank account national bank identifier.
        BANKACCOUNT_NATIONAL_BANK_ACCOUNT_IDENTIFIER: Bank account national bank account identifier.
        FRAUDCASE_CDL_ID: Fraud case CDL ID.
        FRAUDCASE_ALTERNATIVE_PAYEE: Fraud case alternative payee.
        FRAUDCASE_BUSINESS_PARTNER_NAME: Fraud case business partner name.
        FRAUDCASE_BUSINESS_PARTNER_COUNTRY_CODE: Fraud case business partner country code.
        FRAUDCASE_BUSINESS_PARTNER_LOCALITY: Fraud case business partner locality.
        FRAUDCASE_DATE_OF_ATTACK: Fraud case date of attack.
        FRAUDCASE_CREATION_TIMESTAMP: Fraud case creation timestamp.
        FRAUDCASE_DESCRIPTION: Fraud case description.
        FRAUDCASE_INTERNAL_COMMENT: Fraud case internal comment.
        FRAUDCASE_FRAUDSTER_EMAIL: Fraud case fraudster email.
        FRAUDCASE_FRAUDSTER_PHONE: Fraud case fraudster phone.
        FRAUDCASE_FRAUDSTER_WEBSITE: Fraud case fraudster website.
        FRAUDCASE_TYPE: Fraud case type.
        FRAUDCASE_CONFIRMATION_STATE: Fraud case confirmation state.
        FRAUDCASE_CREATOR_ORGANIZATION: Fraud case creator organization.
        FRAUDCASE_CREATOR_USER: Fraud case creator user.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_BANK_NAME: Fraud case disclosed attributes bank account bank name.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_BANK_COUNTRY_CODE: Fraud case disclosed attributes bank account bank country code.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_INTERNATIONAL_BANK_IDENTIFIER: >-
          Fraud case disclosed attributes bank account international bank
          identifier.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_INTERNATIONAL_BANK_ACCOUNT_IDENTIFIER: >-
          Fraud case disclosed attributes bank account international bank
          account identifier.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_NATIONAL_BANK_IDENTIFIER: Fraud case disclosed attributes bank account national bank identifier.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_BANKACCOUNT_NATIONAL_BANK_ACCOUNT_IDENTIFIER: >-
          Fraud case disclosed attributes bank account national bank account
          identifier.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_ALTERNATIVE_PAYEE: Fraud case disclosed attributes fraud case alternative payee.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_BUSINESS_PARTNER_NAME: Fraud case disclosed attributes fraud case business partner name.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_BUSINESS_PARTNER_COUNTRY_CODE: >-
          Fraud case disclosed attributes fraud case business partner country
          code.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_BUSINESS_PARTNER_LOCALITY: Fraud case disclosed attributes fraud case business partner locality.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_DATE_OF_ATTACK: Fraud case disclosed attributes fraud case date of attack.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CREATION_TIMESTAMP: Fraud case disclosed attributes fraud case creation timestamp.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_DESCRIPTION: Fraud case disclosed attributes fraud case description.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_FRAUDSTER_EMAIL: Fraud case disclosed attributes fraud case fraudster email.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_FRAUDSTER_PHONE: Fraud case disclosed attributes fraud case fraudster phone.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_FRAUDSTER_WEBSITE: Fraud case disclosed attributes fraud case fraudster website.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_TYPE: Fraud case disclosed attributes fraud case type.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CONFIRMATION_STATE: Fraud case disclosed attributes fraud case confirmation state.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CREATOR_ORGANIZATION: Fraud case disclosed attributes fraud case creator organization.
        FRAUDCASE_DISCLOSED_ATTRIBUTES_FRAUDCASE_CREATOR_USER: Fraud case disclosed attributes fraud case creator user.
    RawBankAccountsData:
      type: array
      items:
        $ref: '#/components/schemas/RawBankAccountData'
    BankAccountsUpsertStatus:
      type: object
      description: Status of the bank accounts upsert task.
      properties:
        status:
          type: string
          description: Status of the task.
          example: FINISHED
          enum:
            - STARTED
            - FINISHED
            - FAILED
          x-enumDescriptions:
            STARTED: The task has started.
            FINISHED: The task has finished.
            FAILED: The task has failed.
    BankDataSourceDeleteResult:
      type: object
      description: Delete Bank Data Sources result
      properties:
        aleiPrefix:
          $ref: '#/components/schemas/AleiPrefix'
        status:
          type: string
          description: Status of deletion
          example: OK
          enum:
            - OK
            - NOT_FOUND
          x-enumDescriptions:
            OK: Bank Data Source was deleted.
            NOT_FOUND: Bank Data Source was deleted, because it cannot be found.
    BankDataSource:
      type: object
      description: Bank Data Source
      properties:
        id:
          $ref: '#/components/schemas/BankDataSourceId'
        aleiPrefix:
          $ref: '#/components/schemas/AleiPrefix'
        name:
          $ref: '#/components/schemas/BankDataSourceName'
        description:
          $ref: '#/components/schemas/BankDataSourceDescription'
        resource:
          $ref: '#/components/schemas/BankDataSourceResource'
        licence:
          $ref: '#/components/schemas/BankDataSourceLicence'
        classification:
          $ref: '#/components/schemas/BankDataSourceClassification'
    BankDataSourceId:
      type: string
      description: Data source id
      example: 507f1f77bcf86cd799439011
    AleiPrefix:
      type: string
      description: Data source alei prefix
      example: DE.GCB
    BankDataSourceName:
      type: string
      description: Name of the data source
      example: German bank sort code register
    BankDataSourceDescription:
      type: string
      description: Description of the data source
      example: Register of bank sort codes in Germany provided by Deutsche Bundesbank
    BankDataSourceResource:
      type: object
      description: Information required for processing resource
      properties:
        type:
          $ref: '#/components/schemas/ResourceType'
        format:
          $ref: '#/components/schemas/ResourceFormat'
        baseUri:
          $ref: '#/components/schemas/ResourceBaseUri'
        website:
          $ref: '#/components/schemas/ResourceWebsite'
        scheduledAt:
          $ref: '#/components/schemas/ResourceScheduledAt'
    ResourceType:
      type: string
      description: Type of resource
      example: FILE
      enum:
        - FILE
        - WEBSITE
        - API
      x-enumDescriptions:
        FILE: Resource is a file stored at CDQ side.
        WEBSITE: Resource is a website that needs to be crawled.
        API: Resource is an API.
    ResourceFormat:
      type: string
      description: Format of resource
      example: CSV
      enum:
        - CSV
        - XLSX
        - JSON
        - XML
        - PDF
        - HTML
      x-enumDescriptions:
        CSV: >-
          A plain text format used to store tabular data, where values are
          separated by commas.
        XLSX: >-
          A Microsoft Excel file format that stores spreadsheets with support
          for formulas, charts, and formatting.
        JSON: >-
          A lightweight data interchange format that uses human-readable text to
          transmit data objects consisting of attribute-value pairs.
        XML: >-
          A markup language that defines rules for encoding documents in a
          format that is both human-readable and machine-readable.
        PDF: >-
          A versatile file format developed by Adobe that preserves document
          formatting and is widely used for sharing and printing documents.
        HTML: >-
          The standard markup language used to create and design web pages,
          structuring content on the internet.
    ResourceBaseUri:
      type: string
      description: URI of resource
      example: >-
        https://www.bundesbank.de/resource/blob/926192/78739d2ee16e22585dcf714900e479f3/472B63F073F071307366337C94F8C870/blz-aktuell-csv-data.csv
    ResourceWebsite:
      type: string
      description: Website of resource
      example: >-
        https://www.bundesbank.de/resource/blob/926192/78739d2ee16e22585dcf714900e479f3/472B63F073F071307366337C94F8C870/blz-aktuell-csv-data.csv
    ResourceScheduledAt:
      type: string
      description: CRON expression to schedule regular imports
      example: 0 0 * * 6,0
    BankDataSourceLicence:
      type: object
      description: Licences of the data source
      properties:
        url:
          $ref: '#/components/schemas/LicenceUrl'
        legalApprovalAt:
          $ref: '#/components/schemas/LicenceLegalApprovalAt'
    LicenceUrl:
      type: string
      description: Url of the data source licence
      example: >-
        https://www.bundesbank.de/en/homepage/user-information/terms-of-use-642972
    LicenceLegalApprovalAt:
      type: string
      description: Date of approval for using the data source
      example: '2025-10-14T07:32:28Z'
    BankDataSourceClassification:
      type: object
      description: TBD
      properties:
        ownership:
          $ref: '#/components/schemas/ClassificationOwnership'
        completeness:
          $ref: '#/components/schemas/ClassificationCompleteness'
    ClassificationOwnership:
      type: string
      description: TBD
      example: TBD
    ClassificationCompleteness:
      type: string
      description: TBD
      example: TBD
    ApiError:
      type: object
      description: Detailed information about API errors.
      properties:
        id:
          type: string
          description: Unique identifier of the error.
          example: 5c6a2c7e-9b0a-4e1a-8b0a-4e1a8b0a4e1a
        timestamp:
          $ref: '#/components/schemas/ApiErrorTimestamp'
        message:
          $ref: '#/components/schemas/ApiErrorMessage'
        error:
          $ref: '#/components/schemas/HttpError'
        path:
          $ref: '#/components/schemas/HttpPath'
        status:
          $ref: '#/components/schemas/HttpStatus'
    BankDataLookupResponse:
      type: object
      description: Contains a list of bank data matches.
      properties:
        pageSize:
          $ref: '#/components/schemas/PageSize'
        totals:
          $ref: '#/components/schemas/PageTotal'
        page:
          $ref: '#/components/schemas/Page'
        values:
          type: array
          description: List of bank data matches.
          items:
            $ref: '#/components/schemas/BankLookupMatch'
    BankLookupMatch:
      type: object
      description: Contains the bank data and the matching profile.
      properties:
        cdqId:
          $ref: '#/components/schemas/CdqId'
        dataSource:
          $ref: '#/components/schemas/DataSourceResult'
        bank:
          $ref: '#/components/schemas/Bank'
        matchingProfile:
          $ref: '#/components/schemas/MatchingProfile'
    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'
        bank:
          $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. The higher the score, the better
        the match.
      properties:
        technicalKey:
          type: string
          description: >
            Define how good are the matches. Allowed values are: FULL_MATCH,
            MAYBE_MATCH, NO_MATCH.
          example: FULL_MATCH
        name:
          type: string
          description: Name of the Matching Classification.
          example: My Matching Configuration
    CdqId:
      type: string
      description: |
        Unique id which defines a Bank Entry with exactly one address.
        Pattern: `<data-source-alei>:<bank-id>-<address-id>`.
      example: VIES:543456-7820
    DataSourceResult:
      type: object
      description: Data Source of the Data Pool.
      properties:
        id:
          $ref: '#/components/schemas/DataSourceId'
        url:
          $ref: '#/components/schemas/DataSourceUrl'
        name:
          $ref: '#/components/schemas/DataSourceName'
        technicalKey:
          $ref: '#/components/schemas/DataSourceTechnicalKey'
    DataSourceId:
      type: string
      description: Unique identifier for a Data Source of the Storage.
      example: 648824a691d8d2503d65103e
    BankDataLookupRequest:
      type: object
      description: Request to lookup bank data.
      properties:
        bank:
          $ref: '#/components/schemas/BankLookupQuery'
        matchingThreshold:
          type: number
          format: double
          description: >
            The minimum matching score that a bank must have to be included in
            the result set. Default: 0.0.
          minimum: 0
          maximum: 1
          example: '0.5'
        maxCandidates:
          type: integer
          description: The maximum number of candidates that should be returned.
          minimum: 20
          maximum: 100
          example: '50'
        pageSize:
          type: integer
          description: >
            The number of results that should be fetched. Maximum 1000 results
            can be returned in one page. Default: 10.
          minimum: 1
          maximum: 1000
          example: '100'
        page:
          type: integer
          description: The number of page.
          default: 0
          minimum: 0
          example: '0'
    BankLookupQuery:
      type: object
      description: Query for bank lookup.
      properties:
        names:
          type: array
          description: List of bank names to search for.
          items:
            $ref: '#/components/schemas/NameQuery'
        identifiers:
          type: array
          description: List of bank identifiers to search for.
          items:
            $ref: '#/components/schemas/IdentifierQuery'
        addresses:
          type: array
          description: List of addresses to search for.
          items:
            $ref: '#/components/schemas/AddressQuery'
          minItems: 0
          maxItems: 1
    AddressQuery:
      type: object
      description: Query for address lookup.
      properties:
        thoroughfares:
          type: array
          description: List of thoroughfares to search for.
          items:
            $ref: '#/components/schemas/ThoroughfareQuery'
          minItems: 0
          maxItems: 1
        localities:
          type: array
          description: List of localities to search for.
          items:
            $ref: '#/components/schemas/LocalityQuery'
          minItems: 0
          maxItems: 1
        postCodes:
          type: array
          description: List of post codes to search for.
          items:
            $ref: '#/components/schemas/PostCodeQuery'
          minItems: 0
          maxItems: 1
        country:
          $ref: '#/components/schemas/CountryQuery'
    PostCodeQuery:
      type: object
      description: Query for post code lookup.
      properties:
        value:
          $ref: '#/components/schemas/PostCodeValueQuery'
    CountryQuery:
      type: object
      description: Query for country lookup.
      properties:
        shortName:
          $ref: '#/components/schemas/CountryShortNameQuery'
    ThoroughfareQuery:
      type: object
      description: Query for thoroughfare lookup.
      properties:
        value:
          $ref: '#/components/schemas/ThoroughfareValueQuery'
        number:
          $ref: '#/components/schemas/ThoroughfareNumberQuery'
    CountryShortNameQuery:
      type: string
      description: Short name of the country.
      example: DE
    PostCodeValueQuery:
      type: string
      description: The post code of the address.
      example: '59400'
    LocalityQuery:
      type: object
      description: Query for locality lookup.
      properties:
        value:
          $ref: '#/components/schemas/LocalityValueQuery'
    NameQuery:
      type: object
      description: Query for name lookup.
      properties:
        value:
          $ref: '#/components/schemas/NameValueQuery'
    IdentifierQuery:
      type: object
      description: Query for identifier lookup.
      properties:
        value:
          $ref: '#/components/schemas/IdentifierValueQuery'
        type:
          $ref: '#/components/schemas/IdentifierTypeQuery'
    ThoroughfareNumberQuery:
      type: string
      description: The number of the street.
      example: '12'
    ThoroughfareValueQuery:
      type: string
      description: The name of the street. It can contain the street number.
      example: Musterstraße 12
    IdentifierValueQuery:
      type: string
      description: Identifier Value.
      example: DEUTDEFF
    IdentifierTypeQuery:
      type: object
      description: Query for identifier type lookup.
      properties:
        technicalKey:
          $ref: '#/components/schemas/IdentifierTypeTechnicalKeyQuery'
    IdentifierTypeTechnicalKeyQuery:
      type: string
      description: Technical Key of the identifier.
      example: CH_VAT_ID
    NameValueQuery:
      type: string
      description: Name of the Bank.
      example: Deutsche Bank
    LocalityValueQuery:
      type: string
      description: Locality Value.
      example: Wrocław
    FraudCaseClassification:
      type: string
      description: Classification of the fraud case.
      example: STANDARD
      default: STANDARD
    FraudCaseClassificationParam:
      type: string
      description: Classification of the fraud case.
      example: STANDARD
      enum:
        - DEMO
        - TEST
        - CATENAX
        - STANDARD
      title: FraudCaseClassificationParamDesc
      x-enumDescriptions:
        DEMO: Create fraud case in Demo mode
        TEST: Create fraud case in Test mode
        CATENAX: Create fraud case for Catena-X community
        STANDARD: Create fraud case in standard mode
    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'
        bankCountryCode:
          $ref: '#/components/schemas/BankAccountCountryCode'
        nationalBankIdentifier:
          $ref: '#/components/schemas/NationalBankIdentifier'
        nationalBankAccountIdentifier:
          $ref: '#/components/schemas/NationalBankAccountIdentifier'
    BankAccountConfirmation:
      type: object
      description: Confirmation of a bank account.
      properties:
        bankAccountRequest:
          $ref: '#/components/schemas/BankAccount'
        bankAccountConfirmed:
          $ref: '#/components/schemas/BankAccount'
        scoreSum:
          type: integer
          description: Sum of the scores of the individual confirmations.
          example: '100'
        maxScores:
          type: array
          description: List of the maximum scores of the individual confirmations.
          items:
            $ref: '#/components/schemas/TrustScore'
        associatedFraudCases:
          type: array
          description: List of fraud cases associated with the bank account.
          items:
            $ref: '#/components/schemas/FraudCase'
    TrustScore:
      type: object
      description: Trust score of a bank account.
      properties:
        score:
          type: integer
          description: Trust score of the bank account.
          example: '100'
        lastUpdate:
          type: integer
          format: int64
          description: Last update of the trust score.
          example: '20240302'
        lastUpdateAsDate:
          type: string
          description: Last update of the trust score as date.
          example: '2025-10-14T07:32:28Z'
    FraudCaseRequest:
      type: object
      description: Request to create a fraud case.
      properties:
        fraudCase:
          $ref: '#/components/schemas/FraudCase'
    FraudCasesStatistics:
      type: object
      description: Statistics of fraud cases.
      properties:
        date:
          type: integer
          format: int64
          description: Date of the statistics generation.
          example: '20240302'
        cachedValue:
          type: boolean
          description: Indicates if the value is cached.
          example: 'false'
        numberOfAllFraudCases:
          type: integer
          format: int64
          description: Number of all fraud cases.
          example: '10'
        numberOfDisclosedFraudCases:
          type: integer
          format: int64
          description: Number of disclosed fraud cases.
          example: '10'
        numberOfUndisclosedFraudCases:
          type: integer
          format: int64
          description: Number of undisclosed fraud cases.
          example: '10'
        numberOfFraudCasesOfTheUsersOrganization:
          type: integer
          format: int64
          description: Number of fraud cases of the user's organization.
          example: '10'
        numberOfDisclosedFraudCasesOfTheUsersOrganization:
          type: integer
          format: int64
          description: Number of disclosed fraud cases of the user's organization.
          example: '10'
        numberOfUndisclosedFraudCasesOfTheUsersOrganization:
          type: integer
          format: int64
          description: Number of undisclosed fraud cases of the user's organization.
          example: '10'
    BankAccountDataConfirmationJobStartRequest:
      type: object
      description: Properties of bank account data confirmation job.
      properties:
        storageId:
          $ref: '#/components/schemas/BusinessPartnerStorageId'
        featuresOn:
          type: array
          description: |
            Features to be used during the confirmation job.
          items:
            $ref: '#/components/schemas/BankAccountDataConfirmationJobFeatureParam'
    WhitelistImportRecordResult:
      type: object
      description: Result of a whitelist import record.
      properties:
        whitelistRecord:
          $ref: '#/components/schemas/WhitelistRecord'
        errors:
          type: array
          description: List of errors.
          items:
            type: string
            description: Error message.
            example: Country code is invalid.
    Job:
      type: object
      description: Task executed based on set frequency (bi-weekly, monthly, quartarely).
      properties:
        id:
          $ref: '#/components/schemas/JobId'
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        user:
          $ref: '#/components/schemas/JobUser'
        progress:
          $ref: '#/components/schemas/JobProgress'
        status:
          $ref: '#/components/schemas/JobStatus'
    JobStatus:
      type: string
      description: Job execution status.
      example: RUNNING
      enum:
        - ARCHIVED
        - UNKNOWN
        - CREATED
        - PERSISTED
        - SCHEDULED
        - WAITING
        - COULDNT_START
        - RUNNING
        - CANCELED
        - FINISHED
        - FAILED
        - DIED
      x-enumDEscription:
        ARCHIVED: Job is archived.
        UNKNOWN: Job status is unknown.
        CREATED: Job is created.
        PERSISTED: Job is persisted.
        SCHEDULED: Job is scheduled.
        WAITING: Job is waiting.
        COULDNT_START: Job couldn't start.
        RUNNING: Job is running.
        CANCELED: Job is canceled.
        FINISHED: Job is finished.
        FAILED: Job failed.
        DIED: Job died.
    BankAccountStatistics:
      type: object
      description: Statistics of bank accounts.
      properties:
        timeStampCreated:
          type: integer
          format: int64
          description: Time stamp of the creation.
          example: '20240302'
        whitelistBankAccountCount:
          type: integer
          format: int64
          description: Count of the bank accounts in the whitelist.
          example: '10'
        whitelistTrustScoreCount:
          type: integer
          format: int64
          description: Count of the trust scores in the whitelist.
          example: '10'
        whitelistCountryBankAccountCounts:
          type: array
          description: List of the country bank account counts.
          items:
            $ref: '#/components/schemas/CountryCountEntry'
        whitelistCountryTrustScoreCounts:
          type: array
          description: List of the country trust score counts.
          items:
            $ref: '#/components/schemas/CountryCountEntry'
        whitelistTrustScoreMean:
          type: number
          format: double
          description: Mean of the trust scores in the whitelist.
          example: '0.5'
        whitelistTrustScore1Count:
          type: integer
          format: int64
          description: Count of the trust score 1 in the whitelist.
          example: '10'
        whitelistTrustScore2Count:
          type: integer
          format: int64
          description: Count of the trust score 2 in the whitelist.
          example: '10'
        whitelistTrustScore3Count:
          type: integer
          format: int64
          description: Count of the trust score 3 in the whitelist.
          example: '10'
        whitelistTrustScore4Count:
          type: integer
          format: int64
          description: Count of the trust score 4 in the whitelist.
          example: '10'
        whitelistBankAccountWith1TrustScoreCount:
          type: integer
          format: int64
          description: Count of the bank accounts with 1 trust score in the whitelist.
          example: '10'
        whitelistBankAccountWith2TrustScoresCount:
          type: integer
          format: int64
          description: Count of the bank accounts with 2 trust scores in the whitelist.
          example: '10'
        whitelistBankAccountWith3TrustScoresCount:
          type: integer
          format: int64
          description: Count of the bank accounts with 3 trust scores in the whitelist.
          example: '10'
        whitelistBankAccountWith4TrustScoresCount:
          type: integer
          format: int64
          description: Count of the bank accounts with 4 trust scores in the whitelist.
          example: '10'
        whitelistBankAccountWith5TrustScoresCount:
          type: integer
          format: int64
          description: Count of the bank accounts with 5 trust scores in the whitelist.
          example: '10'
        whitelistBankAccountWithMoreThan5TrustScoresCount:
          type: integer
          format: int64
          description: >-
            Count of the bank accounts with more than 5 trust scores in the
            whitelist.
          example: '10'
    CountryCountEntry:
      type: object
      description: Entry of the country count.
      properties:
        countryCode:
          $ref: '#/components/schemas/CountryShortName'
        count:
          type: integer
          format: int64
          description: Count of the country.
          example: '2'
    WhitelistRecord:
      type: object
      description: >-
        A whitelist record holds information that universally describes a
        registered bank account.
      required:
        - organization
        - bankAccount
        - numberOfPayments
        - lastPaymentAt
      properties:
        organization:
          $ref: '#/components/schemas/OrganizationName'
        bankAccount:
          $ref: '#/components/schemas/BankAccount'
        numberOfPayments:
          type: integer
          description: Number of payments.
          example: '10'
        lastPaymentAt:
          type: string
          format: date
          description: Last payment date.
          example: '2025-10-14T07:32:28Z'
        bankAccountOwner:
          $ref: '#/components/schemas/BankAccountOwner'
    BankAccountOwner:
      type: object
      description: Owner of a bank account.
      properties:
        name:
          $ref: '#/components/schemas/BankAccountOwnerName'
        lastPaymentAt:
          $ref: '#/components/schemas/BankAccountOwnerLastPaymentAt'
    BankAccountOwnerName:
      type: object
      description: Name of the bank account owner.
      properties:
        value:
          $ref: '#/components/schemas/UserId'
    BankAccountOwnerLastPaymentAt:
      type: object
      description: Last payment date of the bank account owner.
      properties:
        value:
          type: string
          format: offset-date-time
          description: Last payment date of the bank account owner.
          example: '2025-10-14T07:32:28Z'
    UpsertFailureLog:
      type: object
      description: >-
        -> Log of an upsert failure, containing properties such as the bank
        account and the failure message.
      properties:
        bankAccount:
          $ref: '#/components/schemas/BankAccount'
        message:
          type: string
          description: Failure message.
          example: This record could not be stored due to timeout.
    BankAccountStorage:
      type: object
      description: >-
        Contain the configuration parameters and metadata associated with the
        storage for bank account.
      properties:
        id:
          $ref: '#/components/schemas/BankAccountStorageId'
        name:
          $ref: '#/components/schemas/BankAccountStorageName'
        workspaceId:
          $ref: '#/components/schemas/WorkspaceId'
        organizationId:
          $ref: '#/components/schemas/OrganizationId'
        createdBy:
          $ref: '#/components/schemas/CreatedBy'
        createdAt:
          $ref: '#/components/schemas/CreatedAt'
        modifiedAt:
          $ref: '#/components/schemas/ModifiedAt'
        modifiedBy:
          $ref: '#/components/schemas/ModifiedBy'
        dataTransformationId:
          $ref: '#/components/schemas/DataTransformationId'
        sharingToWhitelist:
          $ref: '#/components/schemas/SharingToWhitelist'
        numberOfRecords:
          $ref: '#/components/schemas/NumberOfRecords'
    BankAccountStorageUpdate:
      type: object
      description: >-
        Modify the details of an existing bank account storage, including its
        name, data transformation ID, and sharing to whitelist status.
      properties:
        name:
          $ref: '#/components/schemas/BankAccountStorageName'
        dataTransformationId:
          $ref: '#/components/schemas/DataTransformationId'
        sharingToWhitelist:
          $ref: '#/components/schemas/SharingToWhitelist'
    BankAccountStorageReadFeatureParam:
      type: string
      description: |
        Enumeration of available feature flags that can be used in the API call.
      example: NUMBER_OF_TOTAL
      enum:
        - NUMBER_OF_TOTAL
      x-enumDescriptions:
        NUMBER_OF_TOTAL: >
          Requests the total number of records stored in the bank account
          storage.
    BankAccountStorageId:
      type: string
      description: >-
        Unique identifier of the Bank Account Storage. **Workspace could have
        only one Bank Account Storage**.
      example: 72d6900fce6b326088f5d9d91049e3e6
    BankAccountExternalId:
      type: string
      description: Unique identifier of a Bank Account in Client System.
      example: '123456789010'
    BankAccountStorageName:
      type: string
      description: Name of the bank account storage.
      maxLength: 50
      example: Custom Bank Account Name
    DataTransformationId:
      type: string
      description: >-
        The ID of an existing data transformation, which will be used to
        transform raw records into bank accounts.
      example: 72d6900fce6b326088f5d9d91049e3e6
    SharingToWhitelist:
      type: boolean
      description: >-
        Flag that indicates whether data from bank account storage is shared to
        whitelist.
      example: 'true'
    NumberOfRecords:
      type: integer
      format: int64
      description: Number of records present in given bank account storage.
      example: 50
    FileUploadRequest:
      type: object
      description: Request to upload a file to S3.
      required:
        - url
      properties:
        url:
          $ref: '#/components/schemas/UrlOfFileToUpload'
    UrlOfFileToUpload:
      type: string
      description: File name which will be uploaded to S3.
      example: bankaccountdata.csv
    FileUploadResponse:
      type: object
      description: Metadata of the file upload to S3.
      properties:
        url:
          $ref: '#/components/schemas/UrlOfFileUploaded'
        expiresAt:
          $ref: '#/components/schemas/ExpiresAt'
        uploadLink:
          $ref: '#/components/schemas/FileUploadLink'
        uploadMethod:
          $ref: '#/components/schemas/FileUploadMethod'
    UrlOfFileUploaded:
      type: string
      description: File name of the uploaded file to S3.
      example: bankaccountdata.csv
    FileUploadLink:
      type: string
      description: Link to which the file can be uploaded.
      example: >-
        https://s3.amazonaws.com/cdq-bucket/bankaccountdata.csv?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Expires=1234567890&Signature=exampleSignature
    FileUploadMethod:
      type: string
      description: HTTP method to be used for the file upload.
      example: PUT
    BankAccountImportJobRequest:
      type: object
      description: Request to import bank account data from a file.
      required:
        - url
      properties:
        url:
          type: string
          description: >-
            -> Url received in response from request to `/files/upload`
            endpoint. It is a file name of file uploaded to the storage with
            bank account data.
          example: bankaccountdata.csv
        featuresOn:
          type: array
          description: |
            Feature(s) to be used during the import job:
             * `CLEAR_STORAGE` - Removes all existing data in the storage before the file is imported.
          items:
            $ref: '#/components/schemas/BankAccountImportJobFeatureParam'
        dataTransformationDefinitionId:
          $ref: '#/components/schemas/DataTransformationId'
    BankAccountImportJobFeatureParam:
      type: string
      description: Features determining the behavior of the bank account import job.
      example: CLEAR_STORAGE
      enum:
        - CLEAR_STORAGE
        - MERGE_PAYMENTS
      x-enumDescriptions:
        CLEAR_STORAGE: Removes all existing data in the storage before the file is imported.
        MERGE_PAYMENTS: Consolidate transactions into bank accounts.
    BankAccountDataConfirmationJobFeatureParam:
      type: string
      description: >-
        Features determining data source of bank accounts to confirm during
        confirmation job.
      example: CONFIRM_BA_IN_BP_STORAGE
      enum:
        - CONFIRM_BA_IN_BP_STORAGE
        - DATA_MONITOR_REFRESH
      x-enumDescriptions:
        CONFIRM_BA_IN_BP_STORAGE: >-
          Confirm bank accounts of business partners stored in business partner
          storage.
        DATA_MONITOR_REFRESH: >-
          Confirm bank accounts stored in bank account storage for which data
          monitor was activated/updated.
    BankAccountImportJob:
      type: object
      description: Represents a bank account import job.
      properties:
        id:
          $ref: '#/components/schemas/BankAccountStorageId'
        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'
        parameters:
          $ref: '#/components/schemas/BankAccountImportJobRequest'
    BankAccountCurationRequest:
      type: object
      description: A request to curate a BankAccount.
      required:
        - bankAccount
      properties:
        bankAccount:
          $ref: '#/components/schemas/BankAccountCuration'
        featuresOn:
          type: array
          description: |
            Feature(s) to be used during curation:
             * `REMOVE_INVALID_VALUES` - Removes all invalid values (e.g. internationalBankIdentifier) during curation. By default, activated.
          items:
            $ref: '#/components/schemas/BankAccountCurationFeatureParam'
        featuresOff:
          type: array
          description: |
            Feature(s) to be used during curation:
             * `REMOVE_INVALID_VALUES` - Removes all invalid values (e.g. internationalBankIdentifier) during curation. By default, activated.
          items:
            $ref: '#/components/schemas/BankAccountCurationFeatureParam'
    BankAccountCurationFeatureParam:
      type: string
      description: Available curation feature.
      example: REMOVE_INVALID_VALUES
      enum:
        - REMOVE_INVALID_VALUES
      x-enumDescriptions:
        REMOVE_INVALID_VALUES: >-
          Removes all invalid values (e.g. internationalBankIdentifier) during
          curation.
    BankAccountCurationResponse:
      type: object
      description: >-
        The curation response that contains the original and the curated version
        of the bank account.
      properties:
        originalBankAccount:
          $ref: '#/components/schemas/BankAccountCuration'
        curatedBankAccount:
          $ref: '#/components/schemas/BankAccountCuration'
    BankAccountCuration:
      type: object
      description: A request to curate a BankAccount.
      properties:
        internationalBankAccountIdentifier:
          $ref: '#/components/schemas/InternationalBankAccountIdentifier'
        nationalBankAccountIdentifier:
          $ref: '#/components/schemas/NationalBankAccountIdentifier'
        bank:
          $ref: '#/components/schemas/BankCuration'
    BankCuration:
      type: object
      description: The curated bank where a curated bank account is established.
      properties:
        internationalBankIdentifier:
          $ref: '#/components/schemas/InternationalBankIdentifier'
        nationalBankIdentifier:
          $ref: '#/components/schemas/NationalBankIdentifier'
        nationalBankInstitutionCode:
          $ref: '#/components/schemas/NationalBankInstitutionCode'
        nationalBankSortCode:
          $ref: '#/components/schemas/NationalBankSortCode'
        nationalBankControlKey:
          $ref: '#/components/schemas/NationalBankControlKey'
        address:
          $ref: '#/components/schemas/BankAddressCuration'
    NationalBankInstitutionCode:
      type: string
      description: National Bank Institution Code.
      example: LOYD
    NationalBankSortCode:
      type: string
      description: National Bank Sort Code.
      example: '301883'
    NationalBankControlKey:
      type: string
      description: BankControlKey (SAP), NationalCheckDigits (SWIFT).
      example: '12'
    BankAddressCuration:
      type: object
      description: The bank where a bank account is established.
      properties:
        country:
          $ref: '#/components/schemas/Country'
    BankAccountsPage:
      type: object
      description: Page of a bank accounts.
      properties:
        startAfter:
          $ref: '#/components/schemas/StartAfter'
        limit:
          $ref: '#/components/schemas/Limit'
        total:
          $ref: '#/components/schemas/PageTotal'
        values:
          type: array
          description: List of bank accounts.
          items:
            $ref: '#/components/schemas/BankAccountV2'
        nextStartAfter:
          $ref: '#/components/schemas/NextStartAfter'
    BankAccountsUpsertRequest:
      type: object
      description: Request to upsert bank accounts.
      required:
        - bankAccounts
      properties:
        bankAccounts:
          type: array
          description: Batch of bank accounts.
          minItems: 1
          maxItems: 1000
          items:
            $ref: '#/components/schemas/BankAccountV2'
    BankAccountV2:
      type: object
      description: >
        Represents a standardized record of a bank account used within a
        business or data-sharing context.

        This object encapsulates all relevant information for identifying,
        validating, and analyzing a bank account, including both international
        and national identifiers, associated business partners data (payees),
        the bank institution details, and historical payment metadata used for
        trust scoring.
      allOf:
        - $ref: '#/components/schemas/schemas-BankAccount'
    BankAccountsUpsertResult:
      type: object
      description: Result of bank accounts upsert.
      properties:
        taskId:
          $ref: '#/components/schemas/TaskId'
    RawBankAccountsUpsertRequest:
      type: object
      description: Request to upsert raw bank accounts.
      required:
        - bankAccounts
      properties:
        bankAccounts:
          type: array
          description: Batch of bank accounts.
          minItems: 1
          maxItems: 1000
          items:
            $ref: '#/components/schemas/RawBankAccountData'
    RawBankAccountData:
      type: object
      description: Raw bank account data.
      properties:
        rawData:
          $ref: '#/components/schemas/RawData'
    RawData:
      type: object
      description: >-
        Raw data that will be modified by the transformation of id provided in
        bank account storage setting.
      additionalProperties: true
    ProcessingLogType:
      type: string
      description: Unique identifier of a bank account processing log type.
      example: TRUST_SCORE_LOG
    ProcessingLogTypeEnum:
      type: string
      description: Unique identifier of a bank account processing log type.
      example: TRUST_SCORE_LOG
      enum:
        - TRUST_SCORE_LOG
      x-enumDescriptions:
        TRUST_SCORE_LOG: Trust Score processing log identifier.
    ProcessingLogData:
      type: object
      description: Bank account processing log data.
      properties:
        processingLogType:
          $ref: '#/components/schemas/ProcessingLogType'
        bankAccountId:
          type: string
          description: Unique identifier of a Bank Account in BankAccountStorage
          example: 6491b674961b604fd1cd8a65
        bankAccountStorageId:
          $ref: '#/components/schemas/BankAccountStorageId'
        bankAccountExternalId:
          $ref: '#/components/schemas/BankAccountExternalId'
        resultData:
          $ref: '#/components/schemas/BankAccountProcessingLogResult'
        executedAt:
          type: string
          description: >-
            ISO 8601 representation of the timestamp when the result data was
            created.
          example: '2025-10-14T07:32:28Z'
    BankAccountProcessingLogResult:
      type: object
      description: >-
        -> The confirmation response that contains the original request and
        depending on check a confirmed bank account with details of usage, a
        related fraud case or nothing.
      properties:
        request:
          $ref: '#/components/schemas/BankAccount'
        bankAccount:
          $ref: '#/components/schemas/BankAccountV2'
        numberOfCompanies:
          type: integer
          description: Number of companies that use this bank account.
          example: '5'
        trustScore:
          type: integer
          description: >-
            Trust score based on the number of payments done with this bank
            account.
          example: '7'
        bankAccountOwners:
          type: array
          description: Five frequentest bank account owner names.
          items:
            type: object
            description: Owner of a bank account.
            properties:
              name:
                type: string
                description: Name of the bank account owner.
                example: John Doe
              lastPaymentAt:
                type: string
                format: offset-date-time
                description: Last payment date of the bank account owner.
                example: '2025-10-14T07:32:28Z'
        associatedFraudCases:
          type: array
          description: List of fraud cases associated with the bank account.
          items:
            $ref: '#/components/schemas/FraudCase'
    DataMonitor:
      type: object
      description: A monitoring service that can be activated for a Bank Account Storage.
      properties:
        id:
          $ref: '#/components/schemas/DataMonitorId'
        name:
          $ref: '#/components/schemas/DataMonitorName'
        type:
          $ref: '#/components/schemas/DataMonitorType'
        enabled:
          $ref: '#/components/schemas/DataMonitorToggle'
        createdAt:
          $ref: '#/components/schemas/DataMonitorCreatedAt'
        modifiedAt:
          $ref: '#/components/schemas/DataMonitorModifiedAt'
        disabledAt:
          $ref: '#/components/schemas/DataMonitorDisabledAt'
    DataMonitorCreate:
      type: object
      description: Create a new Data Monitor.
      required:
        - name
        - type
        - enabled
      properties:
        name:
          $ref: '#/components/schemas/DataMonitorName'
        type:
          $ref: '#/components/schemas/DataMonitorType'
        enabled:
          $ref: '#/components/schemas/DataMonitorToggle'
    DataMonitorUpdate:
      type: object
      description: |
        Data Monitor definition that is to be updated.

        Note: updating Data Monitor will overwrite all its available properties.
      properties:
        name:
          $ref: '#/components/schemas/DataMonitorName'
        enabled:
          $ref: '#/components/schemas/DataMonitorToggle'
    DataMonitorsPage:
      type: object
      description: Page with listed Data Monitors.
      properties:
        values:
          description: List of Data Monitors.
          example: '[ff864c7bfe38397b8c160bc624f97574, 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p]'
          items:
            $ref: '#/components/schemas/DataMonitor'
        limit:
          $ref: '#/components/schemas/Limit'
        startAfter:
          $ref: '#/components/schemas/StartAfter'
        nextStartAfter:
          $ref: '#/components/schemas/NextStartAfter'
        total:
          $ref: '#/components/schemas/PageTotal'
    DataMonitorCreatedAt:
      type: string
      description: Date in ISO-8601 format when data monitor was disabled.
      example: '2025-10-14T07:32:28Z'
    DataMonitorModifiedAt:
      type: string
      description: Date in ISO-8601 format when data monitor was disabled.
      example: '2025-10-14T07:32:28Z'
    DataMonitorDisabledAt:
      type: string
      description: Date in ISO-8601 format when data monitor was disabled.
      example: '2025-10-14T07:32:28Z'
    DataMonitorToggle:
      type: boolean
      description: The toggle used to enable or disable the Data Monitor.
      example: true
    DataMonitorId:
      type: string
      description: Unique identifier of Data Monitor.
      example: ff864c7bfe38397b8c160bc624f97574
    DataMonitorName:
      type: string
      description: Data Monitor name.
      example: Trust Score Data Monitor Name
    DataMonitorType:
      type: string
      description: Unique identifier of a Bank Account Storage Data Monitor type.
      example: TRUST_SCORE
      enum:
        - TRUST_SCORE
      x-enumDescriptions:
        TRUST_SCORE: To calculate Trust Score for Bank Accounts.
    DataMonitorUpsertsResult:
      type: object
      description: Result of the Data Monitor upsert.
      properties:
        updated:
          type: integer
          format: int32
          description: Number of updated Data Monitors.
          example: '1'
        failed:
          type: integer
          format: int32
          description: Number of failed updates.
          example: '1'
    DataMonitorDeleteResult:
      type: object
      description: Result of the Data Monitor upsert.
      properties:
        deleted:
          type: integer
          format: int32
          description: Number of deleted Data Monitors.
          example: '1'
        failed:
          type: integer
          format: int32
          description: Number of failed deletions.
          example: '1'
    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
    BankAccountCountryCode:
      type: string
      description: ISO code to identify the country a bank account is registered in.
      example: DE
    NationalBankIdentifier:
      type: string
      description: >-
        Bank identifier which is unique in a national context, i.e. for a
        country.
      example: '00781'
    NationalBankAccountIdentifier:
      type: string
      description: Identifier of a bank account in a national context, i.e. for a country.
      example: '619278412000'
    UserId:
      type: string
      description: Unique ID of a user.
      example: johndoe
    NameValue:
      type: string
      description: The actual name.
      example: Corporate Data Quality AG
    CountryShortName:
      type: string
      description: Country code (ISO 3166-1 alpha-2).
      example: CH
    LocalityValue:
      type: string
      description: Name of the [Locality](https://meta.cdq.com/Address/locality).
      example: Sankt Gallen
    ApiErrorTimestamp:
      type: string
      deprecated: true
      description: ISO 8601 representation of the timestamp.
      example: '2025-10-14T07:32:28Z'
    ApiErrorMessage:
      type: string
      deprecated: true
      description: Details about the error.
      example: This user is not allowed to access this service.
    HttpError:
      type: string
      description: RFC 7231 error which belongs to the status code.
      example: BAD_REQUEST
      deprecated: true
    HttpPath:
      type: string
      description: Requested path which caused this error.
      example: /v2/businesspartners/lookup
    HttpStatus:
      type: integer
      description: RFC 7231 status code for this error.
      example: '400'
      deprecated: true
    OrganizationId:
      type: string
      description: Uniquely identifying ID of the organization.
      example: cdq_monitor
    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-10-14T07:32:28Z'
    JobUser:
      type: string
      description: ID of (human) user or API key.
      example: 742429-234242-4343-232323
    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'
    NextStartAfter:
      type: string
      description: Provides a value to be used as a startAfter in next page request.
      example: '5712566172571652'
    Limit:
      type: integer
      description: Number of items per page.
      example: '100'
    PageTotal:
      description: Total number of items which can be paged.
      example: '67'
      type: integer
    PageSize:
      type: integer
      description: Number of items per page.
      example: '100'
      default: 10
      minimum: 1
      maximum: 1000
    Page:
      type: integer
      description: Current page number.
      example: '1'
      default: 0
      minimum: 0
    DataSourceUrl:
      type: string
      description: Documentation of the data source in the CDQ Wiki.
      example: https://meta.cdq.com/Data_source/BR.RF
    DataSourceName:
      type: string
      description: Name of the data source.
      example: Receita Federal Brazil
    DataSourceTechnicalKey:
      type: string
      description: Technical key of the data source.
      example: BR_RF
    BankNameShortName:
      type: string
      description: Abbreviated name of a bank.
      example: SNB
    BankNameTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the Bank Name
        Type.
      example: https://meta.cdq.com/Bank_account/bank/name/type
    BankNameTypeName:
      type: string
      description: Name of the Bank Name Type.
      example: Bank name acronym
    BankNameTypeTechnicalKey:
      type: string
      description: Technical key of the Bank Name Type.
      example: BANK_NAME_TYPE_ACRONYM
    BankNameType:
      type: object
      description: Type of the Bank Name.
      properties:
        url:
          $ref: '#/components/schemas/BankNameTypeUrl'
        name:
          $ref: '#/components/schemas/BankNameTypeName'
        technicalKey:
          $ref: '#/components/schemas/BankNameTypeTechnicalKey'
    BankNameValue:
      type: string
      description: Value of the Bank Name.
      example: Swiss National Bank
    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'
    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'
    BankNameVersion:
      type: object
      description: Specifies the version of a bank name in terms of language and charset.
      properties:
        charset:
          $ref: '#/components/schemas/CharacterSet'
        language:
          $ref: '#/components/schemas/Language'
    BankName:
      type: object
      description: Display name of the bank.
      properties:
        shortName:
          $ref: '#/components/schemas/BankNameShortName'
        type:
          $ref: '#/components/schemas/BankNameType'
        value:
          $ref: '#/components/schemas/BankNameValue'
        version:
          $ref: '#/components/schemas/BankNameVersion'
    BankContactEmailAddress:
      type: string
      description: An actual email address of the bank.
      example: info@cdq.com
    BankContactEmailTypeName:
      type: string
      description: Name of the Bank Contact Email Type.
      example: Bank contact email
    BankContactEmailTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the Bank
        Contact Email Type.
      example: https://meta.cdq.com/Bank_account/bank/contact/contact_email/type
    BankContactEmailTypeTechnicalKey:
      type: string
      description: Technical key of the Bank Contact Email Type.
      example: BANK_CONTACT_EMAIL_TYPE
    BankContactEmailType:
      type: object
      description: A type of a email address of the bank.
      properties:
        name:
          $ref: '#/components/schemas/BankContactEmailTypeName'
        url:
          $ref: '#/components/schemas/BankContactEmailTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/BankContactEmailTypeTechnicalKey'
    BankContactEmail:
      type: object
      description: Contact email address of a bank.
      properties:
        address:
          $ref: '#/components/schemas/BankContactEmailAddress'
        type:
          $ref: '#/components/schemas/BankContactEmailType'
    BankContactPhoneNumberCountryPrefix:
      type: string
      description: A country prefix of a bank phone number.
      example: '0041'
    BankContactPhoneNumberNumber:
      type: string
      description: A complete phone number of the bank without any country prefixes.
      example: 58 631 00 00
    BankContactPhoneNumberTypeName:
      type: string
      description: Name of the Bank Contact Phone Number Type.
      example: Bank contact phone number
    BankContactPhoneNumberTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the Bank
        Contact Phone Number Type.
      example: https://meta.cdq.com/Bank_account/bank/contact/phone_number/type
    BankContactPhoneNumberTypeTechnicalKey:
      type: string
      description: Technical key of the Bank Contact Phone Number Type.
      example: BANK_CONTACT_PHONE_TYPE_PHONE
    BankContactPhoneNumberType:
      type: object
      description: A type of the bank phone number.
      properties:
        name:
          $ref: '#/components/schemas/BankContactPhoneNumberTypeName'
        url:
          $ref: '#/components/schemas/BankContactPhoneNumberTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/BankContactPhoneNumberTypeTechnicalKey'
    BankContactPhoneNumberValue:
      type: string
      description: The actual complete bank phone number incl. country prefix.
      example: 0041 58 631 00 00
    BankContactPhoneNumber:
      type: object
      description: A phone number of a bank.
      properties:
        countryPrefix:
          $ref: '#/components/schemas/BankContactPhoneNumberCountryPrefix'
        number:
          $ref: '#/components/schemas/BankContactPhoneNumberNumber'
        type:
          $ref: '#/components/schemas/BankContactPhoneNumberType'
        value:
          $ref: '#/components/schemas/BankContactPhoneNumberValue'
    BankContactWebsiteUrl:
      type: string
      description: The actual URL of the bank's website.
      example: https://cdq.com
    BankContactWebsiteTypeName:
      type: string
      description: Name of the Bank Contact Website Type.
      example: Bank contact website
    BankContactWebsiteTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the Bank
        Contact Website Type.
      example: https://meta.cdq.com/Bank_account/bank/contact/website/type
    BankContactWebsiteTypeTechnicalKey:
      type: string
      description: Technical key of the Bank Contact Website Type.
      example: BANK_CONTACT_WEBSITE_TYPE
    BankContactWebsiteType:
      type: object
      description: A type of the bank's website.
      properties:
        name:
          $ref: '#/components/schemas/BankContactWebsiteTypeName'
        url:
          $ref: '#/components/schemas/BankContactWebsiteTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/BankContactWebsiteTypeTechnicalKey'
    BankContactWebsite:
      type: object
      description: Website related to the bank.
      properties:
        url:
          $ref: '#/components/schemas/BankContactWebsiteUrl'
        type:
          $ref: '#/components/schemas/BankContactWebsiteType'
    BankContact:
      type: object
      description: Bank contact information.
      properties:
        emails:
          type: array
          items:
            $ref: '#/components/schemas/BankContactEmail'
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/BankContactPhoneNumber'
        websites:
          type: array
          items:
            $ref: '#/components/schemas/BankContactWebsite'
    BankIdentifierTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the Bank
        Identifier Type.
      example: https://meta.cdq.com/Bank_account/bank/identifier/type
    BankIdentifierTypeName:
      type: string
      description: Name of the Bank Identifier Type.
      example: Bank SWIFT Code
    BankIdentifierTypeTechnicalKey:
      type: string
      description: Technical Key of the Bank Identifier Type.
      example: WR_BSC
    BankIdentifierType:
      type: object
      description: Type of the Bank Identifier.
      properties:
        url:
          $ref: '#/components/schemas/BankIdentifierTypeUrl'
        name:
          $ref: '#/components/schemas/BankIdentifierTypeName'
        technicalKey:
          $ref: '#/components/schemas/BankIdentifierTypeTechnicalKey'
    BankIdentifierValue:
      type: string
      description: The actual value of the bank identifier.
      example: CH1234567890123456789
    BankIssuingBodyName:
      type: string
      description: Name of the Bank Issuing Body.
      example: Bank Identifier Code
    BankIssuingBodyUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the Bank
        Issuing Body.
      example: https://meta.cdq.com/Bank_account/bank/identifier/issuing_body
    BankIssuingBodyTechnicalKey:
      type: string
      description: Technical Key of the Bank Issuing Body.
      example: BIC
    BankIssuingBody:
      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/BankIssuingBodyName'
        url:
          $ref: '#/components/schemas/BankIssuingBodyUrl'
        technicalKey:
          $ref: '#/components/schemas/BankIssuingBodyTechnicalKey'
    IdentifierStatusName:
      type: string
      description: Name of the Identifier Status.
      example: Active
    IdentifierStatusTechnicalKey:
      type: string
      description: Technical key of the Identifier Status.
      example: ACTIVE
    IdentifierStatus:
      type: object
      description: Status of the identifier.
      properties:
        name:
          $ref: '#/components/schemas/IdentifierStatusName'
        technicalKey:
          $ref: '#/components/schemas/IdentifierStatusTechnicalKey'
    BankIdentifier:
      type: object
      description: Identifies a bank in a given context uniquely.
      properties:
        type:
          $ref: '#/components/schemas/BankIdentifierType'
        value:
          $ref: '#/components/schemas/BankIdentifierValue'
        issuingBody:
          $ref: '#/components/schemas/BankIssuingBody'
        status:
          $ref: '#/components/schemas/IdentifierStatus'
    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'
    CountryValue:
      type: string
      description: Country name (ISO 3166-1 alpha-2).
      example: Switzerland
    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
    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'
    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/AdministrativeAreaType'
        language:
          $ref: '#/components/schemas/Language'
    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
    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'
    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/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
    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
    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'
        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
    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
    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'
        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
    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 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/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
    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
    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'
        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/Country'
        administrativeAreas:
          type: array
          items:
            $ref: '#/components/schemas/AdministrativeArea'
        postCodes:
          type: array
          items:
            $ref: '#/components/schemas/PostCode'
        localities:
          type: array
          items:
            $ref: '#/components/schemas/Locality'
        thoroughfares:
          type: array
          items:
            $ref: '#/components/schemas/Thoroughfare'
        premises:
          type: array
          items:
            $ref: '#/components/schemas/Premise'
        postalDeliveryPoints:
          type: array
          items:
            $ref: '#/components/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'
    BankExternalId:
      type: string
      description: >-
        ID the record has in the external system where the record originates
        from.
      example: DE2357422
    BankRelationStartedAt:
      type: string
      description: ISO 8601 representation of the timestamp when the relation was created.
      example: '2025-10-14T07:32:28Z'
    BankRelationEndedAt:
      type: string
      description: ISO 8601 representation of the timestamp when the relation ended.
      example: '2025-10-14T07:32:28Z'
    BankRelationTypeTechnicalKey:
      type: string
      description: Technical key of the relation type.
      example: BRANCH
    BankRelationTypeName:
      type: string
      description: Name of the relation type.
      example: Organizational Unit
    BankRelationType:
      type: object
      description: Type of the relation.
      properties:
        technicalKey:
          $ref: '#/components/schemas/BankRelationTypeTechnicalKey'
        name:
          $ref: '#/components/schemas/BankRelationTypeName'
    BankRelationStartNode:
      type: string
      description: CDQ ID of the starting node.
      example: FR.RC:5664645
    BankRelationEndNode:
      type: string
      description: CDQ ID of the target node.
      example: FR.RC:5664645
    BankRelation:
      type: object
      description: >-
        The "internal" relationship of a bank in terms of e.g. bank branch
        relationships.
      properties:
        startedAt:
          $ref: '#/components/schemas/BankRelationStartedAt'
        endedAt:
          $ref: '#/components/schemas/BankRelationEndedAt'
        type:
          $ref: '#/components/schemas/BankRelationType'
        startNode:
          $ref: '#/components/schemas/BankRelationStartNode'
        endNode:
          $ref: '#/components/schemas/BankRelationEndNode'
    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:
        names:
          description: Name of a bank.
          example: Swiss National Bank
          type: array
          items:
            $ref: '#/components/schemas/BankName'
        contact:
          $ref: '#/components/schemas/BankContact'
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/BankIdentifier'
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/schemas-Address'
        externalId:
          $ref: '#/components/schemas/BankExternalId'
        relations:
          type: array
          items:
            $ref: '#/components/schemas/BankRelation'
    BusinessPartnerStorageId:
      type: string
      description: Unique identifier of the Storage.
      example: 72d6900fce6b326088f5d9d91049e3e6
    OrganizationName:
      type: string
      description: Name of the organization.
      example: Adidas AG
    WorkspaceId:
      type: string
      description: Uniquely identifying ID of the workspace.
      example: c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4
    CreatedBy:
      type: string
      description: Creator of a resource.
      example: '76248934691294444'
    ModifiedAt:
      type: string
      description: Date of modification (ISO 8601-compliant).
      example: '2025-10-14T07:32:28Z'
    ModifiedBy:
      type: string
      description: User or Client UUID which modified the resource.
      example: '76248934691294444'
    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.
    NameShortName:
      type: string
      description: The abbreviated variant of a company's full name.
      example: CDQ AG
    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.
    BusinessPartnerStorageDataSourceId:
      type: string
      description: Unique identifier for a Data Source of the Storage.
      example: 648824a691d8d2503d65103e
    Payee:
      type: object
      description: A business partner that receives payments.
      properties:
        name:
          $ref: '#/components/schemas/NameShortName'
        externalId:
          $ref: '#/components/schemas/BusinessPartnerExternalId'
        storage:
          type: object
          description: Business Partner storage
          properties:
            id:
              $ref: '#/components/schemas/BusinessPartnerStorageId'
        dataSource:
          type: object
          description: Data source
          properties:
            id:
              $ref: '#/components/schemas/BusinessPartnerStorageDataSourceId'
    CDQId:
      type: string
      description: The CDQ ID of the bank.
      example: CDQID-1234567890
    schemas-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:
        cdqId:
          $ref: '#/components/schemas/CDQId'
        name:
          type: array
          items:
            $ref: '#/components/schemas/BankName'
        internationalBankIdentifier:
          $ref: '#/components/schemas/InternationalBankIdentifier'
        nationalBankIdentifier:
          $ref: '#/components/schemas/NationalBankIdentifier'
        address:
          $ref: '#/components/schemas/schemas-Address'
    FirstPaymentDate:
      type: string
      description: The date of the first payment to the bank account (ISO 8601-compliant).
      example: '2025-10-14T07:32:28Z'
    LastPaymentDate:
      type: string
      description: The date of the last payment to the bank account (ISO 8601-compliant).
      example: '2025-10-14T07:32:28Z'
    NumberOfPayments:
      type: integer
      description: The number of payments to the bank account.
      example: '1'
    VendorPaymentSummary:
      type: object
      description: Metadata required for calculation of trust score of bank account.
      properties:
        firstPaymentDate:
          $ref: '#/components/schemas/FirstPaymentDate'
        lastPaymentDate:
          $ref: '#/components/schemas/LastPaymentDate'
        numberOfPayments:
          $ref: '#/components/schemas/NumberOfPayments'
    schemas-BankAccountExternalId:
      type: string
      description: >-
        Arbitrary identifier type to mark bank account 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.
    schemas-BankAccountId:
      type: string
      description: The ID of the bank account.
      example: 63e635235c06b7396330fe40
    schemas-BankAccount:
      type: object
      description: >-
        A bank account record holds information that universally describes a
        registered bank account.
      properties:
        internationalBankAccountIdentifier:
          $ref: '#/components/schemas/InternationalBankAccountIdentifier'
        nationalBankAccountIdentifier:
          $ref: '#/components/schemas/NationalBankAccountIdentifier'
        payees:
          type: array
          items:
            $ref: '#/components/schemas/Payee'
        bank:
          $ref: '#/components/schemas/schemas-Bank'
        vendorPaymentSummary:
          $ref: '#/components/schemas/VendorPaymentSummary'
        externalId:
          $ref: '#/components/schemas/schemas-BankAccountExternalId'
        id:
          $ref: '#/components/schemas/schemas-BankAccountId'
    TaskId:
      type: string
      example: dc172630-5791-11ee-8c99-0242ac120002
      description: Unique identifier for a task.
    ExpiresAt:
      type: string
      description: Date of expiration (ISO 8601-compliant).
      example: '2025-10-14T07:32:28Z'
    ReplyQueue:
      type: string
      description: >-
        Technical descriptor of reply queue where workers should put back the
        result.
      example: 647328648329632-34890742-3432
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-KEY
  requestBodies:
    ProcessingLogDataUpserts:
      description: Add bank account processing log entries.
      required: true
      content:
        application/json:
          schema:
            type: object
            description: List of bank account processing log entries.
            properties:
              results:
                type: array
                description: List of bank account processing log entries.
                maxItems: 100
                items:
                  $ref: '#/components/schemas/ProcessingLogData'
