AddOn
api
Beschreibung
APIUmsetzung
Versionen
1.3
Version 1.3
Neue Endpoints
- Chunked Upload:
media/uploadmit init, chunk, status, finalize und abort — große Dateien lassen sich über mehrere Requests übertragen, ohne anpost_max_sizezu scheitern. Die zusammengesetzte Datei geht anrex_media_service::addMedia(), damit Endungs-Blockliste, MIME-Allowlist und die Extension PointsMEDIA_ADD_FILE/MEDIA_ADDEDunverändert greifen. Alle fünf Routen teilen einen Scope — einzeln vergeben wären sie unbrauchbar (#39) - Selbstauskunft
/api/me: listet die Endpunkte, die das aufrufende Token bzw. der Backend-User nutzen darf, auf Wunsch als gefilterte OpenAPI-Spec (?format=openapi). Ohne eigenen Scope, damit die Auskunft nicht genau bei den Tokens fehlt, bei denen ein Scope vergessen wurde
Token mit Ablaufdatum
- Das Feld Läuft ab bietet Zeitspannen von 3 Stunden bis 1 Jahr an und nennt zu jeder den Zeitpunkt, auf den sie hinausläuft; Benutzerdefiniert schaltet ein Datumsfeld frei, Nie lässt das Token unbegrenzt gültig (#48)
- Der Zeitpunkt wird aus der Datenbankzeit berechnet, weil der Ablauf gegen
now()geprüft wird — sonst wäre jede Zeitspanne um die Differenz der Zeitzonen verschoben - Ein abgelaufenes Token wird wie ein unbekanntes behandelt:
401. Tokens aus früheren Versionen bleiben unbegrenzt gültig - Die Token-Liste zeigt das Datum formatiert und kennzeichnet abgelaufene Tokens
Medien suchen und filtern
- Freitextsuche über Dateiname und Titel (
filter[term]), inklusivetype:jpg,pngim Suchbegriff und Gruppierung mit Anführungszeichen - Dateiendungen (
filter[types]) und rekursive Kategoriesuche über den Kategoriepfad (filter[category_id_path]) — dieselbe Semantik wierex_media_service::getList()(#64)
OpenAPI
- Der geforderte Scope steht als
x-required-scopeund in der Beschreibung jeder Operation, ist damit in Swagger UI sichtbar - Die Endpunkte sind nach Ressource gruppiert und alphabetisch sortiert, statt der Registrierungsreihenfolge der RoutePackages zu folgen
Slice-Revisionen
- Die Arbeitsversion des Plugins
structure/versionist beim Anlegen über das Body-Feldrevisionerreichbar; Priorität und EP-Parameter zählen pro Revision (#42) - Im Backend-Scope wird
version[live_version]geprüft, bevor in die Live-Version geschrieben wird; bei Bearer-Tokens ersetzen weiterhin die Scopes die User-Permissions filter[revision]bei den Artikel-Endpunkten entfernt:rex_article.revisionwird vom Core nie befüllt und nirgends ausgewertet, der Filter hat nichts bewirkt außer Erwartungen zu wecken
Fixes
- Überschrittene PHP-Uploadgrenzen melden
413mit den geltenden Limits statt eines generischen400 - Metainfo-Werte: Arrays und Objekte auf einfachen Feldern werden mit
400zurückgewiesen statt still verworfen (#66) - Metainfo-Felder: Schlägt das
ALTER TABLEfehl, wird das gemeldet und die bereits geschriebene Feldzeile zurückgenommen; verwaiste Zeilen aus früheren Fehlschlägen lassen sich löschen statt dauerhaft404zu liefern (#67) - Slice-Endpunkte kennen
value20(#52) - Sprachen: Der Versuch, die Startsprache zu löschen, antwortet mit
409statt500 - Status-Übersetzung in der Token-Liste korrigiert
Hardening / Aufräumen
- Unique-Index auf
api_token.token: Ein doppelter Wert hätte den zweiten Eintrag samt Scopes unwirksam gemacht. Bestehende Duplikate brechen das Update nicht ab — der Index bleibt aus und eine Warnung landet im System-Log (#26) - Toter Kategorie-Code aus dem Media-RoutePackage entfernt: der auskommentierte Entwurf hätte über
rex_category_serviceArtikelkategorien statt Medienkategorien gelöscht - Update auf symfony/routing 7.4.17
Tests
- Die Suite ist auf 215 Tests gewachsen, unter anderem mit Roundtrips für den Chunked Upload, die Medienfilter und die Metainfo-Fehlerpfade
Doku
- README um Chunked Upload, Uploadgrenzen, Medienfilter und Ablaufdatum ergänzt
CHANGELOG.mdneu angelegt
Dieser Text wurde durch eine KI erstellt.
1.2
Version 1.2
Neue Endpoints
- Metainfo: Felddefinitionen und Werte für Artikel/Kategorie/Medium/Sprache (Bearer + Backend-Session, mit Permission-Checks)
- User ↔ Rollen: Verknüpfung jetzt als API-Endpoints
- Slice-CRUD: Add/Update/Delete mit korrekt gefeuerten Extension Points
- Media-Upload: Multipart-Upload ergänzt
- Clang-Metainfo: Backend-Session-Variante (admin-only)
- Backend-APIs: Spiegel-Routen (
backend/...) für alle Bearer-Endpoints, Auth via REDAXO-Backend-Session - Dashboard: Backend-Page mit Strukturbaum, Artikel-/Kategorie-Anlage, Sibling-basierter Positionsauswahl
Verhalten an REDAXO-Core angeglichen
- Extension Points feuern in Reihenfolge und mit identischen Param-Schlüsseln wie die Backend-Pages (Audit-Angleichung)
- Article-List, Trailing-Slash und generisches Exception-Handling konsolidiert
- Listen einheitlich über
ListHelper(Pagination + Sort + Meta-Block) — Format vereinheitlicht über alle List-Endpoints - LIMIT/Offset MySQL-strict-mode-safe
Fixes
- Article- und Category-Status-Endpoints korrigiert (#45)
- Template-Attribute via API matchen jetzt den Install-Default (#34)
- Template-GET nutzte versehentlich Tabellenname
rex_templatetemplate - User/Rollen-Errors mit korrektem HTTP-Status (locale-unabhängig)
- Media-Liste:
filter[category_id]=0wird korrekt verarbeitet mediaIsInUse()in try/catch — verhindert 500er durch fehlerhafte EP-Listener- Output-Buffering-Probleme im Dashboard behoben
curl_close-Deprecation aus Tests entfernt
Hardening / Aufräumen
per_pagemit Maximal-CapContent-Dispositionkorrekt escaped- Refactor:
new Response(json_encode(...))→new JsonResponse(...)(#18)
Tests
- Backend-Admin-CRUD-Lücken nachgezogen (Slices, Roles-Dup, Media)
- Metainfo-Roundtrips
- Auth-Failure-Pfade, Pagination/Sort-Edges, Restricted-Token
- Credentials/Settings über
tests/.envstatt fest inconfig.php
Doku
- README mit aktuellen Endpunkt-Tabellen und Backend-Test-Spalten
- CLAUDE.md: Exakt-Spiegel-Prinzip zwischen API und REDAXO-Core dokumentiert
1.1
Version 1.1
- BearerAuth verbessert
- Umbau der Authentifizierung
- Nonce wurde falsch eingebunden. Im Livemode war keine Doku verfügbar
1.0
Es gibt verschiedene CoreAPIs die man über einen Token nutzen kann. Die Liste der APIs ist der README.md nachzulesen und über OpenAPI dokumentiert und innerhalb von REDAXO testbar. Das AddOn dient als Basis für APIs welche andere AddOns nutzen können