View .md

Tickets endpoints (Client API: account)

11 FeatherPanel Client API: account endpoints from user/tickets.php: methods, paths, auth, permissions, rate limits, parameters and responses.

Last synced from FeatherPanel 15b94e9 on .

On this page

Defined in backend/app/routes/user/tickets.php. Authentication used here: Signed-in user. Read Authentication for how to send credentials and Rate limits and errors for the response envelope.

Paths, methods, permissions and rate limits come from the route file. Summaries, parameters and response codes come from the OpenAPI annotations on the controllers; endpoints without annotations show only what the route file declares.

Endpoints

GET/api/user/tickets

Auth: Signed-in userDefault rate limit: 30 / minute (user-tickets)Route name: user-ticketsController: TicketsController::indexroute source

Get user tickets Retrieve all tickets created by the authenticated user with pagination and optional filtering.

ParameterInTypeRequiredDescription
pagequeryintegernoPage number for pagination
limitqueryintegernoNumber of records per page
searchquerystringnoSearch term to filter tickets
status_idqueryintegernoFilter by status ID
category_idqueryintegernoFilter by category ID
Response data fieldTypeDescription
ticketsobject[]
paginationobject
curl -X GET "$PANEL_URL/api/user/tickets" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Tickets retrieved successfully · 401 Unauthorized

PUT/api/user/tickets

Auth: Signed-in userRoute name: user-tickets-createController: TicketsController::createroute source

Create ticket Create a new support ticket with optional server link and attachments.

Body fieldTypeRequiredDescription
titlestringnoTicket title
descriptionstringnoTicket description
category_idintegernoCategory ID
priority_idintegernoPriority ID
server_idintegernoOptional server ID
curl -X PUT "$PANEL_URL/api/user/tickets" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"title":"","description":"","category_id":0,"priority_id":0,"server_id":0}'

Plugin events: featherpanel:ticket:created

Responses: 201 Ticket created successfully · 400 Bad request - Invalid data

GET/api/user/tickets/categories

Auth: Signed-in userDefault rate limit: 60 / minute (user-tickets)Route name: user-tickets-categoriesController: TicketsController::getCategoriesroute source

Get ticket categories Retrieve all available ticket categories.

curl -X GET "$PANEL_URL/api/user/tickets/categories" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Categories retrieved successfully

GET/api/user/tickets/priorities

Auth: Signed-in userDefault rate limit: 60 / minute (user-tickets)Route name: user-tickets-prioritiesController: TicketsController::getPrioritiesroute source

Get ticket priorities Retrieve all available ticket priorities.

curl -X GET "$PANEL_URL/api/user/tickets/priorities" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Priorities retrieved successfully

GET/api/user/tickets/statuses

Auth: Signed-in userRoute name: user-tickets-statusesController: TicketsController::getStatusesroute source

Get ticket statuses Retrieve all available ticket statuses.

curl -X GET "$PANEL_URL/api/user/tickets/statuses" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Statuses retrieved successfully

GET/api/user/tickets/servers

Auth: Signed-in userDefault rate limit: 60 / minute (user-tickets)Route name: user-tickets-serversController: TicketsController::getServersroute source

Get user servers Retrieve all servers owned by the user for ticket linking.

curl -X GET "$PANEL_URL/api/user/tickets/servers" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Servers retrieved successfully

POST/api/user/tickets/{uuid}/reply

Auth: Signed-in userRoute name: user-tickets-replyController: TicketsController::replyroute source

Reply to ticket Add a reply message to a ticket.

ParameterInTypeRequiredDescription
uuidpathstring (uuid)yesTicket UUID
Body fieldTypeRequiredDescription
messagestringnoReply message
curl -X POST "$PANEL_URL/api/user/tickets/$UUID/reply" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"message":""}'

Plugin events: featherpanel:ticket:message:created

Responses: 201 Reply sent successfully · 403 Access denied

POST/api/user/tickets/{uuid}/attachments

Auth: Signed-in userDefault rate limit: 10 / minute (user-tickets)Route name: user-tickets-upload-attachmentController: TicketsController::uploadAttachmentroute source

Upload attachment Upload an attachment file for a ticket or message.

ParameterInTypeRequiredDescription
uuidpathstring (uuid)yesTicket UUID
Body fieldTypeRequiredDescription
filestring (binary)yesFile to upload
message_idintegernoOptional message ID to attach to
curl -X POST "$PANEL_URL/api/user/tickets/$UUID/attachments" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -F "file=@./file" \
  -F "message_id="

Responses: 201 Attachment uploaded successfully · 400 Bad request

DELETE/api/user/tickets/{uuid}/messages/{id}

Auth: Signed-in userRoute name: user-tickets-delete-messageController: TicketsController::deleteMessageroute source

Delete a ticket message Delete a message from a ticket. Users can only delete their own messages.

ParameterInTypeRequiredDescription
uuidpathstring (uuid)yesTicket UUID
idpathintegeryesMessage ID
curl -X DELETE "$PANEL_URL/api/user/tickets/$UUID/messages/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:ticket:message:deleted

Responses: 200 Message deleted successfully · 403 Access denied - user does not own this message · 404 Ticket or message not found

DELETE/api/user/tickets/{uuid}

Auth: Signed-in userRoute name: user-tickets-deleteController: TicketsController::deleteroute source

Delete a ticket Delete a ticket and all its associated messages and attachments. Users can only delete their own tickets.

ParameterInTypeRequiredDescription
uuidpathstring (uuid)yesTicket UUID
curl -X DELETE "$PANEL_URL/api/user/tickets/$UUID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:ticket:deleted

Responses: 200 Ticket deleted successfully · 403 Access denied - user does not own this ticket · 404 Ticket not found

GET/api/user/tickets/{uuid}

Auth: Signed-in userDefault rate limit: 30 / minute (user-tickets)Route name: user-tickets-showController: TicketsController::showroute source

Get ticket details Retrieve detailed information about a specific ticket including messages and attachments.

ParameterInTypeRequiredDescription
uuidpathstring (uuid)yesTicket UUID
curl -X GET "$PANEL_URL/api/user/tickets/$UUID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Ticket retrieved successfully · 403 Access denied - ticket belongs to another user · 404 Ticket not found