L lumi developers

SOPs / REFERENCE

Replace an SOP

Replace editable content; published SOPs return to draft. Under-review edits are rejected. 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.

PUT/api/v1/sops/{id}

Permissions sops:write

Parameters

NameDescription
X-Luma-Workspace-Hostheader · requiredYour 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.
idpath · requiredRecord identifier in this workspace.

Request body

FieldType & description
titleEnstring

titleArstring

ticketDescriptionrequiredstring

infoToCollectrequiredarray

actionsToTakeFrontlinerequiredarray

ticketOwnerrequiredobject

actionsToTakeOwnerrequiredarray

caseTyperequiredstring

Allowed: complaint, inquiry, suggestion, request, internal_ticket

prioritystring

Allowed: low, medium, high

slaValueinteger

slaUnitstring

Allowed: hours, days

accountableTeamrequiredobject

escalationLevel1object

escalationLevel2object

closureApprovalrequiredobject

departmentstring

Allowed: , cx, tech_support, csm, sales, pm, management

notifyOnCreationarray

ticketCategoryobject

smsNotificationsarray

followUpCallboolean

csatSurveyboolean

notesstring

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"
}
Need an API key? Open Developer Options in your workspace.