The purpose of the document is to define the communication principles of the application with systems of external companies. The external systems should develop their own RESTful API that allows the mutual access to the available resources of both sides. Both API interfaces should work according to the same principles described below.
In order to use the RESTful API, 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 provides GET, PUT and DELETE requests. GET is used to read data from the server, PUT to update data on the server (create or modify), and DELETE to remove the existing data from the server. Not all resources must have all types of requests (see the specification for details).
The application uses the 24-hour Central European Time (CET). All queries in the API should be given in the CET time.
https://branchekataloget.dk/api/api-identifier/resource?parameters
Example:
https://branchekataloget.dk/api/api-identifier/products?date-from=2023-01-21
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.
The API responds with the following HTTP status codes:
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 < {"all":"1","unique":"1","new":"0","modified":"1","classified":"0","reclassified":"0","deletedClassifications":"0","deletedRelatedProducts":"1","createdRelatedProducts":"2","limitExceeded":"0","parameters":{"new":"add","existing":"replace","empty":"false"}}
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":["Limit parameter should be set to integer from the range [1, 100000]", "Page parameter should be set to positive integer"]}
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
1 API user = 1 IP address. An API user is created for communication with a single external system. In this sense, each API user corresponds to one unique IP address. In exceptional situations, a pool of IP addresses (for systems running in the cloud and changing IP address) or no restrictions on IP addresses (API supplier users) may be allowed, but in such cases, the number of IP addresses using a given API user is monitored and should not exceed one address per day.
For security and performance reasons, the daily number of API requests is limited for each API user. It is proportional to the limit of products in the account (regular API user) or the number of supplier products (API supplier user). The limits are chosen in such a way that they allow the entire product information to be read/written or deleted multiple times, as well as regularly querying for any changes. Since unreasonable management of API requests may cause the limits to be exceeded, we would like to point out that each GET type API request can retrieve detailed information about 100 products, and that a large number of products can be modified in PUT type requests (the limitation here is the 16 MB JSON file, which constitutes the attachment/body of a such type of request).
https://branchekataloget.dk/api/api-identifier/products?date-from={date}&as-supplier={identifier}
Method: GET
The request is sent by an external system. The application responds by sending IDs of products modified on or after a given date.
Query string parameters:
Example of a request (curl):
Example of a response (JSON):
{ "productIds":[ "XYZ123", "XYZ134", ... ], "total":"2634", "parameters":{ "date-from":"2022-02-15" } }
Fields description:
https://branchekataloget.dk/api/api-identifier/products/filter?as-supplier={identifier}
The request is sent by an external system. The application responds by sending IDs of the products that meet the filter conditions and their last modification dates (according to specified limit and page). In case of incorrect filter parameters, basic information about the detected errors is returned.
The filterData.json file example (UTF-8 encoded):
{ "productName":{ "pl":"kana" }, "gtin":0, "attributes":{ "M1":{ "pl":"wart" }, "L2":[ "false" ], "S3":[ "v1", "v2" ], "N4":"4", "R5":{ "from":"1", "to":"3" }, "MS6":{ "withType":"at_least_one", "with":[ "ms_v1", "ms_v2" ], "without":[ "ms_v3" ] } }, "labels":{ "withType":"at_least_one", "with":[ "Sold", "Gold" ], "without":[ "Public" ] }, "lca":{ "database":[ "OEKOBAU.DAT" ], "uuid":"4df" }, "hazardClass":{ "withType":"at_least_one", "with":[ "1", "2.1", "2.2" ], "without":[ "9" ] }, "categories":{ "TC1":{ "withType":"at_least_one", "with":[ "C1" ], "without":[ "SC5" ] } }, "totalDescriptionCompleteness":{ "from":"20", "to":"40" }, "lastModifiedDate":{ "type":"last", "number":"2", "unit":"day", "includingCurrent":"true" }, "creationDate":{ "type":"range", "to":"2016-06-01 00:00:00" } }
Filter field types:
Remarks:
Description of filter fields:
{ "productIds":[ "XYZ123", "XYZ519", ... ], "total":"43", "parameters":[] }
Example of error response:
{ "errors":[ "incorrect value of \"withType\" in \"labels\"", "incorrect value of \"totalDescriptionCompleteness\"" ] }
https://branchekataloget.dk/api/api-identifier/products?etim-version={number}&completeness={false/true}&dates-by-type={false/true}&na-values={false/true}&as-supplier={identifier}&country-of-origin-multiple={false/true}&categories-format-short={false/true}&www-image-url-lang={false/true}
Request is sent by an external system. The application responds with the detailed information of the specified product(s). It is necessary to send the list of product IDs (as a JSON data) that you want to get.
You can get by default up to 100 products in one GET request.
The productsIDs.json file example (UTF-8 encoded):
[ "XYZ123", "XYZ124" ]
{ "products":[ { "productId":"XYZ123", "overallInformation":{ "gtin":"1111111111111", "altPid":"-", "productName":{ "pl":"XYZ nazwa123", "en":"XYZ name123", ... }, "longDescription":{ "pl":"XYZ opis szczegółowy 123", "en":"XYZ detailed description 123", ... }, "minimalDescription":{ "pl":"XYZ-n123", "en":"XYZn123", ... }, "marketingText":{ "pl":"XYZ nazwa123 - prawdopodobnie najlepszy produkt na rynku", "en":"XYZ nazwa123 - probably the best product on the market", ... }, "tenderText":{ "pl":"XYZ nazwa123 - prawdopodobnie najlepsza oferta na rynku", "en":"XYZ nazwa123 - probably the best offer on the market", ... }, "applicationInstruction":{ "pl":"jak używać tego produktu", "en":"how to use the product", ... }, "keyword":{ "pl":[ "słowo kluczowe 1", "słowo kluczowe 2", "słowo kluczowe 3", ... ], "en":[ "keyword 1", "keyword 2", "keyword 3", ... ], ... }, "productStatus":"ACTIVE", "productCondition":"NEW", "supplier":"AAA", "supplierPid":"ZWZ652986", "supplierProductName":{ "pl":"AAA nazwa123", "en":"AAA name123", ... }, "supplierAltPid":"CCC73545", "manufacturerName":"AA", "manufacturerShortName":"BB", "manufacturerPid":"12", "brandName":"XYZ", "brandSeries":{ "pl":"seria 1", "en":"serie 1", ... }, "brandVariation":{ "pl":"typ 12", "en":"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":{ "pl":"Rury stalowe", "en":"Steel pipes", ... }, "bonusGroupId":"BG001", "bonusGroupDescription":{ "pl":"Na 1000", "en":"Per 1000", ... }, "sdsIndicator":"true", "unNumber":"2902", "netWeightOfHazardousSubstances":"0.001", "volumeOfHazardousSubstances":"0.0005", "properShippingName":{ "pl":"UN 2902 PESTYCYD", "en":"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", "factorOfCustomsCommodityCode":"3" }, "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" }, ... ], "attachments":[ { "type":"ATX015", "language":[ "pl", "en", ... ], "uri":"https://files.etim-mapper.com/xyz/zdjecie1", "description":{ "pl":"Główne zdjęcie produktu", "en":"Main product picture", ... }, "issueDate":"2017-01-01", "expirationDate":"2026-01-01" }, ... ], "mime":[ { "mimeCode":"MD01", "mimeSource":{ "pl":"https://files.etim-mapper.com/xyz/zdjecie1", "en":"https://files.etim-mapper.com/xyz/zdjecie1", ... }, "mimeDesignation":{ "pl":"Główne zdjęcie produktu", "en":"Main product picture", ... }, "issueDate":"2017-01-01", "expirationDate":"2026-01-01" }, ... ], "attributes":{ "M1":{ "pl":"wartosc", "en":"value", ... }, "L2":"false", "S3":"v2", "N4":"5.2", "R5":[ "2", "5" ], "MS6":[ "ms_v1", "ms_v2", ... ], "T7":"RE2", "REF8":[ "1", "2.1" ], ... }, "lca":{ "database":"OEKOBAU.DAT", "uuid":"301c6f09-ce88-4818-96c3-e420fe799d62", "link":"https://www.oekobaudat.de/OEKOBAU.DAT/resource/processes/301c6f09-ce88-4818-96c3-e420fe799d62" }, "additionalTechnicalDescription":{ "tech data 1 name":"tech data 1 value", "tech data 2 name":"tech data 2 value", ... }, "seo":{ "index":"true", "follow":"false", "canonical":{ "pl":"https://website.com/pl/page", "en":"https://website.com/en/page", ... }, "url":{ "pl":"https://website.com/pl/page/product/xyz123", "en":"https://website.com/en/page/product/xyz123", ... }, "metaDescription":{ "pl":"XYZ123 jest przykladowym produktem na naszej stronie", "en":"XYZ123 is an example product on our website", ... }, "metaKeywords":{ "pl":"xyz123, produkt, etim, klasyfikacja", "en":"xyz123, product, etim, classification", ... }, "title":{ "pl":"Produkt XYZ123 | Website.com", "en":"XYZ123 product | Website.com", ... }, "h1":{ "pl":"Produkt XYZ123", "en":"XYZ123 product", ... } }, "www":[ { "header":{ "pl":"Laptop i tablet w jednym", "en":"Laptop and tablet in one", ... }, "text":{ "pl":"Laptop 2 w 1 łączy w sobie lekkość, mobilność oraz dotykowe ekrany tabletów z <strong>mocą obliczeniową</strong> notebooków. ...", "en":"2 in 1 laptop combines lightness, mobility and touch screens of tablets with <strong>the computing power</strong> of notebooks. ...", ... }, "imageUrl":"https://files.etim-mapper.com/xyz/image.jpg", "imageTitle":{ "pl":"Laptop 2 w 1", "en":"2 in 1 laptop", ... }, "imageAlt":{ "pl":"zdjęcie laptopa 2 w 1", "en":"picture of 2 in 1 laptop", ... } }, ... ], "relatedProducts":[ { "relatedProductId":"ABC123", "relationType":"ACCESSORY", "quantity":"1" }, ... ], "relationsByAttribute":[ "relation1", "relation2", ... ], "categories":{ "TC1":[ "C1", "SC5", ... ], ... }, "labels":[ "label1", "label2", ... ], "descriptionCompleteness":{ "totalDescriptionCompleteness":"90", "generalDescriptionCompleteness":"80", "etimDescriptionCompleteness":"95", "orderDescriptionCompleteness":"100", "packingDescriptionCompleteness":"100", "priceDescriptionCompleteness":"91", "attachmentsDescriptionCompleteness":"80", "mimeDescriptionCompleteness":"80", "attributesDescriptionCompleteness":"80", "totalDescriptionCompletenessCustomCompany":"86", "totalDescriptionCompletenessUserDefined":"86", "generalDescriptionCompletenessCustomCompany":"81", "generalDescriptionCompletenessUserDefined":"81", "etimDescriptionCompletenessCustomCompany":"85", "etimDescriptionCompletenessUserDefined":"85", "orderDescriptionCompletenessCustomCompany":"100", "orderDescriptionCompletenessUserDefined":"100", "packingDescriptionCompletenessCustomCompany":"100", "packingDescriptionCompletenessUserDefined":"100", "priceDescriptionCompletenessCustomCompany":"70", "priceDescriptionCompletenessUserDefined":"70", "attachmentsDescriptionCompletenessCustomCompany":"85", "attachmentsDescriptionCompletenessUserDefined":"85", "mimeDescriptionCompletenessUserDefined":"85", "attributesDescriptionCompletenessCustomCompany":"75", "attributesDescriptionCompletenessUserDefined":"75", "categoryTreeDescriptionCompleteness":{ "TC1":"83", ... } }, "lastModifiedDateByType":{ "general":[ "date":"2018-01-02 10:17:23", "modifiedBy":"user2" ], "etim":[ "date":"2017-09-14 12:45:04", "modifiedBy":"user1" ], ... }, "lastModifiedDate":"2018-01-02 10:17:23", "modifiedBy":"user2", "creationDate":"2017-03-01 09:34:24", "createdBy":"user1" }, { "productId":"XYZ124", ... } ], "parameters":{ "etim-version":"9", "completeness":"true", "dates-by-type":"true", "na-values":"true", "country-of-origin-multiple":"true", "categories-format-short":"true", "www-image-url-lang":"false" } }
https://branchekataloget.dk/api/api-identifier/products?lang={code}&etim-version={number}&completeness={false/true}&dates-by-type={false/true}&na-values={false/true}&as-supplier={identifier}&country-of-origin-multiple={false/true}&categories-format-short={false/true}
Request is sent by an external system. The application responds with the detailed information of the specified product(s). All the coded information is sent in the requested language. It is necessary to send the list of product IDs (as a JSON data) that you want to get.
{ "products":[ { "productId":"XYZ123", "overallInformation":{ "gtin":"1111111111111", "altPid":"Not applicable", "productName":"XYZ name123", ... }, "etimDescription":{ "version":"9", "classId":"On-floor installation duct (EC000722)", "groupId":"Installation ducts for wall and ceiling (EG000006)", "features":[ [ "Material", "Steel" ], [ "Halogen free", "No" ], [ "Operating temperature", "2..4.5 °C" ], [ "Length", "80 mm" ], [ "RAL-number", "Not applicable" ], [ "With anti-slip layer", "Unknown" ], ... ] }, ... }, ... ], "parameters":{ "lang":"en", "etim-version":"9", "completeness":"false", "dates-by-type":"false", "na-values":"true", "country-of-origin-multiple":"true", "categories-format-short":"true" } }
When accessing a product, the primary product identifier ("productId") is usually used. However, for accounts using supplier management capabilities, it is sometimes convenient to refer to a product based on supplier information and use the supplier product identifier ("supplierPid"). This mode of access is enabled by the "as supplier" parameter. It gives the possibility to retrieve product information "as supplier". In this case, the product is accessed based on the pair: "supplier"-"supplierPid", instead of the main product identifier ("productId"). This allows retrieving the product information as if it was generated from a supplier account, i.e. where the main product identifier is "supplierPid". This way of accessing data forces the substitution of certain fields.
If the parameter "as-supplier" is used (i.e. a supplier identifier is specified as the value of the parameter "as-supplier"), the following fields of the downloaded product information are treated differently:
Lack of access rights to the listed fields will restrict or prevent the retrieval of product information.
https://branchekataloget.dk/api/api-identifier/products/lca?as-supplier={identifier}
Request is sent by an external system. The application responds with the detailed LCA information of the specified product(s). It is necessary to send the list of product IDs (as a JSON data) whose LCA data are to be obtained.
{ "products":[ { "productId":"XYZ123", "database":"OEKOBAU.DAT", "uuid":"5488d3f3-1e39-4a71-b357-ef605b65ed9c", "link":"https://www.oekobaudat.de/OEKOBAU.DAT/resource/processes/5488d3f3-1e39-4a71-b357-ef605b65ed9c", "epdLink":"https://www.oekobaudat.de/OEKOBAU.DAT/resource/processes/5488d3f3-1e39-4a71-b357-ef605b65ed9c/epd", "category":"Dämmstoffe / Holzfasern / Holzfaserdämmplatte", "name":"Wood fiber insulation - dry process (German average)", "location":"DE", "validTo":"2028", "referenceFlowName":"Holzfaserdämmstoffplatte Trockenverfahren (Durchschnitt DE)", "referenceFlowUnit":"1.0 * 1.0 m3", "referenceFlowLink":"https://www.oekobaudat.de/OEKOBAU.DAT/resource/flows/e12dff6e-bbdb-4870-b5e3-ae334ec7df70", "type":"representative dataset", "owner":"Thünen-Institut für Holzforschung", "compliance":"EN 16485 / EN 15804+A2", "reviewType":"Internal", "values":{ "ADPE":{ "A1":"3.005714796856335E-6", "A1-A3":"7.516841284601982E-6", "A2":"1.15699514681913E-7", "A3":"4.395426973063735E-6", "A5":"1.97400663487565E-8", "C2":"3.9506857895014E-8", "C3":"8.58293413238524E-8", "D":"-1.2675668817016163E-5", "unit":"kg Sb-Äqv." }, ... } }, ... ], "parameters":[] }
https://branchekataloget.dk/api/api-identifier/products?new={add/skip}&existing={replace/complete/skip}&empty={false/true}&as-supplier={identifier}
Method: PUT
Request is sent by an external system. The application writes the received information in its database and responds with a short report. Only string values (delimited by double quotes) are accepted. Also numbers should be transfered as strings delimited by quotations marks. Strings should not contain spaces at the beginning and at the end (such spaces will be anyway skiped/trimmed when importing).
You can send by default up to 16 MB data in one PUT request.
The productsData.json file example (UTF-8 encoded):
[ { "productId":"XYZ123", "overallInformation":{ "gtin":"1111111111111", "altPid":"-", "productName":{ "pl":"XYZ nazwa123", "en":"XYZ name123", ... }, "longDescription":{ "pl":"XYZ opis szczegółowy 123", "en":"XYZ detailed description 123", ... }, "minimalDescription":{ "pl":"XYZ-n123", "en":"XYZn123", ... }, "marketingText":{ "pl":"XYZ nazwa123 - prawdopodobnie najlepszy produkt na rynku", "en":"XYZ nazwa123 - probably the best product on the market", ... }, "tenderText":{ "pl":"XYZ nazwa123 - prawdopodobnie najlepsza oferta na rynku", "en":"XYZ nazwa123 - probably the best offer on the market", ... }, "applicationInstruction":{ "pl":"jak używać tego produktu", "en":"how to use the product", ... }, "keyword":{ "pl":[ "słowo kluczowe 1", "słowo kluczowe 2", "słowo kluczowe 3", ... ], "en":[ "keyword 1", "keyword 2", "keyword 3", ... ], ... }, "productStatus":"ACTIVE", "productCondition":"NEW", "supplier":"AAA", "supplierPid":"ZWZ652986", "supplierProductName":{ "pl":"AAA nazwa123", "en":"AAA name123", ... }, "supplierAltPid":"CCC73545", "manufacturerName":"AA", "manufacturerShortName":"BB", "manufacturerPid":"12", "brandName":"XYZ", "brandSeries":{ "pl":"seria 1", "en":"serie 1", ... }, "brandVariation":{ "pl":"typ 12", "en":"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":{ "pl":"Rury stalowe", "en":"Steel pipes", ... }, "bonusGroupId":"BG001", "bonusGroupDescription":{ "pl":"Na 1000", "en":"Per 1000", ... }, "sdsIndicator":"true", "unNumber":"2902", "netWeightOfHazardousSubstances":"0.001", "volumeOfHazardousSubstances":"0.0005", "properShippingName":{ "pl":"UN 2902 PESTYCYD", "en":"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", "factorOfCustomsCommodityCode":"3" }, "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" }, ... ], "attachments":[ { "type":"ATX015", "language":[ "pl", "en", ... ], "uri":"https://files.etim-mapper.com/xyz/zdjecie1", "description":{ "pl":"Główne zdjęcie produktu", "en":"Main product picture", ... }, "issueDate":"2017-01-01", "expirationDate":"2026-01-01" }, ... ], "attributes":{ "M1":{ "pl":"wartosc", "en":"value", ... }, "L2":"false", "S3":"v2", "N4":"5.2", "R5":[ "2", "5" ], "MS6":[ "ms_v1", "ms_v2", ... ], "T7":"RE2", "REF8":[ "1", "2.1" ], ... }, "lca":{ "database":"OEKOBAU.DAT", "uuid":"301c6f09-ce88-4818-96c3-e420fe799d62" }, "additionalTechnicalDescription":{ "tech data 1 name":"tech data 1 value", "tech data 2 name":"tech data 2 value", ... }, "seo":{ "index":"true", "follow":"false", "canonical":{ "pl":"https://website.com/pl/page", "en":"https://website.com/en/page", ... }, "url":{ "pl":"https://website.com/pl/page/product/xyz123", "en":"https://website.com/en/page/product/xyz123", ... }, "metaDescription":{ "pl":"XYZ123 jest przykladowym produktem na naszej stronie", "en":"XYZ123 is an example product on our website", ... }, "metaKeywords":{ "pl":"xyz123, produkt, etim, klasyfikacja", "en":"xyz123, product, etim, classification", ... }, "title":{ "pl":"Produkt XYZ123 | Website.com", "en":"XYZ123 product | Website.com", ... }, "h1":{ "pl":"Produkt XYZ123", "en":"XYZ123 product", ... } }, "www":[ { "header":{ "pl":"Laptop i tablet w jednym", "en":"Laptop and tablet in one", ... }, "text":{ "pl":"Laptop 2 w 1 łączy w sobie lekkość, mobilność oraz dotykowe ekrany tabletów z <strong>mocą obliczeniową</strong> notebooków. ...", "en":"2 in 1 laptop combines lightness, mobility and touch screens of tablets with <strong>the computing power</strong> of notebooks. ...", ... }, "imageUrl":"https://files.etim-mapper.com/xyz/image.jpg", "imageTitle":{ "pl":"Laptop 2 w 1", "en":"2 in 1 laptop", ... }, "imageAlt":{ "pl":"zdjęcie laptopa 2 w 1", "en":"picture of 2 in 1 laptop", ... } }, ... ], "relatedProducts":[ { "relatedProductId":"ABC123", "relationType":"ACCESSORY", "quantity":"1" }, ... ], "relationsByAttribute":[ "relation1", "relation2", ... ], "categories":{ "TC1":[ "C1", "SC5", ... ], ... }, "labels":[ "label1", "label2", ... ] }, ... ]
{ "all":"10", "rejected (product ID longer than 32 characters)":"1 (JHJJFF76742345-fsgdfhgddskjhf34581)", "unique":"8", "new":"5", "modified":"3", "classified":"2", "reclassified":"1", "deletedClassifications":"0", "deletedRelatedProducts":"9", "createdRelatedProducts":"7", "limitExceeded":"0", "parameters":{ "new":"add", "existing":"replace", "empty":"false" } }
When accessing a product, the primary product identifier ("productId") is usually used. However, for accounts using supplier management capabilities, it is sometimes convenient to refer to a product based on supplier information and use the supplier product identifier ("supplierPid"). This mode of access is enabled by the "as supplier" parameter. It gives the possibility to deliver product information "as supplier". In this case, the product is accessed based on the pair: "supplier"-"supplierPid", instead of the main product identifier ("productId"). This allows to delivery of product information where the main product identifier is "supplierPid". This way of accessing data forces the substitution of certain fields.
If the parameter "as-supplier" is used (i.e. a supplier identifier is specified as the value of the parameter "as-supplier"), the following fields of the imported product(s) are treated differently:
In the case of duplicate values of the "supplierPid" field, the application merges products. In the case of new products, the value of the "productId" field is automatically generated as a concatenation of supplier identifier, "_" (underscore) and "supplierPid" (the application ensures that there are no duplicates of the "productId" field).
Lack of access rights to the fields listed above will restrict or prevent the saving of product information.
https://branchekataloget.dk/api/api-identifier/products
Method: DELETE
The request is sent by an external system. It is necessary to send a list of product IDs (as a JSON data) that you want to delete. The application deletes the product(s) in its database and responds with a short report.
{ "deletedProducts":"2", "parameters":[] }
https://branchekataloget.dk/api/api-identifier/labels
The request is sent by an external system. The application responds by sending all identifiers of labels.
{ "labelIdentifiers":[ "Public", "label1", "label2", "label3" ], "parameters":[] }
Request is sent by an external system. The application responds with the detailed information of the specified label(s). It is necessary to send the list of label identifiers (as a JSON data) that you want to get.
The labelIdentifiers.json file example (UTF-8 encoded):
[ "Public", "label1" ]
{ "labels":[ { "identifier":"Public", "permanent":"true", "letter":"P", "color":"grey", "description":"Products having this label are visible for external users" }, { "identifier":"label1", "permanent":"false", "letter":"E", "color":"green" } ], "parameters":[] }
The labelsData.json file example (UTF-8 encoded):
[ { "identifier":"label1", "letter":"S", "color":"red", "description":"Products for sale" }, { "identifier":"label2", "letter":"O", "color":"grey", "description":"Old products" }, ... ]
Fields with the indicated default value can be omitted. Label(s) with the incorrect value(s) will be rejected.
{ "all":"4", "rejected":"1", "unique":"3", "replaced":"1", "new":"2", "parameters":[] }
The request is sent by an external system. It is necessary to send a list of label identifiers (as a JSON data) that you want to delete. The application deletes the label(s) in its database and responds with a short report.
[ "label1", "label2" ]
{ "deletedLabels":"2", "parameters":[] }
https://branchekataloget.dk/api/api-identifier/attributes
The request is sent by an external system. The application responds by sending all identifiers of attributes.
{ "attributeIdentifiers":[ "M1", "L2", "S3", "N4", "R5", "MS6", "T7", "REF8", ... ], "parameters":[] }
Request is sent by an external system. The application responds with the detailed information of the specified attribute(s). It is necessary to send the list of attributes identifiers (as a JSON data) that you want to get.
The attributeIdentifiers.json file example (UTF-8 encoded):
[ "M1", "L2", "S3", "REF8" ]
{ "attributes":[ { "identifier":"M1", "type":"M", "permanent":"false", "global":"true", "productCharacteristic":"true", "forSynch":"true", "importance":"0", "name":{ "pl":"Atrybut 1", "en":"Attribute 1", ... }, "description":{ "pl":"Opis atrybutu 1", "en":"Description of attribute 1", ... }, "inCompletenessMask":"false" }, { "identifier":"L2", "type":"L", "permanent":"false", "global":"false", "productCharacteristic":"false", "forSynch":"false", "importance":"5", "name":{ "pl":"Atrybut 2", "en":"Attribute 2", ... }, "description":{ "pl":"Opis atrybutu 2", "en":"Description of attribute 2", ... }, "questionInAttributeGroup":"false", "inCompletenessMask":"true", }, { "identifier":"S3", "type":"S", "permanent":"false", "global":"true", "productCharacteristic":"true", "forSynch":"false", "importance":"2", "name":{ "pl":"Atrybut 3", "en":"Attribute 3", ... }, "description":{ "pl":"Opis atrybutu 3", "en":"Description of attribute 3", ... }, "values":[ { "identifier":"v1", "value":{ "pl":"wartość select 1", "en":"select value 1", ... } }, ... ], "inCompletenessMask":"false" }, { "identifier":"REF8", "type":"REF", "indicatedField":"HAZARD_CLASS", "permanent":"false", "global":"true", "productCharacteristic":"false", "forSynch":"false", "importance":"5", "name":{ "pl":"Atrybut 7", "en":"Attribute 7", ... }, "description":{ "pl":"Opis atrybutu 7", "en":"Description of attribute 7", ... }, "inCompletenessMask":"false" } ], "parameters":[] }
The attributesData.json file example (UTF-8 encoded):
[ { "identifier":"M1", "type":"M", "global":"true", "productCharacteristic":"true", "forSynch":"false", "importance":"2", "name":{ "pl":"Atrybut 1", "en":"Attribute 1", ... }, "description":{ "pl":"Opis atrybutu 1", "en":"Description of attribute 1", ... } }, { "identifier":"S3", "type":"S", "global":"true", "productCharacteristic":"true", "forSynch":"false", "importance":"2", "name":{ "pl":"Atrybut 3", "en":"Attribute 3", ... },, "description":{ "pl":"Opis atrybutu 3", "en":"Description of attribute 3", ... }, "values":[ { "identifier":"val1", "value":{ "pl":"wart 1", "en":"val 1", ... } }, ... ] }, { "identifier":"REF8", "type":"REF", "indicatedField":"HAZARD_CLASS", "global":"true", "productCharacteristic":"false", "forSynch":"false", "importance":"5", "name":{ "pl":"Atrybut 7", "en":"Attribute 7", ... }, "description":{ "pl":"Opis atrybutu 7", "en":"Description of attribute 7", ... } }, ... ]
Fields with the indicated default value can be omitted. Attribute(s) with the incorrect value(s) will be rejected.
For attributes that are used in a custom company completeness mask, you cannot:
To make this possible, you must first remove these attributes from the completeness mask.
For attributes that are used as questions in attribute groups, you cannot:
To make this possible, you must first remove these attributes from their respective attribute groups.
{ "all":"6", "rejected":"1", "unique":"5", "replaced":"4", "new":"1", "parameters":[] }
The request is sent by an external system. It is necessary to send a list of attribute identifiers (as a JSON data) that you want to delete. The application deletes the attribute(s) in its database and responds with a short report.
[ "M1", "L2" ]
{ "deletedAttributes":"2", "parameters":[] }
You cannot delete attributes that are used in a custom company completeness mask. To make this possible, you must first remove these attributes from the completeness mask.
https://branchekataloget.dk/api/api-identifier/attribute-groups
The request is sent by an external system. The application responds by sending all identifiers of attribute groups.
{ "attributeGroupIdentifiers":[ "G1", "G2", "Q1", "Q2", "Q3" ], "parameters":[] }
Request is sent by an external system. The application responds with the detailed information of the specified attribute group(s). It is necessary to send the list of attribute groups identifiers (as a JSON data) that you want to get.
The attributeGroupIdentifiers.json file example (UTF-8 encoded):
[ "G1", "Q1" ]
{ "attributeGroups":[ { "identifier":"G1", "name":{ "pl":"Grupa 1", "en":"Group 1", ... }, "attributes":[ "M1", "R5" ] }, { "identifier":"Q1", "name":{ "pl":"Grupa z pytaniem 1", "en":"Group with question 1", ... }, "question":"L2", "answersYes":[ "S3", "N4" ], "answersNo":[ "T7" ] } ], "parameters":[] }
The order of attribute groups can be set in GUI. The attribute groups are returned in the set order. Also, attributes within groups are returned in the set order.
The attributeGroupsData.json file example (UTF-8 encoded):
[ { "identifier":"G1", "name":{ "pl":"Grupa 1", "en":"Group 1", ... }, "attributes":[ "M1", "R5" ] }, { "identifier":"Q1", "name":{ "pl":"Grupa z pytaniem 1", "en":"Group with question 1", ... }, "question":"L2", "answersYes":[ "S3", "N4" ], "answersNo":[ "T7" ] }, ... ]
Attribute groups are created in the order specified in the PUT request. The order of attribute groups is important when presenting product data and can be modified in the GUI. The order of attributes within groups results from their ordering within attribute definitions.
{ "all":"4", "rejected":"0", "unique":"4", "replaced":"2", "new":"2", "parameters":[] }
The request is sent by an external system. It is necessary to send a list of attribute group identifiers (as a JSON data) that you want to delete. The application deletes the attribute group(s) in its database and responds with a short report.
{ "deletedAttributeGroups":"2", "parameters":[] }
https://branchekataloget.dk/api/api-identifier/relations-by-attribute
The request is sent by an external system. The application responds by sending all identifiers of relations by attribute.
{ "relationByAttributeIdentifiers":[ "ST", "ST1", ... ], "parameters":[] }
Request is sent by an external system. The application responds with the detailed information of the specified relation(s) by attribute. It is necessary to send the list of relation identifiers (as a JSON data) that you want to get.
The relationByAttributeIdentifiers.json file example (UTF-8 encoded):
[ "ST", "EF1" ]
{ "relationsByAttribute":[ { "identifier":"ST", "attribute":"STAT", "name":{ "pl":"Status produktu", "en":"Product status", ... }, "products":[ "XYZ", "XYZ212", ... ], "productValues":{ "XYZ212":{ "pl":[ { "type":"core_product", "value":"121" } ], "en":[ { "type":"core_product", "value":"121" } ], ... }, ... }, "virtualProducts":[ "XYZ" ] }, { "identifier":"EF1", "attribute":"EF000363", "name":{ "pl":"Oznaczenie rozmiaru", "en":"Size indication", ... }, "products":[ "XYZ12", ... ], "productValues":{ "XYZ12":"EV000877", ... } } ], "parameters":[] }
https://branchekataloget.dk/api/api-identifier/relations-by-attribute?lang={code}
Request is sent by an external system. The application responds with the detailed information of the specified relation(s) by attribute. All the coded information is sent in the requested language. It is necessary to send the list of relation identifiers (as a JSON data) that you want to get.
[ "ST", "EF1", ]
{ "relationsByAttribute":[ { "identifier":"ST", "attribute":"STAT", "name":"Product status", "products":[ "XYZ", "XYZ212", ... ], "productValues":{ "XYZ212":[ "Core product (121)" ], ... }, "virtualProducts":[ "XYZ" ] }, { "identifier":"EF1", "attribute":"EF000363", "name":"Size indication", "products":[ "XYZ12", ... ], "productValues":{ "XYZ12":"Mignon", ... } } ], "parameters":{ "lang":"en" } }
The relationsData.json file example (UTF-8 encoded):
[ { "identifier":"ST", "attribute":"STAT", "name":{ "pl":"Status produktu", "en":"Product status", ... }, "products":[ "XYZ212", ... ] }, { "identifier":"EF1", "attribute":"EF000363", "name":{ "pl":"Oznaczenie rozmiaru", "en":"Size indication", ... }, "products":[ "XYZ12", ... ] }, ... ]
{ "all":"5", "rejected":"1", "unique":"4", "replaced":"3", "new":"1", "parameters":[] }
The request is sent by an external system. It is necessary to send a list of relation identifiers (as a JSON data) that you want to delete. The application deletes the relation(s) by attribute in its database and responds with a short report.
{ "deletedRelationsByAttribute":"2", "parameters":[] }
https://branchekataloget.dk/api/api-identifier/suppliers
The request is sent by an external system. The application responds by sending all identifiers of suppliers.
{ "supplierIdentifiers":[ "sup1", "sup2", "sup3" ], "parameters":[] }
Request is sent by an external system. The application responds with the detailed information of the specified supplier(s). It is necessary to send the list of supplier identifiers (as a JSON data) that you want to get.
The supplierIdentifiers.json file example (UTF-8 encoded):
[ "sup1", "sup2" ]
{ "suppliers":[ { "identifier":"sup1", "name":"Supplier1 Name", "manufacturer":"false", "vatId":"PL5211111111", "gln":"1234567000004", "duns":"130692711", "street":"Mlynarska 16", "postalCode":"91-823", "city":"Lodz", "country":"PL", "contactPerson":"Jan Kowalski", "phone":"+48690589234", "email":"office@supplier1name.com", "website":"supplier1name.com", "logo":"https://files.etim-mapper.com/xyz/sup1-logo.jpg", "description":"Supplier1 Description", "mailingList":"john.doe@supplier1name.com;uncle.bob@supplier1name.com" }, ... ], "parameters":[] }
The suppliersData.json file example (UTF-8 encoded):
[ { "identifier":"sup1", "name":"Supplier1 Name", "manufacturer":"false", "vatId":"PL5211111111", "gln":"1234567000004", "duns":"130692711", "street":"Mlynarska 16", "postalCode":"91-823", "city":"Lodz", "country":"PL", "contactPerson":"Jan Kowalski", "phone":"+48690589234", "email":"office@supplier1name.com", "website":"supplier1name.com", "logo":"https://files.etim-mapper.com/xyz/sup1-logo.jpg", "description":"Supplier1 Description", "mailingList":"john.doe@supplier1name.com;uncle.bob@supplier1name.com" }, ... ]
Fields with the indicated default value can be omitted. Supplier(s) with the incorrect value(s) will be rejected.
{ "all":"3", "rejected":"1", "unique":"2", "replaced":"1", "new":"1", "parameters":[] }
https://branchekataloget.dk/api/api-identifier/suppliers?delete-products={false/true}
The request is sent by an external system. It is necessary to send a list of supplier identifiers (as a JSON data) that you want to delete. The application deletes the supplier(s) in its database and responds with a short report.
{ "deletedSuppliers":"2", "parameters":{ "delete-products":"false" } }
https://branchekataloget.dk/api/api-identifier/buyers
The request is sent by an external system. The application responds by sending all identifiers of buyers.
{ "buyerIdentifiers":[ "buy1", "buy2", "buy3" ], "parameters":[] }
Request is sent by an external system. The application responds with the detailed information of the specified buyer(s). It is necessary to send the list of buyer identifiers (as a JSON data) that you want to get.
The buyerIdentifiers.json file example (UTF-8 encoded):
[ "buy1", "buy2" ]
{ "buyers":[ { "identifier":"buy1", "name":"Buyer1 Name", "gln":"7654321000008", "duns":"041532772" }, ... ], "parameters":[] }
The buyersData.json file example (UTF-8 encoded):
[ { "identifier":"buy1", "name":"Buyer1 Name", "gln":"7654321000008", "duns":"041532772" }, ... ]
Buyer(s) with the incorrect value(s) will be rejected.
The request is sent by an external system. It is necessary to send a list of buyer identifiers (as a JSON data) that you want to delete. The application deletes the buyer(s) in its database and responds with a short report.
{ "deletedBuyers":"2", "parameters":[] }
https://branchekataloget.dk/api/api-identifier/categories
The request is sent by an external system. The application responds by sending all identifiers of category trees.
{ "categoryTreeIdentifiers":[ "TC1", "TC2" ], "parameters":[] }
https://branchekataloget.dk/api/api-identifier/categories?www-image-url-lang={false/true}
Request is sent by an external system. The application responds with the detailed information of the specified category tree(s). It is necessary to send the list of category trees identifiers (as a JSON data) that you want to get.
The categoryTreeIdentifiers.json file example (UTF-8 encoded):
[ "TC1", "TC2" ]
{ "categoryTrees":[ { "categoryTreeIdentifier":"TC1", "categoryTreeName":{ "pl":"Sklep1", "en":"Shop1", ... }, "categoryTreeAttributes":[ "M1", "L2" ], "categories":[ { "identifier":"C1", "name":{ "pl":"Kategoria 1", "en":"Category 1", ... }, "seo":{ "index":"true", "follow":"true", "canonical":{ "pl":"https://website.com/pl/page", "en":"https://website.com/en/page", ... }, "url":{ "pl":"https://website.com/pl/page/kategoria/C1", "en":"https://website.com/en/page/category/C1", ... }, "metaDescription":{ "pl":"C1 jest przykladowa kategoria na naszej stronie", "en":"C1 is an example category on our website", ... }, "metaKeywords":{ "pl":"c1, kategoria, etim, klasyfikacja", "en":"c1, category, etim, classification", ... }, "title":{ "pl":"Kategoria C1 | Website.com", "en":"C1 category | Website.com", ... }, "h1":{ "pl":"Kategoria C1", "en":"C1 category", ... } }, "www":[ { "header":{ "pl":"Laptopy i tablety w jednym", "en":"Laptops and tablets in one", ... }, "text":{ "pl":"Laptopy 2 w 1 łączą w sobie lekkość, mobilność oraz dotykowe ekrany tabletów z <strong>mocą obliczeniową</strong> notebooków. ...", "en":"2 in 1 laptops combine lightness, mobility and touch screens of tablets with <strong>the computing power</strong> of notebooks. ...", ... }, "imageUrl":"https://files.etim-mapper.com/xyz/category-image.jpg", "imageTitle":{ "pl":"Laptopy 2 w 1", "en":"2 in 1 laptops", ... }, "imageAlt":{ "pl":"zdjęcie laptopów 2 w 1", "en":"picture of 2 in 1 laptops", ... } }, ... ] }, { "identifier":"C2", "name":{ "pl":"Kategoria 2", "en":"Category 2", ... }, "seo":{ ... }, "www":[ ... ] }, { "identifier":"SC1", "parent":"C1", "name":{ "pl":"Podkategoria 1", "en":"Subcategory 1", ... }, "attributes":[ "N4", "T7", "GASCAT" ], "seo":{ ... }, "www":[ ... ] }, { "identifier":"SC2", "parent":"C1", "name":{ "pl":"Podkategoria 2", "en":"Subcategory 2", ... }, "attributes":[ "N4", "T7" ], "seo":{ ... }, "www":[ ... ] }, ... ] }, ... ], "parameters":[ "www-image-url-lang":"false" ] }
The categoryTreesData.json file example (UTF-8 encoded):
[ { "categoryTreeIdentifier":"TC1", "categoryTreeName":{ "pl":"Sklep1", "en":"Shop1", ... }, "categoryTreeAttributes":[ "M1", "L2" ], "categories":[ { "identifier":"C1", "name":{ "pl":"Kategoria 1", "en":"Category 1", ... }, "seo":{ "index":"true", "follow":"true", "canonical":{ "pl":"https://website.com/pl/page", "en":"https://website.com/en/page", ... }, "url":{ "pl":"https://website.com/pl/page/kategoria/C1", "en":"https://website.com/en/page/category/C1", ... }, "metaDescription":{ "pl":"C1 jest przykladowa kategoria na naszej stronie", "en":"C1 is an example category on our website", ... }, "metaKeywords":{ "pl":"c1, kategoria, etim, klasyfikacja", "en":"c1, category, etim, classification", ... }, "title":{ "pl":"Kategoria C1 | Website.com", "en":"C1 category | Website.com", ... }, "h1":{ "pl":"Kategoria C1", "en":"C1 category", ... } }, "www":[ { "header":{ "pl":"Laptopy i tablety w jednym", "en":"Laptops and tablets in one", ... }, "text":{ "pl":"Laptopy 2 w 1 łączą w sobie lekkość, mobilność oraz dotykowe ekrany tabletów z <strong>mocą obliczeniową</strong> notebooków. ...", "en":"2 in 1 laptops combine lightness, mobility and touch screens of tablets with <strong>the computing power</strong> of notebooks. ...", ... }, "imageUrl":"https://files.etim-mapper.com/xyz/category-image.jpg", "imageTitle":{ "pl":"Laptopy 2 w 1", "en":"2 in 1 laptops", ... }, "imageAlt":{ "pl":"zdjęcie laptopów 2 w 1", "en":"picture of 2 in 1 laptops", ... } }, ... ] }, { "identifier":"C2", "name":{ "pl":"Kategoria 2", "en":"Category 2", ... }, "seo":{ ... }, "www":[ ... ] }, { "identifier":"SC1", "parent":"C1", "name":{ "pl":"Podkategoria 1", "en":"Subcategory 1", ... }, "attributes":[ "N4", "T7", "GASCAT" ], "seo":{ ... }, "www":[ ... ] }, { "identifier":"SC2", "parent":"C1", "name":{ "pl":"Podkategoria 2", "en":"Subcategory 2", ... }, "attributes":[ "N4", "T7" ], "seo":{ ... }, "www":[ ... ] }, ... ] }, ... ]
The request is sent by an external system. It is necessary to send a list of category trees identifiers (as a JSON data) that you want to delete. The application deletes the category tree(s) in its database and responds with a short report.
{ "deletedCategoryTrees":"2", "parameters":[] }
https://branchekataloget.dk/api/api-identifier/categories?category-tree-identifier={identifier}
The request is sent by an external system. It is necessary to send a list of category identifiers (as a JSON data) that you want to delete and specify their category tree in the "category-tree-identifier" parameter. The application deletes the categories in its database and responds with a short report.
The categoryIdentifiers.json file example (UTF-8 encoded):
[ "C1", "SC2" ]
{ "deletedCategories":"2", "parameters":{ "category-tree-identifier":"TC1" } }
https://branchekataloget.dk/api/api-identifier/synchronizations/run/{trigger-identifier}
The request is sent by an external system. The application runs the synchronization for the specified trigger identifier and responds with the status of the running synchronization.
{ "status":"in progress", "trigger-identifier":"tr67", "starting-time":"2021-04-15 10:20:03", "info":"52.65%", "progress-id":"sskYwG9068tDoSy7nfD7Dbzxj6iUSo9g" }
{ "status":"done", "trigger-identifier":"tr67", "starting-time":"2021-04-15 11:15:23", "info":"Source: CompanyXYZ | Target: CompanyABC | Creation of new products: yes | Deletion of products: yes | Overwriting of additional global attributes: yes | Selected products: 1000 | Created products: 0 | Modified products: 1000 | Deleted products: 0 | Classified products: 0 | Reclassified products: 0 | Products with deleted class: 0 | Overwritten additional global attributes: 0 | Created additional global attributes: 0" }
{ "status":"error", "trigger-identifier":"tr67", "starting-time":"2021-04-15 08:34:09", "info":"This operation is already in progress (started by userA)." }
https://branchekataloget.dk/api/api-identifier/synchronizations/check/{progress-id}
The request is sent by an external system. The application responds with the current status of the running synchronization. The synchronization process is identified by "progress-id", returned by the system when the synchronization is run (see "Run synchronization trigger" section).
{ "status":"in progress", "trigger-identifier":"tr67", "starting-time":"2021-04-15 10:20:03", "info":"87.10%", "progress-id":"sskYwG9068tDoSy7nfD7Dbzxj6iUSo9g" }
{ "status":"done", "trigger-identifier":"tr67", "starting-time":"2021-04-15 10:20:03", "info":"Source: CompanyXYZ | Target: CompanyABC | Creation of new products: yes | Deletion of products: yes | Overwriting of additional global attributes: yes | Selected products: 1000 | Created products: 0 | Modified products: 1000 | Deleted products: 0 | Classified products: 0 | Reclassified products: 0 | Products with deleted class: 0 | Overwritten additional global attributes: 0 | Created additional global attributes: 0" }
{ "status":"error", "trigger-identifier":"tr67", "starting-time":"2021-04-15 10:20:03", "info":"Attributes conflicted: Attr1: attribute (logical) vs. attribute (numeric)" }
The request is sent by the application. Company receives the request and handles identifiers of products, that has been added, modified or deleted in the application.
Example of a request (JSON):
{ "new":[ "XYZ123", "XYZ245", ... ], "modified":[ "XYZ567", "XYZ568", ... ], "deleted":[ "XYZ45", "XYZ12", ... ] }