publ betaReference (MCP guide)
Open publ console

publ Reference

ticket_schedules_get

Policy continuation:

Read a bounded E00003 schedule list, prepare single or multiple-date creation, edit one schedule or a bounded metadata selection, prepare publication for selected schedules, or prepare a policy replacement/refresh for selected schedules in one hall/event. The list view is separate from the operation preparation below. Supply channelCode, pAppCode:"E00003", observed eventId and hallId, and the full operation. Requires OWNER or MANAGE_P_APPS and one exact installation. IDs are returned business IDs, not numeric rows, titles or guessed URLs.

For an existing schedule use {kind:"edit",scheduleId:"observed-id",settings:{...}}. Empty settings inspect without preparing a change. Allowed fields are title, time, limitPurchaseQuantity, isPublished and availabilityStatus (NORMAL, FORBIDDEN or NOT_AVAILABLE). Omitted fields remain unchanged; null is valid only for an unlimited purchase limit. Time is {startTime,duration}, using an explicit real UTC whole-minute instant and a duration of 1–300 minutes. Convert local time before calling. Title is trimmed, nonempty and at most 80 UTF-16 units. A purchase limit is 1–300 or null. Publication and availability changes can affect customer access.

Creation requires kind:"create", confirmation CREATE_SCHEDULE and a complete draft: title, startTime, duration, limitPurchaseQuantity, seatTemplateId and 1–100 distinct existing eventPolicyIds. The selected template must be populated and every seat tier must have a valid price in every selected policy.

Optional draft.parkedSeats contains 1–100 distinct existing template seat IDs:

[{"seatId":"observed-seat-id","parking":{"type":"DEACTIVATED","memo":"Maintenance"}}]

Parking type is LOCATION, EXTERNAL, DEACTIVATED or ETC; memo is at most 200 UTF-16 units. Omit parkedSeats for no initial parking. Do not provide buyer data, prices, new seats, translations, images, URLs or credentials. Single-date create accepts no recurrence rule; use the explicit createBatch operation below for multiple dates.

Create/edit preparation returns TICKET_SCHEDULE, the observed schedule or null for creation, resolved creation dependencies when applicable, the exact request preview, operation-bound revision and writesPerformed:false. It saves nothing and creates no task. Use the unchanged full operation and revision with ticket_schedule_apply; any change needs preparation again. No missing default or source identity is inferred.

Create preparation opens the original creation screen without prefilling the draft. Edit opens the schedule list containing its metadata modal; current filters can differ. Use the single returned link and exact schedule/dependency IDs. A current read does not prove a saved change, visitor access or a purchase.

Read a bounded schedule list

Supply channelCode, pAppCode E00003, hallId, optional eventId, and view:{kind:"list",startDate:"2026-11-01",endDate:"2026-11-30",publication:"all"}. The inclusive date range is at most 93 days. Publication is all (default), published or unpublished. Do not combine view with operation.

The workflow reads the exact hall, optional event and source schedule response twice. It forwards the date labels with an end boundary one day after endDate, LISTED and ASC, filters publication locally and sorts by start time. Up to 1000 rows are admitted. It returns safe schedule summaries, requestedRange, source date echo and coverage.completeInventory:false; no revision or mutation job. Echo validation does not independently prove backend date membership, complete inventory or bookability. Purchaser data and ticket deeds are omitted.

The single console URL retains hallId and optional eventId only. Set the requested dates, publication filter and calendar/list view again in the original console. The link is a surviving list destination, not a promise of restored filter state.

Separate discovery from preparation

Mode Root fields in addition to channelCode and pAppCode:E00003 Result and permitted next step
List hallId, optional eventId, view.kind:list with startDate/endDate and optional publication. Omit operation. TICKET_SCHEDULE_DISCOVERY has no revision; select an observed schedule and prepare its exact edit separately.
Inspect/edit eventId, hallId, operation:{kind:edit,scheduleId,settings}. Omit view. TICKET_SCHEDULE includes an operation-bound revision. Empty settings inspect; any changed setting needs another preparation.
Create eventId, hallId, operation:{kind:create,confirmation:CREATE_SCHEDULE,draft}. Omit view. TICKET_SCHEDULE has schedule:null, resolved dependencies, exact request and revision for one new schedule.
Edit many eventId, hallId, operation:{kind:editMany,scheduleIds,settings,confirmation:EDIT_SCHEDULES}. Omit view. TICKET_SCHEDULE_EDIT_MANY binds the ordered selection and complete original snapshots; inspect each target and its willSend flag.
Create batch eventId, hallId, operation:{kind:createBatch,confirmation:CREATE_SCHEDULES,draft}. Omit view. TICKET_SCHEDULE_BATCH supplies ordered occurrences, dependencies, request and an exact batch revision; no schedule IDs exist yet.
Policies eventId, hallId, operation:{kind:policies,scheduleIds,eventPolicyIds,patchOption,confirmation:PATCH_SCHEDULE_POLICIES}. Omit view. TICKET_SCHEDULE_POLICIES includes selected schedules, exact request or null for no-op, and a policy-operation revision.

