Branchekataloget API Gateway 1.12 documentation


Introduction

The purpose of the document is to define communication rules for retrieving product information from Branchekataloget product database. External companies should develop their own API client to access the resources provided. The API client should work according to the rules described below. The documentation describes all implemented functionalities and assumes the full range of available product information. However, the availability of particular requests or product information may be limited depending on the access level assigned to the user.


Communication

In order to use the API Gateway, the client sends an HTTPS request to the server. The server parses the request and sends a response. The response code and its structure for each resource are described in the detailed specification below. The format of the answer is JSON. The API Gateway provides GET requests (read data from the server).

The application uses the 24-hour Central European Time (CET). All queries in the API Gateway should be given in the CET time.


URL format

https://branchekataloget.dk/api-gateway/Branchekataloget/resource?parameters

  • api-gateway - the beginning of the address pointing to the API Gateway resource
  • Branchekataloget - identifier of the API Gateway
  • resource - the resource the request refers to
  • parameters - query string parameters

Example:

https://branchekataloget.dk/api-gateway/Branchekataloget/products?supplier=sup1&date-from=2022-01-30&lang=en


Authentication

Each request requires authentication, which is performed using the HTTP basic authentication method. The header contains the authentication data in the form "Basic username:password" where the phrase "username:password" is Base64 encoded. Username and password are set individually for each external system.


HTTP response status codes

The API Gateway responds with the following HTTP status codes:

  • 200 OK - indicates that the request was successful
  • 400 Bad Request - indicates that the request failed to complete due to errors. The user should correct the errors indicated in the response (the "errors" key in the JSON response) before resubmitting the request
  • 404 Not Found - indicates that the server could not find the requested resource

Example of curl response with status "200 OK":

< HTTP/1.1 200 OK < Date: Tue, 07 Dec 2021 12:37:13 GMT < Server: Apache < Vary: Accept-Encoding < Content-Length: 194 < Content-Type: text/html; charset=UTF-8 < ...

Example of curl response with status "400 Bad Request":

< HTTP/1.1 400 Bad Request < Date: Tue, 07 Dec 2021 11:15:16 GMT < Server: Apache < Content-Length: 134 < Connection: close < Content-Type: text/html; charset=UTF-8 < {"errors":[...]}

Example of curl response with status "404 Not Found":

< HTTP/1.1 404 Not Found < Date: Tue, 07 Dec 2021 12:54:44 GMT < Server: Apache < Content-Length: 0 < Content-Type: text/html; charset=UTF-8

Get all suppliers

https://branchekataloget.dk/api-gateway/Branchekataloget/suppliers

Method: GET

The request is sent by an external system. API Gateway responds by sending data of all suppliers.

Example of a request (curl):

curl -X GET "https://branchekataloget.dk/api-gateway/Branchekataloget/suppliers" -u username:password

Example of a response (JSON):

{ "suppliers":[ { "identifier":"sup1", "name":"Supplier1 Name", "vatId":"PL5211111111", "gln":"1234567000004", "duns":"130692711" }, ... ], "parameters":[] }

Main keys description:

  • suppliers - array with supplier data
  • parameters - correct/default query string parameters

Get all products of specified supplier(s)

https://branchekataloget.dk/api-gateway/Branchekataloget/products?supplier={identifier}&lang={code}&na-values={false/true}&limit={integer}&page={integer}&country-of-origin-multiple={false/true}

https://branchekataloget.dk/api-gateway/Branchekataloget/products?supplier1={identifier1}&supplier2={identifier2}...&lang={code}&na-values={false/true}&limit={integer}&page={integer}&country-of-origin-multiple={false/true}

Method: GET

The request is sent by an external system. API Gateway responds by sending all data of supplier(s) products (according to the access level purchased).

