Skip to content

REST API ​

Die MATEV API (v1) stellt Produktdaten, Kategorien, Hauptartikel, Hersteller, Traktoren, Kataloge und Ersatzteilgruppen als read-only REST-Endpunkte bereit.

Base URL ​

UmgebungURL
Productionhttps://admin.matev.eu/api/v1
Staginghttps://staging-admin.matev.eu/api/v1
Lokal (DDEV)https://admin.matev.ddev.site/api/v1

OpenAPI Spec ​

Die vollstaendige OpenAPI 3.1 Spezifikation ist verfuegbar unter:

Authentifizierung ​

Oeffentliche Endpunkte (alle GET-Routen) sind ohne Authentifizierung zugaenglich.

Geschuetzte Endpunkte erfordern ein Laravel Sanctum Bearer Token:

bash
curl -H "Authorization: Bearer <TOKEN>" https://admin.matev.eu/api/v1/user

Mehrsprachigkeit ​

Felder wie name, description, title werden als JSON-Objekt mit Sprachcodes zurueckgegeben:

json
{
  "name": {
    "de": "Mulcher MW 180",
    "en": "Mulcher MW 180"
  }
}

Paginierung ​

Listen-Endpunkte mit vielen Eintraegen unterstuetzen Paginierung:

ParameterDefaultMaxBeschreibung
page1-Seitennummer
per_page15100Eintraege pro Seite

Antwort-Format:

json
{
  "data": [...],
  "links": {
    "first": "https://admin.matev.eu/api/v1/products?page=1",
    "last": "https://admin.matev.eu/api/v1/products?page=5",
    "prev": null,
    "next": "https://admin.matev.eu/api/v1/products?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 5,
    "path": "https://admin.matev.eu/api/v1/products",
    "per_page": 15,
    "to": 15,
    "total": 73
  }
}

Endpunkte ​

Products ​

GET /v1/products ​

Alle veroeffentlichten Produkte auflisten.

Query-Parameter:

ParameterTypBeschreibung
categorystringNach Kategorie-Slug filtern
makerstringNach Hersteller-Kurzname filtern
searchstringVolltextsuche in Name und Slug
pageintegerSeitennummer
per_pageintegerEintraege pro Seite
bash
# Alle Produkte
curl https://admin.matev.eu/api/v1/products

# Gefiltert nach Kategorie
curl https://admin.matev.eu/api/v1/products?category=mulcher

# Suche
curl https://admin.matev.eu/api/v1/products?search=MW+180

Response:

json
{
  "data": [
    {
      "id": 1,
      "slug": "mulcher-mw-180",
      "object_type": "mulcher",
      "product_family_select": null,
      "name": { "de": "Mulcher MW 180", "en": "Mulcher MW 180" },
      "description": { "de": "Robuster Mulcher fuer ...", "en": "Robust mulcher for ..." },
      "working_width": { "de": "180 cm", "en": "180 cm" },
      "is_published": true,
      "sol": null,
      "eol": null,
      "categories": [
        { "id": 1, "slug": "mulcher", "name": { "de": "Mulcher" }, "short_name": { "de": "MU" }, "products_count": 12 }
      ],
      "scopes_of_work": [...],
      "performance_classes": [...],
      "makers": [...],
      "basic_equipments": [...],
      "main_articles_count": 3,
      "created_at": "2026-01-15T10:30:00+00:00",
      "updated_at": "2026-03-20T14:22:00+00:00"
    }
  ],
  "links": { ... },
  "meta": { ... }
}

GET /v1/products/{slug} ​

Einzelnes Produkt mit allen Relationen abrufen.

bash
curl https://admin.matev.eu/api/v1/products/mulcher-mw-180

Categories ​

GET /v1/categories ​

Alle Kategorien auflisten (mit Produkt-Anzahl).

bash
curl https://admin.matev.eu/api/v1/categories

Response:

json
{
  "data": [
    {
      "id": 1,
      "slug": "mulcher",
      "name": { "de": "Mulcher", "en": "Mulcher" },
      "short_name": { "de": "MU" },
      "products_count": 12,
      "created_at": "2026-01-10T08:00:00+00:00",
      "updated_at": "2026-01-10T08:00:00+00:00"
    }
  ]
}

GET /v1/categories/{slug} ​

Einzelne Kategorie abrufen.

bash
curl https://admin.matev.eu/api/v1/categories/mulcher

Main Articles ​

Hauptartikel sind bestellbare Einheiten mit Preisen und Bestellnummern.

GET /v1/main-articles ​

Alle veroeffentlichten Hauptartikel auflisten.

Query-Parameter:

ParameterTypBeschreibung
productstringNach Produkt-Slug filtern
searchstringSuche in Name und Bestellnummer
pageintegerSeitennummer
per_pageintegerEintraege pro Seite
bash
# Alle Hauptartikel eines Produkts
curl https://admin.matev.eu/api/v1/main-articles?product=mulcher-mw-180

Response:

json
{
  "data": [
    {
      "id": 1,
      "order_number": "MW-180-001",
      "name": { "de": "Mulcher MW 180 Standard" },
      "short_name": { "de": "MW 180 Std." },
      "description": { "de": "Standard-Ausfuehrung ..." },
      "price": 4250.00,
      "weight": "320",
      "customs_tariff_number": "84328000",
      "is_published": true,
      "sol": null,
      "eol": null,
      "products": [...],
      "makers": [...],
      "created_at": "2026-01-15T10:30:00+00:00",
      "updated_at": "2026-03-20T14:22:00+00:00"
    }
  ],
  "links": { ... },
  "meta": { ... }
}