All objects are strict. Business IDs accept 1–160 ASCII letters, digits, underscores or hyphens. Numeric list row id is not scheduleId. Inputs have no arbitrary request, consumer, credential, origin, remote publication filter, search, sort or page selector. The selected channel needs one installed E00003 and current OWNER or permitted MANAGE_P_APPS configuration access; content-only delegates are excluded. Context and permission changes stop processing. BOOK_AND_TICKET_V3 stays on the selected API origin without a shop-store fallback.

Bounded list observations

startDate/endDate are real YYYY-MM-DD calendar labels, ordered inclusively across at most 93 days. A same-day range is valid; endDate must precede 9999-12-31 so its following day is representable. The request sends startTime:startDate and endTime:the next day after endDate, with LISTED and ASC. It does not infer browser/server timezone or convert those labels. publication defaults to all; published/unpublished filter the verified source rows locally.

Two reads must agree on the exact hall, optional event and safe schedule projections. Source date echoes must match the requested boundaries as labels or equivalent midnight instants, with LISTED/ASC. Each row must have consistent channel/consumer/parent identity, unique numeric id and scheduleId, exact template identity and a valid start/end/duration relation. Supplied counts must reconcile with each other and the seat projection. At most 1000 source rows are accepted before local publication filtering; there is no pagination or silent truncation.

Results include hall, optional event, schedules, requestParam, publication, requestedRange and coverage. Schedules are sorted by startTime, then scheduleId, and contain numeric/business identities, parent/template IDs, titles, UTC times, duration, source status/publication/availability, purchase limit and optional ticketCounts. Buyer data, deeds and unknown source fields are omitted. coverage reports maximumReturnedRows:1000, returnedRows before filtering, matchedRows after filtering and completeInventory:false.

A verified date echo and stable summaries do not independently prove that every row belongs to the requested interval, that every matching schedule was returned, or that any seat remains bookable. Empty output is not evidence of complete absence. The read creates no task and supplies no mutation revision. The returned list URL carries only hallId and optional eventId; reselect dates, publication and calendar/list mode in the original console.

Exact create and edit preparation

A create draft requires title, startTime, duration, limitPurchaseQuantity, seatTemplateId and 1–100 unique eventPolicyIds. It accepts no publication/availability setting; source-returned values are observed instead of promised. The event must be LISTED, hall exact and active, template exact and populated with at most 500 seats, and every selected active event policy must belong to that event/consumer. Every template seat tier needs one valid matching-currency price in each policy. Missing parents, template seats, policy relationships or verified currency cannot be filled with guesses. These methods do not create those dependencies.

Optional parkedSeats selects 1–100 unique template seatId values, not generated sheetItemId or slotId values. Every selected ID must exist in that template. Omit the field for no initial parking; an empty array is not the input form for omission. type and memo are both required. Memo is not trimmed and may be empty; it is limited to 200 UTF-16 units. Caller prices, buyer assignments, new seat coordinates or metadata overrides are not accepted. The request derives each parked row's public seat title and tier from the observed template.

Edit settings may combine title, time, limitPurchaseQuantity, isPublished and availabilityStatus. Omission preserves existing values. Only limitPurchaseQuantity accepts null (unlimited, mapped internally to -1); finite limits are 1–300 and -1 is not caller input. A time change requires both startTime and duration. startTime is a real UTC ISO instant ending in Z, aligned to a whole minute; duration is 1–300 integer minutes. There is no caller offset or inferred local timezone. Titles are trimmed, must remain nonempty and fit 80 UTF-16 units. An astral character uses two units; the same rule applies to parking memos. Editing has no extra confirmation field.

Preparation reads the complete operation-specific snapshot twice and binds the selection, context, event, schedule or creation dependencies into its revision. Generated insertedAt/updatedAt values and equivalent monetary/time representations are normalized for business comparison. This is not an atomic snapshot or backend compare-and-swap. A null request means no change; a revision from empty settings cannot authorize later added fields. Use exact apply and recovery, retaining the full operation.

Complete input examples

The earlier parkedSeats block is a fragment. These are complete getter arguments with illustrative IDs, not recorded calls or authorization.

List one hall for a bounded range; publication defaults to all.

