publ betaReference (MCP guide)
Open publ console

publ Reference

Legacy promotion links

This is the original promotion-link tab under conversion links. It has its own IDs, keyword rules, creation quota, share base and legacy-promotion-link tasks. It is separate from newer conversion links and promotion campaign/benefit management.

Need Tool
Read all-list/counters/quota or one editor record legacy_promotion_links_get
Create or edit sharing metadata/thumbnail legacy_promotion_link_apply
Delete one selected non-default link legacy_promotion_link_delete

OWNER or DELEGATEE requires MANAGE_CONVERSION_LINKS. Source hosted account resources exclude these operations; an authorized channel resource must match channelCode exactly. Default cards are read-only, even with positive IDs. Activation, bulk mutation, QR export and detailed associated-page editing are not exposed.

Read and compose

Read the bounded source all-list and its quota. No invented pagination or certified server inventory completeness is provided. If the optional statistics service is unreachable or returns 5xx, verified metadata remains available with partial:true and unavailable statistics; each returned linkTime is null. Zero applies only to a missing row in a valid statistics response. Do not treat an outage as permission to bypass quota or as zero visits.

{
  "channelCode": "selected-channel-code",
  "view": {
    "kind": "list"
  }
}

Use creationRevision for a complete create request. For update/delete, read the selected positive numeric id and use its detail revision. The following plan checks quota/content but does not check keyword availability or create a task. Replace the zero digest; omitted dryRun defaults to false.

{
  "channelCode": "selected-channel-code",
  "requestId": "legacy-create-01",
  "action": "create",
  "expectedRevision": "0000000000000000000000000000000000000000000000000000000000000000",
  "settings": {
    "name": "Autumn promotion",
    "title": "See our latest content",
    "description": "Explore the channel.",
    "keyword": "autumn_2026"
  },
  "dryRun": true
}

Actual creation checks keyword availability and quota/inventory before image work and again before submission. Neither is an atomic reservation. Update edits name/title/description and optional original thumbnail; omission preserves the baseline. Keyword and associated page/membership targets remain read-only. Do not identify an uncertain creation by name or keyword.

Creation quota

The fixed source policy distinguishes known dev/prod API origins from custom deployments:

Source plan Maximum returned link rows
FREE_TRIAL 0
NORMAL_STARTER, NORMAL_STARTER_2023_04 1
NORMAL_BASIC 2
NORMAL_ESSENTIAL 3
NORMAL_BUSINESS, NORMAL_FROM_ENTERPRISE, NORMAL_PRO 5
ENTERPRISE_TRIAL, ENTERPRISE_ENTERPRISE 5
PARTNER_TRIAL, PARTNER_PARTNER, INTERNAL_INTERNAL 5

Three explicit source channel exceptions override those limits only for the recognized production API deployment; they do not apply to dev/custom origins. Read returned quota rather than reproducing private channel identifiers. Outside those configured production exceptions, an unknown/missing plan yields limit:null. Every custom API origin yields an unknown limit. currentCount includes all returned rows/default cards. A new plan with unknown/exhausted capacity returns action_required and one human plan console destination. The bridge never purchases or changes a plan. Existing-link reads/update/delete do not require spare creation capacity.

Images and recovery

Original PNG/JPEG thumbnails must be below10,000,000 decimal bytes. Omission preserves an existing image; null removal and URL replacement are unsupported. Resource gateway/bucket/region must be configured, and only verified original-byte upload receipts enter saves. Separate grant/upload/save effects have no rollback or object cleanup. Journals retain metadata, not bytes or temporary credentials.

Use the returned taskId and taskType legacy-promotion-link:

{
  "taskId": "legacy-create-01",
  "taskType": "legacy-promotion-link"
}

Status is historical; resume may continue untouched stages after guards. Sent create/update/delete/grant/upload effects never repeat. An unstarted image after restart needs original apply bytes; a sent grant/upload without a receipt needs inspection. Missing durable creation identity is not adopted by name/keyword. Only linkTime is excluded from legacy preservation: do not assume the newer conversion workflow's timestamp tolerance applies. Read again after completion for current state.

Delete requires DELETE_LEGACY_PROMOTION_LINK and should first be planned.

Share base and console locations

Configure legacyPromotionLinkBaseUrl or PUBL_LEGACY_PROMOTION_LINK_BASE_URL separately from conversionLinkBaseUrl. Use the actual environment's HTTPS base ending in /, without credentials/query/fragment. A custom API override does not inherit another profile's base. Returned safe keywords are encoded as a path component; default cards and unconfigured/demo output have no share URL. No destination is fetched and no redirect/attribution is certified.

Console navigation uses /channels/{channelCode}/conversion-links/promotion-links, its /create child or /{id}/edit; there is no invented detail page. Default cards/deletion return the list.