Endpoint
Gibt den vollständigen Katalogbaum zurück: Kategorien und Produkte (Symbole) mit Namen in mehreren Sprachen, Beschreibungen, Elementtypen. Die Antwort enthält eine Sammlung von Elementen, die verschachtelte Elemente (Unterkategorien/Gruppen) enthalten können.
Request
-
Accept stringPossible values: application/json
Erwarteter Antworttyp.
Default value: application/json
Response
{
"Elements": [
{
"Id": 0,
"DescriptiveName": "Root",
"Key": "0",
"Name": [
{ "LangSymbol": "PL", "Value": "Root" }
],
"Description": [],
"Picture": "",
"Products": [],
"Elements": [
{
"Id": 527865,
"DescriptiveName": "Wszystkie",
"Key": "1",
"Name": [
{ "LangSymbol": "EN", "Value": "All products" },
{ "LangSymbol": "PL", "Value": "Wszystkie produkty" }
],
"Description": [],
"Picture": "",
"Products": [],
"Elements": [
{
"Id": 101675,
"DescriptiveName": "Ultra",
"Key": "101675",
"Name": [
{ "LangSymbol": "EN", "Value": "Ultra" },
{ "LangSymbol": "PL", "Value": "Ultra" }
],
"Description": [
{ "LangSymbol": "EN", "Value": "chair polished aluminium base" },
{ "LangSymbol": "PL", "Value": "krzesło podstawa aluminium polerowane" }
],
"Picture": "",
"Products": [
{ "Symbol": "UFBPP19", "DirectDigital": 1 },
{ "Symbol": "UFPP19K", "DirectDigital": 1 }
],
"Elements": [],
"Type": 4,
"TypeName": "Symbol wirtualny",
"DirectDigital": 1,
"JoinID": 0,
"IsMain": 1,
"IsHidden": 0,
"MainKeyForElement": 101675,
"InvisibleOnPricelist": 0,
"InvisibleOnPricelistCurrencies": [ "SEK" ]
}
],
"Type": 1,
"TypeName": "Kategoria",
"DirectDigital": 1,
"JoinID": 0,
"IsMain": 0,
"IsHidden": 0,
"MainKeyForElement": 1,
"InvisibleOnPricelist": 0,
"InvisibleOnPricelistCurrencies": []
}
],
"Type": 0,
"TypeName": "Root",
"DirectDigital": 1,
"JoinID": 0,
"IsMain": 0,
"IsHidden": 0,
"MainKeyForElement": 0,
"InvisibleOnPricelist": 0,
"InvisibleOnPricelistCurrencies": []
}
]
}
-
Elements array<object> Required
Liste der Elemente der Katalogstruktur (Kategorien, Gruppen, virtuelle Symbole usw.).
-
Elements[].Id integer Required
Identifikator des Elements in der Datenbank.
-
Elements[].DescriptiveName string|null
Beschreibender Name des Elements (oft eher „wörterbuchartig” als Name[].Value).
-
Elements[].Key string Required
Abstrakter Schlüssel des Elements (im Katalog verwendete Zeichenfolge).
-
Elements[].Name array<object>
Bezeichnungen des Elements in verschiedenen Sprachen.
-
Elements[].Name[].LangSymbol string RequiredPossible values: PL EN DE ES FR IT
Sprachcode (zweistellig, z. B. PL, EN, DE).
-
Elements[].Name[].Value string Required
Bezeichnung des Elements in der jeweiligen Sprache.
-
Elements[].Description array<object>
Beschreibungen des Elements in verschiedenen Sprachen.
-
Elements[].Description[].LangSymbol string RequiredPossible values: PL EN DE ES FR IT
Sprachcode der Beschreibung.
-
Elements[].Description[].Value string Required
Beschreibung in der jeweiligen Sprache (kann leer sein).
-
Elements[].Picture string
URL des mit dem Element verknüpften Bildes (falls vorhanden).
-
Elements[].Products array<object>
Liste der Produkte (Symbole), die mit dem Element (z. B. mit der Kategorie/Familie) verbunden sind.
-
Elements[].Products[].Symbol string Required
Produktsymbol (SKU).
-
Elements[].Products[].DirectDigital integer RequiredPossible values: 0 1
Flag für die Verfügbarkeit des Symbols in Direct Digital (0 – nein, 1 – ja).
-
Elements[].Elements array<object>
Verschachtelte Elemente (Unterkategorien / Gruppen / Baumknoten) mit derselben Struktur wie Elements[].
-
Elements[].Type integer Required
Elementtyp-Code (z. B. Stamm, Kategorie, virtuelles Symbol – genaue Bedeutung auf der Systemseite).
-
Elements[].TypeName string Required
Name des Elementtyps (z. B. „Stamm“, „Virtuelles Symbol“, „Kategorie“).
-
Elements[].DirectDigital integerPossible values: 0 1
Flag, ob das jeweilige Element (Zweig) in Direct Digital verfügbar ist.
-
Elements[].JoinID integer
ID des Elements, mit dem es verknüpft ist (z. B. „Original”-Datensatz).
Default value: 0 -
Elements[].IsMain integerPossible values: 0 1
Ist das Element ein Hauptelement? (1 – ja, 0 – nein)
Default value: 0 -
Elements[].IsHidden integerPossible values: 0 1
Soll das Element auf der Seite ausgeblendet werden? (1 – ausgeblendet, 0 – sichtbar)
Default value: 0 -
Elements[].MainKeyForElement integer
Schlüssel des übergeordneten/Hauptelements, wenn dieses nicht das Hauptelement ist.
Default value: 0 -
Elements[].InvisibleOnPricelist integerPossible values: 0 1
Soll das Element in der Preisliste unsichtbar sein? (1 – ausgeblendet, 0 – sichtbar)
Default value: 0 -
Elements[].InvisibleOnPricelistCurrencies array<string>
Liste der Währungscodes, für die das Element in der Preisliste ausgeblendet werden soll.
{
"status": 500,
"error": "server_error",
"message": "Es ist ein Serverfehler aufgetreten."
}
Implementation
Beispiele für den Aufruf des Endpunkts (anonyme GET, ohne Authorization-Header) für /externalapi/categories.
<?php
declare(strict_types=1);
$endpoint = 'https://external-api.mddlinx.com/externalapi/categories';
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_HTTPGET => true,
CURLOPT_HTTPHEADER => [
'Accept: application/json',
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$body = curl_exec($ch);
$errno = curl_errno($ch);
$error = curl_error($ch);
$http = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($errno) {
throw new RuntimeException($error);
}
if ($http < 200 || $http >= 300) {
throw new RuntimeException('HTTP ' . $http . ': ' . $body);
}
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($data);
<?php
use Illuminate\Support\Facades\Http;
$endpoint = 'https://external-api.mddlinx.com/externalapi/categories';
$response = Http::acceptJson()
->timeout(60)
->get($endpoint);
if ($response->failed()) {
throw new RuntimeException('HTTP ' . $response->status() . ': ' . $response->body());
}
$tree = $response->json();
print_r($tree);
const endpoint = 'https://external-api.mddlinx.com/externalapi/categories';
(async () => {
const res = await fetch(endpoint, {
method: 'GET',
headers: {
'Accept': 'application/json'
}
});
if (!res.ok) {
throw new Error('HTTP ' + res.status + ': ' + (await res.text()));
}
const data = await res.json();
console.log(data);
})();
import requests
endpoint = 'https://external-api.mddlinx.com/externalapi/categories'
r = requests.get(
endpoint,
headers={
'Accept': 'application/json',
},
timeout=60,
)
r.raise_for_status()
print(r.json())
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var endpoint = "https://external-api.mddlinx.com/externalapi/categories";
using var http = new HttpClient();
http.DefaultRequestHeaders.Accept.ParseAdd("application/json");
var res = await http.GetAsync(endpoint);
var body = await res.Content.ReadAsStringAsync();
if (!res.IsSuccessStatusCode)
throw new Exception("HTTP " + (int)res.StatusCode + ": " + body);
Console.WriteLine(body);
}
}