{
  "channelCode": "selected-channel",
  "pAppCode": "E00003",
  "hallId": "hall-example",
  "view": {
    "kind": "list",
    "startDate": "2026-11-01",
    "endDate": "2026-11-30"
  }
}

List unpublished schedules for an observed event in that hall.

{
  "channelCode": "selected-channel",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "view": {
    "kind": "list",
    "startDate": "2026-11-01",
    "endDate": "2026-11-30",
    "publication": "unpublished"
  }
}

Inspect one exact schedule without changing settings.

{
  "channelCode": "selected-channel",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "operation": {
    "kind": "edit",
    "scheduleId": "schedule-example",
    "settings": {}
  }
}

Prepare a combined metadata/time change with an unlimited purchase count.

{
  "channelCode": "selected-channel",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "operation": {
    "kind": "edit",
    "scheduleId": "schedule-example",
    "settings": {
      "title": "Evening session",
      "time": {
        "startTime": "2026-11-01T11:00:00Z",
        "duration": 90
      },
      "limitPurchaseQuantity": null,
      "isPublished": false,
      "availabilityStatus": "FORBIDDEN"
    }
  }
}

Prepare one schedule without initial parking.

{
  "channelCode": "selected-channel",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "operation": {
    "kind": "create",
    "confirmation": "CREATE_SCHEDULE",
    "draft": {
      "title": "Evening session",
      "startTime": "2026-11-01T10:00:00Z",
      "duration": 90,
      "limitPurchaseQuantity": null,
      "seatTemplateId": "template-example",
      "eventPolicyIds": [
        "policy-example"
      ]
    }
  }
}

Prepare the same draft with one initial parked template seat.

{
  "channelCode": "selected-channel",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "operation": {
    "kind": "create",
    "confirmation": "CREATE_SCHEDULE",
    "draft": {
      "title": "Evening session",
      "startTime": "2026-11-01T10:00:00Z",
      "duration": 90,
      "limitPurchaseQuantity": null,
      "seatTemplateId": "template-example",
      "eventPolicyIds": [
        "policy-example"
      ],
      "parkedSeats": [
        {
          "seatId": "seat-example",
          "parking": {
            "type": "DEACTIVATED",
            "memo": "Maintenance"
          }
        }
      ]
    }
  }
}

The list view prepares no mutation. The separate policies and createBatch operations below prepare their explicit selections. Translations, buyer assignment and financial execution are not added.

Prepare schedule policy replacement or refresh

Use the existing getter with operation.kind:policies for 1–100 observed schedules in one exact hall and event. This changes their applied policy configuration; it is separate from per-item ticket price overrides and from create/edit settings. No new public method is needed.

Operation field Contract
kind policies.
scheduleIds Required 1–100 unique observed business IDs. All must belong to the selected E00003 installation, hallId and eventId. Preserve their order through preparation/apply.
eventPolicyIds Required ordered array of unique observed policy IDs, at most 100. OVERRIDE permits an explicit empty array; CHANGE requires at least one.
patchOption OVERRIDE or CHANGE, with the distinct behavior below.
confirmation Required literal PATCH_SCHEDULE_POLICIES, including an empty OVERRIDE.

IDs use the existing 1–160 ASCII business-ID rule. These objects are strict: no view/list filter, create draft, edit settings, raw request, job ID, price amount or cross-event selection belongs in this operation. Changing selection, order or mode requires a new getter revision. The original screen can select across events; this bridge deliberately supports only one hall/event.

Replace the complete ordered list

OVERRIDE means the complete desired policy list for every selected schedule. It can add/remove policies and reorder them. Omitted array elements are removed from the applied selection; eventPolicyIds:[] explicitly clears the selection and is not an inspection or no-op unless it is already empty. This does not delete the event's source policies.

{
  "channelCode": "selected-channel",
  "pAppCode": "E00003",
  "hallId": "observed-hall",
  "eventId": "observed-event",
  "operation": {
    "kind": "policies",
    "scheduleIds": [
      "schedule-one",
      "schedule-two"
    ],
    "eventPolicyIds": [
      "policy-two",
      "policy-one"
    ],
    "patchOption": "OVERRIDE",
    "confirmation": "PATCH_SCHEDULE_POLICIES"
  }
}

Prepare an explicit empty selection:

{
  "channelCode": "selected-channel",
  "pAppCode": "E00003",
  "hallId": "observed-hall",
  "eventId": "observed-event",
  "operation": {
    "kind": "policies",
    "scheduleIds": [
      "schedule-one"
    ],
    "eventPolicyIds": [],
    "patchOption": "OVERRIDE",
    "confirmation": "PATCH_SCHEDULE_POLICIES"
  }
}

Refresh selected applied policies

CHANGE selects policies from the union already applied to the selected schedules. Every requested ID must be applied to at least one selected schedule. Each schedule retains its existing policy order and all unselected policy projections. A selected policy absent from a particular schedule stays absent there; CHANGE never adds it. The operation refreshes selected policy names and explicit tier prices from their current source definitions.

{
  "channelCode": "selected-channel",
  "pAppCode": "E00003",
  "hallId": "observed-hall",
  "eventId": "observed-event",
  "operation": {
    "kind": "policies",
    "scheduleIds": [
      "schedule-one",
      "schedule-two"
    ],
    "eventPolicyIds": [
      "policy-one"
    ],
    "patchOption": "CHANGE",
    "confirmation": "PATCH_SCHEDULE_POLICIES"
  }
}

These are illustrative identities, not recorded calls. Prepare the exact authorized target before saving.

Required source state and response

The source event must be LISTED and match the installation and known channel currency. Selected policy and explicit tier-price rows must be active, undeleted, unique and tied to that event. Each selected schedule must have exact consumer/hall/event/template identity and a consistent time range. Applied policy projections require unique identities and valid channel-currency amounts. Every tier on a schedule receiving a selected policy needs an explicit selected-policy price; sparse inherited-price expansion is not supported or guessed. Empty OVERRIDE needs no selected source policies.

One observation reads channel bulk status, the exact event, each selected policy and schedule, then bulk status again. The complete observation is repeated and its business state must match. The revision binds the operator/installation context, full operation and observed event/policy/schedule business data. Bulk history and permitted volatile timestamps are not business revision fields; repeated reads are not an atomic snapshot or worker lock.

Any channel-wide REQUESTED record returns TICKET_SCHEDULE_POLICIES_BUSY before a new plan can proceed. It can belong to another task; the bridge intentionally waits without assuming a schedule-specific worker identity. Malformed groups or duplicate record identities cannot establish a safe observation. This channel-wide latest-status response is neither a correlated job receipt nor a complete job inventory.

Success returns TICKET_SCHEDULE_POLICIES, taskType commerce-ticket-schedule-policies, schedules in the requested order, selection, revision, request and writesPerformed:false. request:null means the current configuration already matches the intended result. bulkStatus:{requested:0,jobCorrelationVerified:false} reports only this observation; zero pending rows or global DONE does not prove a save. The getter creates no task. Copy the unchanged operation and revision into ticket_schedule_apply.

The validated destination is the surviving schedule list with hallId/eventId only. Reselect date range, schedules, publication/calendar/list view and the policy modal in the original console.

Prepare multiple-date schedule creation

This extends the existing get/apply pair; no public batch method is added.

Use operation.kind:createBatch with confirmation:CREATE_SCHEDULES and a complete draft. The confirmation is required for both getter and writer, although preparation sends no write. Do not place draft/confirmation at the public root or combine operation with view. This creates new schedules for one exact event/hall; it does not edit a scheduleIds selection. The selected channel must have exactly one E00003 installation and current OWNER or permitted MANAGE_P_APPS access. Content-only delegation does not authorize this configuration.

Draft field Contract
title Trimmed, nonblank, at most 80 UTF-16 code units.
startAtTime UTC HH:mm:00, with hours 00–23 and minutes 00–59. No timezone/offset argument.
duration Integer 1–300 minutes, applied to every occurrence.
limitPurchaseQuantity Required null for unlimited, or integer 1–300. Null maps to the source -1.
seatTemplateId One observed populated template for this hall; at most 500 seats.
eventPolicyIds 1–100 distinct observed active policies for this event. Every template tier must have a valid price in each policy.
recurrence Exactly one of the selections below.
parkedSeats Optional 1–100 unique observed template seat IDs, using the existing parking object. Omit for none; an empty array is invalid.

Recurrence and UTC boundaries

frequency Required recurrence fields Limit and occurrence order
CUSTOM dateRanges 1–31 distinct real YYYY-MM-DD UTC dates. Input may be unsorted; preparation sorts occurrences. Do not supply start/until/byDay.
DAILY start, until Real UTC dates with both endpoints included, until at or after start and at most 90 elapsed days later: at most 91 occurrences.
WEEKLY start, until, byDay Inclusive real UTC dates spanning at most 120 elapsed days; 1–7 distinct Sun, Mon, Tue, Wed, Thu, Fri, Sat values and at least one matching date. At most 121 occurrences when every weekday is selected.

Every occurrence uses the same startAtTime and duration. The source interval is fixed to one and generated internally. Monthly/yearly rules, interval overrides and local timezone inference are unavailable. Convert the intended local dates, times and weekdays to UTC before preparing. If one fixed UTC time does not describe the intended local schedule, do not treat this rule as a timezone-aware recurrence.

Initial parking applies the same selected seats, type and memo to every occurrence. parking.type is LOCATION, EXTERNAL, DEACTIVATED or ETC. parking.memo is required, may be empty, is not trimmed and is at most 200 UTF-16 units. The workflow derives each row's source title/tier and PARKING metadata from the selected template. Do not supply buyer data, seat labels, tiers, prices, raw metadata or request bodies. Publication/availability fields are not accepted in this creation draft.

TICKET_SCHEDULE_BATCH returns ordered occurrences with startTime/endTime, dependencies, revision, the physical request preview, writesPerformed:false, timeBasis, navigationReason and verificationScope. There is no created scheduleId or saved job. The revision binds the complete draft, event/hall, checked context and observed dependencies. Preserve the exact selection and use batch apply; changed input or dependencies requires new preparation.

Fresh preparation links only to the original parent schedules list, without hall/event/date query or modal state. Reselect the event, hall, dates, publication and calendar/list filters in the console. A list link does not prefill a batch wizard or prove creation.

Complete batch preparation examples

IDs are placeholders for observed dependencies. These examples perform preparation only. The corresponding dry runs are in batch apply examples.

CUSTOM.

{
  "channelCode": "channel98",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "operation": {
    "kind": "createBatch",
    "confirmation": "CREATE_SCHEDULES",
    "draft": {
      "title": "Evening performance",
      "startAtTime": "15:30:00",
      "duration": 90,
      "limitPurchaseQuantity": null,
      "seatTemplateId": "template-example",
      "eventPolicyIds": [
        "policy-example"
      ],
      "recurrence": {
        "frequency": "CUSTOM",
        "dateRanges": [
          "2026-11-08",
          "2026-11-01"
        ]
      }
    }
  }
}

DAILY.

{
  "channelCode": "channel98",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "operation": {
    "kind": "createBatch",
    "confirmation": "CREATE_SCHEDULES",
    "draft": {
      "title": "Evening performance",
      "startAtTime": "15:30:00",
      "duration": 90,
      "limitPurchaseQuantity": null,
      "seatTemplateId": "template-example",
      "eventPolicyIds": [
        "policy-example"
      ],
      "recurrence": {
        "frequency": "DAILY",
        "start": "2026-11-01",
        "until": "2026-11-03"
      }
    }
  }
}

WEEKLY with the same initial parking on both occurrences.

{
  "channelCode": "channel98",
  "pAppCode": "E00003",
  "eventId": "event-example",
  "hallId": "hall-example",
  "operation": {
    "kind": "createBatch",
    "confirmation": "CREATE_SCHEDULES",
    "draft": {
      "title": "Evening performance",
      "startAtTime": "15:30:00",
      "duration": 90,
      "limitPurchaseQuantity": null,
      "seatTemplateId": "template-example",
      "eventPolicyIds": [
        "policy-example"
      ],
      "recurrence": {
        "frequency": "WEEKLY",
        "start": "2026-11-01",
        "until": "2026-11-08",
        "byDay": [
          "Sun"
        ]
      },
      "parkedSeats": [
        {
          "seatId": "seat-example",
          "parking": {
            "type": "EXTERNAL",
            "memo": "Allocation"
          }
        }
      ]
    }
  }
}

Prepare metadata changes for selected schedules

The existing tools, guarded transport, canonical task recovery and parent navigation are connected in source.

Use operation.kind:editMany with 1–100 distinct observed scheduleIds from one exact event and hall, nonempty settings and confirmation:EDIT_SCHEDULES. The confirmation is required during preparation too. Channel/app/installation and OWNER or permitted MANAGE_P_APPS configuration authority must match; content-only delegates are excluded. This extends the existing pair without a new public method. Do not combine view and operation or use the list response as write preparation.

settings field Accepted value and preservation
title Trimmed, nonblank, at most 80 UTF-16 units.
startAtTime HH:mm:00 UTC clock, independently optional. Each selected schedule keeps its own UTC calendar date.
duration Integer 1–300 minutes, independently optional. An omitted clock remains unchanged.
limitPurchaseQuantity Integer 1–300, or explicit null for unlimited (-1 on the wire). Omission preserves each original limit.

At least one setting is required; an empty settings object is not an inspection mode here. Date/startTime, publication, availability, translations, template/policy changes and deletion are outside editMany. The original single edit keeps its separate complete date/time contract and empty-settings inspection.

Clock or duration changes derive each end instant, including midnight rollover. Convert intended local clock values to UTC beforehand; no local-date/DST inference or common original date is assumed. The source bulk modal has no date picker. The bridge deliberately omits unspecified PATCH fields, whereas the original UI form always sends its purchase limit/-1. Omission is never silently converted to unlimited, and preservation must be verified rather than assumed from acknowledgement.

