publ betaReference (MCP guide)
Open publ console

ticket_schedules_get

# ticket_schedules_get

Reads the schedules of one hall (and event), or checks a schedule change before it is made: create one schedule or a recurring batch, edit one or several, change publication, availability or linked price policies, or delete. Read only.

## Inputs

| Field | Required here | Contract |
| --- | --- | --- |
| `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` |

## Read a schedule list

Give the `hallId`, optionally the `eventId`, and `view:{kind:"list", startDate, endDate, publication}`. Do not combine `view` with `operation`.

- `startDate` and `endDate` are calendar dates (`YYYY-MM-DD`), inclusive, at most 93 days apart; a single day is allowed.
- `publication` is `all` (default), `published` or `unpublished`.

```json
{"hallId": "hall-example", "eventId": "event-example", "view": {"kind": "list", "startDate": "2026-11-01", "endDate": "2026-11-30", "publication": "unpublished"}}
```

`TICKET_SCHEDULE_DISCOVERY` returns the hall, the event, the schedules sorted by start time (IDs, titles, UTC times, duration, status, publication, availability, purchase limit and ticket counts) and `coverage`. At most 1000 schedules are read; `coverage.completeInventory` is always false, so an empty list does not prove that no schedule exists. Buyer data and ticket deeds are left out. The console link keeps only the hall and event; choose the dates, the publication filter and the calendar or list view again in the console.

## Check a change

Give the `eventId`, the `hallId` and one `operation`. Each check reads the current schedules and dependencies and returns the request that would be sent (`null` when nothing changes); nothing is saved. [ticket_schedule_apply](ticket_schedule_apply.md) runs the same check in its preview.

| `operation.kind` | Result | Purpose |
| --- | --- | --- |
| `edit` | `TICKET_SCHEDULE` | Read one schedule (empty `settings`) or check a change to it. |
| `create` | `TICKET_SCHEDULE` | One new schedule. |
| `createBatch` | `TICKET_SCHEDULE_BATCH` | New schedules on several dates. |
| `editMany` | `TICKET_SCHEDULE_EDIT_MANY` | Title, start time, duration or purchase limit of selected schedules. |
| `publication` | `TICKET_SCHEDULE_PUBLICATION` | Publish or hide selected schedules. |
| `availability` | `TICKET_SCHEDULE_AVAILABILITY` | Sale availability of selected schedules. |
| `policies` | `TICKET_SCHEDULE_POLICIES` | Replace or refresh the price policies applied to selected schedules. |
| `deleteMany` | `TICKET_SCHEDULE_DELETION` | Delete selected unoccupied schedules. |

Schedule IDs come from the list; template, seat and policy IDs from [ticket_templates_get](ticket_templates_get.md), [ticket_seats_get](ticket_seats_get.md), [ticket_pricing_get](ticket_pricing_get.md) and [ticket_discount_settings_get](ticket_discount_settings_get.md). Selections hold 1–100 distinct schedules of the same event and hall, in the order given.

### One schedule: edit

`operation:{kind:"edit", scheduleId, settings}` with any of:

- `title`: trimmed, not empty, at most 80 characters.
- `time:{startTime, duration}`: both together; `startTime` is a UTC instant on a whole minute ending in `Z`, `duration` 1–300 minutes. Convert local time to UTC first.
- `limitPurchaseQuantity`: 1–300, or `null` for unlimited.
- `isPublished` and `availabilityStatus` (`NORMAL`, `FORBIDDEN` or `NOT_AVAILABLE`). These affect what customers can see and buy.

Omitted fields stay as they are. Empty `settings` only reads the schedule.

```json
{"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}}}
```

### One schedule: create

`operation:{kind:"create", confirmation:"CREATE_SCHEDULE", draft}`. The draft has `title`, `startTime`, `duration`, `limitPurchaseQuantity`, `seatTemplateId` and 1–100 distinct `eventPolicyIds`, and optionally `parkedSeats`.

- The event must be listed, the hall active and the seat template populated (at most 500 seats). Every seat tier needs a valid price in every selected policy.
- `parkedSeats` holds 1–100 distinct seats of the template (`seatId`, not ticket IDs), each with `parking:{type, memo}`: type `LOCATION`, `EXTERNAL`, `DEACTIVATED` or `ETC`, memo up to 200 characters (may be empty; an emoji counts as two). Omit the field for no initial parking.
- Publication and availability are not part of creation; the service's values are reported.

```json
{
  "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"}}]
    }
  }
}
```

### Several dates: createBatch

`operation:{kind:"createBatch", confirmation:"CREATE_SCHEDULES", draft}`. The draft has `title` (up to 80), `startAtTime` (UTC `HH:mm:00`), `duration` (1–300 minutes, for every date), `limitPurchaseQuantity` (`null` or 1–300), `seatTemplateId`, `eventPolicyIds`, optional `parkedSeats` (applied to every date) and one `recurrence`:

