Клонирование схемы

Клонирование создаёт полную копию схемы площадки: всю рассадку, все секции, ряды и места, метаданные и координаты мест, а также ценовые зоны (копируются как шаблоны, без сохранения тех же ID). Используйте его, чтобы создавать вариации существующей схемы, быстро настраивать похожие площадки или дублировать схему для тестирования.

Клонирование асинхронное. Запуск операции сразу возвращает UUID, само копирование выполняется в фоне — результат нужно опрашивать отдельным эндпоинтом.

Аутентификация

Оба эндпоинта относятся к приватному Booking API и требуют заголовок X-API-Key с токеном организации:

X-API-Key: {organizationToken}

Секретный ключ API доступен в админ-панели Editor (Organization Details, поле «Секретный ключ API»), а также возвращается в ответе логина Editor как user.organizationToken для администраторов организации. Считайте его непрозрачной строкой и отправляйте значение как есть.

Шаг 1 - запуск клонирования

POST /api/private/v2.0/schemas/clone/{id}
Параметр Где Обязателен Описание
id path да Числовой ID схемы, которую клонируем.

Тело ответа — UUID операции клонирования:

curl -X POST \
  "https://booking.seatmap.pro/api/private/v2.0/schemas/clone/1001" \
  -H "X-API-Key: ${ORG_TOKEN}"
# 200
# "123e4567-e89b-12d3-a456-426614174000"
Статус Значение
200 Клонирование запущено; в теле — UUID операции.
403 У вашей организации нет доступа к этой схеме.
404 Схема не найдена.

Шаг 2 - опрос результата

GET /api/private/v2.0/schemas/clone/result/{uuid}
Параметр Где Обязателен Описание
uuid path да UUID операции, полученный при запуске клонирования.
curl "https://booking.seatmap.pro/api/private/v2.0/schemas/clone/result/123e4567-e89b-12d3-a456-426614174000" \
  -H "X-API-Key: ${ORG_TOKEN}"

Пока клонирование выполняется:

{
  "uuid": "123e4567-e89b-12d3-a456-426614174000",
  "state": "IN_PROCESS",
  "schemaId": 1001,
  "newSchemaId": null
}

Когда операция завершилась:

{
  "uuid": "123e4567-e89b-12d3-a456-426614174000",
  "state": "DONE",
  "schemaId": 1001,
  "newSchemaId": 1002
}

newSchemaId — ID клонированной схемы; используйте его во всех последующих вызовах API для работы с копией.

Состояния операции

state Значение
CREATED Операция зарегистрирована, копирование ещё не началось.
IN_PROCESS Копирование выполняется — продолжайте опрос.
DONE Терминальное. Клон готов; читайте newSchemaId.
ERROR Терминальное. Клонирование не удалось; повторите запуск.

Рекомендуемый интервал опроса: 2-5 секунд для типичных схем.

Пример опроса

async function cloneSchema(schemaId, orgToken, baseUrl = 'https://booking.seatmap.pro') {
  const headers = { 'X-API-Key': orgToken };

  const startRes = await fetch(`${baseUrl}/api/private/v2.0/schemas/clone/${schemaId}`, {
    method: 'POST',
    headers,
  });
  if (!startRes.ok) throw new Error(`Clone initiation failed: ${startRes.status}`);
  const operationUuid = await startRes.json();

  const deadline = Date.now() + 60_000;
  while (Date.now() < deadline) {
    const res = await fetch(`${baseUrl}/api/private/v2.0/schemas/clone/result/${operationUuid}`, {
      headers,
    });
    if (!res.ok) throw new Error(`Clone result poll failed: ${res.status}`);
    const result = await res.json();
    if (result.state === 'DONE') return result.newSchemaId;
    if (result.state === 'ERROR') throw new Error(`Clone ${operationUuid} failed`);
    await new Promise((resolve) => setTimeout(resolve, 3_000));
  }
  throw new Error(`Clone ${operationUuid} did not complete in time`);
}

Примечания

  • Клон — полностью независимая схема: изменения копии никак не влияют на оригинал.
  • Ценовые зоны копируются как шаблоны; назначения цен конкретного события не переносятся.
  • Показанный выше флоу аутентификации, запуска и опроса покрыт нашим сквозным (end-to-end) тестом.

См. также

  • Справочник API — интерактивный обозреватель API и полный справочник.

Введите название функции, настройки, эндпоинта или метода SDK.