Support API Reference¶
Complete reference for all support case management endpoints.
Authentication¶
All support API endpoints require authentication via: - API Key in header: X-API-Key: your-api-key - JWT Bearer token: Authorization: Bearer your-jwt-token
Base URL¶
Endpoints¶
Create Support Case¶
Create a new support case and send automatic notifications.
Endpoint: POST /api/support/case
Request Body:
{
"name": "string (required)",
"email": "string (required, valid email)",
"organization": "string (optional)",
"phone": "string (optional)",
"customerType": "FREE|BASIC|PREMIUM|ENTERPRISE",
"issueType": "TECHNICAL|BILLING|GENERAL|FEATURE_REQUEST",
"urgency": "LOW|MEDIUM|HIGH|CRITICAL",
"clientOrProjectName": "string (optional)",
"subject": "string (required)",
"message": "string (required)"
}
Response:
{
"responseStatus": "SUCCESS",
"caseNumber": "CS-2025-001234",
"status": "OPEN",
"message": "Support case created successfully...",
"timeline": "Response within 4 hours, resolution within 24 hours"
}
Notifications Sent: - ✅ Customer confirmation email - ✅ Staff assignment notification - 📱 SMS for CRITICAL cases
Escalate Support Case¶
Escalate an existing support case to higher priority.
Endpoint: POST /api/support/case/escalate
Request Body:
{
"caseNumber": "string (required)",
"email": "string (required, for security verification)",
"reason": "string (required, escalation reason)"
}
Response:
{
"success": true,
"message": "Your case has been escalated and will receive priority attention.",
"caseNumber": "CS-2025-001234"
}
Notifications Sent: - ✅ Customer escalation acknowledgment - ✅ Staff escalation alert - 🚨 Critical escalation SMS (if applicable)
Cancel Support Case¶
Cancel an existing support case.
Endpoint: POST /api/support/case/cancel
Request Body:
{
"caseNumber": "string (required)",
"email": "string (required, for security verification)",
"reason": "string (required, cancellation reason)"
}
Response:
{
"responseStatus": "SUCCESS",
"message": "Case cancelled successfully",
"caseNumber": "CS-2025-001234"
}
Notifications Sent: - ✅ Customer cancellation confirmation - ✅ Staff cancellation notice
Get Case Status¶
Get the current status of a support case.
Endpoint: GET /api/support/case/:caseNumber
Parameters: - caseNumber (path): The case number (e.g., CS-2025-001234) - email (query): Customer email for verification
Response:
{
"caseNumber": "CS-2025-001234",
"status": "OPEN|IN_PROGRESS|WAITING_FOR_CUSTOMER|RESOLVED|CLOSED|CANCELLED",
"priority": "LOW|MEDIUM|HIGH|CRITICAL",
"createdAt": "2025-07-22T13:00:00.000Z",
"updatedAt": "2025-07-22T14:30:00.000Z",
"estimatedResolution": "Response within 4 hours...",
"assignedStaff": "John Smith",
"lastUpdate": "Investigating issue with authentication API"
}
Update Case¶
Add an update to an existing support case.
Endpoint: POST /api/support/case/:caseNumber/update
Request Body:
{
"message": "string (required)",
"isInternal": "boolean (default: false)",
"status": "string (optional, new status)",
"staffEmail": "string (required for staff updates)"
}
Response:
Notifications Sent: - ✅ Customer update notification (if not internal)
Error Responses¶
All endpoints return consistent error responses:
{
"responseStatus": "ERR_BAD_REQUEST|ERR_NOT_FOUND|ERR_INTERNAL_ERROR",
"message": "Detailed error message",
"errors": ["Field validation errors (if applicable)"]
}
Common HTTP Status Codes: - 200 - Success - 400 - Bad Request (validation errors) - 401 - Unauthorized (invalid/missing API key) - 404 - Not Found (case doesn't exist) - 429 - Rate Limited - 500 - Internal Server Error
Rate Limits¶
- Create Case: 10 requests per minute per IP
- Escalate Case: 5 requests per minute per email
- Cancel Case: 5 requests per minute per email
- Get Status: 60 requests per minute per API key
Webhooks¶
Configure webhooks to receive real-time notifications about case updates:
Webhook URL: Configure in your dashboard or environment variables
Events: - case.created - case.escalated - case.updated - case.resolved - case.cancelled
Payload Example:
{
"event": "case.created",
"caseNumber": "CS-2025-001234",
"timestamp": "2025-07-22T13:00:00.000Z",
"data": {
"customerName": "John Doe",
"customerEmail": "john@example.com",
"issueType": "TECHNICAL",
"urgency": "HIGH"
}
}
Testing¶
Test Environment:
# Set test environment
export NODE_ENV=test
# Run API tests
npm run test
# Test specific case creation
npm run test:case-creation
Postman Collection: Download Postman Collection
SDKs & Libraries¶
JavaScript/Node.js:
import { SupportAPI } from '@cyferwall/support-api'
const support = new SupportAPI({
apiKey: 'your-api-key',
baseUrl: 'https://api.cyferwall.com'
})
const case = await support.createCase({
name: 'John Doe',
email: 'john@example.com',
// ... other fields
})
Python:
from cyferwall_support import SupportAPI
support = SupportAPI(api_key='your-api-key')
case = support.create_case(
name='John Doe',
email='john@example.com',
# ... other fields
)