ticket_pricing_get — read and prepare event tier pricing
Read one existing E00003 event's active default pricing policy, or prepare an exact price change, tier link or tier unlink for ticket_pricing_apply. This is an existing registered method. The shared connection at the implementation revision above supports tierPrice, tierLink and tierUnlink. The metadata operation connects policy names and management-label membership.
See Ticket pricing for authorization, the full sequence and recovery. This getter makes no business write and creates no task.
Inputs
| Field | Required here | Contract |
|---|---|---|
channelCode |
Yes | string; min length 1; max length 512; The exact channelCode selected through channel discovery. Do not supply a URL, channel numeric ID, account ID or credentials. |
pAppCode |
Yes | E00003 |
eventId |
Yes | string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL. |
policyId |
No | string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL. |
operation |
No | one of: tierPrice, tierLink, tierUnlink, metadata (by kind) |
operation.eventPolicyTierPriceId |
Yes | When operation.kind is tierPrice: string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL. |
operation.payment |
Yes | When operation.kind is tierPrice: one of: free, paid (by kind) |
operation.payment.amount |
Yes | When operation.kind is tierPrice and operation.payment.kind is paid: string; pattern ^(0|[1-9]\d{0,9})(\.\d{1,2})?$ |
operation.tierLabelId |
Yes | When operation.kind is tierLink: string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL. |
operation.payment |
Yes | When operation.kind is tierLink: one of: free, paid (by kind) |
operation.payment.amount |
Yes | When operation.kind is tierLink and operation.payment.kind is paid: string; pattern ^(0|[1-9]\d{0,9})(\.\d{1,2})?$ |
operation.eventPolicyTierPriceIds |
Yes | When operation.kind is tierUnlink: array; items: string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL.; min items 1; max items 100 |
operation.confirmation |
Yes | When operation.kind is tierUnlink: UNLINK_TIER_PRICES |
operation.settings |
Yes | When operation.kind is metadata: object |
operation.settings.title |
No | When operation.kind is metadata: string; min length 3; max length 50; pattern ^[^\r\n]*$ |
operation.settings.presentationalTitle |
No | When operation.kind is metadata: string; min length 3; max length 50; pattern ^[^\r\n]*$ |
operation.settings.labelIds |
No | When operation.kind is metadata: array; items: string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL.; max items 10 |
Business IDs are 1–160 ASCII letters, digits, underscores or hyphens. They are not numeric database IDs, names or URLs. The input and operation objects are strict: no extra pagination, currency, consumer, installation, credential, header or service-origin fields. Null is not omission.
operation.kind |
Other fields | Preparation |
|---|---|---|
tierPrice |
eventPolicyTierPriceId, payment |
Select one existing LISTED price with deletedAt:null. Preserve its tier assignment. |
tierLink |
tierLabelId, payment |
Select one existing LISTED global tier label with no price row in this policy, including no deleted row. |
tierUnlink |
eventPolicyTierPriceIds, confirmation:"UNLINK_TIER_PRICES" |
Select 1–100 distinct active price business IDs. Selecting all existing active prices is permitted. |
payment is either {"kind":"free"} or {"kind":"paid","amount":"20000"}. Paid amounts are positive decimal strings, subject to currency and channel limits. Currency comes from the selected channel. Free must be explicit; paid zero is rejected.
Read, then prepare the exact operation
Read the policy when the existing event ID is already known:
{
"channelCode": "L2NoYW5uZWxzLzk4",
"pAppCode": "E00003",
"eventId": "event-example"
}
The event ID must come from an authorized observed source, such as the original console. This method does not list events. There is no connected event-list or global-tier-label discovery method in this shared ticket slice; do not invent calls from domain-module names.
Prepare an existing price change:
{
"channelCode": "L2NoYW5uZWxzLzk4",
"pAppCode": "E00003",
"eventId": "event-example",
"policyId": "policy-example",
"operation": {
"kind": "tierPrice",
"eventPolicyTierPriceId": "price-example",
"payment": {"kind": "paid", "amount": "20000"}
}
}
Prepare a new price link to an already observed global label:
{
"channelCode": "L2NoYW5uZWxzLzk4",
"pAppCode": "E00003",
"eventId": "event-example",
"policyId": "policy-example",
"operation": {
"kind": "tierLink",
"tierLabelId": "tier-label-example",
"payment": {"kind": "free"}
}
}
Prepare removal of one existing price link:
{
"channelCode": "L2NoYW5uZWxzLzk4",
"pAppCode": "E00003",
"eventId": "event-example",
"policyId": "policy-example",
"operation": {
"kind": "tierUnlink",
"eventPolicyTierPriceIds": ["price-example"],
"confirmation": "UNLINK_TIER_PRICES"
}
}
These are illustrative inputs, not observed targets or execution permission. Replace every target with current authorized observations. The paid example assumes a KRW channel. Copy policy.eventPolicyId and the revision from the successful preparation into apply. A revision from a read without an operation cannot authorize a write. Changing the operation, selected IDs or payment requires preparing again.
Read coverage and inventory
Each observation reads the selected event and exactly one LISTED default policy using isDefault:true, page 1 and limit 1. The response must identify an active event and a unique active default policy with total 1. It does not enumerate every event policy. A supplied event-policy projection must agree with the selected policy; absent projections are not verified.
The policy contains at most 500 price rows. Numeric IDs, business price IDs and tier-label IDs must each be unique; consumer and currency must match the current context. Returned prices are sorted by eventPolicyTierPriceId, not the original console's display order. Optional embedded event policies are also bounded at 500.
Only tierLink and tierUnlink additionally read the complete LISTED and ARCHIVED global tier-label inventories. Internal pagination uses page 1–5 and limit 100, verifies page sizes, statuses, stable totals and unique identities, and caps the combined inventory at 500. Incomplete, changing or oversized inventory fails closed. The caller cannot choose inventory pages or filters.
availableTierLabels contains only LISTED global labels with no price row in the selected policy. A deleted price row still excludes its label. Plain reads and tierPrice preparation do not return this inventory. Linking therefore requires a previously observed valid label ID; if none is known, select it in the original authorized console. Do not probe with a fabricated ID to obtain options. Global label creation, renaming and archival are not provided by these methods.
Two consecutive business snapshots must agree before a result is returned. Comparison disregards generated insertedAt/updatedAt timestamps and normalizes price amounts for comparison. This detects observed drift; it is not an atomic snapshot or a guarantee against a later concurrent change.
Result and next action
Successful reads return code:TICKET_PRICING, policy, event, revision, verificationScope and writesPerformed:false, with task type commerce-ticket-pricing and screen channel.ticket-pricing. A task type on a read is routing metadata, not a saved job. An operation preparation also returns the planned request; null means an existing-price change is a no-op. Link/unlink preparations can include availableTierLabels as described above.
Fresh validated tier results provide the selected event's exact pricing destination, not the parent event list. The metadata operation uses the separate home destination described below. An error does not produce a current verified link. Use the returned URL rather than reconstructing a console host.
TICKET_PRICING_UNVERIFIED indicates a mismatched or unsupported event/policy/price relationship; TICKET_TIER_LABELS_UNVERIFIED can indicate invalid or incomplete global-label inventory. TICKET_PRICE_INVALID requires correcting the intended price under the channel's rules. COMMERCE_CHANGED requires a fresh observation. Context, permission and service-boundary errors must be resolved without substituting another app, consumer or account. For a previously sent change, use its original task recovery instead of preparing a new request to bypass uncertainty.
<a id="policy-metadata-candidate"></a>
Policy metadata
Use operation:{"kind":"metadata","settings":{...}} with the same selected channel, E00003 event and optional exact default policyId. The existing active-event/default-policy, permission, consumer, currency and context checks still apply. Management labels are distinct from global tier labels and price rows: use labelId/labelIds, not tierLabelId or eventPolicyTierPriceId.
settings field |
Input and meaning |
|---|---|
title |
Optional management policy name: 3–50 UTF-16 code units, no CR/LF, not all whitespace. Leading/trailing whitespace is preserved. Omission preserves the current value; blank text is invalid. |
presentationalTitle |
Optional public policy name, with the same text constraints and omission rule. This is not a translation editor. |
labelIds |
Optional array of 0–10 unique existing management label business IDs. Omission preserves the current membership; an explicit array replaces it, and [] unlinks all management labels from this policy. |
Empty settings:{} inspects the current metadata and options and normally returns a null request. Both retained/final names and the final label count must still satisfy the form, even if the caller changes only one field or inspects with empty settings. Invalid retained values fail preparation instead of being silently rewritten.
Metadata reads the existing event/default policy plus GET /seller/api/v3/ticket-labels with exactly targetModel:EVENT_POLICY and sortBy:inserted_at. The returned catalog is bounded at 500 with unique numeric and business label IDs; an optional returned consumer must match. There is no status/page selector, and the response does not provide pagination-total proof of omitted records. Metadata does not fetch the separate LISTED/ARCHIVED tier-label inventory.
Success adds availableLabels, containing the returned management-label catalog, to the usual policy/event/revision result. Labels carry labelId, title, presentationalTitle, presentationalOrder and status; accepted statuses are AVAILABLE and NOT_AVAILABLE. The contract does not filter choices to AVAILABLE, so do not invent that filter. Select exact observed IDs from availableLabels. Current linked label projections must exist in the catalog and agree in every returned business field; missing, conflicting or foreign data fails closed.
Catalog and linked labels are normalized by labelId. The supplied labelIds order does not control display order, and presentationalOrder is not editable. Existing global labels are not created, renamed, reordered, archived or deleted. The catalog and unedited returned event/policy fields, including prices and refund fields, must remain stable across observations.
Inspect metadata/options using an already observed event:
{
"channelCode": "L2NoYW5uZWxzLzk4",
"pAppCode": "E00003",
"eventId": "event-example",
"operation": {"kind": "metadata", "settings": {}}
}
Prepare names and a complete management-label selection:
{
"channelCode": "L2NoYW5uZWxzLzk4",
"pAppCode": "E00003",
"eventId": "event-example",
"policyId": "policy-example",
"operation": {
"kind": "metadata",
"settings": {
"title": "Standard policy",
"presentationalTitle": "Standard admission",
"labelIds": ["management-label-example"]
}
}
}
Independently, prepare clearing policy-label links while preserving both names:
{
"channelCode": "L2NoYW5uZWxzLzk4",
"pAppCode": "E00003",
"eventId": "event-example",
"policyId": "policy-example",
"operation": {"kind": "metadata", "settings": {"labelIds": []}}
}
Replace the illustrative IDs with current observations; the label must have been returned in the metadata catalog. Empty-settings inspection is not preparation for changed names or links. Prepare the exact final settings again, then copy its revision and policy.eventPolicyId into metadata apply. A null request is a no-op, not an executed save.
Fresh metadata reads/preparations use the selected event's base-pricing/home destination. Plain discovery and tier operations continue to use base-pricing/detail; keep the single returned URL for the operation. The home destination requires valid current names, catalog/linked projections and the exact target/request. Pending or historical data does not provide a current verified link.