{
  "item": [
    {
      "name": "events",
      "description": "Поиск мероприятий и доступность мест",
      "item": [
        {
          "id": "eebffa83-da1a-451e-bb1d-baff43f47cfd",
          "name": "Поиск и список доступных мероприятий",
          "request": {
            "name": "Поиск и список доступных мероприятий",
            "description": {
              "content": "Возвращает мероприятия, на которые у партнёра есть грант и которые открыты\nдля продажи. Мероприятие без гранта в выдачу не попадает.\n\n**Поллинг изменений обязателен.** Партнёр опрашивает эту ручку с\n`updated_since` **не реже раза в 5 минут**: это гарантированный канал,\nкоторым доезжают отмена и перенос мероприятия (`status`, `starts_at`) и\nотзыв доступа (`access: \"revoked\"`). Вебхуки появятся позже как\nускоритель и обязательный поллинг не отменят. Отменённое, перенесённое\nили отозванное мероприятие ОСТАЁТСЯ в выдаче с `updated_since`, а не\nмолча исчезает: исчезновение из списка не событие, и партнёр его не\nзаметил бы. Ответ несёт `meta.cursor` для следующего запроса.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "events"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "Курсор изменений: значение `meta.cursor` из ПРЕДЫДУЩЕГО ответа этой\nручки. Собственное время партнёра сюда не подставляется: часы двух\nсистем расходятся, курсор серверный и непрозрачный. Первый запрос\nделается без параметра. Изменением считаются статус, даты и отзыв\nдоступа; цены и доступность не считаются. Курсор URL-безопасен\n(латиница, цифры, `_`, `-`) и подставляется в query как есть,\nбез кодирования.\n",
                    "type": "text/plain"
                  },
                  "key": "updated_since",
                  "value": "yB4DZ0ucT4jSB0lIIuAEzQhQz9KhsAbo0OXA6X7UMsrQslCEM"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "Начало периода по дате начала мероприятия, `YYYY-MM-DD`.",
                    "type": "text/plain"
                  },
                  "key": "date_from",
                  "value": "<date>"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "Конец периода включительно, `YYYY-MM-DD`.",
                    "type": "text/plain"
                  },
                  "key": "date_to",
                  "value": "<date>"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "Фильтр по объекту (площадке).",
                    "type": "text/plain"
                  },
                  "key": "venue_id",
                  "value": "<string>"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "Тип мероприятия, словарь закрыт. (This can only be one of concert,sport,theatre,exhibition,conference,festival,kids,other)",
                    "type": "text/plain"
                  },
                  "key": "event_type",
                  "value": "theatre"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "Размер страницы.",
                    "type": "text/plain"
                  },
                  "key": "limit",
                  "value": "50"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "offset",
                  "value": "0"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "id": "f150eb67-2b41-40b2-b105-5a4a24ae2538",
              "name": "Список мероприятий",
              "originalRequest": {
                "url": {
                  "path": [
                    "events"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "Курсор изменений: значение `meta.cursor` из ПРЕДЫДУЩЕГО ответа этой\nручки. Собственное время партнёра сюда не подставляется: часы двух\nсистем расходятся, курсор серверный и непрозрачный. Первый запрос\nделается без параметра. Изменением считаются статус, даты и отзыв\nдоступа; цены и доступность не считаются. Курсор URL-безопасен\n(латиница, цифры, `_`, `-`) и подставляется в query как есть,\nбез кодирования.\n",
                        "type": "text/plain"
                      },
                      "key": "updated_since",
                      "value": "yB4DZ0ucT4jSB0lIIuAEzQhQz9KhsAbo0OXA6X7UMsrQslCEM"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Начало периода по дате начала мероприятия, `YYYY-MM-DD`.",
                        "type": "text/plain"
                      },
                      "key": "date_from",
                      "value": "<date>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Конец периода включительно, `YYYY-MM-DD`.",
                        "type": "text/plain"
                      },
                      "key": "date_to",
                      "value": "<date>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Фильтр по объекту (площадке).",
                        "type": "text/plain"
                      },
                      "key": "venue_id",
                      "value": "<string>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Тип мероприятия, словарь закрыт. (This can only be one of concert,sport,theatre,exhibition,conference,festival,kids,other)",
                        "type": "text/plain"
                      },
                      "key": "event_type",
                      "value": "theatre"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Размер страницы.",
                        "type": "text/plain"
                      },
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "",
                        "type": "text/plain"
                      },
                      "key": "offset",
                      "value": "0"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"event_id\": \"<integer>\",\n      \"title\": {\n        \"ru\": \"<string>\",\n        \"kk\": \"<string>\",\n        \"en\": \"<string>\"\n      },\n      \"venue_id\": \"<string>\",\n      \"venue_name\": \"<string>\",\n      \"starts_at\": \"<dateTime>\",\n      \"status\": \"sales_closed\",\n      \"available_seats\": \"<integer>\",\n      \"price_from_tenge\": \"<integer,null>\",\n      \"description\": {\n        \"ru\": \"<string>\",\n        \"kk\": \"<string,null>\",\n        \"en\": \"<string,null>\"\n      },\n      \"event_type\": \"sport\",\n      \"age_rating\": \"18+\",\n      \"ends_at\": \"<string,null-date-time>\",\n      \"venue_address\": \"<string,null>\",\n      \"hall_name\": {\n        \"ru\": \"<string>\",\n        \"kk\": \"<string,null>\",\n        \"en\": \"<string,null>\"\n      },\n      \"max_seats_per_booking\": 8,\n      \"poster_url\": \"<string,null-uri>\",\n      \"sales_start_at\": \"<string,null-date-time>\",\n      \"sales_end_at\": \"<string,null-date-time>\",\n      \"access\": \"active\",\n      \"scheme\": {\n        \"overview_svg_url\": \"<uri>\",\n        \"sectors\": [\n          {\n            \"sector_id\": \"<string>\",\n            \"svg_url\": \"<uri>\"\n          },\n          {\n            \"sector_id\": \"<string>\",\n            \"svg_url\": \"<uri>\"\n          }\n        ]\n      }\n    },\n    {\n      \"event_id\": \"<integer>\",\n      \"title\": {\n        \"ru\": \"<string>\",\n        \"kk\": \"<string>\",\n        \"en\": \"<string>\"\n      },\n      \"venue_id\": \"<string>\",\n      \"venue_name\": \"<string>\",\n      \"starts_at\": \"<dateTime>\",\n      \"status\": \"cancelled\",\n      \"available_seats\": \"<integer>\",\n      \"price_from_tenge\": \"<integer,null>\",\n      \"description\": {\n        \"ru\": \"<string>\",\n        \"kk\": \"<string,null>\",\n        \"en\": \"<string,null>\"\n      },\n      \"event_type\": \"theatre\",\n      \"age_rating\": \"18+\",\n      \"ends_at\": \"<string,null-date-time>\",\n      \"venue_address\": \"<string,null>\",\n      \"hall_name\": {\n        \"ru\": \"<string>\",\n        \"kk\": \"<string,null>\",\n        \"en\": \"<string,null>\"\n      },\n      \"max_seats_per_booking\": 8,\n      \"poster_url\": \"<string,null-uri>\",\n      \"sales_start_at\": \"<string,null-date-time>\",\n      \"sales_end_at\": \"<string,null-date-time>\",\n      \"access\": \"active\",\n      \"scheme\": {\n        \"overview_svg_url\": \"<uri>\",\n        \"sectors\": [\n          {\n            \"sector_id\": \"<string>\",\n            \"svg_url\": \"<uri>\"\n          },\n          {\n            \"sector_id\": \"<string>\",\n            \"svg_url\": \"<uri>\"\n          }\n        ]\n      }\n    }\n  ],\n  \"meta\": {\n    \"total\": \"<integer>\",\n    \"limit\": \"<integer>\",\n    \"offset\": \"<integer>\",\n    \"cursor\": \"<string>\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "ef7b5d4b-bea9-4a9c-9da4-90a131b57eda",
              "name": "Ключ неизвестен, подпись не сошлась или `X-Timestamp` вне окна 5 минут.\nКоды: `INVALID_API_KEY`, `INVALID_SIGNATURE`; у второго `details.reason`\nразличает `timestamp_out_of_window` и `signature_mismatch`, чтобы чинить\nчасы, а не формулу.",
              "originalRequest": {
                "url": {
                  "path": [
                    "events"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "Курсор изменений: значение `meta.cursor` из ПРЕДЫДУЩЕГО ответа этой\nручки. Собственное время партнёра сюда не подставляется: часы двух\nсистем расходятся, курсор серверный и непрозрачный. Первый запрос\nделается без параметра. Изменением считаются статус, даты и отзыв\nдоступа; цены и доступность не считаются. Курсор URL-безопасен\n(латиница, цифры, `_`, `-`) и подставляется в query как есть,\nбез кодирования.\n",
                        "type": "text/plain"
                      },
                      "key": "updated_since",
                      "value": "yB4DZ0ucT4jSB0lIIuAEzQhQz9KhsAbo0OXA6X7UMsrQslCEM"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Начало периода по дате начала мероприятия, `YYYY-MM-DD`.",
                        "type": "text/plain"
                      },
                      "key": "date_from",
                      "value": "<date>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Конец периода включительно, `YYYY-MM-DD`.",
                        "type": "text/plain"
                      },
                      "key": "date_to",
                      "value": "<date>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Фильтр по объекту (площадке).",
                        "type": "text/plain"
                      },
                      "key": "venue_id",
                      "value": "<string>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Тип мероприятия, словарь закрыт. (This can only be one of concert,sport,theatre,exhibition,conference,festival,kids,other)",
                        "type": "text/plain"
                      },
                      "key": "event_type",
                      "value": "theatre"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Размер страницы.",
                        "type": "text/plain"
                      },
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "",
                        "type": "text/plain"
                      },
                      "key": "offset",
                      "value": "0"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "e38ee0d9-edea-4b3a-bd4f-24305e57a337",
              "name": "Коды: `INVALID_PARAMETERS` (разбор по полям в `details`, включая\nнеизвестный `sector` в `details.sector` и `details.reason:\nprice_not_set`, если у места нет цены; для брони по сектору\n`details.reason: sector_unknown` (сектора нет у мероприятия) и\n`sector_category_unknown` (у категории нет мест в секторе), неизвестный\n`category_code` отдаёт `details.field: sector.category_code`) и\n`SEATS_UNKNOWN` (место не существует или чужого мероприятия, список в\n`details.seats`).",
              "originalRequest": {
                "url": {
                  "path": [
                    "events"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "Курсор изменений: значение `meta.cursor` из ПРЕДЫДУЩЕГО ответа этой\nручки. Собственное время партнёра сюда не подставляется: часы двух\nсистем расходятся, курсор серверный и непрозрачный. Первый запрос\nделается без параметра. Изменением считаются статус, даты и отзыв\nдоступа; цены и доступность не считаются. Курсор URL-безопасен\n(латиница, цифры, `_`, `-`) и подставляется в query как есть,\nбез кодирования.\n",
                        "type": "text/plain"
                      },
                      "key": "updated_since",
                      "value": "yB4DZ0ucT4jSB0lIIuAEzQhQz9KhsAbo0OXA6X7UMsrQslCEM"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Начало периода по дате начала мероприятия, `YYYY-MM-DD`.",
                        "type": "text/plain"
                      },
                      "key": "date_from",
                      "value": "<date>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Конец периода включительно, `YYYY-MM-DD`.",
                        "type": "text/plain"
                      },
                      "key": "date_to",
                      "value": "<date>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Фильтр по объекту (площадке).",
                        "type": "text/plain"
                      },
                      "key": "venue_id",
                      "value": "<string>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Тип мероприятия, словарь закрыт. (This can only be one of concert,sport,theatre,exhibition,conference,festival,kids,other)",
                        "type": "text/plain"
                      },
                      "key": "event_type",
                      "value": "theatre"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Размер страницы.",
                        "type": "text/plain"
                      },
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "",
                        "type": "text/plain"
                      },
                      "key": "offset",
                      "value": "0"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d5296840-aa34-48e4-88aa-ea4458b55ee5",
              "name": "Коды: `RATE_LIMIT_EXCEEDED` (частота или конкурентность) и\n`PENDING_LIMIT_EXCEEDED` (слишком много незакрытых `pending`-заказов,\nповторить после `Retry-After`).\n\nПомимо договорной частоты `rate_limit_rpm` действует предел\nОДНОВРЕМЕННЫХ запросов партнёра (`max_concurrent_requests`, по\nумолчанию 10). Его превышение отвечает тем же `429\nRATE_LIMIT_EXCEEDED` с `details.limit` и заголовком `Retry-After: 1`.\nОба предела общие на партнёра, а не на ключ и не на экземпляр клиента.",
              "originalRequest": {
                "url": {
                  "path": [
                    "events"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "Курсор изменений: значение `meta.cursor` из ПРЕДЫДУЩЕГО ответа этой\nручки. Собственное время партнёра сюда не подставляется: часы двух\nсистем расходятся, курсор серверный и непрозрачный. Первый запрос\nделается без параметра. Изменением считаются статус, даты и отзыв\nдоступа; цены и доступность не считаются. Курсор URL-безопасен\n(латиница, цифры, `_`, `-`) и подставляется в query как есть,\nбез кодирования.\n",
                        "type": "text/plain"
                      },
                      "key": "updated_since",
                      "value": "yB4DZ0ucT4jSB0lIIuAEzQhQz9KhsAbo0OXA6X7UMsrQslCEM"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Начало периода по дате начала мероприятия, `YYYY-MM-DD`.",
                        "type": "text/plain"
                      },
                      "key": "date_from",
                      "value": "<date>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Конец периода включительно, `YYYY-MM-DD`.",
                        "type": "text/plain"
                      },
                      "key": "date_to",
                      "value": "<date>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Фильтр по объекту (площадке).",
                        "type": "text/plain"
                      },
                      "key": "venue_id",
                      "value": "<string>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Тип мероприятия, словарь закрыт. (This can only be one of concert,sport,theatre,exhibition,conference,festival,kids,other)",
                        "type": "text/plain"
                      },
                      "key": "event_type",
                      "value": "theatre"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Размер страницы.",
                        "type": "text/plain"
                      },
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "",
                        "type": "text/plain"
                      },
                      "key": "offset",
                      "value": "0"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Retry-After",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "794cca25-2e31-4436-8c68-5195a5c80278",
          "name": "Карточка мероприятия",
          "request": {
            "name": "Карточка мероприятия",
            "description": {
              "content": "Текущее состояние одного мероприятия с грантом: обновление страницы\nпартнёра между опросами фида. Отменённое мероприятие с грантом\nчитается.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "events",
                ":event_id"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "type": "any",
                  "value": "<integer>",
                  "key": "event_id",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "id": "4f983a4d-7885-4b52-87b9-9bd2063c0a61",
              "name": "Карточка мероприятия",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"event_id\": \"<integer>\",\n    \"title\": {\n      \"ru\": \"<string>\",\n      \"kk\": \"<string>\",\n      \"en\": \"<string>\"\n    },\n    \"venue_id\": \"<string>\",\n    \"venue_name\": \"<string>\",\n    \"starts_at\": \"<dateTime>\",\n    \"status\": \"sales_scheduled\",\n    \"available_seats\": \"<integer>\",\n    \"price_from_tenge\": \"<integer,null>\",\n    \"description\": {\n      \"ru\": \"<string>\",\n      \"kk\": \"<string,null>\",\n      \"en\": \"<string,null>\"\n    },\n    \"event_type\": \"theatre\",\n    \"age_rating\": \"6+\",\n    \"ends_at\": \"<string,null-date-time>\",\n    \"venue_address\": \"<string,null>\",\n    \"hall_name\": {\n      \"ru\": \"<string>\",\n      \"kk\": \"<string,null>\",\n      \"en\": \"<string,null>\"\n    },\n    \"max_seats_per_booking\": 8,\n    \"poster_url\": \"<string,null-uri>\",\n    \"sales_start_at\": \"<string,null-date-time>\",\n    \"sales_end_at\": \"<string,null-date-time>\",\n    \"access\": \"active\",\n    \"scheme\": {\n      \"overview_svg_url\": \"<uri>\",\n      \"sectors\": [\n        {\n          \"sector_id\": \"<string>\",\n          \"svg_url\": \"<uri>\"\n        },\n        {\n          \"sector_id\": \"<string>\",\n          \"svg_url\": \"<uri>\"\n        }\n      ]\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "de2812d6-ee84-4934-ae20-9e4087614ba6",
              "name": "Ключ неизвестен, подпись не сошлась или `X-Timestamp` вне окна 5 минут.\nКоды: `INVALID_API_KEY`, `INVALID_SIGNATURE`; у второго `details.reason`\nразличает `timestamp_out_of_window` и `signature_mismatch`, чтобы чинить\nчасы, а не формулу.",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "91950b90-e96f-49dd-8ae0-e6d7ab9d7d8e",
              "name": "`ACCESS_DENIED`: у партнёра нет гранта на это мероприятие.\n`PARTNER_DISABLED`: доступ партнёра приостановлен ДСС целиком; код\nотличён от проблемы ключа намеренно. Уже созданные заказы при этом\nживут до конца окна: `confirm`/`cancel`/чтения работают.",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "2c21fd60-ebfb-4036-a2c9-c6511f2ae0f1",
              "name": "Код: `EVENT_NOT_FOUND`.",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "035089a5-b184-4f9b-9466-798386066853",
              "name": "Коды: `RATE_LIMIT_EXCEEDED` (частота или конкурентность) и\n`PENDING_LIMIT_EXCEEDED` (слишком много незакрытых `pending`-заказов,\nповторить после `Retry-After`).\n\nПомимо договорной частоты `rate_limit_rpm` действует предел\nОДНОВРЕМЕННЫХ запросов партнёра (`max_concurrent_requests`, по\nумолчанию 10). Его превышение отвечает тем же `429\nRATE_LIMIT_EXCEEDED` с `details.limit` и заголовком `Retry-After: 1`.\nОба предела общие на партнёра, а не на ключ и не на экземпляр клиента.",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Retry-After",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "3a719876-0f02-470f-a250-41ddc52f3d3f",
          "name": "Доступность мест на мероприятие",
          "request": {
            "name": "Доступность мест на мероприятие",
            "description": {
              "content": "**Отступление от ТЗ (1 из 6).** ТЗ просит «схему зала с актуальными\nстатусами мест» одним ответом. Платформа отдаёт места ПОСЕКТОРНО: зал\nпервого объекта это 960 мест в шести секторах, и посекторная выдача с\nпосекторным кэшем принята архитектурно.\n\nПоэтому ручка работает в двух режимах:\n\n* без параметра `sector`: сводка по секторам (`sectors`), где для каждого\n  сектора есть минимальная цена и число свободных мест;\n* с параметром `sector`: места этого сектора (`seats`). Для сектора с\n  `sale_mode: \"sector\"` список пуст: места такого сектора выбирает\n  платформа при брони полем `sector`.\n\nПартнёр строит схему зала одним запросом сводки и по одному запросу на\nсектор, который открывает пользователь.\n\n**Геометрия для отрисовки:** ДСС по запросу отдаёт публичный SVG-план\nзала, в котором `id` элементов совпадают с `space_id` этого API по\nпостроению (геометрия и данные на платформе разделены именно так).\nЗапросить у технического контакта.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "events",
                ":event_id",
                "seats"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "Идентификатор сектора. Без него возвращается сводка по секторам.",
                    "type": "text/plain"
                  },
                  "key": "sector",
                  "value": "<string>"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "Фильтр по коду категории билетов мероприятия (`C1`, `C2`…), как его\nотдаёт поле `category_code` мест.\nНеизвестный код не даёт ошибку: возвращается пустой список мест.\n",
                    "type": "text/plain"
                  },
                  "key": "category",
                  "value": "<string>"
                }
              ],
              "variable": [
                {
                  "type": "any",
                  "value": "<integer>",
                  "key": "event_id",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "id": "60acb9cc-d2dd-4f72-ac61-ebd940894923",
              "name": "Сводка по секторам либо места сектора",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id",
                    "seats"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "Идентификатор сектора. Без него возвращается сводка по секторам.",
                        "type": "text/plain"
                      },
                      "key": "sector",
                      "value": "<string>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Фильтр по коду категории билетов мероприятия (`C1`, `C2`…), как его\nотдаёт поле `category_code` мест.\nНеизвестный код не даёт ошибку: возвращается пустой список мест.\n",
                        "type": "text/plain"
                      },
                      "key": "category",
                      "value": "<string>"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"event_id\": \"<integer>\",\n    \"sector_id\": \"<string,null>\",\n    \"sectors\": [\n      {\n        \"sector_id\": \"<string>\",\n        \"available_count\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"price_from_tenge\": \"<integer,null>\",\n        \"sale_mode\": \"seat\",\n        \"standing\": false,\n        \"svg_url\": \"<string,null-uri>\"\n      },\n      {\n        \"sector_id\": \"<string>\",\n        \"available_count\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"price_from_tenge\": \"<integer,null>\",\n        \"sale_mode\": \"seat\",\n        \"standing\": false,\n        \"svg_url\": \"<string,null-uri>\"\n      }\n    ],\n    \"seats\": [\n      {\n        \"space_id\": \"<string>\",\n        \"status\": \"blocked\",\n        \"is_sellable\": \"<boolean>\",\n        \"row_id\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"code\": \"<string,null>\",\n        \"seat_ord\": \"<integer,null>\",\n        \"category_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"category_color\": \"#EeabD5\",\n        \"price_tenge\": \"<integer,null>\"\n      },\n      {\n        \"space_id\": \"<string>\",\n        \"status\": \"sold\",\n        \"is_sellable\": \"<boolean>\",\n        \"row_id\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"code\": \"<string,null>\",\n        \"seat_ord\": \"<integer,null>\",\n        \"category_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"category_color\": \"#e3eaa7\",\n        \"price_tenge\": \"<integer,null>\"\n      }\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "1badfb21-7404-49df-a1e9-87bb930032c4",
              "name": "Ключ неизвестен, подпись не сошлась или `X-Timestamp` вне окна 5 минут.\nКоды: `INVALID_API_KEY`, `INVALID_SIGNATURE`; у второго `details.reason`\nразличает `timestamp_out_of_window` и `signature_mismatch`, чтобы чинить\nчасы, а не формулу.",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id",
                    "seats"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "Идентификатор сектора. Без него возвращается сводка по секторам.",
                        "type": "text/plain"
                      },
                      "key": "sector",
                      "value": "<string>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Фильтр по коду категории билетов мероприятия (`C1`, `C2`…), как его\nотдаёт поле `category_code` мест.\nНеизвестный код не даёт ошибку: возвращается пустой список мест.\n",
                        "type": "text/plain"
                      },
                      "key": "category",
                      "value": "<string>"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "1f4fb9f7-77f0-411f-ab21-31b128473243",
              "name": "`ACCESS_DENIED`: у партнёра нет гранта на это мероприятие.\n`PARTNER_DISABLED`: доступ партнёра приостановлен ДСС целиком; код\nотличён от проблемы ключа намеренно. Уже созданные заказы при этом\nживут до конца окна: `confirm`/`cancel`/чтения работают.",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id",
                    "seats"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "Идентификатор сектора. Без него возвращается сводка по секторам.",
                        "type": "text/plain"
                      },
                      "key": "sector",
                      "value": "<string>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Фильтр по коду категории билетов мероприятия (`C1`, `C2`…), как его\nотдаёт поле `category_code` мест.\nНеизвестный код не даёт ошибку: возвращается пустой список мест.\n",
                        "type": "text/plain"
                      },
                      "key": "category",
                      "value": "<string>"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "16c415e1-40f8-49c7-bdc7-b3e0ac3c4d34",
              "name": "Код: `EVENT_NOT_FOUND`.",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id",
                    "seats"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "Идентификатор сектора. Без него возвращается сводка по секторам.",
                        "type": "text/plain"
                      },
                      "key": "sector",
                      "value": "<string>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Фильтр по коду категории билетов мероприятия (`C1`, `C2`…), как его\nотдаёт поле `category_code` мест.\nНеизвестный код не даёт ошибку: возвращается пустой список мест.\n",
                        "type": "text/plain"
                      },
                      "key": "category",
                      "value": "<string>"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "683f5e00-e6c2-4acd-994a-40685bef2049",
              "name": "Коды: `INVALID_PARAMETERS` (разбор по полям в `details`, включая\nнеизвестный `sector` в `details.sector` и `details.reason:\nprice_not_set`, если у места нет цены; для брони по сектору\n`details.reason: sector_unknown` (сектора нет у мероприятия) и\n`sector_category_unknown` (у категории нет мест в секторе), неизвестный\n`category_code` отдаёт `details.field: sector.category_code`) и\n`SEATS_UNKNOWN` (место не существует или чужого мероприятия, список в\n`details.seats`).",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id",
                    "seats"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "Идентификатор сектора. Без него возвращается сводка по секторам.",
                        "type": "text/plain"
                      },
                      "key": "sector",
                      "value": "<string>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Фильтр по коду категории билетов мероприятия (`C1`, `C2`…), как его\nотдаёт поле `category_code` мест.\nНеизвестный код не даёт ошибку: возвращается пустой список мест.\n",
                        "type": "text/plain"
                      },
                      "key": "category",
                      "value": "<string>"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "accfe184-3c1b-4de0-96d3-16eb30d72055",
              "name": "Коды: `RATE_LIMIT_EXCEEDED` (частота или конкурентность) и\n`PENDING_LIMIT_EXCEEDED` (слишком много незакрытых `pending`-заказов,\nповторить после `Retry-After`).\n\nПомимо договорной частоты `rate_limit_rpm` действует предел\nОДНОВРЕМЕННЫХ запросов партнёра (`max_concurrent_requests`, по\nумолчанию 10). Его превышение отвечает тем же `429\nRATE_LIMIT_EXCEEDED` с `details.limit` и заголовком `Retry-After: 1`.\nОба предела общие на партнёра, а не на ключ и не на экземпляр клиента.",
              "originalRequest": {
                "url": {
                  "path": [
                    "events",
                    ":event_id",
                    "seats"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "Идентификатор сектора. Без него возвращается сводка по секторам.",
                        "type": "text/plain"
                      },
                      "key": "sector",
                      "value": "<string>"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "Фильтр по коду категории билетов мероприятия (`C1`, `C2`…), как его\nотдаёт поле `category_code` мест.\nНеизвестный код не даёт ошибку: возвращается пустой список мест.\n",
                        "type": "text/plain"
                      },
                      "key": "category",
                      "value": "<string>"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<integer>",
                      "key": "event_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Retry-After",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "bookings",
      "description": "Временное бронирование",
      "item": [
        {
          "id": "ba2e30d3-6940-4cdf-948a-064d0a5a7491",
          "name": "Временное бронирование мест",
          "request": {
            "name": "Временное бронирование мест",
            "description": {
              "content": "Удерживает места на срок брони. Захват атомарный: либо удержаны все\nперечисленные места, либо ни одно.\n\nСрок брони настраивается для каждого партнёра, значение по умолчанию\n3 минуты (ТЗ). Точное значение приезжает в `expires_at` и `ttl_seconds`;\nне зашивать его константой.\n\n**Цена фиксируется в момент брони**: `price_tenge` каждого места в\nответе и `total_tenge` брони наследуются заказом как есть. До брони цены\nмогут меняться без предупреждения, поэтому показывать покупателю итог\nстоит из ответа брони, а не из ранее закэшированных чтений.\n\nЛьготных цен в первой фазе интеграции нет: каждое место бронируется по\nполной цене своей категории.\n\nБронь ничего не резервирует за покупателем и не является продажей. По\nистечении срока места освобождаются автоматически.\n\nИдемпотентна по `partner_booking_id`: повтор с тем же значением возвращает\nту же бронь с кодом `200` и не удерживает второй набор мест.\n\n**Два способа выбрать места, ровно один в теле.** `seats`: вы называете\nместа сами (секторы с `sale_mode: \"seat\"`). `sector`: вы называете сектор,\nкатегорию и количество, платформа выбирает места сама (секторы с\n`sale_mode: \"sector\"`, в том числе стоячие зоны). Оба поля сразу или ни\nодного это `422 INVALID_PARAMETERS`. Бронь по местам в секторе режима\n`sector` и бронь по сектору в секторе режима `seat` отвечают\n`409 SECTOR_MODE_MISMATCH`; когда мест меньше запрошенного, бронь по\nсектору отвечает `409 SECTOR_SOLD_OUT` с `details.available`, и ни одно\nместо не удержано.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "bookings"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"seats\": 3307\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "dd084a67-bddd-4af6-9c96-ba87d6b8cb0b",
              "name": "Повтор с тем же `partner_booking_id`. Возвращается ранее созданная\nбронь, новые места не удерживаются.",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"seats\": 3307\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"booking_id\": \"<uuid>\",\n    \"partner_booking_id\": \"<string>\",\n    \"event_id\": \"<integer>\",\n    \"status\": \"expired\",\n    \"seats\": [\n      {\n        \"space_id\": \"<string>\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_id\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"category_color\": \"#6AcdCe\"\n      },\n      {\n        \"space_id\": \"<string>\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_id\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"category_color\": \"#4bdE6C\"\n      }\n    ],\n    \"expires_at\": \"<dateTime>\",\n    \"ttl_seconds\": \"<integer>\",\n    \"total_tenge\": \"<integer>\",\n    \"order_id\": \"<string,null-uuid>\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "75a7c8fb-4846-4808-91bf-42201a8372f3",
              "name": "Места удержаны",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"seats\": 3307\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"booking_id\": \"<uuid>\",\n    \"partner_booking_id\": \"<string>\",\n    \"event_id\": \"<integer>\",\n    \"status\": \"expired\",\n    \"seats\": [\n      {\n        \"space_id\": \"<string>\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_id\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"category_color\": \"#6AcdCe\"\n      },\n      {\n        \"space_id\": \"<string>\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_id\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"category_color\": \"#4bdE6C\"\n      }\n    ],\n    \"expires_at\": \"<dateTime>\",\n    \"ttl_seconds\": \"<integer>\",\n    \"total_tenge\": \"<integer>\",\n    \"order_id\": \"<string,null-uuid>\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "0c0370b3-1052-404f-90a5-d3846d441821",
              "name": "Ключ неизвестен, подпись не сошлась или `X-Timestamp` вне окна 5 минут.\nКоды: `INVALID_API_KEY`, `INVALID_SIGNATURE`; у второго `details.reason`\nразличает `timestamp_out_of_window` и `signature_mismatch`, чтобы чинить\nчасы, а не формулу.",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"seats\": 3307\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "b3c6cc27-9765-4ea0-9fff-c6f4dc6d1e17",
              "name": "`ACCESS_DENIED`: у партнёра нет гранта на это мероприятие.\n`PARTNER_DISABLED`: доступ партнёра приостановлен ДСС целиком; код\nотличён от проблемы ключа намеренно. Уже созданные заказы при этом\nживут до конца окна: `confirm`/`cancel`/чтения работают.",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"seats\": 3307\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "6c7ad272-bb17-4ef1-b687-377c81c5cced",
              "name": "Код: `EVENT_NOT_FOUND`.",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"seats\": 3307\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d20b57a8-98fa-40f3-9812-f2889557f5cf",
              "name": "Отказ брони, ни одно место не удержано. Коды этого статуса:\n`SEATS_NOT_AVAILABLE` (место занято, `details.seats`), `SALES_PAUSED` и\n`SALES_NOT_OPEN` (состояние продаж мероприятия), `BOOKING_LIMIT_EXCEEDED`\n(мест больше действующего предела, `details: {limit, requested}`),\n`IDEMPOTENCY_CONFLICT` (ваш ключ с другим телом); для брони по сектору\n(0.5.0) ещё `SECTOR_SOLD_OUT` (в секторе меньше мест, чем `quantity`,\n`details: {available}`) и `SECTOR_MODE_MISMATCH` (способ брони не\nсовпал с `sale_mode` сектора).",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"seats\": 3307\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "95e24e96-b39b-4146-a427-e7f82ad07edc",
              "name": "Коды: `INVALID_PARAMETERS` (разбор по полям в `details`, включая\nнеизвестный `sector` в `details.sector` и `details.reason:\nprice_not_set`, если у места нет цены; для брони по сектору\n`details.reason: sector_unknown` (сектора нет у мероприятия) и\n`sector_category_unknown` (у категории нет мест в секторе), неизвестный\n`category_code` отдаёт `details.field: sector.category_code`) и\n`SEATS_UNKNOWN` (место не существует или чужого мероприятия, список в\n`details.seats`).",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"seats\": 3307\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "056fc535-e225-4387-a4bb-40e0fdb5ab01",
              "name": "Коды: `RATE_LIMIT_EXCEEDED` (частота или конкурентность) и\n`PENDING_LIMIT_EXCEEDED` (слишком много незакрытых `pending`-заказов,\nповторить после `Retry-After`).\n\nПомимо договорной частоты `rate_limit_rpm` действует предел\nОДНОВРЕМЕННЫХ запросов партнёра (`max_concurrent_requests`, по\nумолчанию 10). Его превышение отвечает тем же `429\nRATE_LIMIT_EXCEEDED` с `details.limit` и заголовком `Retry-After: 1`.\nОба предела общие на партнёра, а не на ключ и не на экземпляр клиента.",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"seats\": 3307\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Retry-After",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "1631b164-0244-48df-8174-4af79f358138",
          "name": "Освободить бронь до истечения срока",
          "request": {
            "name": "Освободить бронь до истечения срока",
            "description": {
              "content": "Возвращает места брони в продажу немедленно, не дожидаясь истечения\n`ttl_seconds`: покупатель отказался от выбора, и держать за ним места\nещё три минуты незачем.\n\nТела запроса нет: `<body>` в подписи пустая строка, `Content-Type` не\nтребуется. Идемпотентен: повтор возвращает `200` и ту же бронь.\n\nПосле освобождения бронь читается со `status: \"expired\"`, как и по\nистечении срока: отдельного значения статуса для освобождения нет.\nПовтор `POST /bookings` с тем же `partner_booking_id` вернёт её в этом\nсостоянии и мест заново НЕ удержит, поэтому для новой попытки нужен\nновый ключ идемпотентности.\n\nПо брони, превращённой в заказ, освобождение отвечает\n`409 BOOKING_ALREADY_CONFIRMED` с `details.order_id`: места такого\nзаказа освобождает `POST /orders/{order_id}/cancel`.\n\nРаботает и после отзыва гранта, и при выключенном партнёре: операция\nтолько уменьшает то, что вы держите.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "bookings",
                ":booking_id",
                "release"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "type": "any",
                  "value": "<uuid>",
                  "key": "booking_id",
                  "disabled": false,
                  "description": {
                    "content": "(Required) Идентификатор брони из ответа `POST /bookings`.",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "id": "a352fd82-d8d4-47f2-b448-5de29f89cd6b",
              "name": "Места освобождены либо уже были свободны",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings",
                    ":booking_id",
                    "release"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор брони из ответа `POST /bookings`.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "booking_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"booking_id\": \"<uuid>\",\n    \"partner_booking_id\": \"<string>\",\n    \"event_id\": \"<integer>\",\n    \"status\": \"expired\",\n    \"seats\": [\n      {\n        \"space_id\": \"<string>\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_id\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"category_color\": \"#6AcdCe\"\n      },\n      {\n        \"space_id\": \"<string>\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_id\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"category_color\": \"#4bdE6C\"\n      }\n    ],\n    \"expires_at\": \"<dateTime>\",\n    \"ttl_seconds\": \"<integer>\",\n    \"total_tenge\": \"<integer>\",\n    \"order_id\": \"<string,null-uuid>\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "05d7e03b-408b-4f1a-aa8c-54377bdb98bc",
              "name": "Ключ неизвестен, подпись не сошлась или `X-Timestamp` вне окна 5 минут.\nКоды: `INVALID_API_KEY`, `INVALID_SIGNATURE`; у второго `details.reason`\nразличает `timestamp_out_of_window` и `signature_mismatch`, чтобы чинить\nчасы, а не формулу.",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings",
                    ":booking_id",
                    "release"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор брони из ответа `POST /bookings`.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "booking_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "f9b6dfcc-9a6b-4672-9df2-507e2f5a6a28",
              "name": "`ACCESS_DENIED`: у партнёра нет гранта на это мероприятие.\n`PARTNER_DISABLED`: доступ партнёра приостановлен ДСС целиком; код\nотличён от проблемы ключа намеренно. Уже созданные заказы при этом\nживут до конца окна: `confirm`/`cancel`/чтения работают.",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings",
                    ":booking_id",
                    "release"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор брони из ответа `POST /bookings`.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "booking_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d4ef316c-8eb7-4cee-90cd-abbc8928e532",
              "name": "Бронь истекла, не найдена, уже подтверждена другим заказом, продажи по\nмероприятию закрыты или приостановлены между бронью и заказом, либо ваш\n`partner_order_id` уже использован с другой бронью. Коды: `SALES_PAUSED`,\n`SALES_NOT_OPEN`,\n`BOOKING_EXPIRED`, `BOOKING_ALREADY_CONFIRMED` (расширение),\n`BOOKING_NOT_FOUND` (расширение), `IDEMPOTENCY_CONFLICT` (расширение,\n`details: {field, stored, received}`).",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings",
                    ":booking_id",
                    "release"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор брони из ответа `POST /bookings`.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "booking_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "b432309f-1f74-4713-b45f-b24ad68f2926",
              "name": "Коды: `RATE_LIMIT_EXCEEDED` (частота или конкурентность) и\n`PENDING_LIMIT_EXCEEDED` (слишком много незакрытых `pending`-заказов,\nповторить после `Retry-After`).\n\nПомимо договорной частоты `rate_limit_rpm` действует предел\nОДНОВРЕМЕННЫХ запросов партнёра (`max_concurrent_requests`, по\nумолчанию 10). Его превышение отвечает тем же `429\nRATE_LIMIT_EXCEEDED` с `details.limit` и заголовком `Retry-After: 1`.\nОба предела общие на партнёра, а не на ключ и не на экземпляр клиента.",
              "originalRequest": {
                "url": {
                  "path": [
                    "bookings",
                    ":booking_id",
                    "release"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор брони из ответа `POST /bookings`.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "booking_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Retry-After",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "orders",
      "description": "Подтверждение продажи и возврат",
      "item": [
        {
          "id": "7d0e8c93-1b2a-4539-b9f8-27d6047f37e3",
          "name": "Чтение заказа по идентификатору партнёра (восстановление)",
          "request": {
            "name": "Чтение заказа по идентификатору партнёра (восстановление)",
            "description": {
              "content": "Ручка восстановления и разбора: возвращает заказ по `partner_order_id`\nв его текущем статусе, с билетами, если они выпущены.\n\n**Сценарий, ради которого она существует:** ответ на `POST /orders`\nпотерян (таймаут, падение процесса), `order_id` неизвестен, тело для\nидемпотентного повтора не сохранилось. Этот `GET` отдаёт заказ по\nединственному, что у партнёра точно есть: его собственному\nидентификатору. Дальше `confirm` или `cancel` по полученному `order_id`.\n\nТакже пригодна поддержке партнёра для ручного разбора обращений.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "orders"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  },
                  "key": "partner_order_id",
                  "value": "<string>"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "id": "a38ab7c3-34fc-4d2f-862b-e7708197f22b",
              "name": "Заказ найден",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "key": "partner_order_id",
                      "value": "<string>"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"order_id\": \"<uuid>\",\n    \"order_number\": \"<string>\",\n    \"partner_order_id\": \"<string>\",\n    \"event_id\": \"<integer>\",\n    \"status\": \"cancelled\",\n    \"total_tenge\": \"<integer>\",\n    \"created_at\": \"<dateTime>\",\n    \"tickets\": [\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"space_id\": \"<string>\",\n        \"status\": \"used\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"qr_token\": \"<string,null>\",\n        \"pdf_url\": \"<string,null-uri>\"\n      },\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"space_id\": \"<string>\",\n        \"status\": \"active\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"qr_token\": \"<string,null>\",\n        \"pdf_url\": \"<string,null-uri>\"\n      }\n    ],\n    \"expires_at\": \"<string,null-date-time>\",\n    \"paid_at\": \"<string,null-date-time>\",\n    \"payment_info\": {\n      \"amount_tenge\": \"<integer>\",\n      \"paid_at\": \"<dateTime>\",\n      \"external_payment_id\": \"<string>\",\n      \"currency\": \"KZT\",\n      \"method\": \"<string,null>\"\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "ecfd67ab-f94b-4a39-8e0a-51ad3a10b3f4",
              "name": "Ключ неизвестен, подпись не сошлась или `X-Timestamp` вне окна 5 минут.\nКоды: `INVALID_API_KEY`, `INVALID_SIGNATURE`; у второго `details.reason`\nразличает `timestamp_out_of_window` и `signature_mismatch`, чтобы чинить\nчасы, а не формулу.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "key": "partner_order_id",
                      "value": "<string>"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "6e7a1521-9518-4a39-93e8-6c571ff637dd",
              "name": "Код: `ORDER_NOT_FOUND`. Расширение сверх списка ТЗ.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "key": "partner_order_id",
                      "value": "<string>"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "236f131a-2a95-4f1e-826a-75b1d94b50db",
              "name": "Коды: `INVALID_PARAMETERS` (разбор по полям в `details`, включая\nнеизвестный `sector` в `details.sector` и `details.reason:\nprice_not_set`, если у места нет цены; для брони по сектору\n`details.reason: sector_unknown` (сектора нет у мероприятия) и\n`sector_category_unknown` (у категории нет мест в секторе), неизвестный\n`category_code` отдаёт `details.field: sector.category_code`) и\n`SEATS_UNKNOWN` (место не существует или чужого мероприятия, список в\n`details.seats`).",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "key": "partner_order_id",
                      "value": "<string>"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "2c9406e8-ef76-4280-a344-4e894e00edcb",
              "name": "Коды: `RATE_LIMIT_EXCEEDED` (частота или конкурентность) и\n`PENDING_LIMIT_EXCEEDED` (слишком много незакрытых `pending`-заказов,\nповторить после `Retry-After`).\n\nПомимо договорной частоты `rate_limit_rpm` действует предел\nОДНОВРЕМЕННЫХ запросов партнёра (`max_concurrent_requests`, по\nумолчанию 10). Его превышение отвечает тем же `429\nRATE_LIMIT_EXCEEDED` с `details.limit` и заголовком `Retry-After: 1`.\nОба предела общие на партнёра, а не на ключ и не на экземпляр клиента.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "key": "partner_order_id",
                      "value": "<string>"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Retry-After",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "782542fc-fd86-4eb6-8bc5-0619ad15633f",
          "name": "Оформление заказа до списания денег",
          "request": {
            "name": "Оформление заказа до списания денег",
            "description": {
              "content": "**Отступление от ТЗ (5 из 6).** В ТЗ этот шаг совмещает подтверждение\nпродажи с передачей платежа. Здесь он разделён на два вызова ради\nпокупателя партнёра: заказ запирает места на платёжное окно ДО списания,\nпоэтому «деньги списаны, а места нет» не существует как класс.\n\nПревращает бронь в заказ со статусом `pending`. Места остаются за заказом\nдо `expires_at` (платёжное окно партнёра, по умолчанию 5 минут,\nнастраивается). Дальше партнёр списывает деньги и зовёт `confirm`; если\nэквайер отказал, зовёт `cancel`. Не случилось ни того ни другого: заказ\nистекает сам, места возвращаются в продажу, подвисших билетов без денег\nне остаётся.\n\nБилеты в этом ответе НЕ приходят: они выпускаются на `confirm`.\n\n**Идемпотентность.** Пара `(партнёр, partner_order_id)` уникальна. Повтор\nтого же `partner_order_id` возвращает тот же заказ с кодом `200` и не\nсоздаёт второго. Пара разных `partner_order_id` на одну бронь это ошибка\n`409 BOOKING_ALREADY_CONFIRMED`; тот же `partner_order_id` с другой\nбронью это `409 IDEMPOTENCY_CONFLICT`.\n\nБронь с истёкшим сроком не превращается в заказ: `409 BOOKING_EXPIRED`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "orders"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"booking_id\": \"<uuid>\",\n  \"partner_order_id\": \"<string>\",\n  \"customer\": {\n    \"email\": \"<email>\"\n  }\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "5f8bb02d-0a69-41f6-8e70-9b13529bb061",
              "name": "Повтор с тем же `partner_order_id`. Возвращается ранее созданный\nзаказ в его текущем статусе, ничего не создаётся.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"booking_id\": \"<uuid>\",\n  \"partner_order_id\": \"<string>\",\n  \"customer\": {\n    \"email\": \"<email>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"order_id\": \"<uuid>\",\n    \"order_number\": \"<string>\",\n    \"partner_order_id\": \"<string>\",\n    \"event_id\": \"<integer>\",\n    \"status\": \"cancelled\",\n    \"total_tenge\": \"<integer>\",\n    \"created_at\": \"<dateTime>\",\n    \"tickets\": [\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"space_id\": \"<string>\",\n        \"status\": \"used\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"qr_token\": \"<string,null>\",\n        \"pdf_url\": \"<string,null-uri>\"\n      },\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"space_id\": \"<string>\",\n        \"status\": \"active\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"qr_token\": \"<string,null>\",\n        \"pdf_url\": \"<string,null-uri>\"\n      }\n    ],\n    \"expires_at\": \"<string,null-date-time>\",\n    \"paid_at\": \"<string,null-date-time>\",\n    \"payment_info\": {\n      \"amount_tenge\": \"<integer>\",\n      \"paid_at\": \"<dateTime>\",\n      \"external_payment_id\": \"<string>\",\n      \"currency\": \"KZT\",\n      \"method\": \"<string,null>\"\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "deadda84-6c7d-42b6-98d0-8007ea25b12f",
              "name": "Заказ создан, места заперты платёжным окном",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"booking_id\": \"<uuid>\",\n  \"partner_order_id\": \"<string>\",\n  \"customer\": {\n    \"email\": \"<email>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"order_id\": \"<uuid>\",\n    \"order_number\": \"<string>\",\n    \"partner_order_id\": \"<string>\",\n    \"event_id\": \"<integer>\",\n    \"status\": \"cancelled\",\n    \"total_tenge\": \"<integer>\",\n    \"created_at\": \"<dateTime>\",\n    \"tickets\": [\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"space_id\": \"<string>\",\n        \"status\": \"used\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"qr_token\": \"<string,null>\",\n        \"pdf_url\": \"<string,null-uri>\"\n      },\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"space_id\": \"<string>\",\n        \"status\": \"active\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"qr_token\": \"<string,null>\",\n        \"pdf_url\": \"<string,null-uri>\"\n      }\n    ],\n    \"expires_at\": \"<string,null-date-time>\",\n    \"paid_at\": \"<string,null-date-time>\",\n    \"payment_info\": {\n      \"amount_tenge\": \"<integer>\",\n      \"paid_at\": \"<dateTime>\",\n      \"external_payment_id\": \"<string>\",\n      \"currency\": \"KZT\",\n      \"method\": \"<string,null>\"\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "2f894753-a68c-433e-8871-7437f2e56ff4",
              "name": "Ключ неизвестен, подпись не сошлась или `X-Timestamp` вне окна 5 минут.\nКоды: `INVALID_API_KEY`, `INVALID_SIGNATURE`; у второго `details.reason`\nразличает `timestamp_out_of_window` и `signature_mismatch`, чтобы чинить\nчасы, а не формулу.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"booking_id\": \"<uuid>\",\n  \"partner_order_id\": \"<string>\",\n  \"customer\": {\n    \"email\": \"<email>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d4d2f285-1f7e-4845-bfaa-ad50eee20ae7",
              "name": "`ACCESS_DENIED`: у партнёра нет гранта на это мероприятие.\n`PARTNER_DISABLED`: доступ партнёра приостановлен ДСС целиком; код\nотличён от проблемы ключа намеренно. Уже созданные заказы при этом\nживут до конца окна: `confirm`/`cancel`/чтения работают.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"booking_id\": \"<uuid>\",\n  \"partner_order_id\": \"<string>\",\n  \"customer\": {\n    \"email\": \"<email>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "a95a4785-77e3-4cf5-9034-563e97a33c1e",
              "name": "Бронь истекла, не найдена, уже подтверждена другим заказом, продажи по\nмероприятию закрыты или приостановлены между бронью и заказом, либо ваш\n`partner_order_id` уже использован с другой бронью. Коды: `SALES_PAUSED`,\n`SALES_NOT_OPEN`,\n`BOOKING_EXPIRED`, `BOOKING_ALREADY_CONFIRMED` (расширение),\n`BOOKING_NOT_FOUND` (расширение), `IDEMPOTENCY_CONFLICT` (расширение,\n`details: {field, stored, received}`).",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"booking_id\": \"<uuid>\",\n  \"partner_order_id\": \"<string>\",\n  \"customer\": {\n    \"email\": \"<email>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "29eb5d55-0e61-45e1-8772-28cd99392b05",
              "name": "Коды: `INVALID_PARAMETERS` (разбор по полям в `details`, включая\nнеизвестный `sector` в `details.sector` и `details.reason:\nprice_not_set`, если у места нет цены; для брони по сектору\n`details.reason: sector_unknown` (сектора нет у мероприятия) и\n`sector_category_unknown` (у категории нет мест в секторе), неизвестный\n`category_code` отдаёт `details.field: sector.category_code`) и\n`SEATS_UNKNOWN` (место не существует или чужого мероприятия, список в\n`details.seats`).",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"booking_id\": \"<uuid>\",\n  \"partner_order_id\": \"<string>\",\n  \"customer\": {\n    \"email\": \"<email>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "ef7f1458-b518-4e56-9044-0b621bf18c98",
              "name": "Коды: `RATE_LIMIT_EXCEEDED` (частота или конкурентность) и\n`PENDING_LIMIT_EXCEEDED` (слишком много незакрытых `pending`-заказов,\nповторить после `Retry-After`).\n\nПомимо договорной частоты `rate_limit_rpm` действует предел\nОДНОВРЕМЕННЫХ запросов партнёра (`max_concurrent_requests`, по\nумолчанию 10). Его превышение отвечает тем же `429\nRATE_LIMIT_EXCEEDED` с `details.limit` и заголовком `Retry-After: 1`.\nОба предела общие на партнёра, а не на ключ и не на экземпляр клиента.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"booking_id\": \"<uuid>\",\n  \"partner_order_id\": \"<string>\",\n  \"customer\": {\n    \"email\": \"<email>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Retry-After",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "40ce27f4-9508-4e22-a629-169e5dc4bff7",
          "name": "Оплата подтверждена, выпуск билетов",
          "request": {
            "name": "Оплата подтверждена, выпуск билетов",
            "description": {
              "content": "Зовётся СРАЗУ после успешного списания, не из отложенной очереди.\nСписывайте деньги только пока до `expires_at` остаётся не меньше\n30 секунд: льготы за границей окна нет ни у чтения, ни у подтверждения\n(решение Р-П18). `paid_at` раньше `created_at` заказа не отклоняется,\nно считается в сверке нарушением порядка «сначала заказ» (Р-П20).\n`payment_info` описывает внешний платёж и сохраняется у ДСС слепком для\nсверки.\n\nБилеты возвращаются в ответе: подписанный `qr_token` для турникета и\n`pdf_url` для скачивания. Писем покупателю ДСС по партнёрскому каналу не\nотправляет: доставка на стороне партнёра.\n\nИдемпотентен: повтор по уже подтверждённому заказу возвращает `200` с\nтеми же билетами. Слепок `payment_info` при повторе не перезаписывается:\nучитывается первый принятый, и именно он возвращается в `payment_info`\nответа, так что расхождение видно, а не проглатывается.\n\n**Переходное состояние.** Выпуск билетов после принятия оплаты может\nотстать на срок до одной минуты: заказ уже `paid`, а `tickets` пуст\nили короче числа мест. Это не отказ: перечитывайте\n`GET /orders?partner_order_id=` до `len(tickets)`, равного числу\nмест, и не возвращайте деньги по пустому списку билетов.\n\nПорядок отказов: сначала отмена мероприятия (`EVENT_CANCELLED`), потом\nплатёжное окно (`ORDER_EXPIRED` по `expires_at`, даже если места ещё\nне освобождены уборкой), потом статус заказа (`ORDER_CANCELLED`).\n\nОтказ `422` по сумме заказ НЕ убивает: он остаётся `pending`, окно\nпродолжает идти, повтор с верной суммой допустим до `expires_at`.\n\nЗаказ, истёкший до подтверждения: `409 ORDER_EXPIRED`. Деньги в этот\nмомент уже списаны, поэтому партнёр возвращает их покупателю сам и\nнемедленно. Такой исход означает, что между списанием и `confirm` прошло\nбольше платёжного окна: это всегда дефект интеграции, и сверка считает\nкаждый такой случай.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "orders",
                ":order_id",
                "confirm"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "type": "any",
                  "value": "<uuid>",
                  "key": "order_id",
                  "disabled": false,
                  "description": {
                    "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"payment_info\": {\n    \"amount_tenge\": \"<integer>\",\n    \"paid_at\": \"<dateTime>\",\n    \"external_payment_id\": \"<string>\",\n    \"currency\": \"KZT\",\n    \"method\": \"<string,null>\"\n  }\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "89790a82-188a-4241-9ebf-bbc587984b79",
              "name": "Оплата принята, билеты выпущены (повтор возвращает те же)",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "confirm"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"payment_info\": {\n    \"amount_tenge\": \"<integer>\",\n    \"paid_at\": \"<dateTime>\",\n    \"external_payment_id\": \"<string>\",\n    \"currency\": \"KZT\",\n    \"method\": \"<string,null>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"order_id\": \"<uuid>\",\n    \"order_number\": \"<string>\",\n    \"partner_order_id\": \"<string>\",\n    \"event_id\": \"<integer>\",\n    \"status\": \"cancelled\",\n    \"total_tenge\": \"<integer>\",\n    \"created_at\": \"<dateTime>\",\n    \"tickets\": [\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"space_id\": \"<string>\",\n        \"status\": \"used\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"qr_token\": \"<string,null>\",\n        \"pdf_url\": \"<string,null-uri>\"\n      },\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"space_id\": \"<string>\",\n        \"status\": \"active\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"qr_token\": \"<string,null>\",\n        \"pdf_url\": \"<string,null-uri>\"\n      }\n    ],\n    \"expires_at\": \"<string,null-date-time>\",\n    \"paid_at\": \"<string,null-date-time>\",\n    \"payment_info\": {\n      \"amount_tenge\": \"<integer>\",\n      \"paid_at\": \"<dateTime>\",\n      \"external_payment_id\": \"<string>\",\n      \"currency\": \"KZT\",\n      \"method\": \"<string,null>\"\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "87112ed2-b0c2-4470-ad06-e5c8ed46fe58",
              "name": "Ключ неизвестен, подпись не сошлась или `X-Timestamp` вне окна 5 минут.\nКоды: `INVALID_API_KEY`, `INVALID_SIGNATURE`; у второго `details.reason`\nразличает `timestamp_out_of_window` и `signature_mismatch`, чтобы чинить\nчасы, а не формулу.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "confirm"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"payment_info\": {\n    \"amount_tenge\": \"<integer>\",\n    \"paid_at\": \"<dateTime>\",\n    \"external_payment_id\": \"<string>\",\n    \"currency\": \"KZT\",\n    \"method\": \"<string,null>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "2796efc8-15ea-4bcc-8676-4f04115db1da",
              "name": "`ACCESS_DENIED`: у партнёра нет гранта на это мероприятие.\n`PARTNER_DISABLED`: доступ партнёра приостановлен ДСС целиком; код\nотличён от проблемы ключа намеренно. Уже созданные заказы при этом\nживут до конца окна: `confirm`/`cancel`/чтения работают.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "confirm"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"payment_info\": {\n    \"amount_tenge\": \"<integer>\",\n    \"paid_at\": \"<dateTime>\",\n    \"external_payment_id\": \"<string>\",\n    \"currency\": \"KZT\",\n    \"method\": \"<string,null>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "cb213031-cce5-40c9-b4ce-f86ffbb5e9fd",
              "name": "Код: `ORDER_NOT_FOUND`. Расширение сверх списка ТЗ.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "confirm"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"payment_info\": {\n    \"amount_tenge\": \"<integer>\",\n    \"paid_at\": \"<dateTime>\",\n    \"external_payment_id\": \"<string>\",\n    \"currency\": \"KZT\",\n    \"method\": \"<string,null>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "4848acae-f32c-4367-b29e-2d6d69872e1f",
              "name": "Заказ нельзя подтвердить. Коды: `ORDER_EXPIRED` (окно истекло, места\nвозвращены в продажу; списанное партнёр немедленно возвращает сам),\n`ORDER_CANCELLED` (заказ уже отменён через `cancel`), `EVENT_CANCELLED`\n(мероприятие отменено между заказом и оплатой, партнёр возвращает\nденьги).",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "confirm"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"payment_info\": {\n    \"amount_tenge\": \"<integer>\",\n    \"paid_at\": \"<dateTime>\",\n    \"external_payment_id\": \"<string>\",\n    \"currency\": \"KZT\",\n    \"method\": \"<string,null>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "ce7e9ec7-b98a-4e50-8bb2-00ea53a1e616",
              "name": "Коды: `INVALID_PARAMETERS` (разбор по полям в `details`, включая\nнеизвестный `sector` в `details.sector` и `details.reason:\nprice_not_set`, если у места нет цены; для брони по сектору\n`details.reason: sector_unknown` (сектора нет у мероприятия) и\n`sector_category_unknown` (у категории нет мест в секторе), неизвестный\n`category_code` отдаёт `details.field: sector.category_code`) и\n`SEATS_UNKNOWN` (место не существует или чужого мероприятия, список в\n`details.seats`).",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "confirm"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"payment_info\": {\n    \"amount_tenge\": \"<integer>\",\n    \"paid_at\": \"<dateTime>\",\n    \"external_payment_id\": \"<string>\",\n    \"currency\": \"KZT\",\n    \"method\": \"<string,null>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "a8ff739f-b00c-4151-8fec-b036ad694633",
              "name": "Коды: `RATE_LIMIT_EXCEEDED` (частота или конкурентность) и\n`PENDING_LIMIT_EXCEEDED` (слишком много незакрытых `pending`-заказов,\nповторить после `Retry-After`).\n\nПомимо договорной частоты `rate_limit_rpm` действует предел\nОДНОВРЕМЕННЫХ запросов партнёра (`max_concurrent_requests`, по\nумолчанию 10). Его превышение отвечает тем же `429\nRATE_LIMIT_EXCEEDED` с `details.limit` и заголовком `Retry-After: 1`.\nОба предела общие на партнёра, а не на ключ и не на экземпляр клиента.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "confirm"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"payment_info\": {\n    \"amount_tenge\": \"<integer>\",\n    \"paid_at\": \"<dateTime>\",\n    \"external_payment_id\": \"<string>\",\n    \"currency\": \"KZT\",\n    \"method\": \"<string,null>\"\n  }\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Retry-After",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "1211ed52-5b65-4d02-a4e7-a1ead8709f28",
          "name": "Списание не удалось, немедленное освобождение мест",
          "request": {
            "name": "Списание не удалось, немедленное освобождение мест",
            "description": {
              "content": "Зовётся при отказе эквайера. Отменяет `pending`-заказ и возвращает места\nв продажу сразу, не дожидаясь истечения платёжного окна: покупатель,\nкоторый тут же пробует другую карту, не должен ждать собственные места.\n\nТела запроса нет: `<body>` в подписи пустая строка, `Content-Type` не\nтребуется. Идемпотентен: повтор по уже отменённому заказу возвращает\n`200`; по заказу с прошедшим окном ничего не пишет и возвращает его со\nстатусом `expired`. Подтверждённый заказ отменить нельзя\n(`409 ORDER_NOT_CANCELLABLE`): для оплаченного существует только возврат.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "orders",
                ":order_id",
                "cancel"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "type": "any",
                  "value": "<uuid>",
                  "key": "order_id",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "id": "5524d634-34f6-438d-b32e-74acda634c64",
              "name": "Заказ отменён либо уже был отменён, места свободны",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "cancel"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"order_id\": \"<uuid>\",\n    \"order_number\": \"<string>\",\n    \"partner_order_id\": \"<string>\",\n    \"event_id\": \"<integer>\",\n    \"status\": \"cancelled\",\n    \"total_tenge\": \"<integer>\",\n    \"created_at\": \"<dateTime>\",\n    \"tickets\": [\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"space_id\": \"<string>\",\n        \"status\": \"used\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"qr_token\": \"<string,null>\",\n        \"pdf_url\": \"<string,null-uri>\"\n      },\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"space_id\": \"<string>\",\n        \"status\": \"active\",\n        \"price_tenge\": \"<integer>\",\n        \"sector_code\": \"<string,null>\",\n        \"row_code\": \"<string,null>\",\n        \"seat_code\": \"<string,null>\",\n        \"category_name\": {\n          \"ru\": \"<string>\",\n          \"kk\": \"<string,null>\",\n          \"en\": \"<string,null>\"\n        },\n        \"qr_token\": \"<string,null>\",\n        \"pdf_url\": \"<string,null-uri>\"\n      }\n    ],\n    \"expires_at\": \"<string,null-date-time>\",\n    \"paid_at\": \"<string,null-date-time>\",\n    \"payment_info\": {\n      \"amount_tenge\": \"<integer>\",\n      \"paid_at\": \"<dateTime>\",\n      \"external_payment_id\": \"<string>\",\n      \"currency\": \"KZT\",\n      \"method\": \"<string,null>\"\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "11697a0a-a6cb-4b47-b277-0c30cf54a6b9",
              "name": "Ключ неизвестен, подпись не сошлась или `X-Timestamp` вне окна 5 минут.\nКоды: `INVALID_API_KEY`, `INVALID_SIGNATURE`; у второго `details.reason`\nразличает `timestamp_out_of_window` и `signature_mismatch`, чтобы чинить\nчасы, а не формулу.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "cancel"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "3c97de92-289a-4ecb-b78b-2178894d84a2",
              "name": "`ACCESS_DENIED`: у партнёра нет гранта на это мероприятие.\n`PARTNER_DISABLED`: доступ партнёра приостановлен ДСС целиком; код\nотличён от проблемы ключа намеренно. Уже созданные заказы при этом\nживут до конца окна: `confirm`/`cancel`/чтения работают.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "cancel"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "80514043-631c-49c4-b1d5-5053c4bc9277",
              "name": "Код: `ORDER_NOT_FOUND`. Расширение сверх списка ТЗ.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "cancel"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "68b779d1-9d12-4354-9374-949a0173fe2a",
              "name": "Заказ уже подтверждён, отмена невозможна. Код: `ORDER_NOT_CANCELLABLE`\n(расширение), текущий статус в `details`. Для оплаченного заказа\nсуществует только возврат.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "cancel"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "1d4648fc-6b40-45d2-9b85-fc21364457b7",
              "name": "Коды: `RATE_LIMIT_EXCEEDED` (частота или конкурентность) и\n`PENDING_LIMIT_EXCEEDED` (слишком много незакрытых `pending`-заказов,\nповторить после `Retry-After`).\n\nПомимо договорной частоты `rate_limit_rpm` действует предел\nОДНОВРЕМЕННЫХ запросов партнёра (`max_concurrent_requests`, по\nумолчанию 10). Его превышение отвечает тем же `429\nRATE_LIMIT_EXCEEDED` с `details.limit` и заголовком `Retry-After: 1`.\nОба предела общие на партнёра, а не на ключ и не на экземпляр клиента.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "cancel"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Retry-After",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "eb4c221c-8dab-4524-bbd7-9a3b72d78499",
          "name": "Отметка возврата билетов",
          "request": {
            "name": "Отметка возврата билетов",
            "description": {
              "content": "⚠️ Доступна со ВТОРОЙ фазы интеграции. До неё возврат оформляется\nобращением в ДСС (контакт и срок обработки фиксируются договором): наш\nперсонал гасит билет вручную, деньги покупателю в любом случае\nвозвращает партнёр у себя.\n\nГасит перечисленные билеты и освобождает их места. Деньги покупателю\nвозвращает партнёр на своей стороне: ДСС отмечает факт и приводит инвентарь\nв соответствие.\n\nПогашенный билет на входе не проходит: контролёр видит отказ с причиной.\nОперация идемпотентна по билету: повтор по уже погашенному билету с той же\nпричиной возвращает успех и не создаёт второй записи.\n\nБилет, по которому гость уже прошёл на объект, не возвращается:\n`409 TICKET_NOT_REFUNDABLE` с текущим статусом в `details`.\n",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "orders",
                ":order_id",
                "refund"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "type": "any",
                  "value": "<uuid>",
                  "key": "order_id",
                  "disabled": false,
                  "description": {
                    "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tickets\": [\n    \"<uuid>\"\n  ],\n  \"reason\": \"<string>\"\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "90669bd3-5577-4379-a423-c7d499061b52",
              "name": "Возврат отмечен",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tickets\": [\n    \"<uuid>\"\n  ],\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"data\": {\n    \"order_id\": \"<uuid>\",\n    \"status\": \"partially_refunded\",\n    \"refunded\": [\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"status\": \"void\"\n      },\n      {\n        \"ticket_id\": \"<uuid>\",\n        \"number\": \"<string>\",\n        \"status\": \"void\"\n      }\n    ],\n    \"released_seats\": [\n      \"<string>\",\n      \"<string>\"\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "5497771d-f927-49fb-ae2b-5ecdcf47fc7b",
              "name": "Ключ неизвестен, подпись не сошлась или `X-Timestamp` вне окна 5 минут.\nКоды: `INVALID_API_KEY`, `INVALID_SIGNATURE`; у второго `details.reason`\nразличает `timestamp_out_of_window` и `signature_mismatch`, чтобы чинить\nчасы, а не формулу.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tickets\": [\n    \"<uuid>\"\n  ],\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "c9f84306-2119-48d5-b224-78adeadbdeb0",
              "name": "`ACCESS_DENIED`: у партнёра нет гранта на это мероприятие.\n`PARTNER_DISABLED`: доступ партнёра приостановлен ДСС целиком; код\nотличён от проблемы ключа намеренно. Уже созданные заказы при этом\nживут до конца окна: `confirm`/`cancel`/чтения работают.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tickets\": [\n    \"<uuid>\"\n  ],\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "99b366d4-b48f-4210-9a40-a1e17e7f3474",
              "name": "Код: `ORDER_NOT_FOUND`. Расширение сверх списка ТЗ.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tickets\": [\n    \"<uuid>\"\n  ],\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "30813de0-dd39-42f5-8383-d002140102cf",
              "name": "Билет уже использован на входе, погашен по другой причине или относится к\nдругому заказу. Код: `TICKET_NOT_REFUNDABLE` (расширение), текущий статус\nв `details`.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tickets\": [\n    \"<uuid>\"\n  ],\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "c3dedeaa-d0ac-418b-a8b1-f921ffc389ec",
              "name": "Коды: `INVALID_PARAMETERS` (разбор по полям в `details`, включая\nнеизвестный `sector` в `details.sector` и `details.reason:\nprice_not_set`, если у места нет цены; для брони по сектору\n`details.reason: sector_unknown` (сектора нет у мероприятия) и\n`sector_category_unknown` (у категории нет мест в секторе), неизвестный\n`category_code` отдаёт `details.field: sector.category_code`) и\n`SEATS_UNKNOWN` (место не существует или чужого мероприятия, список в\n`details.seats`).",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tickets\": [\n    \"<uuid>\"\n  ],\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "5f1da7c9-f675-4543-b140-9439249d2ed0",
              "name": "Коды: `RATE_LIMIT_EXCEEDED` (частота или конкурентность) и\n`PENDING_LIMIT_EXCEEDED` (слишком много незакрытых `pending`-заказов,\nповторить после `Retry-After`).\n\nПомимо договорной частоты `rate_limit_rpm` действует предел\nОДНОВРЕМЕННЫХ запросов партнёра (`max_concurrent_requests`, по\nумолчанию 10). Его превышение отвечает тем же `429\nRATE_LIMIT_EXCEEDED` с `details.limit` и заголовком `Retry-After: 1`.\nОба предела общие на партнёра, а не на ключ и не на экземпляр клиента.",
              "originalRequest": {
                "url": {
                  "path": [
                    "orders",
                    ":order_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) Идентификатор заказа в системе ДСС, из ответа создания заказа.",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "<uuid>",
                      "key": "order_id"
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": {
                      "content": "Идентификатор сквозной трассировки: строка до 64 символов из латиницы,\nцифр, `_` и `-` (UUID подходит). Возвращается тем же заголовком в\nответе, включая ответы с ошибкой; пишите его в свой журнал рядом с\nтелом. Значение вне формата не отвергается, но подменяется серверным.\n",
                      "type": "text/plain"
                    },
                    "key": "X-Request-Id",
                    "value": "-5DN30Rl4KPfSEinuhyrrvz4iTSSwlMBCRlexb4ESX"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tickets\": [\n    \"<uuid>\"\n  ],\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Retry-After",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Request-Id",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Limit",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": ""
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Reset",
                  "value": ""
                }
              ],
              "body": "{\n  \"error\": {\n    \"code\": \"<string>\",\n    \"message\": \"<string>\",\n    \"details\": {\n      \"key_0\": 3207.121148352826\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "type": "any",
        "value": "X-Api-Key",
        "key": "key"
      },
      {
        "type": "any",
        "value": "{{apiKey}}",
        "key": "value"
      },
      {
        "type": "any",
        "value": "header",
        "key": "in"
      }
    ]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "// Подпись партнёрского API ДСС: <timestamp>\\n<METHOD>\\n<uri>\\n<body>, HMAC-SHA256(secret) в hex.",
          "// Скрипт коллекции: выполняется перед каждым запросом. Переменные: api_key, secret, baseUrl.",
          "const secret = pm.variables.get(\"secret\");",
          "const apiKey = pm.variables.get(\"api_key\");",
          "if (!secret || !apiKey) {",
          "  throw new Error(\"Задайте переменные api_key и secret в окружении коллекции\");",
          "}",
          "const ts = Math.floor(Date.now() / 1000).toString();          // секунды, не миллисекунды",
          "const method = pm.request.method.toUpperCase();",
          "const resolved = pm.variables.replaceIn(pm.request.url.toString());",
          "const u = new URL(resolved);",
          "const uri = u.pathname + u.search;                              // путь с query, без хоста, как уходит на провод",
          "let body = \"\";",
          "if (pm.request.body && pm.request.body.mode === \"raw\" && pm.request.body.raw) {",
          "  body = pm.variables.replaceIn(pm.request.body.raw);",
          "}",
          "const canonical = ts + \"\\n\" + method + \"\\n\" + uri + \"\\n\" + body;",
          "const sig = CryptoJS.HmacSHA256(canonical, secret).toString(CryptoJS.enc.Hex);",
          "pm.request.headers.upsert({ key: \"X-Api-Key\", value: apiKey });",
          "pm.request.headers.upsert({ key: \"X-Timestamp\", value: ts });",
          "pm.request.headers.upsert({ key: \"X-Signature\", value: sig });",
          "if (body) {",
          "  pm.request.headers.upsert({ key: \"Content-Type\", value: \"application/json\" });",
          "}"
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api-sandbox.dss.ndsvs.kz/api/v1/partners",
      "description": "Адрес стенда или продуктива, с префиксом /api/v1/partners"
    },
    {
      "key": "api_key",
      "value": "pk_sandbox_…",
      "description": "Публичный ключ партнёра, выдаёт ДСС"
    },
    {
      "key": "secret",
      "value": "sandbox_secret_do_not_use_in_prod",
      "description": "Секрет партнёра, ключ HMAC. Значение по умолчанию = секрет проверочного вектора"
    }
  ],
  "info": {
    "_postman_id": "fe0f4927-d923-4d71-849a-e69c1b8b1d02",
    "name": "DSS Partner API 0.7.0",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": "Коллекция сгенерирована из partner-api.openapi.yaml. Перед запросом скрипт коллекции считает X-Timestamp и X-Signature из переменных api_key и secret; baseUrl укажите адрес стенда или продуктива."
  }
}