API Endpoints
osTicket plugin that extends the REST API: ticket creation with format and department, update, search, delete, statistics, attachment download and subtickets, with per-key permissions.
API Endpoints
This documentation always describes the latest published version.
Live Demo: Try all plugins for OXID eShop, Shopware and osTicket by Markus Michalski live — no installation, no risk. demo.markus-michalski.net
Overview
The plugin extends osTicket's REST API. You can create tickets with a message format and a target department, update and delete tickets, retrieve and search them, read statistics, download attachments and manage parent-child relationships between tickets. Each API key gets its own permissions.
It suits integrations that need more than osTicket's standard API offers, for example support portals, bug trackers, automation platforms and monitoring systems.
graph LR
A["Client with API key"] --> B["POST /api/tickets.json or PATCH /api/tickets/:number.json"]
A --> C["Endpoint files in /api/, for example tickets-get.php"]
B --> D["Plugin routes via signal api"]
C --> E["ApiBootstrap"]
D --> F["ExtendedTicketApiController"]
E --> F
E --> G["SubticketApiController"]
F --> H["osTicket core"]
G --> H
H --> I["JSON, XML or plain text response"]
Documentation
| Page | Content |
|---|---|
| Installation | ZIP or Git, folder name, enabling, Apache and NGINX configuration, update and removal |
| Configuration | Plugin settings, API key permissions, best practices |
| API Documentation | All 12 endpoints with paths, parameters, status codes and examples |
| Troubleshooting | Error messages, known limitations, FAQ |
| Technical Details | Architecture, structure, database columns, security, tests |
Features
| Feature | Description |
|---|---|
| Extended ticket creation | format (text, html, markdown), departmentId by name or ID, parentTicketNumber |
| Ticket update | Status, department, help topic, SLA, staff, due date, parent, internal note with attachments |
| Retrieve and search | Single ticket with thread and attachment metadata, search by subject, status and department with pagination |
| Delete | Permanent deletion, disabled by default |
| Statistics | Totals, per department, per staff member, and the list of statuses |
| Attachment download | Base64 response with metadata |
| Subtickets | Parent, children, link and unlink, requires the Subticket Manager plugin |
| API key permissions | Seven permissions per API key: the six columns added by the plugin plus osTicket's own can_create_tickets, set on the plugin page |
| Lookup by name | Department, status, help topic and SLA by name instead of ID, staff by ID, username or email address |
| Formats | JSON or XML for endpoints with a path parameter |
The plugin patches no osTicket core files.
Requirements
| Requirement | Version | Notes |
|---|---|---|
| osTicket | 1.18.x | |
| PHP | 8.1 or higher | |
| Web server | Apache or NGINX | Apache is configured automatically via .htaccess |
Optional plugins:
| Plugin | Purpose |
|---|---|
| Markdown Support | Rendering of format=markdown |
| Subticket Manager | Required for the four subticket endpoints |
| API Key Wildcard | Wildcard IP validation for API keys. When installed, the standalone endpoints and the update route use its key validation. The create route POST /api/tickets.json does not call it |
License
This plugin is released under the GNU General Public License v2, compatible with osTicket core. See LICENSE.
Support
For questions or issues, please create an issue on GitHub:
Issue Tracker: https://github.com/markus-michalski/osticket-api-endpoints/issues
When reporting issues, please include:
- osTicket version (Admin Panel → Settings → About)
- PHP version (
php -v) - Web server (Apache or NGINX)
- Request example (cURL command)
- Response or error message
Contributing
Developed by Markus Michalski. Contributions are welcome: fork the repository, create a feature branch and submit a pull request.
git clone https://github.com/markus-michalski/osticket-api-endpoints.git
cd osticket-api-endpoints
composer install
composer test