publ betaReference (MCP guide)
Open publ console

messenger_gift_products_apply

# messenger_gift_products_apply

Create, edit, reorder, show/hide or remove gift products in the Messenger app (pApp D00003). Create needs imageUploadTaskId and CREATE_GIFT_PRODUCT; a new image needs REPLACE_GIFT_PRODUCT_IMAGE; removal needs DELETE_GIFT_PRODUCT or DELETE_GIFT_PRODUCTS. Names 1–20; KRW from 300 in steps of 100, USD from 0.30 in steps of 0.10. Write; removal cannot be undone. A lost receipt stays pending and is never resent; task_resume only observes, and prepared work needs the identical apply. Called without confirmToken it previews and returns a confirmToken; repeating the same input with it executes once.

## Inputs

| Field | Required here | Contract |
| --- | --- | --- |
| `settings` | Yes | one of: `edit`, `reorder`, `remove`, `visibility`, `remove-many` (by `action`) or one of: `create`, `edit` (by `action`) |
| `settings.productId` | Yes | When `settings` is alternative 1 and `settings.action` is `edit`: integer; greater than 0 |
| `settings.name` | No | When `settings` is alternative 1 and `settings.action` is `edit`: string; min length 1; max length 20 |
| `settings.type` | No | When `settings` is alternative 1 and `settings.action` is `edit`: `IMG_ONLY`, `IMG_AND_CUSTOM_MSG` |
| `settings.price` | No | When `settings` is alternative 1 and `settings.action` is `edit`: object |
| `settings.price.currency` | No | When `settings` is alternative 1 and `settings.action` is `edit`: `KRW`, `USD`; Omit to use the verified channel base currency already read by the host. An explicit currency only asserts that it matches; it never changes the currency or supplies an unknown default. |
| `settings.price.amount` | Yes | When `settings` is alternative 1 and `settings.action` is `edit`: string; pattern `^(?:0\|[1-9]\d*)(?:\.\d{1,2})?$` |
| `settings.productIds` | Yes | When `settings` is alternative 1 and `settings.action` is `reorder`: array; items: integer; greater than 0; min items 1; max items 200 |
| `settings.productId` | Yes | When `settings` is alternative 1 and `settings.action` is `remove`: integer; greater than 0 |
| `settings.confirmation` | Yes | When `settings` is alternative 1 and `settings.action` is `remove`: `DELETE_GIFT_PRODUCT` |
| `settings.productIds` | Yes | When `settings` is alternative 1 and `settings.action` is `visibility`: array; items: integer; greater than 0; min items 1; max items 200 |
| `settings.isPublic` | Yes | When `settings` is alternative 1 and `settings.action` is `visibility`: boolean |
| `settings.productIds` | Yes | When `settings` is alternative 1 and `settings.action` is `remove-many`: array; items: integer; greater than 0; min items 1; max items 200 |
| `settings.confirmation` | Yes | When `settings` is alternative 1 and `settings.action` is `remove-many`: `DELETE_GIFT_PRODUCTS` |
| `settings.imageUploadTaskId` | Yes | When `settings` is alternative 2 and `settings.action` is `create`: string; pattern `^[A-Za-z0-9_-]{8,80}$` |
| `settings.name` | Yes | When `settings` is alternative 2 and `settings.action` is `create`: string; min length 1; max length 20 |
| `settings.type` | No | When `settings` is alternative 2 and `settings.action` is `create`: `IMG_ONLY`, `IMG_AND_CUSTOM_MSG`; default `IMG_ONLY` |
| `settings.price` | Yes | When `settings` is alternative 2 and `settings.action` is `create`: object |
| `settings.price.currency` | No | When `settings` is alternative 2 and `settings.action` is `create`: `KRW`, `USD`; Omit to use the verified channel base currency already read by the host. An explicit currency only asserts that it matches; it never changes the currency or supplies an unknown default. |
| `settings.price.amount` | Yes | When `settings` is alternative 2 and `settings.action` is `create`: string; pattern `^(?:0\|[1-9]\d*)(?:\.\d{1,2})?$` |
| `settings.confirmation` | Yes | When `settings` is alternative 2 and `settings.action` is `create`: `CREATE_GIFT_PRODUCT` |
| `settings.productId` | Yes | When `settings` is alternative 2 and `settings.action` is `edit`: integer; greater than 0 |
| `settings.imageUploadTaskId` | Yes | When `settings` is alternative 2 and `settings.action` is `edit`: string; pattern `^[A-Za-z0-9_-]{8,80}$` |
| `settings.name` | No | When `settings` is alternative 2 and `settings.action` is `edit`: string; min length 1; max length 20 |
| `settings.type` | No | When `settings` is alternative 2 and `settings.action` is `edit`: `IMG_ONLY`, `IMG_AND_CUSTOM_MSG` |
| `settings.price` | No | When `settings` is alternative 2 and `settings.action` is `edit`: object |
| `settings.price.currency` | No | When `settings` is alternative 2 and `settings.action` is `edit`: `KRW`, `USD`; Omit to use the verified channel base currency already read by the host. An explicit currency only asserts that it matches; it never changes the currency or supplies an unknown default. |
| `settings.price.amount` | Yes | When `settings` is alternative 2 and `settings.action` is `edit`: string; pattern `^(?:0\|[1-9]\d*)(?:\.\d{1,2})?$` |
| `settings.confirmation` | Yes | When `settings` is alternative 2 and `settings.action` is `edit`: `REPLACE_GIFT_PRODUCT_IMAGE` |
| `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. |