Query string parameters:

  • supplier | supplier{n} (mandatory; 1 ≤ n ≤ 200) - identifier of the supplier
  • lang (mandatory) - language code acc. to ISO 639-1 (2 letter language code) in which the values of multilingual product description fields are returned
  • na-values (default is "false") - specifies whether "not applicable" values (other than ETIM values) are to be included in the response ("false"/"true")
  • limit (default is "100") - maximum number of products on one page (integer from 1 to 200)
  • page (default is "1") - number of page with products (positive integer)
  • country-of-origin-multiple (default is "false") - specifies whether "countryOfOrigin" is presented in multiple (array) form in the response ("false"/"true")

Example of a request (curl):

curl -X GET "https://branchekataloget.dk/api-gateway/Branchekataloget/products?supplier=sup1&lang=en&na-values=true&country-of-origin-multiple=true" -u username:password

Example of a response (JSON):

{ "products":[ { "productId":"XYZ123", "lastModifiedDate":"2018-01-02 10:17:23", "creationDate":"2017-03-01 09:34:24", "overallInformation":{ "gtin":"1111111111111", "altPid":"-", "productName":"XYZ name123", "longDescription":"XYZ detailed description 123", "minimalDescription":"XYZn123", "marketingText":"XYZ nazwa123 - probably the best product on the market", "tenderText":"XYZ nazwa123 - probably the best offer on the market", "applicationInstruction":"how to use the product", "keyword":[ "keyword 1", "keyword 2", "keyword 3", ... ], "productStatus":"ACTIVE", "productCondition":"NEW", "supplier":"sup1", "supplierPid":"ZWZ652986", "supplierDescriptionShort":"AAA name123", "supplierAltPid":"CCC73545", "manufacturerName":"AA", "manufacturerShortName":"BB", "manufacturerPid":"12", "brandName":"XYZ", "brandSeries":"serie 1", "brandVariation":"type 12", "shelfLifePeriod":"99", "batteryContained":"false", "rohsIndicator":"false", "ceMarking":"false", "countryOfOrigin":[ "PL" ], "productInStock":"true", "validFrom":"2016-01-01", "expirationDate":"2020-01-01", "productType":"PHYSICAL", "netLength":"1", "netWidth":"0.3", "netHeight":"0.1", "netDiameter":"1", "netDimensionUnit":"MTR", "netWeight":"12", "netWeightUnit":"KGM", "netVolume":"0.03", "netVolumeUnit":"MTQ", "discountGroupId":"DG001", "discountGroupDescription":"Steel pipes", "bonusGroupId":"BG001", "bonusGroupDescription":"Per 1000", "sdsIndicator":"true", "unNumber":"2902", "netWeightOfHazardousSubstances":"0.001", "volumeOfHazardousSubstances":"0.0005", "properShippingName":"UN 2902 PESTICIDE", "packingGroup":"II", "transportCategory":"0", "limitedQuantities":"true", "exceptedQuantities":"false", "aggregationState":"L", "specialProvision":[ "2.1", "2.2", ... ], "hazardClass":[ "1", "3", ... ], "classificationCode":"34", "hazardLabel":[ "7A", "7B", ... ], "environmentalHazards":"true", "tunnelCode":"A", "ghsLabelCode":[ "GHS03", "GHS05", ... ], "ghsSignalWord":"D", "hazardStatement":[ "H241", "H244", ... ], "precautionaryStatement":[ "P667", "P754", ... ], "liIonTested":"true", "lithiumAmount":"1", "batteryEnergy":"30", "nos274":"true", "hazardTrigger":[ "34", "35", ... ], "pkwiu":"27.11.50.0", "warrantyConsumer":"24", "warrantyBusiness":"12", "reachIndicator":"true", "reachDate":"2015-01-01", "scipNumber":"e991v422-239c-4b49-8a42-3f4730aa51a0", "ufiCode":"N1QV-R02N-J00M-WQD5", "customsCommodityCode":"12479013" }, "etimDescription":{ "version":"9", "classId":"EC000722", "groupId":"EG000006", "features":{ "EF002169":"EV000179", "EF000025":"false", "EF001742":[ "2", "4.5" ], "EF001438":"80", "EF000116":"NA", "EF006007":"UN", ... } }, "orderInformation":{ "orderUnit":"LTR", "quantityMin":"1", "quantityInterval":"1", "deliveryTime":"5", "contentUnit":"LTR", "contentUnitQuantity":"1" }, "packingInformation":[ { "gtin":"1111111111111", "packingUnitCode":"CT", "quantity":"2", "gs1_128":"(01)01234567890128(15)051231", "packageBreak":"false", "packingParts":"1", "length":"1", "width":"1", "height":"1", "diameter":"1", "dimensionUnit":"MTR", "weight":"1", "weightUnit":"KGM" }, ... ], "priceInformation":[ { "priceUnit":"LTR", "priceUnitFactor":"1", "priceQuantity":"1", "priceOnRequest":"false", "listPrice":"7.22", "customerSpecificPrice":"8.13", "recommendedRetailPrice":"10.0", "priceCurrency":"EUR", "vat":"0.23", "territory":[ "FR", "DE", ... ], "validStartDate":"2016-06-01", "validEndDate":"2018-06-01" }, ... ], "mime":[ { "mimeCode":"MD01", "mimeSource":"https://files.etim-mapper.com/branchekataloget/image.png", "mimeDesignation":"Main product picture" }, ... ], "attributes":{ "M1":"value", "L2":"false", "S3":"v2", "N4":"5.2", "R5":[ "2", "5" ], ... }, "lca":{ "database":"OEKOBAU.DAT", "uuid":"006c17a5-bfbd-4786-8c96-7546e5317f9c", "link":"https://www.oekobaudat.de/OEKOBAU.DAT/resource/processes/006c17a5-bfbd-4786-8c96-7546e5317f9c", "epdLink":"https://www.oekobaudat.de/OEKOBAU.DAT/resource/processes/006c17a5-bfbd-4786-8c96-7546e5317f9c/epd", "category":"Dämmstoffe / Mineralwolle / Glaswolle", "name":"SAGLAN glass wool, bonded with bio-based adhesive +A2", "location":"CH", "validTo":"2026", "referenceFlowName":"SAGLAN Glaswolle, mit bio-basiertem Bindemittel", "referenceFlowLink":"https://www.oekobaudat.de/OEKOBAU.DAT/resource/flows/8f6f877c-b7bd-beb7-90ea-92a937d55638", "type":"specific dataset", "owner":"Sager AG", "compliance":"DIN EN 15804+A2 / ISO 14025", "values":{ "GWP-total":{ "A1-A3":"1.0786573466396", "A4":"0.0240670245179066", "A5":"0.454674166430043", "C1":"0", "C2":"0.00206841805544456", "C3":"0", "C4":"0.00727657303219126", "D":"-0.0533412613712809", "unit":"kg CO_(2)-Äq." } } } }, { "productId":"XYZ124", "lastModifiedDate":"2018-01-02 11:34:22", "creationDate":"2017-08-16 16:30:57", ... } ], "total":"1658", "pages":"17", "parameters":{ "supplier":"sup1", "lang":"en", "na-values":"true", "limit":"100", "page":"1" } }

Main keys description:

  • products - array with product data
  • total - the total number of products
  • pages - the total number of pages
  • parameters - correct/default query string parameters

Get all products of specified supplier(s) modified on or after a given date

https://branchekataloget.dk/api-gateway/Branchekataloget/products?supplier={identifier}&date-from={date}&lang={code}&na-values={false/true}&limit={integer}&page={integer}&country-of-origin-multiple={false/true}

https://branchekataloget.dk/api-gateway/Branchekataloget/products?supplier1={identifier1}&supplier2={identifier2}...&date-from={date}&lang={code}&na-values={false/true}&limit={integer}&page={integer}&country-of-origin-multiple={false/true}

Method: GET

The request is sent by an external system. API Gateway responds by sending all data of supplier products (according to the access level purchased) modified on or after a given date.

Query string parameters:

  • supplier | supplier{n} (mandatory; 1 ≤ n ≤ 200) - identifier of the supplier
  • date-from (mandatory) - date from which products are last modified (format is "yyyy-mm-dd")
  • lang (mandatory) - language code acc. to ISO 639-1 (2 letter language code) in which the values of multilingual product description fields are returned
  • na-values (default is "false") - specifies whether "not applicable" values (other than ETIM values) are to be included in the response ("false"/"true")
  • limit (default is "100") - maximum number of products on one page (integer from 1 to 200)
  • page (default is "1") - number of page with products (positive integer)
  • country-of-origin-multiple (default is "false") - specifies whether "countryOfOrigin" is presented in multiple (array) form in the response ("false"/"true")

