publ betaReference (MCP guide)
Open publ console

publ Reference

ticket_operations_get

Prepare ticket availability, parking metadata, seated price overrides or deletion for one exact E00003 schedule. This is a read; it never changes a seat or deletes a schedule.

Supply channelCode, pAppCode:"E00003", observed eventId, hallId, scheduleId and the full intended operation. Business IDs are 1–160 ASCII letters, digits, underscores or hyphens. Requires the selected installed app and OWNER or MANAGE_P_APPS permission. E00002 is retired.

operation.kind Required operation fields
price 1–100 distinct sheetItemIds, exact eventPolicyTierPriceId, payment:{kind:"free"} or payment:{kind:"paid",amount:"1500"}
parkMany 1–100 distinct sheetItemIds, parking, confirmation CHANGE_TICKET_AVAILABILITY
unparkMany 1–100 distinct sheetItemIds, confirmation CHANGE_TICKET_AVAILABILITY
parkingMetaMany 1–100 distinct sheetItemIds, parking
park One sheetItemId, parking, confirmation CHANGE_TICKET_AVAILABILITY
unpark One sheetItemId, confirmation CHANGE_TICKET_AVAILABILITY
parkingMeta One sheetItemId, parking
deleteSchedule confirmation DELETE_SCHEDULE

parking is {type,memo}. Type is LOCATION, EXTERNAL, DEACTIVATED or ETC; memo is at most 200 UTF-16 units, including empty text. Objects are strict. Do not supply buyer details, caller currency, URLs, credentials or raw HTTP requests. For example, this operation fragment blocks two observed available seats:

{"kind":"parkMany","sheetItemIds":["observed-sheet-1","observed-sheet-2"],"parking":{"type":"DEACTIVATED","memo":"Maintenance"},"confirmation":"CHANGE_TICKET_AVAILABILITY"}

The tool reads the whole unpaged management sheet, up to 500 items, and checks identities, exact schedule/event/hall, seat positions and counts. Purchased, reserved, assigned, discounted or printed selected seats cannot be changed. Deletion requires every seat unoccupied. A price or isPaid flag alone is not a purchase. Unrelated occupied seats may remain while eligible seats are changed.

Bulk changes use one dispatch for only unsatisfied selected items. An already parked seat with different metadata requires parkingMeta, not park. Release keeps one common existing tier and exact policy prices; price overrides and mixed tiers are excluded from release. This override restriction is an unresolved service-contract/preservation limit; the original control room does expose release for parked, unpurchased selections. Prepare separate same-tier selections if necessary.

Price overrides use price and require a SEATING schedule, eligible unoccupied tickets and identical stored policy/override maps across selected seats. One exact policy tier-price is changed while every other override and the original schedule prices remain intact. Paid amounts follow channel currency rules; zero requires explicit free. This original control-room action exposes seated items only and has no explicit override reset/removal entry; tier changes are outside this option. See the source action boundaries. Price preparation returns pricingObservation with selected IDs and their complete observed overrides; a missing/null map means no existing override.

Success returns TICKET_OPERATION, scheduleId, scheduleStatus, ticketCounts, configuration-only items, a revision tied to the exact operation, a bounded request preview and writesPerformed:false. A null request means the intended state already matches. No task is created. Purchaser fields are not returned.

Use the unchanged operation and returned revision with ticket_operation_apply. Changing any target, selection or setting requires another preparation. Current reads open the exact schedule control room; deletion preparation opens its surviving schedule list. Follow the single returned URL instead of constructing a different host or target path.

A successful read does not prove that a mutation, customer purchase or refund works. Actual MCP changes and original-console comparison remain separate checks.

Exact preparation contract

Every call requires an operation; there is no plain discovery/list view or optional operation. Obtain the existing event, hall, schedule and sheet item IDs from an authorized current observation such as the original control room. Never substitute seatId, slotId or a numeric database ID for sheetItemId. Use a separate preparation for every changed target, selection, parking value or operation kind, even when single and bulk forms would have the same effect.

The selected authorized channel needs one exact installed E00003 pApp and its current consumer/base currency. OWNER is allowed; a MANAGE_P_APPS delegate also needs a current manual policy permitting configuration. Content-only delegates and account scope are excluded. Connection, credential version, actor, channel, installation, consumer, currency and permissions are checked again before effects. BOOK_AND_TICKET_V3 uses the selected API origin with no shop store or alternate service fallback.

