Topolo Docs Topolo Platform
Open workspace

Rename sequence

Rename a retained active or draft sequence without changing its steps.

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

FieldRequiredMeaning and constraints
idYesRequired sequence identifier discovered through sequences.list in the selected workspace, trimmed non-empty string up to 128 characters.
nameYesRequired 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.

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.