Skip to content

Latest commit

 

History

History
294 lines (210 loc) · 3.79 KB

API.md

File metadata and controls

294 lines (210 loc) · 3.79 KB

Laratickets API Documentation

Authentication

All API endpoints require authentication using Laravel Sanctum:

Authorization: Bearer {token}

Base URL

/api/v1/laratickets

Tickets

List Tickets

GET /tickets

Query Parameters:

  • status (string): Filter by status
  • level (integer): Filter by level (1-4)
  • department_id (integer): Filter by department
  • open_only (boolean): Show only open tickets
  • overdue_only (boolean): Show only overdue tickets
  • per_page (integer): Items per page (default: 15)

Response: 200 OK

Create Ticket

POST /tickets

Body:

{
  "subject": "string (required)",
  "description": "string (required)",
  "priority": "low|medium|high|critical (required)",
  "department_id": "integer (required)"
}

Response: 201 Created

Get Ticket

GET /tickets/{id}

Response: 200 OK

Update Ticket

PUT /tickets/{id}

Body:

{
  "subject": "string (optional)",
  "description": "string (optional)",
  "status": "string (optional)",
  "priority": "string (optional)",
  "department_id": "integer (optional)"
}

Response: 200 OK

Delete Ticket

DELETE /tickets/{id}

Response: 200 OK

Close Ticket

POST /tickets/{id}/close

Response: 200 OK

Resolve Ticket

POST /tickets/{id}/resolve

Response: 200 OK

Cancel Ticket

POST /tickets/{id}/cancel

Body:

{
  "reason": "string (optional)"
}

Response: 200 OK

Messages

List Ticket Messages

GET /tickets/{id}/messages

Response: 200 OK

Post Message

POST /tickets/{id}/messages

Body:

{
  "body": "string (required)",
  "author_role": "client|staff (required)"
}

Response: 201 Created

Redact Message

POST /tickets/{id}/messages/{message_id}/redact

Body:

{
  "reason": "string (required)"
}

Response: 200 OK

Escalations

Request Escalation

POST /tickets/{id}/escalations

Body:

{
  "target_level_id": "integer (required)",
  "justification": "string (required, min: 10)"
}

Response: 201 Created

Approve Escalation

POST /escalations/{id}/approve

Response: 200 OK

Reject Escalation

POST /escalations/{id}/reject

Body:

{
  "reason": "string (required, min: 10)"
}

Response: 200 OK

Evaluations

Evaluate Ticket

POST /tickets/{id}/evaluations

Body:

{
  "score": "number (required, 1.0-5.0)",
  "comment": "string (optional)"
}

Response: 201 Created

Get Evaluation Statistics

GET /evaluations/statistics

Response: 200 OK

Risk Assessments

Assess Ticket Risk

POST /tickets/{id}/risk-assessments

Body:

{
  "risk_level": "low|medium|high|critical (required)",
  "justification": "string (required, min: 10)"
}

Response: 201 Created

Get High Risk Tickets

GET /risk-assessments/high-risk

Response: 200 OK

Get Risk Statistics

GET /risk-assessments/statistics

Response: 200 OK

Response Format

Success Response

{
  "message": "Operation successful",
  "data": {
    // Resource data
  }
}

Error Response

{
  "message": "Error message",
  "errors": {
    "field": ["Validation error"]
  }
}

Status Codes

  • 200 OK: Successful request
  • 201 Created: Resource created successfully
  • 400 Bad Request: Invalid input
  • 401 Unauthorized: Authentication required
  • 403 Forbidden: Insufficient permissions
  • 404 Not Found: Resource not found
  • 422 Unprocessable Entity: Validation failed
  • 500 Internal Server Error: Server error