GET /v1/main-articles/{orderNumber} ​

Einzelnen Hauptartikel per Bestellnummer abrufen.

bash
curl https://admin.matev.eu/api/v1/main-articles/MW-180-001

Makers ​

Hersteller (Traktor-Marken wie John Deere, Fendt, etc.)

GET /v1/makers ​

Alle Hersteller auflisten.

bash
curl https://admin.matev.eu/api/v1/makers

Response:

json
{
  "data": [
    {
      "id": 1,
      "shortname": "john-deere",
      "name": { "de": "John Deere" },
      "tractors_count": 45,
      "products_count": 8,
      "created_at": "2026-01-10T08:00:00+00:00",
      "updated_at": "2026-01-10T08:00:00+00:00"
    }
  ]
}

GET /v1/makers/{id} ​

Einzelnen Hersteller mit Traktor-Serien abrufen.

bash
curl https://admin.matev.eu/api/v1/makers/1

Tractors ​

GET /v1/tractors ​

Alle Traktoren auflisten.

Query-Parameter:

ParameterTypBeschreibung
makerstringNach Hersteller-Kurzname filtern
seriesintegerNach Traktor-Serien-ID filtern
searchstringSuche in Modell und Identifikation
pageintegerSeitennummer
per_pageintegerEintraege pro Seite
bash
# Alle John Deere Traktoren
curl https://admin.matev.eu/api/v1/tractors?maker=john-deere

Response:

json
{
  "data": [
    {
      "id": 1,
      "identification": "JD-6R-150",
      "model": "6R 150",
      "series": "6R",
      "type_of_tractor": "standard",
      "maker": { "id": 1, "shortname": "john-deere", "name": { "de": "John Deere" } },
      "tractor_series": { "id": 1, "name": { "de": "6R Serie" } },
      "performance_classes": [...],
      "created_at": "2026-01-10T08:00:00+00:00",
      "updated_at": "2026-01-10T08:00:00+00:00"
    }
  ],
  "links": { ... },
  "meta": { ... }
}

GET /v1/tractors/{id} ​

Einzelnen Traktor abrufen.

bash
curl https://admin.matev.eu/api/v1/tractors/1

Catalogs ​

Veroeffentlichte Produktkataloge.

GET /v1/catalogs ​

Alle veroeffentlichten Kataloge auflisten.

bash
curl https://admin.matev.eu/api/v1/catalogs

Response:

json
{
  "data": [
    {
      "id": 1,
      "slug": "hauptkatalog-2026",
      "title": { "de": "MATEV Hauptkatalog 2026" },
      "subtitle": { "de": "Produkte und Zubehoer" },
      "description": { "de": "..." },
      "status": "published",
      "format": "a4_portrait",
      "page_count": 124,
      "generated_at": "2026-03-01T09:00:00+00:00",
      "generated_pdf_path": "/storage/catalogs/hauptkatalog-2026.pdf",
      "pages_count": 124,
      "created_at": "2026-02-15T10:00:00+00:00",
      "updated_at": "2026-03-01T09:00:00+00:00"
    }
  ]
}

GET /v1/catalogs/{slug} ​

Einzelnen Katalog abrufen.

bash
curl https://admin.matev.eu/api/v1/catalogs/hauptkatalog-2026

Sparepart Groups ​

Ersatzteil-Gruppen.

GET /v1/sparepart-groups ​

Alle veroeffentlichten Ersatzteil-Gruppen auflisten.

Query-Parameter:

ParameterTypBeschreibung
searchstringSuche in Name und Bestellnummer
pageintegerSeitennummer
per_pageintegerEintraege pro Seite
bash
curl https://admin.matev.eu/api/v1/sparepart-groups

GET /v1/sparepart-groups/{id} ​

Einzelne Ersatzteil-Gruppe abrufen.

bash
curl https://admin.matev.eu/api/v1/sparepart-groups/1

Auth ​

GET /v1/user ​

Authentifizierten Benutzer abrufen. Erfordert Sanctum Bearer Token.

bash
curl -H "Authorization: Bearer <TOKEN>" https://admin.matev.eu/api/v1/user

Response:

json
{
  "id": 1,
  "name": "Admin",
  "email": "admin@matev.eu",
  "email_verified_at": "2026-01-10T08:00:00+00:00",
  "created_at": "2026-01-10T08:00:00+00:00",
  "updated_at": "2026-01-10T08:00:00+00:00"
}

Fehler-Responses ​

HTTP StatusBedeutung
200Erfolg
401Nicht authentifiziert (fehlender/ungueltiger Token)
404Ressource nicht gefunden
422Validierungsfehler
429Rate Limit erreicht
500Server-Fehler

Fehler-Format:

json
{
  "message": "Not Found"
}

Nuxt-Integration ​

Im Frontend/Portal wird die API ueber den useApi() Composable aus dem Shared-Package konsumiert:

typescript
// Beispiel: Produkte laden
const { data: products } = await useApi('/v1/products', {
  query: { category: 'mulcher', per_page: 12 }
})

// Beispiel: Einzelnes Produkt
const { data: product } = await useApi(`/v1/products/${slug}`)

Die Base-URL wird ueber NUXT_PUBLIC_API_BASE konfiguriert (siehe Setup).