Outcome
Rename a retained active or draft sequence without changing its steps.
Before you start
- Verify the environment, credential, authorized organization and the published action permission workspace:write.
- Discover an accessible Engage workspace and bind resourceType=workspace and its resourceId separately from action input. Fixture identifiers grant no access.
- Approve the exact mutation and its effects before CLI --confirm or MCP confirm:true. This documentation does not authorize outreach.
Discover the target
- Discover the sequence through sequences.list using the retained campaignId, then read sequences.get in the same authorized workspace. Inspect sequence.status, draft, published and versions before planning.
topolo whoami --json
topolo actions get app_topolo_engage.sequences.update --json
topolo workspaces list topolo-engage --json
Input fields
| Field | Required | Meaning and constraints |
|---|---|---|
id | Yes | Required sequence identifier discovered through sequences.list in the selected workspace, trimmed non-empty string up to 128 characters. |
name | Yes | Required trimmed non-empty replacement name up to 120 characters. |
Validate, plan and execute
Set ENGAGE_WORKSPACE_ID to the identifier of your selected workspace. Prepare payload.json from the current input schema and discovered identifiers. Use the same payload for validation, planning and execution.
: "${ENGAGE_WORKSPACE_ID:?Set ENGAGE_WORKSPACE_ID to your selected workspace identifier}"
topolo actions validate app_topolo_engage.sequences.update --data @payload.json --json
topolo actions plan app_topolo_engage.sequences.update --resource-type workspace --resource-id "$ENGAGE_WORKSPACE_ID" --data @payload.json --confirm --json
Review the plan and obtain approval for the exact effects before executing the unchanged request.
: "${ENGAGE_WORKSPACE_ID:?Set ENGAGE_WORKSPACE_ID to your selected workspace identifier}"
topolo actions call app_topolo_engage.sequences.update --resource-type workspace --resource-id "$ENGAGE_WORKSPACE_ID" --data @payload.json --confirm --json
For MCP, use topolo_get_action, topolo_validate_action, topolo_plan_action and topolo_call_action. Pass the selected resource context separately; confirm:true is required for mutations.
Worked requests and responses
Captured sequences.update · HTTP 200
Action input
{
"id": "eng_seq_1",
"name": "Renamed"
}
Actual local response
{
"sequence": {
"id": "eng_seq_1",
"campaignId": "eng_cmp_1",
"name": "Renamed",
"status": "draft",
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z"
},
"versions": [
{
"id": "eng_seqv_1",
"version": 1,
"status": "draft",
"publishedAt": null
}
],
"draft": {
"id": "eng_seqv_1",
"sequenceId": "eng_seq_1",
"version": 1,
"status": "draft",
"publishedAt": null,
"createdAt": "2026-10-06T08:30:00.000Z",
"steps": []
},
"published": null
}
Source test: sequence routes > lists, filters, renames and scopes sequences. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Effects and response meaning
- Replaces the sequence name and updatedAt; returns detail. Archived sequences are refused. Version history, steps and enrollment pins are not edited.
- No expected-version compare-and-swap input is provided. Nothing is sent.
Verify the result
- Read sequences.get and compare name, id and status with the reviewed request. Inspect unrelated state for concurrent changes before a follow-up.
Recover
After an uncertain response, read the exact sequence and compare its name before retrying. Restoring a reviewed prior name is a separate approved update; do not overwrite a concurrent rename blindly.
Refused responses
Captured sequences.update · HTTP 409
Action input
{
"id": "eng_seq_1",
"name": "Renamed"
}
Actual local response
{
"error": {
"code": "state_conflict",
"message": "Archived sequences cannot be changed."
}
}
Source test: sequence routes > allows one live sequence per campaign and refuses archived campaigns. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Error recovery
- HTTP 403
permission_denied: Stop and inspect the permission required by this action in the current credential. Do not broaden permissions or switch organization automatically. - HTTP 422
invalid_action_input: Correct required fields, enums and nested step bounds against the current input schema, then validate the exact intended payload again. - HTTP 409
state_conflict: Read sequences.get and the exact version. Archived sequences cannot change, only one non-archived sequence per campaign and one draft per sequence may exist, and published versions cannot be edited. Re-plan only a legal, separately approved operation.
Related actions
Evidence and limits
-
contracts/sequences.mjs -
apps/api/src/sequences/sequences-handlers.ts -
apps/api/src/sequences/sequences-domain.ts -
apps/api/src/sequences/sequences-repository.ts -
apps/api/src/copy-qa/version-steps.ts -
apps/api/src/copy-qa/copy-qa.ts -
Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
-
Widget/bootstrap use actual app handler but mocked worker runtime and app identity.
-
No gateway execution, live permissions, external delivery or deployed proof.
The examples are local route captures with synthetic context and simulated providers. They do not prove live authorization, CLI/MCP gateway execution, production state or delivery.