publ betaReference (MCP guide)
Open publ console

legacy_promotion_link_delete

[Migration map](../reference/tool-name-migration.md).

# legacy_promotion_link_delete

This implementation is a dependency of the documentation branch.

Delete one selected, non-default legacy promotion link after a fresh revision and explicit confirmation. The operation does not delete or verify cleanup of associated page/membership objects or uploaded images.

## Access and input

Requires OWNER or DELEGATEE with MANAGE_CONVERSION_LINKS for the selected channel. Hosted source rules expose these tools and legacy-promotion-link recovery only on the exact selected-channel resource, not account resources. This is not deployed authorization evidence.

channelCode is a string of 1–512 characters, excluding literal dot/double dot, slash, backslash, ASCII controls and DEL. Selected input IDs are positive safe integers from authorized results. Strict inputs reject unknown fields. These legacy links are separate from [conversion links](../guides/conversion-links.md); do not exchange their IDs, revisions, share bases or task types.

| Input | Contract |
| --- | --- |
| channelCode | Required selected channel. |
| id | Required selected positive safe-integer link ID. |
| requestId | Required 8–80 ASCII letters, digits, underscores or hyphens. |
| expectedRevision | Required 64 lowercase hexadecimal characters from the selected detail. |
| confirmation | Required literal DELETE_LEGACY_PROMOTION_LINK. |
| dryRun | Optional boolean, default false; use true to inspect the plan before the intended deletion. |

There is no action, target array, activation or bulk option. Positive IDs explicitly marked as default are also rejected with LEGACY_DEFAULT_LINK_READ_ONLY. Existing-link cleanup is not blocked by creation quota.

```json
{
  "channelCode": "selected-channel-code",
  "id": 123,
  "requestId": "legacy-delete-01",
  "expectedRevision": "0000000000000000000000000000000000000000000000000000000000000000",
  "confirmation": "DELETE_LEGACY_PROMOTION_LINK",
  "dryRun": true
}
```

## Inputs

| Field | Required here | Contract |
| --- | --- | --- |
| `id` | Yes | integer; greater than 0 |
| `confirmToken` | No | string; pattern `^ct[a-f\d]{32}$`; The confirmToken from this tool's preview result. Omit it to preview; repeat the same input with it to execute. |