Example of a request (curl):

curl -X GET "https://branchekataloget.dk/api-gateway/Branchekataloget/products?supplier=sup1&date-from=2022-01-30&lang=en" -u username:password

Get products by identifier

https://branchekataloget.dk/api-gateway/Branchekataloget/products?identifier={identifier}&value={value}&lang={code}&base64={false/true}&limit={integer}&page={integer}&country-of-origin-multiple={false/true}

https://branchekataloget.dk/api-gateway/Branchekataloget/products?identifier={identifier}&value1={value1}&value2={value2}...&lang={code}&base64={false/true}&limit={integer}&page={integer}&country-of-origin-multiple={false/true}

Method: GET

The request is sent by an external system. API Gateway responds by sending product data (according to the access level purchased) that meet the identifier conditions.

Query string parameters:

  • identifier (mandatory) - one of the following identifiers of the product:
    • productId
    • gtin
    • altPid
    • manufacturerPid
    • supplierPid
    • supplierAltPid
    • ItemDesignationBK
    • ItemVVSNumber
    • ProcessStatus_CVL
  • value | value{n} (mandatory; 1 ≤ n ≤ 200) - value of the identifier
  • lang (mandatory) - language code acc. to ISO 639-1 (2 letter language code) in which the values of multilingual product description fields are returned
  • base64 (default is false) - specifies whether value is encoded with Base64 ("false"/"true")
  • na-values (default is "false") - specifies whether "not applicable" values (other than ETIM values) are to be included in the response ("false"/"true")
  • limit (default is 100) - maximum number of products on one page (integer from 1 to 200)
  • page (default is 1) - number of page with products (positive integer)
  • country-of-origin-multiple (default is "false") - specifies whether "countryOfOrigin" is presented in multiple (array) form in the response ("false"/"true")

Example of a request (curl):

curl -X GET "https://branchekataloget.dk/api-gateway/Branchekataloget/products?identifier=productId&value=XYZ123&lang=en" -u username:password

Example of a response (JSON):

{ "products":[ { "productId":"XYZ123", "lastModifiedDate":"2018-01-02 10:17:23", "creationDate":"2017-08-16 16:30:57", ... } ], "total":"1", "pages":"1", "parameters":{ "identifier":"productId", "value":"XYZ123", "lang":"en", "base64":"false", "na-values":"false", "limit":"100", "page":"1" } }

Get products by identifier modified on or after a given date

https://branchekataloget.dk/api-gateway/Branchekataloget/products?identifier={identifier}&value={value}&date-from={date}&lang={code}&base64={false/true}&limit={integer}&page={integer}&country-of-origin-multiple={false/true}

https://branchekataloget.dk/api-gateway/Branchekataloget/products?identifier={identifier}&value1={value1}&value2={value2}...&date-from={date}&lang={code}&base64={false/true}&limit={integer}&page={integer}&country-of-origin-multiple={false/true}

Method: GET

The request is sent by an external system. API Gateway responds by sending product data (according to the access level purchased) that meet the identifier conditions and are modified on or after a given date.

