Wir laden Sie zu unseren Eröffnungstagen in unseren neuen Showroom in Kelkheim ein! Registrieren Sie sich.
1

Wählen Sie Ihre Region, um die Preise in Ihrer Währung, den Mehrwertsteuersatz und die Versandkosten zu überprüfen.

Endpoint

GET https://external-api.mddlinx.com/externalapi/categories

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

Headers
  • Accept string
    Possible values: application/json

    Erwarteter Antworttyp.

    Default value: application/json

Response

JSON
{
  "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 Required
    Possible 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 Required
    Possible 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 Required
    Possible 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 integer
    Possible 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 integer
    Possible values: 0 1

    Ist das Element ein Hauptelement? (1 – ja, 0 – nein)

    Default value: 0
  • Elements[].IsHidden integer
    Possible 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 integer
    Possible 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.

JSON
{
  "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
<?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);
Laravel
<?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);
JS
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);
})();
Python
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())
C#
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);
  }
}