Preparation reads the complete selection twice and requires stable full business snapshots, ignoring only generated inserted/updated timestamps. Each returned row must match the exact ID, consumer, hall, event, template and valid time range. The revision binds selection/settings and those original snapshots in the verified context. Changed IDs/order, settings, context or original state requires new preparation.

TICKET_SCHEDULE_EDIT_MANY returns revision, request (null for a fully matching selection), selection:{hallId,eventId,scheduleIds} in original order, targets with before/requested/willSend, writesPerformed:false and explicit time/verification scope. Already-matching targets stay in the selection/results but are omitted from the planned PATCH. This read creates no task and does not clear an unresolved target guard. Use the unchanged full operation with editMany apply.

The original metadata modal lives on the parent schedule list. The shared host independently reconstructs the URL from validated selection fields and target order, then compares the returned URL. The single validated link is classified as parent and retains only hall/event. Reselect dates, schedules and modal state there.

Complete editMany preparation examples

Use observed IDs in one event/hall. These illustrate independent settings; they are not recorded service calls.

Title only.

{
  "channelCode": "channel98",
  "pAppCode": "E00003",
  "hallId": "hall-example",
  "eventId": "event-example",
  "operation": {
    "kind": "editMany",
    "scheduleIds": [
      "schedule-example-1",
      "schedule-example-2"
    ],
    "settings": {
      "title": "Evening show"
    },
    "confirmation": "EDIT_SCHEDULES"
  }
}

UTC clock only.

{
  "channelCode": "channel98",
  "pAppCode": "E00003",
  "hallId": "hall-example",
  "eventId": "event-example",
  "operation": {
    "kind": "editMany",
    "scheduleIds": [
      "schedule-example-1",
      "schedule-example-2"
    ],
    "settings": {
      "startAtTime": "23:30:00"
    },
    "confirmation": "EDIT_SCHEDULES"
  }
}

Duration and unlimited purchase limit.

{
  "channelCode": "channel98",
  "pAppCode": "E00003",
  "hallId": "hall-example",
  "eventId": "event-example",
  "operation": {
    "kind": "editMany",
    "scheduleIds": [
      "schedule-example-1",
      "schedule-example-2"
    ],
    "settings": {
      "duration": 90,
      "limitPurchaseQuantity": null
    },
    "confirmation": "EDIT_SCHEDULES"
  }
}

Prepare publication for selected schedules

The existing get/apply methods, transport, canonical task guard and publication-aware navigation are connected in source.

Use operation.kind:publication on this existing getter to prepare public (isPublished:true) or private (false) status for explicitly selected E00003 schedules. It follows the source list dropdown, separately from availability/sale status, metadata editing, deletion, bookings and refunds. No publish-only or unpublish-only method is needed.

Field Contract
channelCode, pAppCode Selected authorized channel and E00003; OWNER or MANAGE_P_APPS and the exact installation.
hallId, eventId Both required, using discovered business IDs. Every selected schedule must have these parents.
operation.kind publication.
operation.scheduleIds 1–100 unique observed IDs, preserving their explicit order. IDs use the existing 1–160 ASCII letters/digits/underscore/hyphen rule.
operation.isPublished Required boolean; no inferred toggle or mixed-state default.
operation.confirmation Required CHANGE_SCHEDULE_PUBLICATION, including private or already-matching requests.

Do not combine operation with view/list filters, settings, availabilityStatus, a create draft or arbitrary request fields. Changing IDs, their order or the requested boolean requires fresh preparation; another operation's revision is not a substitute.

Preparation reads every selected schedule twice, checks its parent/installation and stable business snapshot, and returns TICKET_SCHEDULE_PUBLICATION with operationKind:publication, selection:{hallId,eventId,scheduleIds}, revision, request or null, per-target before/requested/willSend and writesPerformed:false. Already-matching schedules remain in the selection/results but are omitted from the preview's STATUS request. Matching flags alone do not prove preserved metadata or eventual save success.

The getter creates no task or durable claim, does not admit a later apply and never releases pending work. A preview whose request is null can still be rejected on real apply by an unresolved target claim. See matching-value admission. Use the unchanged operation and returned revision with publication apply.

The validated destination is the hall/event parent list, not a selected schedule detail. Reselect dates, rows and the publication dropdown there. The URL preserves only hallId/eventId and proves no visitor visibility or cache behavior.

Publication preparation examples

Illustrative preparation only. Replace the channel, parents and IDs with discovered values; no live mutation or current availability is implied.

Prepare making both selected schedules public:

{"channelCode":"selected-channel","pAppCode":"E00003","hallId":"observed-hall","eventId":"observed-event","operation":{"kind":"publication","scheduleIds":["schedule-one","schedule-two"],"isPublished":true,"confirmation":"CHANGE_SCHEDULE_PUBLICATION"}}

Prepare making one explicitly selected schedule private:

{"channelCode":"selected-channel","pAppCode":"E00003","hallId":"observed-hall","eventId":"observed-event","operation":{"kind":"publication","scheduleIds":["schedule-one"],"isPublished":false,"confirmation":"CHANGE_SCHEDULE_PUBLICATION"}}

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 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.
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.
operation No one of: edit, create, policies, createBatch, editMany, publication, availability, deleteMany (by kind)
operation.scheduleId Yes When operation.kind is edit: 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.settings Yes When operation.kind is edit: object
operation.settings.title No When operation.kind is edit: string; min length 1; max length 80
operation.settings.time No When operation.kind is edit: object
operation.settings.time.startTime Yes When operation.kind is edit: string; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$; format date-time
operation.settings.time.duration Yes When operation.kind is edit: integer; minimum 1; maximum 300
operation.settings.limitPurchaseQuantity No When operation.kind is edit: integer; minimum 1; maximum 300 or null
operation.settings.isPublished No When operation.kind is edit: boolean
operation.settings.availabilityStatus No When operation.kind is edit: NORMAL, FORBIDDEN, NOT_AVAILABLE
operation.draft Yes When operation.kind is create: object
operation.draft.title Yes When operation.kind is create: string; min length 1; max length 80
operation.draft.startTime Yes When operation.kind is create: string; pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$; format date-time
operation.draft.duration Yes When operation.kind is create: integer; minimum 1; maximum 300
operation.draft.limitPurchaseQuantity Yes When operation.kind is create: integer; minimum 1; maximum 300 or null
operation.draft.seatTemplateId Yes When operation.kind is create: 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.draft.eventPolicyIds Yes When operation.kind is create: 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.draft.parkedSeats No When operation.kind is create: array; min items 1; max items 100
operation.draft.parkedSeats[].seatId Yes When operation.kind is create: 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.draft.parkedSeats[].parking Yes When operation.kind is create: object
operation.draft.parkedSeats[].parking.type Yes When operation.kind is create: LOCATION, EXTERNAL, DEACTIVATED, ETC
operation.draft.parkedSeats[].parking.memo Yes When operation.kind is create: string; max length 200
operation.draft.translation No When operation.kind is create: object
operation.draft.translation.title Yes When operation.kind is create: object
operation.draft.translation.title.ko No When operation.kind is create: string
operation.draft.translation.title.en No When operation.kind is create: string
operation.draft.translation.title.ja No When operation.kind is create: string
operation.draft.translation.title.zh No When operation.kind is create: string
operation.draft.translation.title.zh-Hant No When operation.kind is create: string
operation.draft.translation.title.fr No When operation.kind is create: string
operation.draft.translation.title.es No When operation.kind is create: string
operation.draft.translation.title.vi No When operation.kind is create: string
operation.draft.translation.title.ru No When operation.kind is create: string
operation.draft.translation.title.it No When operation.kind is create: string
operation.confirmation Yes When operation.kind is create: CREATE_SCHEDULE
operation.scheduleIds Yes When operation.kind is policies: 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.eventPolicyIds Yes When operation.kind is policies: 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 100
operation.patchOption Yes When operation.kind is policies: OVERRIDE, CHANGE
operation.confirmation Yes When operation.kind is policies: PATCH_SCHEDULE_POLICIES
operation.draft Yes When operation.kind is createBatch: object
operation.draft.title Yes When operation.kind is createBatch: string; min length 1; max length 80
operation.draft.startAtTime Yes When operation.kind is createBatch: string; pattern ^(?:[01]\d|2[0-3]):[0-5]\d:00$
operation.draft.duration Yes When operation.kind is createBatch: integer; minimum 1; maximum 300
operation.draft.limitPurchaseQuantity Yes When operation.kind is createBatch: integer; minimum 1; maximum 300 or null
operation.draft.seatTemplateId Yes When operation.kind is createBatch: 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.draft.eventPolicyIds Yes When operation.kind is createBatch: 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.draft.parkedSeats No When operation.kind is createBatch: array; min items 1; max items 100
operation.draft.parkedSeats[].seatId Yes When operation.kind is createBatch: 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.draft.parkedSeats[].parking Yes When operation.kind is createBatch: object
operation.draft.parkedSeats[].parking.type Yes When operation.kind is createBatch: LOCATION, EXTERNAL, DEACTIVATED, ETC
operation.draft.parkedSeats[].parking.memo Yes When operation.kind is createBatch: string; max length 200
operation.draft.translation No When operation.kind is createBatch: object
operation.draft.translation.title Yes When operation.kind is createBatch: object
operation.draft.translation.title.ko No When operation.kind is createBatch: string
operation.draft.translation.title.en No When operation.kind is createBatch: string
operation.draft.translation.title.ja No When operation.kind is createBatch: string
operation.draft.translation.title.zh No When operation.kind is createBatch: string
operation.draft.translation.title.zh-Hant No When operation.kind is createBatch: string
operation.draft.translation.title.fr No When operation.kind is createBatch: string
operation.draft.translation.title.es No When operation.kind is createBatch: string
operation.draft.translation.title.vi No When operation.kind is createBatch: string
operation.draft.translation.title.ru No When operation.kind is createBatch: string
operation.draft.translation.title.it No When operation.kind is createBatch: string
operation.draft.recurrence Yes When operation.kind is createBatch: one of: CUSTOM, DAILY, WEEKLY (by frequency)
operation.draft.recurrence.dateRanges Yes When operation.kind is createBatch and operation.draft.recurrence.frequency is CUSTOM: array; items: string; pattern ^\d{4}-\d{2}-\d{2}$; min items 1; max items 31
operation.draft.recurrence.start Yes When operation.kind is createBatch and operation.draft.recurrence.frequency is DAILY: string; pattern ^\d{4}-\d{2}-\d{2}$
operation.draft.recurrence.until Yes When operation.kind is createBatch and operation.draft.recurrence.frequency is DAILY: string; pattern ^\d{4}-\d{2}-\d{2}$
operation.draft.recurrence.start Yes When operation.kind is createBatch and operation.draft.recurrence.frequency is WEEKLY: string; pattern ^\d{4}-\d{2}-\d{2}$
operation.draft.recurrence.until Yes When operation.kind is createBatch and operation.draft.recurrence.frequency is WEEKLY: string; pattern ^\d{4}-\d{2}-\d{2}$
operation.draft.recurrence.byDay Yes When operation.kind is createBatch and operation.draft.recurrence.frequency is WEEKLY: array; items: Sun, Mon, Tue, Wed, Thu, Fri, Sat; min items 1; max items 7
operation.confirmation Yes When operation.kind is createBatch: CREATE_SCHEDULES
operation.scheduleIds Yes When operation.kind is editMany: 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.settings Yes When operation.kind is editMany: object
operation.settings.title No When operation.kind is editMany: string; min length 1; max length 80
operation.settings.startAtTime No When operation.kind is editMany: string; pattern ^(?:[01]\d|2[0-3]):[0-5]\d:00$
operation.settings.duration No When operation.kind is editMany: integer; minimum 1; maximum 300
operation.settings.limitPurchaseQuantity No When operation.kind is editMany: integer; minimum 1; maximum 300 or null
operation.settings.translation No When operation.kind is editMany: object
operation.settings.translation.title Yes When operation.kind is editMany: object
operation.settings.translation.title.ko No When operation.kind is editMany: string
operation.settings.translation.title.en No When operation.kind is editMany: string
operation.settings.translation.title.ja No When operation.kind is editMany: string
operation.settings.translation.title.zh No When operation.kind is editMany: string
operation.settings.translation.title.zh-Hant No When operation.kind is editMany: string
operation.settings.translation.title.fr No When operation.kind is editMany: string
operation.settings.translation.title.es No When operation.kind is editMany: string
operation.settings.translation.title.vi No When operation.kind is editMany: string
operation.settings.translation.title.ru No When operation.kind is editMany: string
operation.settings.translation.title.it No When operation.kind is editMany: string
operation.confirmation Yes When operation.kind is editMany: EDIT_SCHEDULES
operation.scheduleIds Yes When operation.kind is publication: 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.isPublished Yes When operation.kind is publication: boolean
operation.confirmation Yes When operation.kind is publication: CHANGE_SCHEDULE_PUBLICATION
operation.scheduleIds Yes When operation.kind is availability: 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.availabilityStatus Yes When operation.kind is availability: NORMAL, FORBIDDEN, NOT_AVAILABLE
operation.confirmation Yes When operation.kind is availability: CHANGE_SCHEDULE_AVAILABILITY
operation.scheduleIds Yes When operation.kind is deleteMany: 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 deleteMany: DELETE_SCHEDULES
view No object
view.kind Yes list
view.startDate Yes string; pattern ^\d{4}-\d{2}-\d{2}$
view.endDate Yes string; pattern ^\d{4}-\d{2}-\d{2}$
view.publication No all, published, unpublished; default all