Query string parameters:

  • identifier (mandatory) - one of the following identifiers of the product:
    • productId
    • gtin
    • altPid
    • manufacturerPid
    • supplierPid
    • supplierAltPid
    • ItemDesignationBK
    • ItemVVSNumber
    • ProcessStatus_CVL
  • value | value{n} (mandatory; 1 ≤ n ≤ 200) - value of the identifier
  • date-from (mandatory) - date from which products are last modified (format is "yyyy-mm-dd")
  • lang (mandatory) - language code acc. to ISO 639-1 (2 letter language code) in which the values of multilingual product description fields are returned
  • base64 (default is false) - specifies whether value is encoded with Base64 ("false"/"true")
  • na-values (default is "false") - specifies whether "not applicable" values (other than ETIM values) are to be included in the response ("false"/"true")
  • limit (default is 100) - maximum number of products on one page (integer from 1 to 200)
  • page (default is 1) - number of page with products (positive integer)
  • country-of-origin-multiple (default is "false") - specifies whether "countryOfOrigin" is presented in multiple (array) form in the response ("false"/"true")

Example of a request (curl):

curl -X GET "https://branchekataloget.dk/api-gateway/Branchekataloget/products?identifier=productId&value1=XYZ123&value2=ZYX5542&date-from=2022-01-30&lang=en" -u username:password

Changelog

1.12 (2024-04-18)

  • Adjustment of fields to the new xChange format
    The second stage of adapting field types, formats and names to the new xChange standard, replacing BMEcat, has been performed (list of changes).
  • Renaming of fields (keys)
    The names of the following fields were changed, adapting them in meaning to the new xChange format:
    • "descriptionShort" ⇒ "productName" (overall)
    • "descriptionLong" ⇒ "longDescription" (overall)
    • "descriptionVeryShort" ⇒ "minimalDescription" (overall)
    • "tenderText" ⇒ "marketingText" (overall)
    • "remark" ⇒ "applicationInstruction" (overall)
    • "manufacturerAcronym" ⇒ "manufacturerShortName" (overall)
    • "productSeries" ⇒ "brandSeries" (overall)
    • "productVariation" ⇒ "brandVariation" (overall)
    • "productToStock" ⇒ "productInStock" (overall)
    • "netWeightOfHazardousSubstance" ⇒ "netWeightOfHazardousSubstances" (overall)
    • "discountGroupSupplier" ⇒ "discountGroupId" (overall)
    • "bonusGroupSupplier" ⇒ "bonusGroupId" (overall)
    • "shippingName" ⇒ "properShippingName" (overall)
    • "specialProvisionId" ⇒ "specialProvision" (overall)
    • "reachInfo" ⇒ "reachIndicator" (overall)
    • "reachListDate" ⇒ "reachDate" (overall)
    • "customsNumber" ⇒ "customsCommodityCode" (overall)
  • Adaptation of the attribute value format to the xChange characteristics
    The value formats of the available attribute types have been adapted to the format of the so-called "characteristics" in the xChange standard.

1.11 (2024-03-26)

  • Adjustment of fields to the new xChange product data exchange standard
    The introduction of a new product data exchange format called xChange, replacing the previously used BMEcat format, required the adaptation of field types, formats and names to the new standard (list of changes)
  • Renaming of fields (keys)
    The names of the following fields were changed, adapting them in meaning to the new xChange format:
    • "netDepth" ⇒ "netHeight" (overall)
    • "noCuPerOu" ⇒ "contentUnitQuantity" (order)
    • "depth" ⇒ "height" (packing)
    • "quantityMin" & "quantityMax" ⇒ "quantity" (packing)
    • "tax" ⇒ "vat" (price)

1.10 (2023-12-05)

  • Link to EPD in LCA data
    A link to the EPD document has been added to the LCA data.

1.9 (2023-10-17)

  • Dynamic LCA (via API)
    The way of searching and accessing Life Cycle Assessment (LCA) data has been changed from static to dynamic (via API). Access to many different LCA databases has been enabled. When referring to LCA data, the version has been omitted (the reference is always to the latest version of the data).

1.8 (2023-09-20)

  • Reference flow information in LCA data
    LCA data has been completed with "Reference flow" information.

1.7 (2023-09-05)

  • GWP values
    Values of the Global Warming Potential (GWP) indicator can now be retrieved via the API gateway along with other product data.

