SOPs / REFERENCE
Create an SOP
Create a draft and assign its department serial. At least one of titleEn/titleAr is required. escalationLevel1 is required except for inquiry. Directory references come from GET /sops/directory. PUT replaces editable content, not a partial patch. Legacy user/role references remain accepted by the service.
POST
/api/v1/sopsPermissions sops:write
Parameters
| Name | Description |
|---|---|
X-Luma-Workspace-Hostheader · required | Your workspace host, e.g. acme.lumi-cx.com. Required on api.lumi-cx.com. This header never grants access: the Bearer key must belong to the selected workspace. |
Request body
| Field | Type & description |
|---|---|
titleEn | string |
titleAr | string |
ticketDescriptionrequired | string |
infoToCollectrequired | array |
actionsToTakeFrontlinerequired | array |
ticketOwnerrequired | object |
actionsToTakeOwnerrequired | array |
caseTyperequired | string Allowed: complaint, inquiry, suggestion, request, internal_ticket |
priority | string Allowed: low, medium, high |
slaValue | integer |
slaUnit | string Allowed: hours, days |
accountableTeamrequired | object |
escalationLevel1 | object |
escalationLevel2 | object |
closureApprovalrequired | object |
department | string Allowed: , cx, tech_support, csm, sales, pm, management |
notifyOnCreation | array |
ticketCategory | object |
smsNotifications | array |
followUpCall | boolean |
csatSurvey | boolean |
notes | string |
Responses
200 Successful operation
{
"ok": true,
"sop": {
"id": "00000000-0000-4000-8000-000000000001",
"serial": "TS-0001",
"status": "draft",
"titleEn": "Customer refund review",
"titleAr": "",
"ticketDescription": "Review the customer's refund request and verify the original payment details.",
"infoToCollect": [
"Verify the customer details"
],
"actionsToTakeFrontline": [
"Verify the customer details"
],
"ticketOwner": {
"kind": "person",
"id": "replace-with-directory-id",
"label": "Directory member"
},
"actionsToTakeOwner": [
"Verify the customer details"
],
"caseType": "complaint",
"priority": "medium",
"slaValue": 24,
"slaUnit": "hours",
"accountableTeam": {
"kind": "team",
"id": "replace-with-directory-id",
"label": "Support"
},
"escalationLevel1": {
"kind": "person",
"id": "replace-with-directory-id",
"label": "Directory member"
},
"escalationLevel2": {
"kind": "person",
"id": "replace-with-directory-id",
"label": "Directory member"
},
"closureApproval": {
"kind": "person",
"id": "replace-with-directory-id",
"label": "Directory member"
},
"department": "tech_support",
"notifyOnCreation": [],
"ticketCategory": {
"l1": null,
"l2": null,
"l3": null
},
"smsNotifications": [],
"followUpCall": false,
"csatSurvey": false,
"notes": "",
"createdBy": "example",
"createdAt": "2026-09-26T09:00:00Z",
"updatedAt": "2026-09-26T09:00:00Z",
"localization": {}
}
}400 Invalid body or workflow state
{
"ok": false,
"error": "invalid_body",
"message": "example"
}401 Missing, invalid, expired, revoked or wrong-workspace key
{
"ok": false,
"error": "invalid_body",
"message": "example"
}403 Required key permission missing, module unavailable, or workspace suspended
{
"ok": false,
"error": "invalid_body",
"message": "example"
}404 SOP not found or not accessible
{
"ok": false,
"error": "invalid_body",
"message": "example"
}429 Rate limit exceeded; respect Retry-After
{
"ok": false,
"error": "invalid_body",
"message": "example"
}502 Upstream or unexpected server error
{
"ok": false,
"error": "invalid_body",
"message": "example"
}