Erweitert osTickets REST API mit leistungsstarken Endpunkten für fortgeschrittenes Ticket-Management. Ermöglicht Ticket-Erstellung mit Markdown-Formatierung, Department-Routing, Subticket-Unterstützung und umfassende Ticket-Verwaltung (Update, Abrufen, Suchen, Löschen, Statistiken).
Perfekt für Integrationen, die granulare Kontrolle über die Standard-API-Fähigkeiten von osTicket hinaus benötigen - ideal für Support-Portale, Bug-Tracker, Automatisierungsplattformen (Zapier/Make.com) und benutzerdefinierte Workflows.
| Anforderung | Version | Hinweise |
|---|---|---|
| osTicket | 1.18.x | Plugin erweitert API via Signal-System |
| PHP | 7.4+ | Empfohlen: PHP 8.1+ für beste Performance |
| Webserver | Apache 2.4+ oder NGINX 1.18+ | Apache: .htaccess-Support erforderlich |
| Parsedown | Automatisch | Im Composer-Lock enthalten |
Optionale Abhängigkeiten:
| Plugin | Zweck | Link |
|---|---|---|
| Markdown Support | Markdown-Rendering in Tickets | GitHub |
| Subticket Manager | UI für Subticket-Management | GitHub |
| API Key Wildcard | Wildcard-IP-Validierung für API-Keys | GitHub |
api-endpoints-Ordner nach /include/plugins/ auf deinem osTicket-Server hochFinaler Pfad: /pfad/zu/osticket/include/plugins/api-endpoints/
cd /pfad/zu/osticket/include/plugins
git clone https://github.com/markus-michalski/osticket-api-endpoints.git
Das Plugin konfiguriert automatisch:
Beim Aktivieren deployed das Plugin automatisch /api/.htaccess:
# osTicket API Endpoints Plugin - Apache Configuration
<IfModule mod_rewrite.c>
RewriteEngine On
# Enable PATH_INFO for all API endpoints
AcceptPathInfo On
# Rewrite rules for endpoints with path info
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(tickets-update|tickets-get|tickets-delete)\.php/(.+)$ $1.php [L,QSA]
</IfModule>
# Erlauben von PATH_INFO für Endpunkte
<Files "tickets-update.php">
AcceptPathInfo On
</Files>
<Files "tickets-get.php">
AcceptPathInfo On
</Files>
<Files "tickets-delete.php">
AcceptPathInfo On
</Files>
Prüfe, ob .htaccess funktioniert:
curl -I "https://deine-domain.com/api/tickets-get.php/123456.json" \
-H "X-API-Key: DEIN_API_KEY"
# Sollte 200 OK zurückgeben (nicht 404)
Füge folgende Konfiguration zu deinem NGINX-Server-Block hinzu:
# osTicket API Endpoints Plugin - NGINX Configuration
# Endpunkte mit PATH_INFO (z.B. /api/tickets-update.php/123456.json)
location ~ ^/api/tickets-(update|get|delete)\.php/ {
fastcgi_split_path_info ^(/api/tickets-(update|get|delete)\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php-fpm.sock; # Oder 127.0.0.1:9000
}
# Endpunkte ohne PATH_INFO (z.B. /api/tickets-search.php?query=test)
location ~ ^/api/tickets-(search|stats|statuses)\.php$ {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
# Subticket-Endpunkte mit PATH_INFO
location ~ ^/api/tickets-subtickets-(parent|list)\.php/ {
fastcgi_split_path_info ^(/api/tickets-subtickets-(parent|list)\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
# Subticket-Endpunkte ohne PATH_INFO
location ~ ^/api/tickets-subtickets-(create|unlink)\.php$ {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
Nach dem Hinzufügen:
# Konfiguration testen
sudo nginx -t
# NGINX neu laden
sudo systemctl reload nginx
# Endpunkt testen
curl "https://deine-domain.com/api/tickets-stats.php" \
-H "X-API-Key: DEIN_API_KEY"
Nach der Plugin-Installation erscheint eine neue Konfigurations-Seite unter Admin Panel → Plugins → API Endpoints → Konfigurieren, die alle verfügbaren Endpunkte mit ihren zugehörigen Berechtigungen anzeigt:
Verfügbare API-Endpunkte:
can_create_tickets Permissioncan_update_tickets Permissioncan_read_tickets Permissioncan_search_tickets Permissioncan_delete_tickets Permissioncan_read_stats Permissioncan_manage_subtickets Permission (benötigt Subticket Manager Plugin)⚠️ Wichtig: Zugriff auf diese Endpunkte wird individuell pro API-Key über die Berechtigungen unten gesteuert.
API-Key-Berechtigungen konfigurieren:
POST /tickets)PATCH /tickets/:id)GET /tickets/:number)GET /tickets/search)DELETE /tickets/:number) - ⚠️ Aus Sicherheitsgründen mit Vorsicht nutzen!GET /tickets-stats)Das Plugin erweitert osTickets API-Key-Berechtigungssystem mit granularen Permissions.
| Berechtigung | Datenbank-Feld | Gewährt Zugriff auf |
|---|---|---|
| Tickets erstellen | can_create_tickets |
POST /tickets |
| Tickets lesen | can_read_tickets |
GET /tickets/:number |
| Tickets aktualisieren | can_update_tickets |
PATCH /tickets/:number |
| Tickets suchen | can_search_tickets |
GET /tickets/search |
| Tickets löschen | can_delete_tickets |
DELETE /tickets/:number |
| Statistiken lesen | can_read_stats |
GET /tickets-stats, GET /tickets-statuses |
| Subtickets verwalten | can_manage_subtickets |
Alle Subticket-Endpunkte |
Bildschirmfoto:
Die Permissions-Seite zeigt:
API Endpoint Permissions:
☑ Create Tickets ☑ Update Tickets ☑ Read Tickets
POST /tickets PATCH /tickets/:id GET /tickets/:number
☑ Search Tickets ☑ Delete Tickets ☑ Read Stats
GET /tickets/search DELETE /tickets/:number GET /tickets-stats
☑ Manage Subtickets
Subticket Operations
Das Plugin unterstützt Legacy-API-Keys (ohne neue Berechtigungen):
can_create_tickets fehlt → Fallback zu canCreateTickets() (osTicket Standard)can_read_tickets fehlt → Fallback zu canCreateTickets() (READ = CREATE erlaubt)can_update_tickets fehlt → Fallback zu canCreateTickets()Empfehlung: Migriere zu neuen Berechtigungen für feinkörnige Kontrolle.
Principle of Least Privilege:
can_read_statscan_create_ticketsRotation & Revocation:
Audit Logging:
Das Plugin stellt 11 REST-Endpunkte bereit:
| Endpunkt | Methode | Beschreibung |
|---|---|---|
/api/tickets.json |
POST | Erweiterte Ticket-Erstellung (Markdown, Department, Subticket) |
/api/tickets-get.php/{number}.json |
GET | Ticket-Details abrufen |
/api/tickets-update.php/{number}.json |
PATCH | Ticket aktualisieren (Status, Department, SLA, etc.) |
/api/tickets-search.php |
GET | Tickets durchsuchen |
/api/tickets-delete.php/{number}.json |
DELETE | Ticket permanent löschen |
/api/tickets-stats.php |
GET | Ticket-Statistiken (global, Department, Staff) |
/api/tickets-statuses.php |
GET | Verfügbare Ticket-Status auflisten |
/api/tickets-subtickets-parent.php/{id}.json |
GET | Eltern-Ticket eines Subtickets abrufen |
/api/tickets-subtickets-list.php/{id}.json |
GET | Alle Kind-Tickets eines Eltern-Tickets abrufen |
/api/tickets-subtickets-create.php |
POST | Eltern-Kind-Beziehung erstellen |
/api/tickets-subtickets-unlink.php |
DELETE | Eltern-Kind-Beziehung entfernen |
Alle GET-Endpunkte unterstützen sowohl JSON als auch XML:
.json für JSON-Response.xml für XML-Response[... Rest der Dokumentation bleibt identisch mit den vorherigen API-Endpunkt-Beschreibungen, Beispielen, Fehler-Codes, etc. ...]
Dieses Plugin wird unter der GNU General Public License v2 veröffentlicht, kompatibel mit osTicket Core.
Details siehe LICENSE.
Für Fragen oder Probleme erstelle bitte ein Issue auf GitHub:
Issue Tracker: https://github.com/markus-michalski/osticket-api-endpoints/issues
Beim Melden von Problemen bitte angeben:
php -v)Entwickelt von Markus Michalski
Beiträge willkommen!
Development-Setup:
# Repository clonen
git clone https://github.com/markus-michalski/osticket-api-endpoints.git
cd osticket-api-endpoints
# Dependencies installieren
composer install
# Tests ausführen
composer test
# Code-Style prüfen
composer cs-check
Siehe CHANGELOG.md für Versionshistorie.
Aktuellste Version: v1.1.0
Highlights: