Help/FAQ API Documentation
Help/FAQ API Documentation
Authentication
All endpoints except FAQ listing and search require JWT token authentication. Include the token in the Authorization header:
Authorization: Bearer <your-jwt-token>
Base URL
/api/help
Help Requests
Create Help Request
POST /requests
Create a new help request (authenticated users only).
Request Body:
{
"title": "Issue title",
"description": "Detailed description",
"category": "technical|account|general|bug_report|feature_request|billing|other",
"priority": "low|medium|high|urgent",
"contact_email": "user@example.com"
}
Response: 201 Created
{
"message": "Help request created successfully",
"request_id": 123,
"data": { ... }
}
List Help Requests
GET /requests
Get help requests (users see own, admins see all).
Query Parameters:
status
- Filter by status (open, in_progress, resolved, closed, on_hold)category
- Filter by categorypriority
- Filter by prioritypage
- Page number (default: 1)per_page
- Items per page (max: 100, default: 10)sort_by
- Sort field (default: created_date)sort_order
- asc/desc (default: desc)
Response: 200 OK
{
"requests": [...],
"pagination": {
"page": 1,
"pages": 5,
"total": 42
}
}
Get Help Request Details
GET /requests/{id}
Get specific help request with history.
Response: 200 OK
{
"id": 123,
"title": "...",
"status": "open",
"history": [...]
}
Update Help Request
PUT /requests/{id}
Update help request (admins can update status/assignment, users can update content).
Admin Request Body:
{
"status": "in_progress",
"priority": "high",
"assigned_to_id": 5,
"admin_notes": "Working on this"
}
User Request Body:
{
"title": "Updated title",
"description": "Updated description"
}
Add Admin Response
POST /requests/{id}/response
Add admin response to help request (admin only).
Request Body:
{
"response": "Response text",
"new_status": "resolved",
"is_public": true
}
FAQs
List FAQs
GET /faqs
(Public)
Get all active FAQs grouped by category.
Query Parameters:
category
- Filter by categorysearch
- Search in question/answer/tags
Response: 200 OK
{
"faqs": {
"technical": [...],
"account": [...]
},
"total_count": 25
}
Create FAQ
POST /faqs
(Admin only)
Request Body:
{
"question": "How do I...?",
"answer": "You can...",
"category": "account",
"tags": "password, login",
"display_order": 1
}
Update FAQ
PUT /faqs/{id}
(Admin only)
Request Body:
{
"question": "Updated question?",
"answer": "Updated answer",
"is_active": true
}
Delete FAQ
DELETE /faqs/{id}
(Admin only)
Utilities
Search
GET /search
Search FAQs and help requests.
Query Parameters:
q
- Search query (required)
Response: 200 OK
{
"faqs": [...],
"help_requests": [...]
}
Statistics
GET /statistics
(Admin only)
Get help system statistics.
Response: 200 OK
{
"requests": {
"total": 150,
"open": 12,
"by_category": {...}
},
"responses": {
"avg_response_time_days": 1.5
}
}
Error Responses
400 Bad Request
{
"message": "Validation error description"
}
401 Unauthorized
{
"message": "Authentication required"
}
403 Forbidden
{
"message": "Admin access required"
}
404 Not Found
{
"message": "Resource not found"
}
500 Internal Server Error
{
"message": "Error description"
}