| `frequency` | Fields | Limit |
| --- | --- | --- |
| `CUSTOM` | `dateRanges` | 1–31 distinct UTC dates, in any order. |
| `DAILY` | `start`, `until` | Both included, at most 91 dates. |
| `WEEKLY` | `start`, `until`, `byDay` | At most 120 days; 1–7 of Sun, Mon, Tue, Wed, Thu, Fri, Sat; at least one matching date. |

Every date uses the same UTC start time and duration. Monthly or yearly rules, intervals and local time zones are not offered: convert local dates and times to UTC first. The result lists the dates in order; schedule IDs exist only after creation.

```json
{
  "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-29", "byDay": ["Sun"]}
    }
  }
}
```

### Selected schedules: editMany

`operation:{kind:"editMany", scheduleIds, settings, confirmation:"EDIT_SCHEDULES"}` with at least one of `title`, `startAtTime` (UTC `HH:mm:00`; each schedule keeps its own date), `duration` (1–300) and `limitPurchaseQuantity` (1–300 or `null` for unlimited). Omitted settings stay as they are for each schedule; end times are recalculated, also across midnight. Dates, publication, availability, templates, policies and deletion are changed with the other operations. The result shows each schedule's current and requested values and whether it will be sent; schedules that already match are kept in the result but not sent.

```json
{"eventId": "event-example", "hallId": "hall-example", "operation": {"kind": "editMany", "scheduleIds": ["schedule-one", "schedule-two"], "settings": {"duration": 90, "limitPurchaseQuantity": null}, "confirmation": "EDIT_SCHEDULES"}}
```

### Selected schedules: publication and availability

- `operation:{kind:"publication", scheduleIds, isPublished, confirmation:"CHANGE_SCHEDULE_PUBLICATION"}` publishes (`true`) or hides (`false`) the selected schedules, like the console list dropdown.
- `operation:{kind:"availability", scheduleIds, availabilityStatus, confirmation:"CHANGE_SCHEDULE_AVAILABILITY"}` sets `NORMAL`, `FORBIDDEN` or `NOT_AVAILABLE`. `NOT_AVAILABLE` is a chosen status, not a sold-out count.

Schedules that already match stay in the result but are not sent.

```json
{"eventId": "event-example", "hallId": "hall-example", "operation": {"kind": "publication", "scheduleIds": ["schedule-one"], "isPublished": false, "confirmation": "CHANGE_SCHEDULE_PUBLICATION"}}
```

### Selected schedules: price policies

`operation:{kind:"policies", scheduleIds, eventPolicyIds, patchOption, confirmation:"PATCH_SCHEDULE_POLICIES"}`:

- `OVERRIDE` sets the complete ordered policy list of every selected schedule: it can add, remove and reorder policies, and `eventPolicyIds:[]` clears the list. The event's policies themselves are not deleted.
- `CHANGE` refreshes selected policies already applied to at least one selected schedule, taking their current names and prices. Each schedule keeps its order and its other policies, and a policy is never added where it was absent.

Every tier of a schedule needs a price in each applied policy. The console can select schedules across events; here the selection stays within one event and hall. While any policy change of the channel is still being processed, the check returns `TICKET_SCHEDULE_POLICIES_BUSY`; wait and check again. This is separate from per-seat price changes in [ticket_operations_get](ticket_operations_get.md).

```json
{"eventId": "event-example", "hallId": "hall-example", "operation": {"kind": "policies", "scheduleIds": ["schedule-one", "schedule-two"], "eventPolicyIds": ["policy-two", "policy-one"], "patchOption": "OVERRIDE", "confirmation": "PATCH_SCHEDULE_POLICIES"}}
```

### Selected schedules: delete

`operation:{kind:"deleteMany", scheduleIds, confirmation:"DELETE_SCHEDULES"}` checks deleting the selected schedules. Every ticket of each schedule must be unoccupied: no purchased, reserved, assigned, discounted or printed ticket. A deleted schedule cannot be restored. One schedule can also be deleted from its control room with [ticket_operation_apply](ticket_operation_apply.md).

```json
{"eventId": "event-example", "hallId": "hall-example", "operation": {"kind": "deleteMany", "scheduleIds": ["schedule-one"], "confirmation": "DELETE_SCHEDULES"}}
```

## Failures

`TICKET_SCHEDULE_UNVERIFIED` and `TICKET_SCHEDULE_DISCOVERY_UNVERIFIED` mean a schedule, its parents, template, seats, counts or times could not be confirmed; `TICKET_SCHEDULE_POLICIES_UNVERIFIED` that a policy or price is not active or missing for a tier; `COMMERCE_CHANGED` that the data changed during the read. Missing dependencies are never guessed; this tool does not create events, halls, templates or policies. Translations, buyer assignment and payments are not part of schedules.

## Console screens

A list or a selection opens the schedule list for the hall and event; choose dates, rows and the dialog again there. A creation check opens the console creation screen without filling in the draft; a batch check opens the plain schedule list.