{
  "info": {
    "name": "ROOM Public API v1",
    "description": "Публичный REST API ROOM (1.0.0). Установите переменные коллекции base_url и api_key. Тест-флоу: создать sk_test ключ → GET /events → POST /orders/preview → POST /orders → POST /orders/{id}/simulate-payment → GET /orders/{id}. Сгенерировано из openapi.json.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://roombackstage.ru/api/public/v1"
    },
    {
      "key": "api_key",
      "value": "sk_test_ВАШ_КЛЮЧ"
    }
  ],
  "item": [
    {
      "name": "Meta",
      "item": [
        {
          "name": "Identify the calling key (whoami)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/ping",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "ping"
              ]
            },
            "description": "Identify the calling key (whoami)"
          }
        }
      ]
    },
    {
      "name": "Events",
      "item": [
        {
          "name": "List published events",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/events",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "events"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "Page size (1–100, default 20).",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "Opaque cursor: pass next_cursor from the previous page.",
                  "disabled": true
                },
                {
                  "key": "q",
                  "value": "",
                  "description": "Free-text search over title and venue (case-insensitive).",
                  "disabled": true
                },
                {
                  "key": "city",
                  "value": "",
                  "description": "Filter by exact city name (case-insensitive).",
                  "disabled": true
                },
                {
                  "key": "scene_id",
                  "value": "",
                  "description": "Only events in this scene.",
                  "disabled": true
                },
                {
                  "key": "starts_after",
                  "value": "",
                  "description": "Only events starting at/after this ISO-8601 timestamp.",
                  "disabled": true
                },
                {
                  "key": "starts_before",
                  "value": "",
                  "description": "Only events starting at/before this ISO-8601 timestamp.",
                  "disabled": true
                },
                {
                  "key": "scope",
                  "value": "",
                  "description": "Time window: upcoming (default), past, or all.",
                  "disabled": true
                },
                {
                  "key": "sort",
                  "value": "",
                  "description": "Sort field (default start_at).",
                  "disabled": true
                },
                {
                  "key": "order",
                  "value": "",
                  "description": "Sort direction (default asc).",
                  "disabled": true
                }
              ]
            },
            "description": "List published events"
          }
        },
        {
          "name": "Get event detail by slug",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/events/by-slug/{slug}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "events",
                "by-slug",
                ":slug"
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": ""
                }
              ]
            },
            "description": "Get event detail by slug"
          }
        },
        {
          "name": "Get event detail",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/events/{id}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "events",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Get event detail"
          }
        },
        {
          "name": "List a event’s public ticket tiers",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/events/{id}/tiers",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "events",
                ":id",
                "tiers"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "List a event’s public ticket tiers"
          }
        },
        {
          "name": "Get seating layout",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/events/{id}/seating",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "events",
                ":id",
                "seating"
              ],
              "query": [
                {
                  "key": "occurrence_id",
                  "value": "",
                  "description": "For series/recurring events.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Get seating layout"
          }
        },
        {
          "name": "Get lightweight availability",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/events/{id}/availability",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "events",
                ":id",
                "availability"
              ],
              "query": [
                {
                  "key": "occurrence_id",
                  "value": "",
                  "description": "For series/recurring events.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Get lightweight availability"
          }
        }
      ]
    },
    {
      "name": "Seat holds",
      "item": [
        {
          "name": "Hold seats (≈15-min TTL)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/seat-holds",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "seat-holds"
              ]
            },
            "description": "Hold seats (≈15-min TTL)",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"event_id\": \"string\",\n  \"seat_ids\": [\n    \"string\"\n  ],\n  \"occurrence_id\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Release seat holds",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/seat-holds",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "seat-holds"
              ]
            },
            "description": "Release seat holds",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reservation_ids\": [\n    \"string\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Orders",
      "item": [
        {
          "name": "Create an order (guest SBP checkout)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{idempotency_key}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orders",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders"
              ]
            },
            "description": "Create an order (guest SBP checkout)",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"buyer\": {\n    \"email\": \"string\",\n    \"name\": \"string\",\n    \"phone\": \"string\"\n  },\n  \"tier_id\": \"string\",\n  \"seat_reservation_ids\": [\n    \"string\"\n  ],\n  \"standing_items\": [\n    {\n      \"tier_id\": \"string\",\n      \"qty\": 0\n    }\n  ],\n  \"event_id\": \"string\",\n  \"occurrence_id\": \"string\",\n  \"quantity\": 0,\n  \"promo_code\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.variables.set('idempotency_key', require('uuid').v4 ? require('uuid').v4() : ('' + Date.now() + Math.random()))"
                ]
              }
            }
          ]
        },
        {
          "name": "List orders (sk_ only)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "Page size (1–100, default 20).",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "Opaque cursor: pass next_cursor from the previous page.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "description": "Filter by order status.",
                  "disabled": true
                },
                {
                  "key": "event_id",
                  "value": "",
                  "description": "Only orders for this event.",
                  "disabled": true
                },
                {
                  "key": "created_after",
                  "value": "",
                  "description": "Only orders created at/after this ISO-8601 timestamp.",
                  "disabled": true
                },
                {
                  "key": "created_before",
                  "value": "",
                  "description": "Only orders created at/before this ISO-8601 timestamp.",
                  "disabled": true
                }
              ]
            },
            "description": "List orders (sk_ only)"
          }
        },
        {
          "name": "Preview pricing (no order created)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orders/preview",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                "preview"
              ]
            },
            "description": "Preview pricing (no order created)",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tier_id\": \"string\",\n  \"seat_reservation_ids\": [\n    \"string\"\n  ],\n  \"standing_items\": [\n    {\n      \"tier_id\": \"string\",\n      \"qty\": 0\n    }\n  ],\n  \"event_id\": \"string\",\n  \"occurrence_id\": \"string\",\n  \"quantity\": 0,\n  \"promo_code\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get order status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/{id}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id"
              ],
              "query": [
                {
                  "key": "poll_token",
                  "value": "",
                  "description": "Bearer-less poll token from order creation (no PII). Alternative to an API key.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Get order status"
          }
        },
        {
          "name": "Check order status (POST, uncached)",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/{id}/check-status",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "check-status"
              ],
              "query": [
                {
                  "key": "poll_token",
                  "value": "",
                  "description": "Bearer-less poll token from order creation (no PII). Alternative to an API key.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Check order status (POST, uncached)"
          }
        },
        {
          "name": "Simulate payment (test mode only)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orders/{id}/simulate-payment",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "simulate-payment"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Simulate payment (test mode only)",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"outcome\": \"paid\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Retrieve issued tickets + QR (sk_ only)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/{id}/tickets",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "tickets"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Retrieve issued tickets + QR (sk_ only)"
          }
        },
        {
          "name": "Refund a paid ticket order (sk_ only)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orders/{id}/refund",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "refund"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Refund a paid ticket order (sk_ only)",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get refund status (sk_ only)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/{id}/refund",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "refund"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Get refund status (sk_ only)"
          }
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "List your webhook endpoints (sk_ only)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/webhook-endpoints",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook-endpoints"
              ]
            },
            "description": "List your webhook endpoints (sk_ only)"
          }
        },
        {
          "name": "List webhook delivery attempts (sk_ only)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/webhook-deliveries",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook-deliveries"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "Page size (1–100, default 20).",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "Opaque cursor: pass next_cursor from the previous page.",
                  "disabled": true
                },
                {
                  "key": "endpoint_id",
                  "value": "",
                  "description": "Only deliveries for this webhook endpoint.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "description": "Filter by delivery status.",
                  "disabled": true
                }
              ]
            },
            "description": "List webhook delivery attempts (sk_ only)"
          }
        },
        {
          "name": "Re-queue a delivery (sk_ only)",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/webhook-deliveries/{id}/redeliver",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhook-deliveries",
                ":id",
                "redeliver"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": ""
                }
              ]
            },
            "description": "Re-queue a delivery (sk_ only)"
          }
        }
      ]
    }
  ]
}