1.6 (2023-08-03)

  • Get products by identifier with many values
    In addition to the basic request for retrieving details of a single product with a given identifier (single value), an additional request has been created to retrieve the products with the indicated values (up to 200) of the selected identifier in a single query.
  • Get products by identifier with many values modified on or after a given date
    The request for products by an identifier with multiple values can also be sent with a specified date (products modified on or after a given date are returned).

1.5 (2023-06-21)

  • Get all products of specified suppliers
    In addition to the basic request for retrieving the products of a single supplier, an additional request has been created that allows retrieving the products of multiple suppliers (up to 200) in a single query.

1.4 (2023-04-24)

  • Parameter "na-values" in product requests
    The possibility to include "not applicable" empty values (other than ETIM) marked as "-" (dash) or to omit them in the API response.

1.3 (2023-03-28)

  • The main key "suppliers" in "Get all suppliers" response
    The introduction of "suppliers" key makes it possible to send in the response not only the correct purpose of the request but also additional information (such as the parameters with which the request was handled). The use of main keys also makes it possible to further extend the response without compromising the correctness of existing requests. The "with-keys" query parameter is introduced temporarily, to replace the existing response format (without keys) with the target response format (with keys). The introduction of the query parameter with the default value "false" does not change the existing response format. However, it sensitizes the change and makes it possible to use the target answer format with the value "true". In the second stage, the "true" will become the default value, but the old response format will be available with the "false" value. In the third final stage, the "with-keys" query parameter will be deleted, and the response will always be generated with keys.

1.2 (2023-03-15)

  • New response key "parameters"
    For the convenience of users, the responses to some requests have been equipped with information about the parameters used in the request. These include all correctly used parameters (passed explicitly and implicitly).

1.1 (2022-11-04)

  • No more keys with empty values in GET responses
    The rule that elements with empty values are not returned in API responses has been generalized (exceptions to this rule have been removed).

Deprecated elements

  • 2024-04-18
    • Key "descriptionShort" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "productName")
    • Key "descriptionLong" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "longDescription")
    • Key "descriptionVeryShort" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "minimalDescription")
    • Key "remark" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "applicationInstruction"; single multilingual field)
    • Key "manufacturerAcronym" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "manufacturerShortName")
    • Key "productSeries" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "brandSeries")
    • Key "productVariation" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "brandVariation")
    • Key "productToStock" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "productInStock")
    • Key "netWeightOfHazardousSubstance" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "netWeightOfHazardousSubstances")
    • Key "discountGroupSupplier" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "discountGroupId")
    • Key "bonusGroupSupplier" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "bonusGroupId")
    • Key "shippingName" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "properShippingName")
    • Key "specialProvisionId" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "specialProvision")
    • Key "reachInfo" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "reachIndicator")
    • Key "reachListDate" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "reachDate")
    • Key "customsNumber" in the product description ("overallInformation" values): valid till 2024-09-02 (successor: "customsCommodityCode")
    • The default value "false" of the "country-of-origin-multiple" parameter in all "products" requests: valid till 2024-09-02
  • 2024-03-26
    • Key "netDepth" in the product description ("overallInformation" values): valid till 2024-06-25 (successor: "netHeight")
    • Key "noCuPerOu" in the product description ("orderInformation" values): valid till 2024-06-25 (successor: "contentUnitQuantity")
    • Key "depth" in the product description ("packingInformation" values): valid till 2024-06-25 (successor: "height")
    • Keys "quantityMin" and "quantityMax" in the product description ("packingInformation" values): valid till 2024-06-25 (successor: "quantity")
    • Key "tax" in the product description ("priceInformation" values): valid till 2024-06-25 (successor: "vat")
  • 2023-07-18
    • "with-keys" parameter in "Get all suppliers" request: valid till 2023-10-17
  • 2023-03-28
    • The default value "false" of the "with-keys" parameter in "Get all suppliers" request: valid till 2023-07-17