Appearance
REST API
Die MATEV API (v1) stellt Produktdaten, Kategorien, Hauptartikel, Hersteller, Traktoren, Kataloge und Ersatzteilgruppen als read-only REST-Endpunkte bereit.
Base URL
| Umgebung | URL |
|---|---|
| Production | https://admin.matev.eu/api/v1 |
| Staging | https://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:
- openapi.yaml (im Repository)
- Kann in Tools wie Swagger Editor oder Redocly importiert werden
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/userMehrsprachigkeit
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:
| Parameter | Default | Max | Beschreibung |
|---|---|---|---|
page | 1 | - | Seitennummer |
per_page | 15 | 100 | Eintraege 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:
| Parameter | Typ | Beschreibung |
|---|---|---|
category | string | Nach Kategorie-Slug filtern |
maker | string | Nach Hersteller-Kurzname filtern |
search | string | Volltextsuche in Name und Slug |
page | integer | Seitennummer |
per_page | integer | Eintraege 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+180Response:
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-180Categories
GET /v1/categories
Alle Kategorien auflisten (mit Produkt-Anzahl).
bash
curl https://admin.matev.eu/api/v1/categoriesResponse:
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/mulcherMain Articles
Hauptartikel sind bestellbare Einheiten mit Preisen und Bestellnummern.
GET /v1/main-articles
Alle veroeffentlichten Hauptartikel auflisten.
Query-Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
product | string | Nach Produkt-Slug filtern |
search | string | Suche in Name und Bestellnummer |
page | integer | Seitennummer |
per_page | integer | Eintraege pro Seite |
bash
# Alle Hauptartikel eines Produkts
curl https://admin.matev.eu/api/v1/main-articles?product=mulcher-mw-180Response:
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-001Makers
Hersteller (Traktor-Marken wie John Deere, Fendt, etc.)
GET /v1/makers
Alle Hersteller auflisten.
bash
curl https://admin.matev.eu/api/v1/makersResponse:
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/1Tractors
GET /v1/tractors
Alle Traktoren auflisten.
Query-Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
maker | string | Nach Hersteller-Kurzname filtern |
series | integer | Nach Traktor-Serien-ID filtern |
search | string | Suche in Modell und Identifikation |
page | integer | Seitennummer |
per_page | integer | Eintraege pro Seite |
bash
# Alle John Deere Traktoren
curl https://admin.matev.eu/api/v1/tractors?maker=john-deereResponse:
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/1Catalogs
Veroeffentlichte Produktkataloge.
GET /v1/catalogs
Alle veroeffentlichten Kataloge auflisten.
bash
curl https://admin.matev.eu/api/v1/catalogsResponse:
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-2026Sparepart Groups
Ersatzteil-Gruppen.
GET /v1/sparepart-groups
Alle veroeffentlichten Ersatzteil-Gruppen auflisten.
Query-Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
search | string | Suche in Name und Bestellnummer |
page | integer | Seitennummer |
per_page | integer | Eintraege pro Seite |
bash
curl https://admin.matev.eu/api/v1/sparepart-groupsGET /v1/sparepart-groups/{id}
Einzelne Ersatzteil-Gruppe abrufen.
bash
curl https://admin.matev.eu/api/v1/sparepart-groups/1Auth
GET /v1/user
Authentifizierten Benutzer abrufen. Erfordert Sanctum Bearer Token.
bash
curl -H "Authorization: Bearer <TOKEN>" https://admin.matev.eu/api/v1/userResponse:
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 Status | Bedeutung |
|---|---|
200 | Erfolg |
401 | Nicht authentifiziert (fehlender/ungueltiger Token) |
404 | Ressource nicht gefunden |
422 | Validierungsfehler |
429 | Rate Limit erreicht |
500 | Server-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).