Skip to content

Interne Endpunkte ​

Zwei Endpunkte brauchen ein gültiges Token, aber keine bestimmte Ability.

MethodePfadZweck
GET/userWem gehört dieses Token?
GET/search/suggestionsVorschläge für die strukturierte Suche

Benutzer zum Token ​

GET /user

Liefert den PIM-Benutzer, dem das Token gehört. Praktisch, um nach dem Einrichten zu prüfen, ob ein Token funktioniert. Keine Parameter.

Beispiel ​

bash
curl -sS https://admin.matev.eu/api/v1/user \
  -H 'Accept: application/json' \
  -H "Authorization: Bearer $MATEV_TOKEN"
js
const res = await fetch('https://admin.matev.eu/api/v1/user', {
  headers: { Accept: 'application/json', Authorization: `Bearer ${process.env.CONTENT_API_TOKEN}` },
})
if (res.status === 401) throw new Error('Token ungültig oder widerrufen')
const { data: user } = await res.json()
php
use Illuminate\Support\Facades\Http;

$user = Http::acceptJson()
    ->withToken(config('services.matev.token'))
    ->get('https://admin.matev.eu/api/v1/user')
    ->throw()
    ->json('data');

Antwort 200 ​

json
{
  "data": {
    "id": 3,
    "name": "Kirby Content-Zugang",
    "email": "content-bot@example.test",
    "roles": ["api_consumer"]
  }
}

Fehler ​

StatuscodeWann
401unauthenticatedToken fehlt oder ist ungültig
405method_not_allowedandere Methode als GET

Suchvorschläge ​

GET /search/suggestions

Liefert Vorschläge für eine Suche mit Operatoren wie type:image oder product:schneepflug-sp-250. Das PIM nutzt dieselbe Logik in seiner „Intelligenten Suche“.

Berechtigung und Sichtbarkeit

Das Token braucht die Fähigkeit search oder content:catalog:read, sonst antwortet der Endpunkt mit 403. Content-Tokens sehen nur aktive Produkte und Artikel, öffentlich sichtbare Medien und für das CMS freigegebene Ordner. Volle Tokens (*) und im PIM angemeldete Nutzer sehen alles – auch Inaktives, damit die Redaktion es findet.

Query-Parameter ​

ParameterTypBedeutung
qStringEingabe bisher, z. B. ty, type:, product:sp
contextStringglobal (Standard), media oder article. Bei media gibt es zusätzlich den Operator mime: und Treffer in Dateinamen; bei article fehlt der Operator article:
limitIntegerHöchstzahl der Vorschläge, Standard 12, erlaubt 1–30 (wird begrenzt)

So funktioniert es:

  • Ohne Doppelpunkt schlägt der Endpunkt passende Operatoren vor: type:, taxonomy:, tag:, folder:, status:, ki:, used:, product:, article: (und mime: im Kontext media).
  • Mit Operator schlägt er Werte vor: Asset-Typen, Freigabestatus, KI-Status, Ordner, Taxonomie-Terme, Produkte, Artikel oder used:yes/used:no. Bei Ordnern, Termen, Produkten und Artikeln höchstens 10 Treffer.

Jeder Vorschlag hat:

FeldTypBedeutung
valueStringText, der ins Suchfeld übernommen wird
labelStringDeutsche Anzeige
typeStringoperator, value, folder, taxon, product, article oder media

Beispiel ​

bash
curl -sS 'https://admin.matev.eu/api/v1/search/suggestions?q=status:frei&limit=5' \
  -H 'Accept: application/json' \
  -H "Authorization: Bearer $MATEV_TOKEN"
js
const params = new URLSearchParams({ q: 'status:frei', limit: '5' })
const res = await fetch(`https://admin.matev.eu/api/v1/search/suggestions?${params}`, {
  headers: { Accept: 'application/json', Authorization: `Bearer ${process.env.CONTENT_API_TOKEN}` },
})
const { data: suggestions } = await res.json()
php
use Illuminate\Support\Facades\Http;

$suggestions = Http::acceptJson()
    ->withToken(config('services.matev.token'))
    ->get('https://admin.matev.eu/api/v1/search/suggestions', ['q' => 'status:frei', 'limit' => 5])
    ->throw()
    ->json('data');

Antwort 200 ​

json
{
  "data": [
    { "value": "status:released", "label": "Freigegeben – uneingeschränkt", "type": "value" },
    { "value": "status:released_channels", "label": "Freigegeben – nur bestimmte Kanäle", "type": "value" },
    { "value": "status:not_released", "label": "Nicht freigegeben", "type": "value" }
  ]
}

Fehler ​

StatuscodeWann
401unauthenticatedToken fehlt oder ist ungültig
405method_not_allowedandere Methode als GET