parking.type and parking.memo are both required for park/parkingMeta variants. Memo is not trimmed and may be empty; null and omitted memo are invalid. The shared input and HTTP boundary enforce 200 UTF-16 code units, not 200 visible characters: an astral character consumes two units, so 100 such characters fit and 101 do not. A metadata edit supplies the complete replacement type and memo. The four type literals are accepted without inventing a different availability workflow for each.

For an active schedule, preparation reads the exact schedule detail and its complete unpaged ticketing management sheet twice. At most 500 items are accepted. It verifies consumer, schedule/event/hall parents, seat-template identity, schedule time consistency, unique sheet/seat identities, seat positions and full count reconciliation. Rows are normalized by sheetItemId. This is not a search or best-effort partial inventory.

Selection Required state and result
park / parkMany Each selected item must be unoccupied. ONLINE changes to PARKING; an already parked item is satisfied only if both type and memo match. Different parked metadata requires parkingMeta.
parkingMeta / parkingMetaMany Every selected item must be unoccupied and PARKING. Replace type/memo; equal values are satisfied. ONLINE is invalid.
unpark / unparkMany Every selected item must be unoccupied. ONLINE is already satisfied; changed PARKING items must meet the release conditions below.
deleteSchedule Every observed item must be unoccupied and purchasedOnlineTickets must be zero. An already explicitly DELETED schedule is a no-op.

An occupied selected item rejects the whole preparation, even if its availability would otherwise be satisfied. Occupancy includes purchase/print flags and populated reservation, buyer/assignment or discount fields; it is not inferred from ordinary ticket price or isPaid. Eligible changes may coexist with unrelated occupied rows, which must remain unchanged. The returned configuration items omit raw buyer fields; fingerprints track changes in otherwise omitted source data. Ticket histories are excluded from configuration comparison and are not erased or verified by this workflow.

Release requires the stored seat and metadata tier to agree, that tier to exist in the schedule's tier list, and exactly one matching currency/price for it in every observed event policy. The parked row's policy-price projection must equal those schedule prices. Price overrides are rejected. All changed targets in one bulk release must share one common existing tier. Use separate exact preparations for different tiers; do not add a caller tier or price override. Already-online satisfied rows are not converted again.

Complete preparation examples

The earlier JSON block is an operation fragment. The following are complete getter arguments for the original seven variants, with illustrative IDs. Replace them with authorized observations; they do not discover targets or authorize changes. Each example prepares its own operation-specific revision.

Prepare a single seat hold:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "scheduleId": "schedule-example",
  "operation": {
    "kind": "park",
    "sheetItemId": "sheet-example",
    "parking": {
      "type": "DEACTIVATED",
      "memo": "Maintenance"
    },
    "confirmation": "CHANGE_TICKET_AVAILABILITY"
  }
}

Prepare a single release at its existing tier and prices:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "scheduleId": "schedule-example",
  "operation": {
    "kind": "unpark",
    "sheetItemId": "sheet-example",
    "confirmation": "CHANGE_TICKET_AVAILABILITY"
  }
}

Prepare a complete parking type/memo replacement, clearing the memo:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "scheduleId": "schedule-example",
  "operation": {
    "kind": "parkingMeta",
    "sheetItemId": "sheet-example",
    "parking": {
      "type": "LOCATION",
      "memo": ""
    }
  }
}

Prepare a hold for two exact items:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "scheduleId": "schedule-example",
  "operation": {
    "kind": "parkMany",
    "sheetItemIds": [
      "sheet-example",
      "sheet-example-2"
    ],
    "parking": {
      "type": "DEACTIVATED",
      "memo": "Maintenance"
    },
    "confirmation": "CHANGE_TICKET_AVAILABILITY"
  }
}

Prepare release for two items sharing one existing tier:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "scheduleId": "schedule-example",
  "operation": {
    "kind": "unparkMany",
    "sheetItemIds": [
      "sheet-example",
      "sheet-example-2"
    ],
    "confirmation": "CHANGE_TICKET_AVAILABILITY"
  }
}

Prepare a shared type/memo replacement on two parked items:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "scheduleId": "schedule-example",
  "operation": {
    "kind": "parkingMetaMany",
    "sheetItemIds": [
      "sheet-example",
      "sheet-example-2"
    ],
    "parking": {
      "type": "EXTERNAL",
      "memo": "External allocation"
    }
  }
}

