{"id":26254168,"url":"https://github.com/friendsofredaxo/api","last_synced_at":"2026-03-12T20:14:59.581Z","repository":{"id":279257424,"uuid":"938218627","full_name":"FriendsOfREDAXO/api","owner":"FriendsOfREDAXO","description":"APIs für REDAXO","archived":false,"fork":false,"pushed_at":"2026-02-19T19:30:53.000Z","size":994,"stargazers_count":17,"open_issues_count":6,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-19T21:57:04.887Z","etag":null,"topics":["api","redaxo","redaxo-addon","redaxo-api","redaxo5"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FriendsOfREDAXO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-24T15:56:05.000Z","updated_at":"2026-02-19T10:13:05.000Z","dependencies_parsed_at":"2025-02-24T17:22:05.565Z","dependency_job_id":"16a805ec-7c9c-40f6-bfcc-a3786d3a67db","html_url":"https://github.com/FriendsOfREDAXO/api","commit_stats":null,"previous_names":["friendsofredaxo/api"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/FriendsOfREDAXO/api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FriendsOfREDAXO","download_url":"https://codeload.github.com/FriendsOfREDAXO/api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fapi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30441857,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T14:34:45.044Z","status":"ssl_error","status_checked_at":"2026-03-12T14:09:33.793Z","response_time":114,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","redaxo","redaxo-addon","redaxo-api","redaxo5"],"created_at":"2025-03-13T18:19:38.956Z","updated_at":"2026-03-12T20:14:59.569Z","avatar_url":"https://github.com/FriendsOfREDAXO.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# APIs für REDAXO\n\n## Beschreibung\n\nDieses AddOn ermöglich es, APIs in REDAXO zu nutzen. Dabei geht es vor allem um die Nutzung von APIs aus anderen Systemen heraus, um z.B. Daten abzugleichen oder zu ergänzen. Weiterhin ist die API erweiterbar. Jedes andere AddOn kann eigene Endpunkte anlegen. \n\nZunächst ist geplant die Basisfeatures von REDAXO abzubilden. \n\n## Geplante und umgesetzte Endpunkte\n\nWenn getestet, dann wurde explicit nochmal geprüft, ob die Funktionalität exakt so umgesetzt sind, wie sie in REDAXO/Core verwendet wurde. \n\n* Passende Extension Points\n* Vorhandene Klassen wurden genutzt\n* Felder sind auf das Nötigste reduziert. Keine Felder von externen/anderen AddOns/PlugIns werden ausgegeben oder verarbeitet.\n* OpenAPI Spezifikationen sind vorhanden und richtig verwendet\n\n### Endpunkte\n\n| Endpunkt                                       | Method    | Beschreibung                    | Status | Test | Backend | Backend Test |\n|------------------------------------------------|-----------|---------------------------------|--------|------|---------| ------------ |\n| /api/structure/articles                        | GET       | Artikelliste                    | ✅      | ✅    | ✅       | ✅            |\n| /api/structure/articles/{id}/slices            | GET       | Slices eines Artikel anzeigen   | ✅      |      | ✅       |              |\n| /api/structure/articles/{id}/slices            | POST      | ArticleSlice erstellen          | ✅      | ✅    | ✅       |              |\n| /api/structure/articles/{id}/slices/{slice_id} | GET       | Slice eines Artikel anzeigen    | ✅      |      | ✅       |              |\n| /api/structure/articles/{id}/slices/{slice_id} | PUT/PATCH | Slice eines Artikel ändern      | ✅      |      | ✅       |              |\n| /api/structure/articles                        | POST      | Artikel anlegen                 | ✅      | ✅    | ✅       | ✅            |\n| /api/structure/articles/{id}                   | GET       | Artikel anzeigen                | ✅      |      | ✅       | ✅            |\n| /api/structure/articles/{id}                   | DELETE    | Artikel löschen                 | ✅      | ✅    | ✅       | ✅            |\n| /api/structure/articles/{id}                   | PUT/PATCH | Artikel ändern                  | ✅      |      | ✅       |              |\n| /api/structure/categories                      | POST      | Kategorie anlegen               | ✅      | ✅    | ✅       |              |\n| /api/structure/categories/{id}                 | DELETE    | Kategorie löschen               | ✅      | ✅    | ✅       |              |\n| /api/structure/categories/{id}                 | PUT/PATCH | Kategorie ändern                | ✅      |      | ✅       |              |\n| /api/media                                     | GET       | Medienliste                     | ✅      | ✅    | ✅       | ✅            |\n| /api/media/{filename}                          | GET       | Mediametadaten                  | ✅      | ✅    | ✅       |              |\n| /api/media/{filename}/file                     | GET       | Mediafile (raw)                 | ✅      | ✅    | ✅       |              |\n| /api/media                                     | POST      | Medium anlegen                  | ✅      |      | ✅       |              |\n| /api/media/{filename}                          | DELETE    | Medium löschen                  | ✅      | ✅    | ✅       |              |\n| /api/media/{filename}                          | PUT/PATCH | Medium ändern                   | ✅      |      | ✅       |              |\n| /api/media/categories                          | GET       | Mediakategorienliste            | ✅      | ✅    | ✅       | ✅            |\n| /api/media/categories                          | POST      | Mediakategorie anlegen          | ✅      |      | ✅       |              |\n| /api/media/categories/{id}                     | DELETE    | Mediakategorie löschen          | ✅      |      | ✅       |              |\n| /api/media/categories/{id}                     | PUT/PATCH | Mediakategorie ändern           | ✅      |      | ✅       |              |\n| /api/modules                                   | GET       | Modulliste                      | ✅      | ✅    | ✅       | ✅            |\n| /api/modules                                   | POST      | Modul anlegen                   | ✅      | ✅    | ✅       | ✅            |\n| /api/module/{id}                               | GET       | Modul auslesen                  | ✅      | ✅    | ✅       | ✅            |\n| /api/module/{id}                               | DELETE    | Modul löschen                   | ✅      | ✅    | ✅       | ✅            |\n| /api/module/{id}                               | PUT/PATCH | Modul ändern                    | ✅      | ✅    | ✅       | ✅            |\n| /api/templates                                 | GET       | Template Liste                  | ✅      | ✅    | ✅       | ✅            |\n| /api/templates                                 | POST      | Template anlegen                | ✅      | ✅    | ✅       | ✅            |\n| /api/templates/{id}                            | DELETE    | Template löschen                | ✅      | ✅    | ✅       | ✅            |\n| /api/templates/{id}                            | PUT/PATCH | Template ändern                 | ✅      | ✅    | ✅       | ✅            |\n| /api/users                                     | GET       | Userliste                       | ✅      | ✅    | ✅       | ✅            |\n| /api/users                                     | POST      | User anlegen                    | ✅      |      | ✅       | ✅            |\n| /api/users/{id}                                | GET       | User holen                      | ✅      | ✅    | ✅       | ✅            |\n| /api/users/{id}/role                           | GET       | Userrolen eines Users auflisten | ❌      |      |         |              |\n| /api/users/{id}/role                           | POST      | Userrole einem Users hinzufügen | ❌      |      |         |              |\n| /api/users/{id}/role                           | DELETE    | Userrole eines Users löschen    | ❌      |      |         |              |\n| /api/users/{id}                                | DELETE    | User löschen                    | ✅      | ✅    | ✅       | ✅            |\n| /api/users/{id}                                | PUT/PATCH | User ändern                     | ✅      |      | ✅       |              |\n| /api/users/roles                               | GET       | Rollenliste                     | ✅      | ✅    | ✅       | ✅            |\n| /api/users/roles                               | POST      | Rolle anlegen                   | ❌      |      |         |              |\n| /api/users/roles/{id}                          | DELETE    | Rolle löschen                   | ❌      |      |         |              |\n| /api/users/roles/{id}                          | PUT/PATCH | Rolle ändern                    | ❌      |      |         |              |\n| /api/system/clangs                             | GET       | Sprachenliste                   | ✅      | ✅    | ✅       | ✅            |\n| /api/system/clangs                             | POST      | Sprache anlegen                 | ✅      | ✅    | ✅       | ✅            |\n| /api/system/clangs/{id}                        | GET       | Sprache auslesen                | ✅      | ✅    | ✅       | ✅            |\n| /api/system/clangs/{id}                        | DELETE    | Sprache löschen                 | ✅      | ✅    | ✅       | ✅            |\n| /api/system/clangs/{id}                        | PUT/PATCH | Sprache ändern                  | ✅      | ✅    | ✅       | ✅            |\n\n## Bei Problemen mit Authorization\n\nEs kann sein, dass Apache nicht alle Header weitergibt. In diesem Fall kann es helfen, die folgenden Zeilen in die .htaccess zu schreiben:\n\n```\n# Sets the HTTP_AUTHORIZATION header removed by Apache\nRewriteCond %{HTTP:Authorization} .\nRewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n```\n\n## Authentifizierung beachten\n\nDie meisten APIs haben Authentifizierung. Das heisst, es muss ein API-Token im Backend angelegt werden, um die Endpunkte nutzen zu können, wie auch der entsprechende Scope gesetzt werden.\nAndere APIs haben eine Backend-Authentifizierung, die dann über den Backend-User läuft, d.h. es kann der Session Cookie verwendet werden, um die Endpunkte zu nutzen.\n\n## API Struktur\n\nAm besten direkt im AddOn unter OpenAPI nachsehen. Dort werden alle verfügbaren Endpunkte aufgelistet.\n\n## Was funktioniert vielleicht nicht, und müssen AddOn Entwickler beachten\n\nDas API AddON funktioniert aus dem Frontend-User-Kontext heraus. Das heisst, sollte es registrierte Methoden an bestimmten\nExtensionPoints geben, welche nur im Backend-User-Kontext gesetzt wurden, z.B. (rex::isBackend) -\u003e registerEP, dann werden diese nicht in der dieser API ausgeführt.\nD.h. diese AddOns müssen entsprechend angepasst werden.\n\n## Weitere noch nicht beachtete Usecases\n\n### FE API (Wird hier noch nicht behandelt)\n    - GET API \n        - für Content frei und abhängig vom Frontenduserrechten YCom/YGroup\n    - POST/UPDATE/GET/DELETE API\n        - YCOm Profile, Password etc.\n        - für YForm\n        - Für Sonsiges\n\n### Backend API\n\nAuthentifizierung läuft über den PHP Session Cookie, d.h. es muss ein Backend-User angemeldet sein, um die Endpunkte nutzen zu können. Diese Endpunkte beachten die Rechte des einzelnen Users und ist dafür gedacht, dass man diese nur aus dem Backend heraus aufrufen kann. Z.B. wenn man eine alternative Anzeige oder Verwaltung nutzen oder aufbauen möchte.\n\n## Credits: \nchecked by: https://www.coderabbit.ai\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriendsofredaxo%2Fapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffriendsofredaxo%2Fapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriendsofredaxo%2Fapi/lists"}