openapi: 3.0.0
info:
  version: '2'
  title: SAP ODM API
  description: >
    This API provides access to several CDQ API endpoints according to the SAP 
    One Domain Model (ODM). Requests and responses are mapped from the CDQ  data
    model to ODM in order to simplify service access from SAP systems.
servers:
  - description: Production
    url: https://api.cdq.com/sap-odm/v2
    x-cdq-soap-url: https://api.corporate-data-league.ch/sap-odm/v2/v2
security:
  - apiKey: []
tags: []
paths:
  /referencedata/rest/v3/businesspartners/lookup:
    post:
      summary: Lookup Business Partners
      description: Lookup a business partner in all available data sources.
      tags:
        - Business Partners
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SapOdmBusinessPartnerLookupRequest'
            examples:
              lookupByName:
                summary: Lookup Business Partner by Name
                value:
                  businessPartner:
                    addresses:
                      - country:
                          shortName: DE
                    names:
                      - value: SAP
              lookupWithGoldenRecord:
                summary: Lookup business partner with Golden Record
                value:
                  businessPartner:
                    addresses:
                      - country:
                          shortName: DE
                    names:
                      - value: SAP
                    features:
                      - GOLDENRECORD_INLINE
              lookupByEuVatIdPl:
                summary: Lookup Business Partner by Identifier
                value:
                  businessPartner:
                    addresses:
                      - country:
                          shortName: PL
                    identifiers:
                      - value: PL9280012700
                        type:
                          technicalKey: EU_VAT_ID_PL
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SapOdmBusinessPartnerLookupResult'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
  /referencedata/rest/v3/businesspartners/fetch:
    post:
      summary: Fetch Business Partner
      description: Fetch business partner by CDQ-ID.
      tags:
        - Business Partners
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SapOdmBusinessPartnerFetchRequest'
            examples:
              fetchEntryByViesId:
                summary: Fetch business partner by CDQ ID
                value:
                  example: VIES:PL8660001429
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SapOdmBusinessPartnerFetchResult'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-KEY
  schemas:
    SapOdmBusinessPartnerLookupRequest:
      type: object
      description: Request object for Business Partner lookup.
      properties:
        businessPartner:
          $ref: '#/components/schemas/BusinessPartner'
        matchingThreshold:
          type: number
          description: The matching threshold for the lookup.
          format: double
          example: '0.5'
          minimum: 0
          maximum: 1
        maxCandidates:
          type: integer
          description: >-
            The maximum number of candidates to be returned by the lookup.
            Default 50.
          example: '50'
          minimum: 20
          maximum: 100
        pageSize:
          description: Number of items per page. Default 10.
          type: integer
          minimum: 1
          maximum: 1000
          example: '100'
        page:
          $ref: '#/components/schemas/Page'
        limit:
          type: integer
          description: Number of items per page.
          example: '100'
          minimum: 0
          maximum: 1000
        startAfter:
          $ref: '#/components/schemas/StartAfter'
        featuresOn:
          type: array
          description: List of features to be activated.
          items:
            $ref: '#/components/schemas/LookupBusinessPartnerFeature'
        featuresOff:
          type: array
          description: List of features to be deactivated.
          items:
            $ref: '#/components/schemas/LookupBusinessPartnerFeature'
        dataSources:
          type: array
          description: Filter Data Sources used during lookup.
          example: VIES
          items:
            type: string
            description: Data Source of the Data Pool.
            example: CDQ.POOL
    LookupBusinessPartnerFeature:
      type: string
      description: Available features for Business Partner lookup.
      example: SHOW_DEBUG_INFO
      enum:
        - SHOW_DEBUG_INFO
        - SHOW_GOLDENRECORD_QUICK
        - SHOW_GOLDENRECORD_STANDARD
      x-enumDescriptions:
        SHOW_DEBUG_INFO: >-
          Show additional information regarding request processing, including
          enabled features, and request.
        SHOW_GOLDENRECORD_QUICK: Calculate golden record for given request.
        SHOW_GOLDENRECORD_STANDARD: Calculate golden record for given request.
    SapOdmBusinessPartnerLookupResult:
      type: object
      description: Result object for Business Partner lookup.
      properties:
        pageSize:
          $ref: '#/components/schemas/PageSize'
        totals:
          $ref: '#/components/schemas/PageTotal'
        page:
          $ref: '#/components/schemas/Page'
        limit:
          $ref: '#/components/schemas/Limit'
        startAfter:
          $ref: '#/components/schemas/StartAfter'
        nextStartAfter:
          $ref: '#/components/schemas/NextStartAfter'
        values:
          type: array
          description: List of Business Partner lookup matches.
          items:
            $ref: '#/components/schemas/SapOdmBusinessPartnerLookupMatch'
        goldenRecord:
          $ref: '#/components/schemas/SapOdmGoldenRecord'
    SapOdmBusinessPartnerLookupMatch:
      type: object
      description: Business Partner lookup match.
      properties:
        cdqId:
          type: string
          description: CDQ ID for Business Partner.
          example: VIES:PL8660001429
        dataSource:
          $ref: '#/components/schemas/StorageDataSourceId'
        matchingProfile:
          $ref: '#/components/schemas/MatchingProfile'
        businessPartner:
          $ref: '#/components/schemas/BusinessPartner'
    MatchingProfile:
      type: object
      description: >-
        Matching profile used for the match. It contains the matching threshold
        and the matching scores.
      properties:
        matchingScores:
          $ref: '#/components/schemas/MatchingScores'
    MatchingScores:
      type: object
      description: >-
        List of the numerical value of similarity between Business Partners or
        addresses enhanced with the overall score.
      properties:
        overall:
          $ref: '#/components/schemas/MatchingScore'
        businessPartner:
          $ref: '#/components/schemas/MatchingScore'
        address:
          $ref: '#/components/schemas/MatchingScore'
    MatchingScore:
      type: object
      description: >-
        Shows numerical value of similarity between Business Partners or address
        stored in the Data Mirror and the Business Partner from the request.
      properties:
        classification:
          $ref: '#/components/schemas/MatchingClassification'
        value:
          type: number
          description: Matching score value.
          example: '0.9'
        explanation:
          type: string
          description: Explanation for matching score value.
          example: >-
            BP: [overall: [IDENTIFIER: 0.55; overall: 0.55;]] A: [overall:
            [COUNTRY_SHORTNAME: 0.5; overall: 0.5;]]
    MatchingClassification:
      type: object
      description: >-
        Classification of the matching score. It can be `HIGH`, `MEDIUM` or
        `LOW`.
      properties:
        technicalKey:
          type: string
          description: Technical key of the Matching Classification.
          example: HIGH
        name:
          type: string
          description: Name of the Matching Classification.
          example: My Matching Configuration
    SapOdmGoldenRecord:
      type: object
      description: >-
        Golden Record for the given request. It contains the Golden Record
        Business Partner and the matching scores.
      properties:
        cdqId:
          type: string
          description: CDQ ID for Business Partner.
          example: VIES:PL8660001429
        matchingProfile:
          $ref: '#/components/schemas/MatchingProfile'
        businessPartner:
          $ref: '#/components/schemas/BusinessPartner'
    SapOdmBusinessPartnerFetchRequest:
      type: object
      description: Request object for Business Partner fetch.
      properties:
        cdqId:
          type: string
          description: CDQ ID for business partner and address.
          example: VIES:PL8660001429
        featuresOn:
          type: array
          description: List of features to be activated.
          items:
            $ref: '#/components/schemas/BusinessPartnerFetchFeature'
        featuresOff:
          type: array
          description: List of features to be deactivated.
          items:
            $ref: '#/components/schemas/BusinessPartnerFetchFeature'
    BusinessPartnerFetchFeature:
      type: string
      description: Available features for Business Partner fetch.
      example: SHOW_DEBUG_INFO
      enum:
        - SHOW_DEBUG_INFO
      x-enumDescriptions:
        SHOW_DEBUG_INFO: >-
          Show additional information regarding request processing, including
          enabled features, and request.
    SapOdmBusinessPartnerFetchResult:
      type: object
      description: Result of a Business Partner fetch operation.
      properties:
        status:
          type: string
          description: |
            status:
              * `OK` - Service returned a correct response.
              * `FAILED` - Call to external service failed.
              * `INVALID_INPUT` - Given input parameter is invalid or entry not found.
              * `AUTHORIZATION_FAILED` - Authorization to external service does not succeed.
          example: OK
        message:
          type: string
          description: Message describing the status of the request.
          example: Service returned a correct response.
        cdqId:
          type: string
          description: CDQ ID for Business Partner.
          example: VIES:PL8660001429
        dataSource:
          $ref: '#/components/schemas/DataSourceTechnicalKey'
        businessPartner:
          $ref: '#/components/schemas/BusinessPartner'
    BusinessPartner:
      type: object
      description: >-
        An organizational entity engaged in various facets of another
        organization's business interactions. This collaborative connection
        often manifests as a customer, supplier, vendor, or service provider. In
        the CDQ (Corporate Data Quality) framework, the Business Partner assumes
        a pivotal role as a core managed entity. Each Business Partner is
        distinctly and globally identifiable through a unique CDQ ID. All
        pertinent information, including addresses, identifiers, and
        hierarchical data, is intricately associated with and linked to the
        specific Business Partner, ensuring comprehensive management and
        traceability within the system.
      properties:
        names:
          type: array
          description: List of names of the Business Partner.
          items:
            $ref: '#/components/schemas/Name'
        legalForm:
          $ref: '#/components/schemas/LegalForm'
        identifiers:
          type: array
          description: List of identifiers of the Business Partner.
          items:
            $ref: '#/components/schemas/Identifier'
        addresses:
          type: array
          description: List of addresses of the Business Partner.
          items:
            $ref: '#/components/schemas/Address'
        externalId:
          $ref: '#/components/schemas/BusinessPartnerExternalId'
        jsonRecord:
          $ref: '#/components/schemas/SapOdmBusinessPartner'
        types:
          type: array
          description: List of types of the Business Partner.
          items:
            $ref: '#/components/schemas/BusinessPartnerType'
    SapOdmBusinessPartner:
      type: object
      description: Business Partner of SAP ODM.
      properties:
        displayId:
          type: string
          description: Human-readable identifier.
          maxLength: 10
          example: SAP
        businessPartnerType:
          type: string
          description: >-
            Type under which a business partner is classified (organization,
            person, or businessPartnerGroup).
          example: organization
        organization:
          description: Details of an organization.
          $ref: '#/components/schemas/SapOdmOrganizationDetails'
        identifications:
          type: array
          description: Proof of identity.
          items:
            $ref: '#/components/schemas/SapOdmIdentification'
        taxNumbers:
          type: array
          description: Tax numbers of the business partner.
          items:
            $ref: '#/components/schemas/SapOdmTaxNumber'
        addressData:
          type: array
          description: The address information of the business partner.
          items:
            $ref: '#/components/schemas/SapOdmAddressData'
    SapOdmOrganizationDetails:
      type: object
      description: >-
        Organization information of a business partner. This field is only
        filled if the Business Partner is of type 'organization'.
      properties:
        nameDetails:
          description: Scripted name of an organization.
          $ref: '#/components/schemas/SapOdmOrganizationName'
        legalForm:
          description: Code for the legal form of a company.
          $ref: '#/components/schemas/SapOdmCompanyLegalFormCodes'
        globalLocationNumber:
          type: string
          description: >
            The Global Location Number (GLN) - former Internal Location  Number
            (ILN) - assigned by GS1 organizations identifies physical  locations
            or legal entities uniquely.
          maxLength: 13
          example: '0847976000005'
    SapOdmOrganizationName:
      type: object
      description: Address information of an organization including script variants.
      allOf:
        - $ref: '#/components/schemas/SapOdmOrganizationNameType'
        - type: object
          description: Address information of an organization including script variants.
          properties:
            scriptVariants:
              type: array
              description: Scripted variants of an organization's name.
              items:
                $ref: '#/components/schemas/SapOdmScriptedOrganizationName'
    SapOdmScriptedOrganizationName:
      type: object
      description: Scripted variants of an organization's address.
      allOf:
        - $ref: '#/components/schemas/SapOdmOrganizationNameType'
        - type: object
          description: Scripted variants of an organization's address.
          properties:
            scriptCode:
              description: Script code of the organization name.
              $ref: '#/components/schemas/SapOdmScriptCodes'
    SapOdmScriptCodes:
      type: object
      description: A code for the presentation of names of scripts (language signs).
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: A code for the presentation of names of scripts (language signs).
          properties:
            code:
              type: string
              description: The script code (language sign).
              maxLength: 4
              example: Latn
    SapOdmCompanyLegalFormCodes:
      type: object
      description: >-
        Codes that represent legal forms that are of significance for the
        organization of a company.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: >-
            Codes that represent legal forms that are of significance for the
            organization of a company.
          properties:
            code:
              type: string
              description: Code list entry.
              maxLength: 2
              example: AG
    SapOdmIndustrySectorCodes:
      type: object
      description: Codes for classification of an industry sector.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: Codes for classification of an industry sector.
          properties:
            code:
              type: string
              description: Code list entry.
              maxLength: 10
              example: AGRICULTURE
    SapOdmIndustrySystemTypeCodes:
      type: object
      description: Codes used to combine and categorize several industries into a group.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: >-
            Codes used to combine and categorize several industries into a
            group.
          properties:
            code:
              type: string
              maxLength: 4
              description: Code list entry.
              example: SIC
    SapOdmIdentification:
      type: object
      description: Entity defining a proof of identity.
      allOf:
        - type: object
          description: Entity defining a proof of identity.
          properties:
            identificationType:
              description: >
                A code that represents the type of identification (such as an
                ID  card, driver's license or commercial registry) for a
                business  partner.
              $ref: '#/components/schemas/SapOdmIdentificationTypeCodes'
            identificationNumber:
              type: string
              maxLength: 60
              description: >
                Number that identifies a business partner, such as a  driver's
                license, or ID card number.
              example: DE123456789
            country:
              description: >
                A code that represents the country in which an ID number was 
                assigned, or in which the number is valid (ISO 3166-1 code).
              $ref: '#/components/schemas/SapOdmCountryCodes'
            region:
              description: >
                A code that represents the region in which an ID number was 
                assigned, or in which the number is valid (ISO 3166-1 code, 
                separator, ISO 3166-2 code).
              $ref: '#/components/schemas/SapOdmCountrySubdivisionCodes'
            institute:
              type: string
              maxLength: 40
              description: Institution that administers or assigns an ID number.
              example: Federal Republic of Germany
    SapOdmIdentificationTypeCodes:
      type: object
      description: Codes for identification types such as ID card or driver's license.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: Codes for identification types such as ID card or driver's license.
          properties:
            code:
              type: string
              maxLength: 6
              description: Code list entry.
              example: IDCARD
    SapOdmCountryCodes:
      type: object
      description: Country codes following IES ISO-3166 ALPHA-2.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: Country codes following IES ISO-3166 ALPHA-2.
          properties:
            code:
              type: string
              maxLength: 2
              description: The ISO-3166 2-char code of the country.
              example: DE
    SapOdmCountrySubdivisionCodes:
      type: object
      description: >
        Represents the name of a principal subdivision (e.g. province or  state)
        of countries coded in ISO 3166-1. This code is based on the  two-letter
        code element from ISO 3166-1 followed by a separator and  up to three
        alphanumeric characters (published as ISO 3166-2).
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: >
            Represents the name of a principal subdivision (e.g. province or 
            state) of countries coded in ISO 3166-1. This code is based on the 
            two-letter code element from ISO 3166-1 followed by a separator and 
            up to three alphanumeric characters (published as ISO 3166-2).
          properties:
            code:
              type: string
              maxLength: 6
              description: Country subdivision code.
              example: DE-BW
    SapOdmTaxNumber:
      type: object
      description: >-
        An identification number issued by the tax authorities to identify a
        taxpayer.
      properties:
        taxNumberType:
          description: A code that specifies the tax number type.
          $ref: '#/components/schemas/SapOdmTaxNumberTypeCodes'
        taxNumber:
          type: string
          maxLength: 60
          description: Specifies the tax number.
          example: DE123456789
    SapOdmTaxNumberTypeCodes:
      type: object
      description: Codes representing the type of tax numbers.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: Codes representing the type of tax numbers.
          properties:
            code:
              type: string
              maxLength: 4
              description: Code list entry.
              example: VAT
    SapOdmAddressData:
      type: object
      description: >-
        The validity date of an address and customer user ID of a business
        partner.
      allOf:
        - $ref: '#/components/schemas/SapOdmValidity'
        - type: object
          description: >-
            The validity date of an address and customer user ID of a business
            partner.
          properties:
            usages:
              type: array
              description: >-
                Usage about the address information that is assigned to a
                business partner.
              items:
                $ref: '#/components/schemas/SapOdmAddressDataUsage'
            postalAddressType:
              type: string
              description: Defines if the address is for a person or an organization.
              example: organizationPostalAddress
              enum:
                - organizationPostalAddress
                - personPostalAddress
              x-enumDescriptions:
                organizationPostalAddress: Postal address of an organization.
                personPostalAddress: Postal address of a person.
            organizationPostalAddress:
              description: >
                Postal address that is assigned if the address type is 
                "organizationPostalAddress". The address can appear in 
                different scripts. Organization details are only maintained  if
                they differ from the details of the business partner.
              $ref: '#/components/schemas/SapOdmBusinessPartnerOrganizationAddress'
            emailAddresses:
              description: Email addresses of the business partner.
              $ref: '#/components/schemas/SapOdmEmail'
            websites:
              description: Websites of the business partner.
              $ref: '#/components/schemas/SapOdmWebsite'
    SapOdmAddressDataUsage:
      type: object
      description: >-
        Usage details about the address information that is assigned to a
        business partner.
      allOf:
        - $ref: '#/components/schemas/SapOdmValidity'
        - type: object
          description: >-
            Usage details about the address information that is assigned to a
            business partner.
          properties:
            usage:
              description: >-
                A code that represents the usage for the address of the business
                partner.
              $ref: '#/components/schemas/SapOdmAddressDataUsageCodes'
            isStandard:
              type: boolean
              default: false
              description: Establishes the usage of the address information is standard.
              example: 'true'
    SapOdmAddressDataUsageCodes:
      type: object
      description: >
        Codes defining the specific usage of address information for a  business
        purpose (for example, used as for a shipping or billing  address).
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: >
            Codes defining the specific usage of address information for a 
            business purpose (for example, used as for a shipping or billing 
            address).
          properties:
            code:
              type: string
              maxLength: 10
              description: Code list entry.
              example: SHIPPING
    SapOdmBusinessPartnerOrganizationAddress:
      type: object
      description: The type of address of an organization including script variants.
      allOf:
        - $ref: '#/components/schemas/SapOdmPostalAddress'
        - type: object
          description: The type of address of an organization including script variants.
          properties:
            scriptVariants:
              type: array
              description: Scripted variants of the organization's address.
              items:
                $ref: '#/components/schemas/SapOdmScriptedOrganizationAddress'
      discriminator:
        propertyName: discriminator3
    SapOdmOrganizationAddress:
      type: object
      description: Address of organization.
      allOf:
        - $ref: '#/components/schemas/SapOdmOrganizationAddressDetails'
        - $ref: '#/components/schemas/SapOdmPostalAddress'
        - type: object
          description: Address of organization.
    SapOdmPostalAddress:
      type: object
      description: >
        Postal address describes a destination for a postal delivery. It may  be
        either a physical address or a service point address (e.g. PO  box). The
        types are described in a code-list "DeliveryServiceEnum".
      allOf:
        - $ref: '#/components/schemas/SapOdmStreetInfo'
        - $ref: '#/components/schemas/SapOdmPremisesInfo'
        - $ref: '#/components/schemas/SapOdmAddressedObjectInfo'
        - $ref: '#/components/schemas/SapOdmLocalityInfo'
        - $ref: '#/components/schemas/SapOdmCountryLevelInfo'
        - type: object
          description: >
            Postal address describes a destination for a postal delivery. It
            may  be either a physical address or a service point address (e.g.
            PO  box). The types are described in a code-list
            "DeliveryServiceEnum".
          properties:
            alternative:
              description: >-
                Another type of address (e.g. service point delivery like PO
                box).
              $ref: '#/components/schemas/SapOdmAlternativeDeliveryAddress'
            coordinates:
              description: The address as geo coordinates.
              $ref: '#/components/schemas/SapOdmGeoCoordinates'
    SapOdmStreetInfo:
      type: object
      description: >
        Thoroughfare as defined by ISO 19160-4:2017 (road/street/square/.. 
        defining a way to the addressed object). Note: the definition is not 
        quite compliant to ISO 19160-4:2017, the latter defines three 
        structural levels. This modeling is in accordance with NW business 
        address services: Combination of two street prefixes and two street 
        suffixes provides sufficient flexibility to encode country specific 
        address fields, like Moo and Soi for Thailand.
      properties:
        streetPrefix1:
          type: string
          maxLength: 256
          description: Defines first line of the street print layout.
          example: StreetPrefix1
        streetPrefix2:
          type: string
          maxLength: 256
          description: Defines second line of the street print layout.
          example: StreetPrefix1
        street:
          description: Paired {name,code} type.
          $ref: '#/components/schemas/SapOdmStreet'
        streetSuffix1:
          type: string
          maxLength: 256
          description: Defines before-last line of the street print layout.
          example: StreetSuffix1
        streetSuffix2:
          type: string
          maxLength: 256
          description: Defines last line of the street print layout.
          example: StreetSuffix2
    SapOdmStreet:
      type: object
      description: >-
        Links the name of a street to an optional Thoroughfare code as defined
        by ISO 19160-4:2017.
      properties:
        name:
          type: string
          maxLength: 256
          description: Name of a street.
          example: Main Street
        ref:
          description: Code of a street.
          $ref: '#/components/schemas/SapOdmStreetCodes'
    SapOdmStreetCodes:
      type: object
      description: >
        StreetCodes are an alias (aiming for better readability and 
        understandability) for Thoroughfare codes, which are defined by ISO 
        19160-4:2017 as an abstraction over street, road, square, and the  like.
        Thoroughfare codes may be regulated locally, optional  otherwise.
        identifies the road or part of a road or other access  route along which
        a delivery point can be accessed, either directly  or via a secondary or
        tertiary road or access route. For addressing  purposes, a thoroughfare
        need not be on land, e.g. a canal or river  might serve as a
        thoroughfare in the address of a houseboat or of a  construction on the
        bank. A thoroughfare is a road or way connecting  one location to
        another. On land a thoroughfare may refer to any  type of road.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: >
            StreetCodes are an alias (aiming for better readability and 
            understandability) for Thoroughfare codes, which are defined by ISO 
            19160-4:2017 as an abstraction over street, road, square, and the 
            like. Thoroughfare codes may be regulated locally, optional 
            otherwise. identifies the road or part of a road or other access 
            route along which a delivery point can be accessed, either directly 
            or via a secondary or tertiary road or access route. For addressing 
            purposes, a thoroughfare need not be on land, e.g. a canal or river 
            might serve as a thoroughfare in the address of a houseboat or of a 
            construction on the bank. A thoroughfare is a road or way
            connecting  one location to another. On land a thoroughfare may
            refer to any  type of road.
          properties:
            code:
              type: string
              maxLength: 10
              description: Street code.
              example: '101'
    SapOdmPremisesInfo:
      type: object
      description: Premises as defined by ISO 19160-4:2017 (location of addressed object).
      properties:
        houseNumber:
          type: string
          maxLength: 256
          description: Building information.
          example: Building 1
        houseNumberSupplement:
          type: string
          maxLength: 256
          description: Additional information.
          example: 2nd floor
    SapOdmAddressedObjectInfo:
      type: object
      description: Addressed object as defined ISO 19160-4:2017.
      properties:
        building:
          type: string
          maxLength: 256
          description: Building information.
          example: Building 1
        floor:
          type: string
          maxLength: 256
          description: Floor information.
          example: 2nd floor
        door:
          type: string
          maxLength: 256
          description: Room, apartment, ...
          example: Room 14
        careOf:
          type: string
          maxLength: 256
          description: A care of (c/o) party name.
          example: c/o John Doe
    SapOdmLocalityInfo:
      type: object
      description: Locality as defined by ISO 19160-4:2017.
      allOf:
        - $ref: '#/components/schemas/SapOdmRegionInfo'
        - type: object
          description: Locality as defined by ISO 19160-4:2017.
          properties:
            town:
              description: >-
                City, town, village; a value from a code-list for towns; see ISO
                19160-4 definition.
              $ref: '#/components/schemas/SapOdmTown'
            district:
              description: >
                An addressable area inside a town;  see ISO 19160-4 definition:
                optional.
              $ref: '#/components/schemas/SapOdmDistrict'
    SapOdmRegionInfo:
      type: object
      description: >
        Region is an addressable area in a Country. Contain two levels 
        (primary, like province, and secondary, like department). While  primary
        is in all cases be expressed by ISO 3166-2 (subdivision)  codes,
        secondary can also be locally regulated (code-list defined by  a local
        governance) or not regulated at all. Note: Primary and  secondary is not
        really correct in terms of ISO 19160-4; it defines  "levels" without
        limiting the number of them, but pragmatically two  levels seems to be
        sufficient.
      properties:
        primaryRegion:
          description: >
            Code list with codes that are _derived_ from subdivisions. A  region
            for postal must provide a disjoint cut, in ISO 3166-2 it  is not
            always the case (e.g. France 14 provinces, 95  departments,
            departments intersect with provinces). This means  that additional
            work must be invested in curation of ISO 3166-2  code lists. So,
            while formally it the field type is ISO  subdivision code, in fact
            it is a curated subset of ISO 3166-2,  prepared for use in postal
            delivery.
          $ref: '#/components/schemas/SapOdmCountrySubdivisionCodes'
        secondaryRegion:
          description: >-
            Locally governed region name second level, optionally code-list
            item.
          $ref: '#/components/schemas/SapOdmSecondaryRegion'
        tertiaryRegion:
          description: >-
            Locally governed region name third level (e.g. Russia), optionally
            code-list item.
          $ref: '#/components/schemas/SapOdmTertiaryRegion'
    SapOdmSecondaryRegion:
      type: object
      description: Links the name of a secondary region to an optional Region Code.
      properties:
        name:
          type: string
          maxLength: 256
          description: Name of a secondary region.
          example: Montgomery County
        ref:
          description: Code of a secondary region.
          $ref: '#/components/schemas/SapOdmSecondaryRegionCodes'
    SapOdmSecondaryRegionCodes:
      type: object
      description: >
        Region codes may be derived from ISO 3166-2 code list (subdivisions)  or
        provided by local authorities. No assumptions about the length of  the
        code. Code list with codes that are defined by local authorities.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: >
            Region codes may be derived from ISO 3166-2 code list
            (subdivisions)  or provided by local authorities. No assumptions
            about the length of  the code. Code list with codes that are defined
            by local authorities.
          properties:
            code:
              type: string
              description: Secondary region code.
              example: '091'
    SapOdmTertiaryRegion:
      type: object
      description: |
        Links the name of a tertiary region to an optional Region Code.
      properties:
        name:
          type: string
          description: |
            Name of a tertiary region.
          maxLength: 256
          example: Berlin
        ref:
          description: Code of a secondary region.
          $ref: '#/components/schemas/SapOdmTertiaryRegionCodes'
    SapOdmTertiaryRegionCodes:
      type: object
      description: >
        Region codes may be derived from ISO 3166-2 code-list  (subdivisions) or
        provided by local authorities. No assumptions  about the length of the
        code. Code list with codes that are  defined by local authorities.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: >
            Region codes may be derived from ISO 3166-2 code-list 
            (subdivisions) or provided by local authorities. No assumptions 
            about the length of the code. Code list with codes that are  defined
            by local authorities.
          properties:
            code:
              type: string
              description: Tertiary region code.
              example: '650'
    SapOdmTown:
      type: object
      description: >-
        Links a town name to an optional Town Code as defined in ISO
        19160-4:2017.
      properties:
        name:
          type: string
          maxLength: 256
          description: Name of a town.
          example: Berlin
        ref:
          description: Code of a town.
          $ref: '#/components/schemas/SapOdmTownCodes'
    SapOdmTownCodes:
      type: object
      description: >
        Town is an abstraction defined in ISO 19160-4:2017 for cities,  towns,
        villages, etc. Town codes are regulated locally for some  countries
        (Qatar, Peru, Oman, Italy tax codes), otherwise just  omitted. This
        defines a code-list for towns or just a name if a code  is missing.
        Element indicating the name of the populated place in  which a delivery
        point is located or near to or via which the  delivery point is
        accessed.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: >
            Town is an abstraction defined in ISO 19160-4:2017 for cities, 
            towns, villages, etc. Town codes are regulated locally for some 
            countries (Qatar, Peru, Oman, Italy tax codes), otherwise just 
            omitted. This defines a code-list for towns or just a name if a
            code  is missing. Element indicating the name of the populated place
            in  which a delivery point is located or near to or via which the 
            delivery point is accessed.
          properties:
            code:
              type: string
              maxLength: 10
              description: Town code.
              example: '9000'
    SapOdmDistrict:
      type: object
      description: >-
        Links the name of a district to an optional District Code as defined in
        ISO 19160-4:2017.
      properties:
        name:
          type: string
          maxLength: 256
          description: Name of a district.
          example: Mitte
        ref:
          description: Code of a town.
          $ref: '#/components/schemas/SapOdmDistrictCodes'
    SapOdmDistrictCodes:
      type: object
      description: >-
        District is defined in ISO 19160-4:2017 as an addressable area inside a
        town or adjacent to a town.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: >-
            District is defined in ISO 19160-4:2017 as an addressable area
            inside a town or adjacent to a town.
          properties:
            code:
              type: string
              maxLength: 10
              description: ISO 19160-4:2017.
              example: DE-BE
    SapOdmCountryLevelInfo:
      type: object
      description: >
        Locality address is a technical reusable part for addresses of 
        different types. In each case of delivery, correspondence must be 
        delivered to a locality and then from there either to a physical 
        address of a service point address.
      properties:
        country:
          type: object
          description: A value from a code-list for countries.
          $ref: '#/components/schemas/SapOdmCountryCodes'
        postCode:
          type: string
          description: Postal code (or Zip Code in the US, PLZ in Germany etc.).
          example: '10115'
    SapOdmAlternativeDeliveryAddress:
      type: object
      description: >
        An alternative delivery address that does not have region, street, 
        premises, and addressed object information but identifies delivery 
        locations according to the service enum type.
      allOf:
        - $ref: '#/components/schemas/SapOdmCountryLevelInfo'
        - $ref: '#/components/schemas/SapOdmLocalityInfo'
        - type: object
          description: >
            An alternative delivery address that does not have region, street, 
            premises, and addressed object information but identifies delivery 
            locations according to the service enum type.
          properties:
            deliveryType:
              description: >-
                A code-list containing a discriminator to select between address
                types.
              $ref: '#/components/schemas/SapOdmDeliveryTypeCodes'
            deliveryServiceType:
              type: string
              description: >-
                A code-list containing a discriminator to select between address
                types.
              example: POBoxDelivery
              enum:
                - POBoxDelivery
                - PrivateBagDelivery
                - PosteRestanteDelivery
                - CompanyDelivery
                - WorkerCampElectricityMeterDelivery
                - WorkerCampBedDelivery
                - Other
              x-enumDescriptions:
                POBoxDelivery: >-
                  Uniquely addressable lockable box located on the premises of a
                  post office station.
                PrivateBagDelivery: >-
                  Uniquely addressable lockable bag located on the premises of a
                  post office station.
                PosteRestanteDelivery: >-
                  A service where the post office holds mail until the recipient
                  calls for it.
                CompanyDelivery: A delivery to a company.
                WorkerCampElectricityMeterDelivery: A delivery to a worker camp electricity meter.
                WorkerCampBedDelivery: A delivery to a worker camp bed.
                Other: Other delivery type.
            deliveryServiceQualifier:
              type: string
              maxLength: 256
              description: >
                Needed as the same service identifier is only unique within the
                scope of the qualifier  (i.e. same identifier could be used in
                different Post offices in the same town).
              example: Post Office SouthEast
            deliveryServiceIdentifier:
              type: string
              maxLength: 256
              description: >
                Identifier of the delivery service, e.g., the number of the  PO
                Box. Unique within the scope of the  deliveryServiceQualifier.
              example: '1234'
    SapOdmDeliveryTypeCodes:
      type: object
      description: >
        Delivery types that identify delivery locations other than the  ordinary
        mailbox or personal deliveries.
      allOf:
        - $ref: '#/components/schemas/SapOdmCodeList'
        - type: object
          description: >
            Delivery types that identify delivery locations other than the 
            ordinary mailbox or personal deliveries.
          properties:
            code:
              type: string
              maxLength: 10
              description: The code.
              example: POBOX
    SapOdmGeoCoordinates:
      type: object
      description: >
        GeoCoordinates contain the geographic data, in other words  longitude,
        latitude and altitude specified as per the WGS84  reference system,
        which enables you to determine a position on the  globe.
        (https://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf).
      properties:
        latitude:
          type: number
          format: double
          description: Latitude value of the coordinates.
          example: '52.520008'
        longitude:
          type: number
          format: double
          description: Longitude value of the coordinates.
          example: '13.404954'
        altitude:
          type: number
          format: double
          description: Altitude value of the coordinates.
          example: '34.0'
    SapOdmScriptedOrganizationAddress:
      type: object
      description: Scripted type of address of an organization.
      allOf:
        - $ref: '#/components/schemas/SapOdmOrganizationAddress'
        - type: object
          description: Scripted type of address of an organization.
          properties:
            scriptCode:
              $ref: '#/components/schemas/SapOdmScriptCodes'
              description: Script code of the name of the organization address information.
    SapOdmEmail:
      type: object
      description: The default communication channel is email.
      allOf:
        - $ref: '#/components/schemas/SapOdmValidity'
        - type: object
          description: The default communication channel is email.
          properties:
            address:
              type: string
              description: >
                The email address. Assumption: to be able to process special 
                characters in the address all connected systems must be  unicode
                enabled. EmailAddress according to external standard  IETF RFC
                5321.
              example: developer-portal@cdq.com
    SapOdmWebsite:
      type: object
      description: The default communication channel is website.
      allOf:
        - $ref: '#/components/schemas/SapOdmValidity'
        - type: object
          description: The default communication channel is website.
          properties:
            url:
              type: string
              description: The URL path for the website.
              example: https://www.developer.cdq.com
    SapOdmOrganizationNameType:
      type: object
      description: Type of address information of an organization.
      allOf:
        - $ref: '#/components/schemas/SapOdmOrganizationAddressDetails'
        - type: object
          description: Type of address information of an organization.
          properties:
            customSalutation:
              type: string
              description: A customizable, more informal salutation.
              maxLength: 50
              example: Additional information
    SapOdmOrganizationAddressDetails:
      type: object
      description: >
        Printable format of 4 lines of organization name, manually entered  for
        proper formatting. At least ...Line1 must be filled. If needed,  a
        writer can _in addition_ write the long string formattedOrgName.
      properties:
        formattedOrgNameLine1:
          type: string
          maxLength: 40
          description: Formatted organizational name line 1.
          example: SAP SE
        formattedOrgNameLine2:
          type: string
          maxLength: 40
          description: Formatted organizational name line 2.
          example: Hasso-Plattner-Ring 7
        formattedOrgNameLine3:
          type: string
          maxLength: 40
          description: Formatted organizational name line 3.
          example: 69190 Walldorf
        formattedOrgNameLine4:
          type: string
          maxLength: 40
          description: Formatted organizational name line 4.
          example: Germany
        formattedOrgName:
          type: string
          maxLength: 512
          description: Fully formatted organization name.
          example: SAP SE, Hasso-Plattner-Ring 7, 69190 Walldorf, Germany
    SapOdmValidity:
      type: object
      description: >
        Aspect for entities with validFrom and validTo date, but w/o making 
        validFrom to a key (in comparison to temporal aspect).
      properties:
        validFrom:
          type: string
          description: Begin date of validity period (ISO 8601 compliant).
          example: '2025-08-27T14:27:34Z'
        validTo:
          type: string
          description: End date of validity period (ISO 8601 compliant).
          example: '2025-08-27T14:27:34Z'
    SapOdmCodeList:
      type: object
      description: Base aspects to define code list entities.
      properties:
        name:
          type: string
          description: User-facing name of a code list entry.
          example: Code list entry name.
          maxLength: 255
    NameShortName:
      type: string
      description: The abbreviated variant of a company's full name.
      example: CDQ AG
    NameTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Name
        Type](https://meta.cdq.com/Business_partner/name/type).
      example: https://meta.cdq.com/Business_partner/name/type
    NameTypeName:
      type: string
      description: Display label for the Name Type.
      example: Local Name
    NameTypeTechnicalKey:
      type: string
      description: Technical Keys of the Name Type.
      example: LOCAL
    NameType:
      type: object
      description: >-
        The type of the name, e.g. a locally used name or an international
        version.
      properties:
        url:
          $ref: '#/components/schemas/NameTypeUrl'
        name:
          $ref: '#/components/schemas/NameTypeName'
        technicalKey:
          $ref: '#/components/schemas/NameTypeTechnicalKey'
    NameValue:
      type: string
      description: The actual name.
      example: Corporate Data Quality AG
    LanguageName:
      type: string
      description: ISO 639-1 name of language.
      example: German
    LanguageTechnicalKey:
      type: string
      description: ISO 639-1 two-letter code of languages.
      example: DE
    Language:
      type: object
      description: Naming of a language according to ISO 639-1.
      properties:
        name:
          $ref: '#/components/schemas/LanguageName'
        technicalKey:
          $ref: '#/components/schemas/LanguageTechnicalKey'
    Name:
      type: object
      description: The name of a business partner.
      properties:
        shortName:
          $ref: '#/components/schemas/NameShortName'
        type:
          $ref: '#/components/schemas/NameType'
        value:
          $ref: '#/components/schemas/NameValue'
        language:
          $ref: '#/components/schemas/Language'
    LegalFormName:
      type: string
      description: Display of the Legal Form.
      example: Aktiengesellschaft
    LegalFormMainAbbreviation:
      type: string
      description: >-
        The primary abbreviation of a legal form, i.e. the most commonly used
        abbreviation in a country.
      example: AG
    LegalFormCdlElfCode:
      deprecated: true
      type: string
      description: An unique identifier for CDL managed Legal Forms.
      example: AG
    LegalFormCategoryName:
      type: string
      maxLength: 40
      description: Descriptive display name of the Legal Form Category.
      example: Limited Liability Company
    LegalFormCategoryShortName:
      type: string
      maxLength: 15
      description: Short display name of the Legal Form Category.
      example: LLC
    LegalFormCategoryUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Legal Form
        Category](https://meta.cdq.com/Business_partner/legal_form/category).
      example: >-
        https://meta.cdq.com/Business_partner/legal_form/category/technical_key/LF001
    LegalFormCategoryTechnicalKey:
      type: string
      description: >-
        Technical Key of the [Legal Form
        Category](https://meta.cdq.com/Business_partner/legal_form/category).
      example: LIMITED
    LegalFormCategory:
      type: object
      description: The categorization of a Legal Form.
      properties:
        name:
          $ref: '#/components/schemas/LegalFormCategoryName'
        shortName:
          $ref: '#/components/schemas/LegalFormCategoryShortName'
        url:
          $ref: '#/components/schemas/LegalFormCategoryUrl'
        technicalKey:
          $ref: '#/components/schemas/LegalFormCategoryTechnicalKey'
    LegalFormUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of [Legal
        Form](https://meta.cdq.com/Business_partner/legal_form).
      example: https://meta.cdq.com/Business_partner/legal_form
    LegalFormTechnicalKey:
      type: string
      description: >-
        Technical Key of a Legal Form. Descriptions of below enums contain
        `Country Scope`, `International Name` and `Main Abraviation`.
      example: DE_9866
    LegalForm:
      type: object
      description: >-
        The legal form of a [business partner/type/legal
        entity](https://meta.cdq.com/Business_partner/type/legal_entity) is the
        form it takes in the eyes of the law governing it. The legal form of a
        [company](https://meta.cdq.com/Business_partner) is the general type it
        may legally use to identify itself according to the local, regional,
        national, or international law governing it. This is normally reflected
        in the ending abbreviation after the
        [company](https://meta.cdq.com/Business_partner)'s name (e.g. AG, Inc.,
        LLC, S.A.).
      properties:
        name:
          $ref: '#/components/schemas/LegalFormName'
        language:
          $ref: '#/components/schemas/Language'
        mainAbbreviation:
          $ref: '#/components/schemas/LegalFormMainAbbreviation'
        cdlElfCode:
          $ref: '#/components/schemas/LegalFormCdlElfCode'
        categories:
          type: array
          items:
            $ref: '#/components/schemas/LegalFormCategory'
        url:
          $ref: '#/components/schemas/LegalFormUrl'
        technicalKey:
          $ref: '#/components/schemas/LegalFormTechnicalKey'
    IdentifierValue:
      type: string
      description: Value of the identifier.
      example: CHE-218.608.886 HR/MWST
    IdentifierTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of an
        [Identifier](https://meta.cdq.com/Business_partner/identifier/type).
      example: https://meta.cdq.com/Business_partner/identifier/type
    IdentifierTypeName:
      type: string
      description: Display label for the Identifier.
      example: CH_VAT_ID
    IdentifierTypeTechnicalKey:
      type: string
      description: Technical key of the type of the Identifier.
      example: CH_VAT_ID
    IdentifierType:
      type: object
      description: Type of the identifier.
      properties:
        url:
          $ref: '#/components/schemas/IdentifierTypeUrl'
        name:
          $ref: '#/components/schemas/IdentifierTypeName'
        technicalKey:
          $ref: '#/components/schemas/IdentifierTypeTechnicalKey'
    IdentifierStatusName:
      type: string
      description: Display label for the Identifier Status Name.
      example: ACTIVE
    IdentifierStatusTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the [Identifier
        Status](https://meta.cdq.com/Business_partner/identifier/status).
      example: https://meta.cdq.com/Business_partner/identifier/status
    IdentifierStatusTechnicalKey:
      type: string
      description: Technical key of the Identifier Status.
      example: ACTIVE
    IdentifierStatus:
      type: object
      description: >-
        Identifier Status refers to the current state of a unique identification
        number.
      properties:
        name:
          $ref: '#/components/schemas/IdentifierStatusName'
        url:
          $ref: '#/components/schemas/IdentifierStatusTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/IdentifierStatusTechnicalKey'
    IssuingBodyName:
      type: string
      description: Preferred display label for an Issuing Body.
      example: Amtsgericht Aachen
    IssuingBodyShortName:
      type: string
      description: Preferred short display label for an Issuing Body.
      maxLength: 50
      example: Amtsgericht Aachen
    IssuingBodyDescription:
      type: string
      description: Description for an Issuing Body.
      example: Amtsgericht Aachen
    IssuingBodyUrl:
      description: >-
        URL to the documentation which summarizes all details of a [Issuing
        Body](https://meta.cdq.com/Business_partner/identifier/issuing_body).
      example: https://meta.cdq.com/Business_partner/identifier/issuing_body
      type: string
    IssuingBodyTechnicalKey:
      description: Technical key of the Issuing Body.
      example: Amtsgericht Aachen
      type: string
    CountryShortName:
      type: string
      description: Country code (ISO 3166-1 alpha-2).
      example: CH
    CountryValue:
      type: string
      description: Country name (ISO 3166-1 alpha-2).
      example: Switzerland
    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'
    Jurisdiction:
      type: object
      description: >-
        The authority of an official organization to make decisions and
        judgments in a particular administrative area.
      required:
        - country
      properties:
        country:
          $ref: '#/components/schemas/Country'
        administrativeAreas:
          type: array
          items:
            $ref: '#/components/schemas/AdministrativeArea'
    IssuingBodyGleifCode:
      type: string
      description: Code of Global Legal Entity Identifier Foundation (GLEIF)
      example: RA000004
    IssuingBodyLocalAuthorityCode:
      type: string
      description: Code of the local registration authority
      example: R3101
    IssuingBodyExternalUrl:
      type: string
      description: External url of the issuing body
      example: https://www.amtsgericht.de/muenchen
    IssuingBody:
      type: object
      description: >-
        An Issuing Body is an organization or government institution that is
        responsible for assigning unique identifiers to individuals,
        organizations, or objects.
      properties:
        name:
          $ref: '#/components/schemas/IssuingBodyName'
        shortName:
          $ref: '#/components/schemas/IssuingBodyShortName'
        names:
          type: array
          items:
            $ref: '#/components/schemas/Name'
        description:
          $ref: '#/components/schemas/IssuingBodyDescription'
        url:
          $ref: '#/components/schemas/IssuingBodyUrl'
        technicalKey:
          $ref: '#/components/schemas/IssuingBodyTechnicalKey'
        jurisdiction:
          $ref: '#/components/schemas/Jurisdiction'
        gleifCode:
          $ref: '#/components/schemas/IssuingBodyGleifCode'
        localAuthorityCode:
          $ref: '#/components/schemas/IssuingBodyLocalAuthorityCode'
        externalUrl:
          $ref: '#/components/schemas/IssuingBodyExternalUrl'
    Identifier:
      type: object
      description: >-
        Identifies a [Business Partner](https://meta.cdq.com/Business_partner)
        in a given context uniquely such as a VAT identification number.
      properties:
        value:
          $ref: '#/components/schemas/IdentifierValue'
        type:
          $ref: '#/components/schemas/IdentifierType'
        status:
          $ref: '#/components/schemas/IdentifierStatus'
        issuingBody:
          $ref: '#/components/schemas/IssuingBody'
    CharacterSetName:
      type: string
      description: >-
        Name of character set. Supported character sets can be found
        [here](https://meta.cdq.com/Address/version/character_set).
      example: International
    CharacterSetTechnicalKey:
      type: string
      description: >-
        Technical key of character set. Supported character sets can be found
        [here](https://meta.cdq.com/Address/version/character_set).
      example: INTERNATIONAL
    CharacterSet:
      type: object
      description: Character set.
      properties:
        name:
          $ref: '#/components/schemas/CharacterSetName'
        technicalKey:
          $ref: '#/components/schemas/CharacterSetTechnicalKey'
    AddressVersion:
      type: object
      description: >-
        CDQ supports multiple versions of addresses comprising different
        charsets and languages. An address version is a unique combination of a
        character set and a language.
      properties:
        characterSet:
          $ref: '#/components/schemas/CharacterSet'
        language:
          $ref: '#/components/schemas/Language'
    AddressIdentifyingNameValue:
      type: string
      description: >-
        An identifying name assigned to an address. In most cases the
        identifying name refers to the name of a registered agent.
      example: John Doe
    AddressIdentifyingName:
      type: object
      description: >-
        An identifying name assigned to an address. In most cases the
        identifying name refers to the name of a registered agent.
      properties:
        value:
          $ref: '#/components/schemas/AddressIdentifyingNameValue'
    AddressExternalId:
      type: string
      description: >-
        ID the address has in the external system where the record originates
        from.
      example: '1'
    ProvenanceName:
      type: string
      description: Display Name of the Provenance Name.
      example: VIES
    ProvenanceUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the Provenance
        Name.
      example: >-
        https://meta.cdq.com/index.php?title=Property:Has_prefix&limit=500&offset=0&from=&until=&filter=
    ProvenanceTechnicalKey:
      type: string
      description: Technical Key of the Provenance Name.
      example: VIES
    ProvenanceCdqId:
      type: string
      description: The ID provided for a linkage with the source by CDQ.
      example: VIES:PL8660001429
    Provenance:
      type: object
      description: >-
        The source of the change or update. Could be the reference data source
        as VIES or Organization.
      properties:
        name:
          $ref: '#/components/schemas/ProvenanceName'
        url:
          $ref: '#/components/schemas/ProvenanceUrl'
        technicalKey:
          $ref: '#/components/schemas/ProvenanceTechnicalKey'
        cdqId:
          $ref: '#/components/schemas/ProvenanceCdqId'
    AddressMetadata:
      type: object
      description: Specifies the language and primary data provenance.
      properties:
        primaryProvenance:
          $ref: '#/components/schemas/Provenance'
        language:
          $ref: '#/components/schemas/Language'
    CareOfValue:
      type: string
      description: Value of the CareOf.
      example: CDQ GmbH c/o Product Department
    CareOf:
      type: object
      description: >-
        Signifies an intermediary who is responsible for transferring a piece of
        mail between the postal system and the final addressee. For example,
        when the addressee has no standard address, is under a corporate mail
        system, or is being manually forwarded mail sent to a more accessible
        location.
      properties:
        value:
          $ref: '#/components/schemas/CareOfValue'
    AddressContextValue:
      type: string
      description: Value of the Address Context.
      example: Production hall 7, Storage field 8.
    AddressContext:
      type: object
      description: >-
        The address context provides us with some additional information about
        the usage or specific recipient information of the addresses. It may
        hold multiple information organized as "tags".
      properties:
        value:
          $ref: '#/components/schemas/AddressContextValue'
    PostCodeValue:
      type: string
      description: Effective [post code](https://meta.cdq.com/Address/post_code).
      example: '9000'
    PostCodeTypeName:
      type: string
      description: Display label for the Post Code Type.
      example: Regular
    PostCodeTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of the
        [Administrative Area](https://meta.cdq.com/Address/post_code/type).
      example: https://meta.cdq.com/Address/post_code/type
    PostCodeTypeTechnicalKey:
      type: string
      description: Technical key of the Post Code.
      example: REGULAR
    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
    LocalityValue:
      type: string
      description: Name of the [Locality](https://meta.cdq.com/Address/locality).
      example: Sankt 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'
    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'
    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.
    BusinessPartnerTypeName:
      type: string
      description: Display name of the Business Partner Type Name.
      example: Legal Entity
    BusinessPartnerTypeUrl:
      type: string
      description: >-
        URL to the documentation which summarizes all details of a [Buisness
        Partner Type](https://meta.cdq.com/Business_partner/type).
      example: https://meta.cdq.com/Business_partner/type
    BusinessPartnerTypeTechnicalKey:
      type: string
      description: Technical key of the Business Partner Type.
      example: LEGAL_ENTITY
    BusinessPartnerType:
      type: object
      description: >-
        A distinct type a business partner is assigned to. It determines the
        business context a business partner is involved in. In the Corporate
        Data League, most business partners are legal entities.
      properties:
        name:
          $ref: '#/components/schemas/BusinessPartnerTypeName'
        url:
          $ref: '#/components/schemas/BusinessPartnerTypeUrl'
        technicalKey:
          $ref: '#/components/schemas/BusinessPartnerTypeTechnicalKey'
    Page:
      type: integer
      description: Current page number.
      example: '1'
      default: 0
      minimum: 0
    StartAfter:
      type: string
      description: The ID which is used to read the page.
      example: '5712566172571652'
    PageSize:
      type: integer
      description: Number of items per page.
      example: '100'
      default: 10
      minimum: 1
      maximum: 1000
    PageTotal:
      description: Total number of items which can be paged.
      example: '67'
      type: integer
    Limit:
      type: integer
      description: Number of items per page.
      example: '100'
    NextStartAfter:
      type: string
      description: Provides a value to be used as a startAfter in next page request.
      example: '5712566172571652'
    StorageDataSourceId:
      type: string
      description: Unique number of Data Source.
      example: 5e2874fb8d2a7400011acee1
    DataSourceTechnicalKey:
      type: string
      description: Technical key of the data source.
      example: BR_RF
