publ betaReference (MCP guide)
Open publ console

publ Reference

selection_metadata_commit pins the added candidate fields and registered selection guidance. The fbae capture retains its original description and is not a capture of the added metadata. Migration map.

design_menu_layout_get — read a device's menu layout

Read the current template and Primary/Secondary menu connections for one device, with available templates and menu candidates. Use design_menu_layout_apply to change those connections. This tool does not edit a menu's items, order, names, URLs, logo or login button.

Input and prerequisites

Field Type Required Meaning
channelCode string Yes Nonempty selected channel code.
device enum string Yes W desktop web, M mobile web, or A Android/iOS app. No default.
{"channelCode":"selected-channel-code","device":"W"}

Replace the placeholder using the directory workflow or the bound hosted resource. Read each device separately; a desktop revision cannot be used for a mobile change.

The HTTP implementation requires a current connection, selected-channel credential, matching channel response, an OWNER/DELEGATEE account role and an OWNER/DELEGATEE selected-channel role for menu transport. The local role check does not replace server authorization. Hosted calls must use the bound channel. Menu layout uses the configured general API origin; it does not require the separate CHANNEL_ENV origin used by theme/custom-code operations.

Inputs

Field Required here Contract
device Yes W, M, A; W = desktop web, M = mobile web, A = Android/iOS app.

Result and selection rules

A successful MENU_DESIGN result contains environment, channel, device, the fields below, and verification:{confirmed:true,method:menu_design_read}.

Field Meaning
revision Lowercase SHA-256 revision of the current layout. Pass it unchanged to apply for this channel/device.
layout Layout id, menuTemplateType, primaryMenuId, and secondaryMenuId (number or null).
menus Recent candidate menu definitions, each with id, channelId and title. These are menu IDs, not menu-item IDs.
templates Available recognized templates with type, managementName, targetDeviceType, device and secondaryMenu support, plus displayName, original Korean consoleLabel, description and appearance.
selectionRules currentSlotIdsMayBeRetained:true and outOfListIdsCannotMoveSlots:true.
menuSelectionLimit 50. There is no pagination input on this tool.
menuListMayBeTruncated true when at least 50 menu rows are returned. It is a limit signal, not an authoritative total.

The menu query asks for the latest 50 by insertion time descending. A missing candidate does not prove the menu does not exist. An existing out-of-list Primary ID can remain in Primary, and an existing out-of-list Secondary ID can remain in Secondary. An out-of-list ID cannot move to the other slot or be newly selected. Use the returned current IDs to preserve connections during a template-only change.

The revision includes layout ID, channel ID, device, template type and both connection IDs. It excludes menu titles, menu-item structure, template names and the candidate lists. A matching revision does not prove those other values are unchanged or the three reads were an atomic snapshot.

Template capabilities

The bridge intersects the service's device-specific candidates with this implementation's known capabilities. A type in this table is not selectable unless it is actually returned by get.

Device Recognized templates Secondary support
W W1_0001 through W1_0011 Supported by W1_0003, W1_0005, W1_0008, W1_0010, W1_0011; unsupported by the other six.
M M1_0001 through M1_0005 Supported by all five.
A A1_0001 Unsupported.

Unknown template types are omitted from the selectable template list. A current stored template can still be shown by layout even if it is no longer selectable. The result also supplies source-defined choice metadata. appearance contains family, primaryMenuPresentation, primaryMenuAlignment, logoAlignment and widthPreset. For centered desktop text with the console 1400px option, select a returned candidate with primaryMenuAlignment:"center" and widthPreset:"1400px" (currently W1_0006), and use secondaryMenuId:null. The full-width centered alternative has widthPreset:"100%". Do not decode managementName or its Fix suffix. Null appearance values are unspecified or not applicable; they do not mean unlimited or zero. See selection source and limits.

Requests, failures and verification limits

After channel context is resolved, the adapter issues three GETs under /seller/api/v1/channel-management/design-preferences:

Path suffix Query
/menus sortBy:inserted_at, order:DESC, limit:50
/menu-templates targetDeviceType equal to the requested device
/menu-design-layouts targetDeviceType equal to the requested device

Requests use the selected-channel bearer and channel-ID header at the general API origin. They run concurrently and must return the expected envelopes with exactly one layout. The workflow checks the layout, nested menu references and listed menus against the selected channel, and templates/layout against the device. Duplicate menu IDs/template types are rejected. No layout is initialized, created or changed by get.

The wire adapter binds omitted channelId fields only on known menu/layout rows and nested menu references to the verified request channel. An explicit null, malformed or foreign ID is rejected with MENU_CHANNEL_UNVERIFIED; it is never replaced. Other missing/invalid fields and wrong layout counts fail with MENU_RESPONSE_UNVERIFIED, and mismatched device/context fails with MENU_CONTEXT_MISMATCH. The adapter checks connection and exact selected-channel token before and after transport. A changed binding returns MENU_CONTEXT_CHANGED; do not treat rejected data as an empty menu list.

Authentication, missing credentials, role denial, channel mismatch and upstream failures remain errors. A 404 is not an empty layout. See common results for wrapper/error conventions.

Readback confirms stored template/connections, not browser appearance, actual app rendering or visitor behavior. Non-demo successful results with a resolved target return one navigation destination and its identical legacy consoleUrl alias at the centrally configured /channels/{encodedChannelCode}/design/menu-design-setting console URL; the link does not carry a device selection or prove navigation succeeded.