Prepare deletion of the exact unoccupied schedule:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "scheduleId": "schedule-example",
  "operation": {
    "kind": "deleteSchedule",
    "confirmation": "DELETE_SCHEDULE"
  }
}

Output and rejected preparation

TICKET_OPERATION returns scheduleId, scheduleStatus, ticketCounts and items containing sheetItemId, seatId, type, parking, isPurchased, isPrinted, occupied, price and seat. It also returns revision, request and writesPerformed:false. The taskType is commerce-ticket-operation and screenId is channel.ticket-operations; these routing fields do not mean a task was created.

The revision binds the entire observed configuration and selected operation. request is the bounded proposed transport form, not an accepted raw-HTTP input. request:null means every selected value is satisfied; a getter never dispatches or creates a journal. Generated timestamps and equivalent monetary/time representations are normalized for stable comparison. Two matching observations do not supply an atomic snapshot or causal proof.

Code Meaning
TICKET_SCHEDULE_UNVERIFIED / TICKET_ITEMS_UNVERIFIED Identity, parents, schedule data, counts, seat projections or complete-sheet consistency failed.
TICKET_ITEM_UNVERIFIED / TICKET_ITEM_NOT_FOUND An item is inconsistent or the exact selected sheetItemId is absent.
TICKET_ITEM_OCCUPIED / TICKET_SCHEDULE_OCCUPIED A selected item, or some item in a schedule selected for deletion, requires separate lifecycle handling.
TICKET_ITEM_STATE The selected item type does not support the requested operation.
TICKET_PRICE_UNVERIFIED Release cannot prove unchanged same-tier prices, has overrides or mixes changed tiers.
COMMERCE_CHANGED The observations changed during preparation.

Schema, authorization and context errors may also reject the request. Obtain fresh observations and resolve the cause before preparing a new unsent operation. For uncertain sent work, preserve its original task instead of changing IDs. See the apply recovery contract and original-console destinations.

These methods do not create/edit schedule metadata or manage discount-policy lifecycle. Price changes the selected seated-ticket override only; it does not change the source schedule policy prices. Schedule listing was not connected at this source boundary. The later bounded schedule list provides observed schedule IDs; it does not prepare a control-room operation or discover every creation dependency.

Seated-ticket price preparation

operation.kind:price selects 1–100 unique sheetItemIds and one observed eventPolicyTierPriceId, with payment free or paid decimal text. It has no confirmation field. Observe that exact policy-price ID in the original control room; the getter requires the intended operation and does not provide schedule discovery. Do not substitute a policy ID, tier label ID, seatId or slotId.

Only SEATING schedules and unoccupied selected tickets are supported. The workflow also guards assigned, printed and other occupied records, beyond that original button predicate. ONLINE items require a matching slot/seat/tier projection; PARKING items must not retain an online slot. Every selected policy must contain exactly one price for the seat tier, with unique policy and price IDs, verified channel currency and a matching schedule policy projection. There may be at most 100 policy/price entries and 100 override entries. Selected tickets must share the same stored policy projections and complete override map; prepare differing groups separately.

A missing/null override map is interpreted as empty. An existing override must identify a known policy-price ID in the same currency. New payment amounts use the ticket currency/channel rules, including explicit free for zero. This operation does not compute the discount-policy base-price cap. It preserves original schedule policy prices and changes one seat-level override entry, rather than editing a default or discount policy.

pricingObservation returns each selected sheetItemId with its complete observed overriddenPrices map, which can be omitted or null when no map exists. An effective amount already equal to the requested amount is satisfied: the tool does not create a redundant override merely to restate the inherited price. A price preparation revision cannot authorize a different selection, price ID or payment.

The UTF-16 input limit applies to newly supplied parking memos. Preserve old journals instead of rewriting them to bypass validation.

Complete price preparation, assuming KRW and observed eligible same-policy seats:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "scheduleId": "schedule-example",
  "operation": {
    "kind": "price",
    "sheetItemIds": [
      "sheet-example",
      "sheet-example-2"
    ],
    "eventPolicyTierPriceId": "policy-price-example",
    "payment": {
      "kind": "paid",
      "amount": "1500"
    }
  }
}

Source action boundaries

The current price request and commerce-ticket-operation recovery contract are unchanged by these distinctions. They do not authorize a broader input, replay, hidden backend action or automatic restoration. Actual saved values, original-console comparison and restoration remain unverified.

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.
hallId 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.
scheduleId 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.
operation Yes one of: price, parkMany, unparkMany, parkingMetaMany, park, unpark, parkingMeta, deleteSchedule, purchase, tier, inspect, history, tickets (by kind)
operation.sheetItemIds Yes When operation.kind is price: 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.eventPolicyTierPriceId Yes When operation.kind is price: 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 price: one of: free, paid (by kind)
operation.payment.amount Yes When operation.kind is price and operation.payment.kind is paid: string; pattern ^(0|[1-9]\d{0,9})(\.\d{1,2})?$
operation.sheetItemIds Yes When operation.kind is parkMany: 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.parking Yes When operation.kind is parkMany: object
operation.parking.type Yes When operation.kind is parkMany: LOCATION, EXTERNAL, DEACTIVATED, ETC
operation.parking.memo Yes When operation.kind is parkMany: string; max length 200
operation.confirmation Yes When operation.kind is parkMany: CHANGE_TICKET_AVAILABILITY
operation.sheetItemIds Yes When operation.kind is unparkMany: 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 unparkMany: CHANGE_TICKET_AVAILABILITY
operation.sheetItemIds Yes When operation.kind is parkingMetaMany: 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.parking Yes When operation.kind is parkingMetaMany: object
operation.parking.type Yes When operation.kind is parkingMetaMany: LOCATION, EXTERNAL, DEACTIVATED, ETC
operation.parking.memo Yes When operation.kind is parkingMetaMany: string; max length 200
operation.sheetItemId Yes When operation.kind is park: 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.parking Yes When operation.kind is park: object
operation.parking.type Yes When operation.kind is park: LOCATION, EXTERNAL, DEACTIVATED, ETC
operation.parking.memo Yes When operation.kind is park: string; max length 200
operation.confirmation Yes When operation.kind is park: CHANGE_TICKET_AVAILABILITY
operation.sheetItemId Yes When operation.kind is unpark: 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.confirmation Yes When operation.kind is unpark: CHANGE_TICKET_AVAILABILITY
operation.sheetItemId Yes When operation.kind is parkingMeta: 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.parking Yes When operation.kind is parkingMeta: object
operation.parking.type Yes When operation.kind is parkingMeta: LOCATION, EXTERNAL, DEACTIVATED, ETC
operation.parking.memo Yes When operation.kind is parkingMeta: string; max length 200
operation.confirmation Yes When operation.kind is deleteSchedule: DELETE_SCHEDULE
operation.sheetItemIds Yes When operation.kind is purchase: 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.orderer Yes When operation.kind is purchase: object
operation.orderer.name Yes When operation.kind is purchase: string; min length 1; max length 200
operation.orderer.phoneCountryCode Yes When operation.kind is purchase: string
operation.orderer.phoneNumber Yes When operation.kind is purchase: string; min length 1; max length 12
operation.orderer.countryCode Yes When operation.kind is purchase: string
operation.orderer.email No When operation.kind is purchase: string; pattern ^([a-zA-Z0-9\-\_\.]+)@([a-zA-Z0-9_\-\_\.]+)\.([a-zA-Z]{2,5})$
operation.reservationId Yes When operation.kind is purchase: string; min length 1; max length 200
operation.payment Yes When operation.kind is purchase: one of: free, paid (by kind)
operation.payment.amount Yes When operation.kind is purchase and operation.payment.kind is paid: string; pattern ^(0|[1-9]\d{0,9})(\.\d{1,2})?$
operation.parkingInfo No When operation.kind is purchase: object
operation.parkingInfo.type Yes When operation.kind is purchase: LOCATION, EXTERNAL, DEACTIVATED, ETC
operation.parkingInfo.memo Yes When operation.kind is purchase: string; max length 200
operation.confirmation Yes When operation.kind is purchase: RECORD_PURCHASE_INFO
operation.sheetItemIds Yes When operation.kind is tier: 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.tierLabelId Yes When operation.kind is tier: 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.sheetItemId Yes When operation.kind is history: 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.page No When operation.kind is history: integer; minimum 1; maximum 10000; default 1
operation.limit No When operation.kind is history: 15 or 30 or 50 or 100; default 15
operation.type No When operation.kind is tickets: ALL, ONLINE, PARKING; default ALL
operation.reservationId No When operation.kind is tickets: string; min length 1; max length 200
operation.csv No When operation.kind is tickets: object
operation.csv.language No When operation.kind is tickets: ko, en; default en
operation.csv.timeZone No When operation.kind is tickets: string; min length 1; max length 64; default Asia/Seoul