{"openapi":"3.1.0","info":{"title":"Platina API","description":"\nAPI платформы Platina: пополнения Steam, Telegram Stars, игровая валюта и гифт-карты для вашего магазина.\n\n**Авторизация**: `Authorization: Bearer pk_test_…` (песочница) или `pk_live_…` (бой). Scope: `read`, `orders`, `topups`, `payments`.\n**Ошибки**: единый формат `{\"code\",\"message\",\"retryable\",\"request_id\"}`, у `validation_error` ещё `fields`. **Идемпотентность**: `client_order_id` у заказов.\n**Заголовки ответа**: `X-Request-Id` (его же видно в кабинете, «Журнал API»), `X-RateLimit-Limit` (ёмкость 20), `X-RateLimit-Remaining`, `X-RateLimit-Reset`, `X-RateLimit-Policy`, при 429 — `Retry-After`.\n**Коды ошибок**: [/docs/guide#errors](/docs/guide#errors).\n**Гайд**: [/docs/guide](/docs/guide).\n","version":"1.0.0"},"servers":[{"url":"https://platina-api-production.up.railway.app","description":"Platina API: бой и песочница — одним адресом, режим задаёт ключ"}],"paths":{"/v1/meta":{"get":{"tags":["meta"],"summary":"Версия API","operationId":"meta_v1_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetaOut","additionalProperties":true,"type":"object","title":"Response Meta V1 Meta Get"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}}}},"/v1/me":{"get":{"tags":["meta"],"summary":"Проверка ключа","description":"**Право ключа:** `read`.\n\nПроверка ключа: партнёр, тариф, песочница, scope.","operationId":"me_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut","additionalProperties":true,"type":"object","title":"Response Me V1 Me Get"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[{"ApiKey":[]}],"x-required-scope":["read"]}},"/v1/catalog":{"get":{"tags":["catalog"],"summary":"Каталог и цены","operationId":"get_catalog_v1_catalog_get","security":[{"ApiKey":[]}],"parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Category"},{"type":"null"}],"title":"Category"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}},{"name":"include_unavailable","in":"query","required":false,"schema":{"type":"boolean","description":"и товары, которых сейчас нет у поставщиков (available: false, без цен)","default":false,"title":"Include Unavailable"},"description":"и товары, которых сейчас нет у поставщиков (available: false, без цен)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Catalog V1 Catalog Get","$ref":"#/components/schemas/CatalogOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/products/{product_id}":{"get":{"tags":["catalog"],"summary":"Один продукт","operationId":"get_product_v1_products__product_id__get","security":[{"ApiKey":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Product V1 Products  Product Id  Get","$ref":"#/components/schemas/CatalogItem"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/rates":{"get":{"tags":["catalog"],"summary":"Курс USDT/RUB","operationId":"get_rates_v1_rates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatesOut","additionalProperties":true,"type":"object","title":"Response Get Rates V1 Rates Get"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[{"ApiKey":[]}],"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/orders":{"post":{"tags":["orders"],"summary":"Создать заказ","operationId":"create_order_v1_orders_post","security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrder"}}}},"responses":{"201":{"description":"заказ создан","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Order V1 Orders Post","$ref":"#/components/schemas/OrderOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"заказ упёрся в ваш лимит расходов — на день, на заказ или на ключ (spend_limit)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"200":{"description":"повтор с тем же client_order_id и составом — тот же заказ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"402":{"description":"не хватает денег под резерв (insufficient_funds)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"idempotency_conflict или product_unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"курс устарел или все поставщики недоступны (retryable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-required-scope":["orders"],"description":"**Право ключа:** `orders`."},"get":{"tags":["orders"],"summary":"Список заказов","description":"**Право ключа:** `read`.\n\nЗаказы от новых к старым. Страница — до limit штук; если next_before не null, передайте его в before за следующей.","operationId":"list_orders_v1_orders_get","security":[{"ApiKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/OrderStatus"},{"type":"null"}],"title":"Status"}},{"name":"client_order_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Order Id"}},{"name":"created_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"созданы не раньше (ISO 8601 с часовым поясом)","title":"Created From"},"description":"созданы не раньше (ISO 8601 с часовым поясом)"},{"name":"created_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"созданы раньше этого момента","title":"Created To"},"description":"созданы раньше этого момента"},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"курсор: next_before из прошлого ответа — следующая страница, более старые заказы","title":"Before"},"description":"курсор: next_before из прошлого ответа — следующая страница, более старые заказы"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Orders V1 Orders Get","$ref":"#/components/schemas/OrderList"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"]}},"/v1/orders/{order_id}":{"get":{"tags":["orders"],"summary":"Карточка заказа","operationId":"get_order_v1_orders__order_id__get","security":[{"ApiKey":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Order V1 Orders  Order Id  Get","$ref":"#/components/schemas/OrderOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"404":{"description":"заказ не найден (not_found)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/recipients/check":{"post":{"tags":["orders"],"summary":"Проверить получателя","description":"**Право ключа:** `read`.\n\nПроверка получателя до оплаты: витрина спрашивает до счёта покупателю. Ничего не резервирует и не покупает.\nTelegram Stars и Premium — поиск username в Telegram (до 5 с); логин Steam — у поставщика, который выполнит заказ.","operationId":"check_recipient_v1_recipients_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipientCheck"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipientCheckOut","additionalProperties":true,"type":"object","title":"Response Check Recipient V1 Recipients Check Post"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[{"ApiKey":[]}],"x-required-scope":["read"]}},"/v1/webhooks":{"get":{"tags":["webhooks"],"summary":"Настройки вебхука","operationId":"get_webhook_v1_webhooks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookOut","additionalProperties":true,"type":"object","title":"Response Get Webhook V1 Webhooks Get"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[{"ApiKey":[]}],"x-required-scope":["read"],"description":"**Право ключа:** `read`."},"put":{"tags":["webhooks"],"summary":"Задать адрес вебхука","operationId":"set_webhook_v1_webhooks_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetWebhook"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSetOut","additionalProperties":true,"type":"object","title":"Response Set Webhook V1 Webhooks Put"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[{"ApiKey":[]}],"x-required-scope":["orders"],"description":"**Право ключа:** `orders`."},"delete":{"tags":["webhooks"],"summary":"Удалить адрес вебхука","description":"**Право ключа:** `orders`.\n\nУдалить адрес песочницы (аудит вебхуков, фаза 10). Боевой — только в кабинете (решение Р3).","operationId":"delete_webhook_v1_webhooks_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeleteOut","additionalProperties":true,"type":"object","title":"Response Delete Webhook V1 Webhooks Delete"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[{"ApiKey":[]}],"x-required-scope":["orders"]}},"/v1/webhooks/deliveries":{"get":{"tags":["webhooks"],"summary":"Журнал доставок","description":"**Право ключа:** `read`.\n\nЖурнал доставок режима ключа, как в кабинете: от новых к старым, страницами по limit (PRO-R02).","operationId":"list_deliveries_v1_webhooks_deliveries_get","security":[{"ApiKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"enum":["delivered","pending","failed"],"type":"string"},{"type":"null"}],"description":"delivered — доставлено; pending — ждёт попытки; failed — повторы закончились","title":"Status"},"description":"delivered — доставлено; pending — ждёт попытки; failed — повторы закончились"},{"name":"event","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"только это событие, например order.updated","title":"Event"},"description":"только это событие, например order.updated"},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"курсор: next_before из прошлого ответа — более старые доставки","title":"Before"},"description":"курсор: next_before из прошлого ответа — более старые доставки"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Deliveries V1 Webhooks Deliveries Get","$ref":"#/components/schemas/WebhookDeliveryList"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"]}},"/v1/webhooks/test":{"post":{"tags":["webhooks"],"summary":"Пробное событие","operationId":"test_webhook_v1_webhooks_test_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestOut","additionalProperties":true,"type":"object","title":"Response Test Webhook V1 Webhooks Test Post"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[{"ApiKey":[]}],"x-required-scope":["orders"],"description":"**Право ключа:** `orders`."}},"/v1/topups":{"post":{"tags":["billing"],"summary":"Заявка на пополнение","operationId":"create_topup_v1_topups_post","security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTopup"}}}},"responses":{"201":{"description":"заявка создана","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"200":{"description":"повтор с тем же client_ref — та же заявка","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"409":{"description":"idempotency_conflict: тот же client_ref с другой суммой или способом"}},"x-required-scope":["topups"],"description":"**Право ключа:** `topups`."},"get":{"tags":["billing"],"summary":"Список заявок","operationId":"list_topups_v1_topups_get","security":[{"ApiKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TopupStatus"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Topups V1 Topups Get","$ref":"#/components/schemas/TopupList"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/topups/{topup_id}":{"get":{"tags":["billing"],"summary":"Одна заявка","operationId":"get_topup_v1_topups__topup_id__get","security":[{"ApiKey":[]}],"parameters":[{"name":"topup_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Topup Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Topup V1 Topups  Topup Id  Get","$ref":"#/components/schemas/TopupOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/topups/{topup_id}/confirm":{"post":{"tags":["billing"],"summary":"Оплатить заявку (песочница)","description":"**Право ключа:** `topups`.\n\nТолько песочница: партнёр сам «оплачивает» тестовую заявку. Боевые проводит менеджер.","operationId":"confirm_sandbox_topup_v1_topups__topup_id__confirm_post","security":[{"ApiKey":[]}],"parameters":[{"name":"topup_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Topup Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Confirm Sandbox Topup V1 Topups  Topup Id  Confirm Post","$ref":"#/components/schemas/TopupOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["topups"]}},"/v1/balance":{"get":{"tags":["billing"],"summary":"Баланс","operationId":"get_balance_v1_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceOut","additionalProperties":true,"type":"object","title":"Response Get Balance V1 Balance Get"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[{"ApiKey":[]}],"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/ledger":{"get":{"tags":["billing"],"summary":"Движения по счёту","operationId":"get_ledger_v1_ledger_get","security":[{"ApiKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"before_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"курсор: id последней полученной записи","title":"Before Id"},"description":"курсор: id последней полученной записи"},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/LedgerKind"},{"type":"null"}],"title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Ledger V1 Ledger Get","$ref":"#/components/schemas/LedgerList"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/cards/products":{"get":{"tags":["cards"],"summary":"Типы карт и цены","operationId":"cards_products_v1_cards_products_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardProducts","additionalProperties":true,"type":"object","title":"Response Cards Products V1 Cards Products Get"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[{"ApiKey":[]}],"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/cards":{"post":{"tags":["cards"],"summary":"Выпустить карту","operationId":"issue_card_v1_cards_post","security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueCard"}}}},"responses":{"201":{"description":"выпуск начат или завершён","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Issue Card V1 Cards Post","$ref":"#/components/schemas/CardIssueOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"200":{"description":"повтор с тем же client_card_id — та же операция","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardIssueOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}}},"x-required-scope":["orders"],"description":"**Право ключа:** `orders`."},"get":{"tags":["cards"],"summary":"Список карт","operationId":"list_cards_v1_cards_get","security":[{"ApiKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^[a-z_]+$"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Cards V1 Cards Get","$ref":"#/components/schemas/CardList"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/cards/operations/{op_id}":{"get":{"tags":["cards"],"summary":"Операция с картой","operationId":"get_operation_v1_cards_operations__op_id__get","security":[{"ApiKey":[]}],"parameters":[{"name":"op_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Op Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Operation V1 Cards Operations  Op Id  Get","$ref":"#/components/schemas/CardIssueOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/cards/{card_id}":{"get":{"tags":["cards"],"summary":"Одна карта","operationId":"get_card_v1_cards__card_id__get","security":[{"ApiKey":[]}],"parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"integer","title":"Card Id"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","description":"true — перечитать статус у поставщика","default":false,"title":"Refresh"},"description":"true — перечитать статус у поставщика"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Card V1 Cards  Card Id  Get","$ref":"#/components/schemas/CardOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/cards/{card_id}/credentials":{"get":{"tags":["cards"],"summary":"Реквизиты карты","description":"**Право ключа:** `orders`.\n\nPAN, CVV, срок, PIN и статический пароль 3-DS (если есть). Platina их не хранит: показывайте покупателю\nиз этого ответа и не кэшируйте.","operationId":"get_credentials_v1_cards__card_id__credentials_get","security":[{"ApiKey":[]}],"parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"integer","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardCredentials"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["orders"]}},"/v1/cards/{card_id}/balance":{"get":{"tags":["cards"],"summary":"Баланс карты","operationId":"get_balance_v1_cards__card_id__balance_get","security":[{"ApiKey":[]}],"parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"integer","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Balance V1 Cards  Card Id  Balance Get","$ref":"#/components/schemas/CardBalance"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/cards/{card_id}/transactions":{"get":{"tags":["cards"],"summary":"Операции по карте","operationId":"get_transactions_v1_cards__card_id__transactions_get","security":[{"ApiKey":[]}],"parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"integer","title":"Card Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Transactions V1 Cards  Card Id  Transactions Get","$ref":"#/components/schemas/CardTransactions"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/cards/{card_id}/3ds-codes":{"get":{"tags":["cards"],"summary":"Коды 3-DS","description":"**Право ключа:** `orders`.\n\nОдноразовые коды подтверждения онлайн-оплаты, пока не истёк expires_at. Опрашивайте во время оплаты покупателя.\nКак и реквизиты карты — только ключу с правом orders и без кэша (фаза 17 аудита кабинета: раньше хватало read).","operationId":"get_3ds_codes_v1_cards__card_id__3ds_codes_get","security":[{"ApiKey":[]}],"parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"integer","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Card3dsCodes"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["orders"]}},"/v1/cards/{card_id}/topup":{"post":{"tags":["cards"],"summary":"Пополнить карту","operationId":"topup_card_v1_cards__card_id__topup_post","security":[{"ApiKey":[]}],"parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"integer","title":"Card Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupCard"}}}},"responses":{"201":{"description":"пополнение начато или завершено","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Topup Card V1 Cards  Card Id  Topup Post","$ref":"#/components/schemas/CardTopupOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"200":{"description":"повтор с тем же client_ref — та же операция","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardTopupOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}}},"x-required-scope":["orders"],"description":"**Право ключа:** `orders`."}},"/v1/cards/{card_id}/block":{"post":{"tags":["cards"],"summary":"Заблокировать карту","operationId":"block_card_v1_cards__card_id__block_post","security":[{"ApiKey":[]}],"parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"integer","title":"Card Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockCard"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Block Card V1 Cards  Card Id  Block Post","$ref":"#/components/schemas/CardOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["orders"],"description":"**Право ключа:** `orders`."}},"/v1/payments/methods":{"get":{"tags":["payments"],"summary":"Способы приёма оплаты","operationId":"list_methods_v1_payments_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethods","additionalProperties":true,"type":"object","title":"Response List Methods V1 Payments Methods Get"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[{"ApiKey":[]}],"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/payments":{"post":{"tags":["payments"],"summary":"Выставить платёж","operationId":"create_payment_v1_payments_post","security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePayment"}}}},"responses":{"201":{"description":"платёж создан","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Payment V1 Payments Post","$ref":"#/components/schemas/PaymentOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"200":{"description":"повтор с тем же client_payment_id — тот же платёж","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}}},"x-required-scope":["payments"],"description":"**Право ключа:** `payments`."},"get":{"tags":["payments"],"summary":"Список платежей","operationId":"list_payments_v1_payments_get","security":[{"ApiKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PaymentStatus"},{"type":"null"}],"title":"Status"}},{"name":"client_payment_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Payment Id"}},{"name":"customer_ref","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Ref"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Payments V1 Payments Get","$ref":"#/components/schemas/PaymentList"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/payments/{payment_id}":{"get":{"tags":["payments"],"summary":"Один платёж","operationId":"get_payment_v1_payments__payment_id__get","security":[{"ApiKey":[]}],"parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Payment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Payment V1 Payments  Payment Id  Get","$ref":"#/components/schemas/PaymentOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["read"],"description":"**Право ключа:** `read`."}},"/v1/payments/{payment_id}/cancel":{"post":{"tags":["payments"],"summary":"Отменить платёж","operationId":"cancel_payment_v1_payments__payment_id__cancel_post","security":[{"ApiKey":[]}],"parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Payment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Payment V1 Payments  Payment Id  Cancel Post","$ref":"#/components/schemas/PaymentOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["payments"],"description":"**Право ключа:** `payments`."}},"/v1/payments/{payment_id}/confirm":{"post":{"tags":["payments"],"summary":"Оплатить платёж (песочница)","description":"**Право ключа:** `payments`.\n\nТолько песочница: «покупатель оплатил». Боевые платежи подтверждают деньги (подрядчик, сеть, кассир).","operationId":"confirm_sandbox_payment_v1_payments__payment_id__confirm_post","security":[{"ApiKey":[]}],"parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Payment Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConfirmSandbox"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Confirm Sandbox Payment V1 Payments  Payment Id  Confirm Post","$ref":"#/components/schemas/PaymentOut"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"}}},"401":{"description":"нет ключа, ключ неверный, отозван или истёк (unauthorized)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ключу не хватает прав, IP не в белом списке или партнёр на паузе (forbidden)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"запрос не прошёл проверку (validation_error, fields) или бизнес-проверку (recipient_invalid, …)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"больше 10 запросов в секунду (rate_limited); пауза — в заголовке Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-RateLimit-Policy":{"$ref":"#/components/headers/X-RateLimit-Policy"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"x-required-scope":["payments"]}}},"webhooks":{"order.updated":{"post":{"summary":"Изменился заказ","description":"На переходах заказа в pending, success и failed. data — та же карточка, что в GET /v1/orders/{id}; в success есть code — код товара. Ответьте 2xx за 10 секунд, иначе повторим.","operationId":"handlerorder_updated_post","parameters":[{"description":"событие","required":true,"schema":{"type":"string","title":"X-Platina-Event","description":"событие"},"name":"x-platina-event","in":"header"},{"description":"номер доставки, то же, что id в теле; дубли — по id из тела","required":true,"schema":{"type":"string","title":"X-Platina-Delivery","description":"номер доставки, то же, что id в теле; дубли — по id из тела"},"name":"x-platina-delivery","in":"header"},{"description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)","required":true,"schema":{"type":"string","title":"X-Platina-Attempt","description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)"},"name":"x-platina-attempt","in":"header"},{"description":"sandbox или live","required":true,"schema":{"type":"string","title":"X-Platina-Mode","description":"sandbox или live"},"name":"x-platina-mode","in":"header"},{"description":"Platina-Webhooks/1.0","required":true,"schema":{"type":"string","title":"User-Agent","description":"Platina-Webhooks/1.0"},"name":"user-agent","in":"header"},{"description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1","required":true,"schema":{"type":"string","title":"X-Platina-Signature","description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1"},"name":"x-platina-signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEnvelope"}}},"required":true},"responses":{"200":{"description":"принято — любой 2xx","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"balance.low":{"post":{"summary":"Мало денег на балансе","description":"Боевой баланс ниже порога, не чаще раза в сутки. data — баланс и порог в валюте счёта. Ответьте 2xx за 10 секунд, иначе повторим.","operationId":"handlerbalance_low_post","parameters":[{"description":"событие","required":true,"schema":{"type":"string","title":"X-Platina-Event","description":"событие"},"name":"x-platina-event","in":"header"},{"description":"номер доставки, то же, что id в теле; дубли — по id из тела","required":true,"schema":{"type":"string","title":"X-Platina-Delivery","description":"номер доставки, то же, что id в теле; дубли — по id из тела"},"name":"x-platina-delivery","in":"header"},{"description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)","required":true,"schema":{"type":"string","title":"X-Platina-Attempt","description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)"},"name":"x-platina-attempt","in":"header"},{"description":"sandbox или live","required":true,"schema":{"type":"string","title":"X-Platina-Mode","description":"sandbox или live"},"name":"x-platina-mode","in":"header"},{"description":"Platina-Webhooks/1.0","required":true,"schema":{"type":"string","title":"User-Agent","description":"Platina-Webhooks/1.0"},"name":"user-agent","in":"header"},{"description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1","required":true,"schema":{"type":"string","title":"X-Platina-Signature","description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1"},"name":"x-platina-signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEnvelope"}}},"required":true},"responses":{"200":{"description":"принято — любой 2xx","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"payment.updated":{"post":{"summary":"Изменился платёж покупателя","description":"Если подключён приём оплат. data — карточка из GET /v1/payments/{id}. Ответьте 2xx за 10 секунд, иначе повторим.","operationId":"handlerpayment_updated_post","parameters":[{"description":"событие","required":true,"schema":{"type":"string","title":"X-Platina-Event","description":"событие"},"name":"x-platina-event","in":"header"},{"description":"номер доставки, то же, что id в теле; дубли — по id из тела","required":true,"schema":{"type":"string","title":"X-Platina-Delivery","description":"номер доставки, то же, что id в теле; дубли — по id из тела"},"name":"x-platina-delivery","in":"header"},{"description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)","required":true,"schema":{"type":"string","title":"X-Platina-Attempt","description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)"},"name":"x-platina-attempt","in":"header"},{"description":"sandbox или live","required":true,"schema":{"type":"string","title":"X-Platina-Mode","description":"sandbox или live"},"name":"x-platina-mode","in":"header"},{"description":"Platina-Webhooks/1.0","required":true,"schema":{"type":"string","title":"User-Agent","description":"Platina-Webhooks/1.0"},"name":"user-agent","in":"header"},{"description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1","required":true,"schema":{"type":"string","title":"X-Platina-Signature","description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1"},"name":"x-platina-signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEnvelope"}}},"required":true},"responses":{"200":{"description":"принято — любой 2xx","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"shop_order.updated":{"post":{"summary":"Изменилась покупка на витрине","description":"Если у вас есть витрина. data — покупка: товар, оплата, статус. Ответьте 2xx за 10 секунд, иначе повторим.","operationId":"handlershop_order_updated_post","parameters":[{"description":"событие","required":true,"schema":{"type":"string","title":"X-Platina-Event","description":"событие"},"name":"x-platina-event","in":"header"},{"description":"номер доставки, то же, что id в теле; дубли — по id из тела","required":true,"schema":{"type":"string","title":"X-Platina-Delivery","description":"номер доставки, то же, что id в теле; дубли — по id из тела"},"name":"x-platina-delivery","in":"header"},{"description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)","required":true,"schema":{"type":"string","title":"X-Platina-Attempt","description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)"},"name":"x-platina-attempt","in":"header"},{"description":"sandbox или live","required":true,"schema":{"type":"string","title":"X-Platina-Mode","description":"sandbox или live"},"name":"x-platina-mode","in":"header"},{"description":"Platina-Webhooks/1.0","required":true,"schema":{"type":"string","title":"User-Agent","description":"Platina-Webhooks/1.0"},"name":"user-agent","in":"header"},{"description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1","required":true,"schema":{"type":"string","title":"X-Platina-Signature","description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1"},"name":"x-platina-signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEnvelope"}}},"required":true},"responses":{"200":{"description":"принято — любой 2xx","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"catalog.updated":{"post":{"summary":"Изменился каталог","description":"Если включено в кабинете. data — count и changes: товар, ваша цена до и после, что случилось. Ответьте 2xx за 10 секунд, иначе повторим.","operationId":"handlercatalog_updated_post","parameters":[{"description":"событие","required":true,"schema":{"type":"string","title":"X-Platina-Event","description":"событие"},"name":"x-platina-event","in":"header"},{"description":"номер доставки, то же, что id в теле; дубли — по id из тела","required":true,"schema":{"type":"string","title":"X-Platina-Delivery","description":"номер доставки, то же, что id в теле; дубли — по id из тела"},"name":"x-platina-delivery","in":"header"},{"description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)","required":true,"schema":{"type":"string","title":"X-Platina-Attempt","description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)"},"name":"x-platina-attempt","in":"header"},{"description":"sandbox или live","required":true,"schema":{"type":"string","title":"X-Platina-Mode","description":"sandbox или live"},"name":"x-platina-mode","in":"header"},{"description":"Platina-Webhooks/1.0","required":true,"schema":{"type":"string","title":"User-Agent","description":"Platina-Webhooks/1.0"},"name":"user-agent","in":"header"},{"description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1","required":true,"schema":{"type":"string","title":"X-Platina-Signature","description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1"},"name":"x-platina-signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEnvelope"}}},"required":true},"responses":{"200":{"description":"принято — любой 2xx","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"webhook.test":{"post":{"summary":"Пробное событие","description":"По кнопке «Отправить пробное» или POST /v1/webhooks/test. data — partner (ваш slug), source (cabinet или api), sandbox и updated_at. Ответьте 2xx за 10 секунд, иначе повторим.","operationId":"handlerwebhook_test_post","parameters":[{"description":"событие","required":true,"schema":{"type":"string","title":"X-Platina-Event","description":"событие"},"name":"x-platina-event","in":"header"},{"description":"номер доставки, то же, что id в теле; дубли — по id из тела","required":true,"schema":{"type":"string","title":"X-Platina-Delivery","description":"номер доставки, то же, что id в теле; дубли — по id из тела"},"name":"x-platina-delivery","in":"header"},{"description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)","required":true,"schema":{"type":"string","title":"X-Platina-Attempt","description":"номер попытки этой доставки: 1, 2, … (ручной «Повторить» тоже считается)"},"name":"x-platina-attempt","in":"header"},{"description":"sandbox или live","required":true,"schema":{"type":"string","title":"X-Platina-Mode","description":"sandbox или live"},"name":"x-platina-mode","in":"header"},{"description":"Platina-Webhooks/1.0","required":true,"schema":{"type":"string","title":"User-Agent","description":"Platina-Webhooks/1.0"},"name":"user-agent","in":"header"},{"description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1","required":true,"schema":{"type":"string","title":"X-Platina-Signature","description":"t=<unix>,v1=<hex>[,v1=<hex>] — подходит любая v1"},"name":"x-platina-signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEnvelope"}}},"required":true},"responses":{"200":{"description":"принято — любой 2xx","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BalanceOut":{"properties":{"sandbox":{"type":"boolean","title":"Sandbox"},"currency":{"type":"string","title":"Currency","description":"валюта счёта, USDT","examples":["USDT"]},"balance_usdt":{"type":"string","title":"Balance Usdt","description":"баланс; резерв под заказы и операции с картами в работе уже вычтен"},"credit_limit_usdt":{"type":"string","title":"Credit Limit Usdt","description":"кредитный лимит"},"available_usdt":{"type":"string","title":"Available Usdt","description":"доступно для новых заказов: баланс + кредитный лимит"},"reserve_usdt":{"type":"string","title":"Reserve Usdt","description":"зарезервировано под заказы и операции с картами в работе"},"reserve_orders":{"type":"integer","title":"Reserve Orders","description":"сколько заказов держат резерв"}},"type":"object","required":["sandbox","currency","balance_usdt","credit_limit_usdt","available_usdt","reserve_usdt","reserve_orders"],"title":"BalanceOut","description":"Баланс (GET /v1/balance) — те же цифры, что в кабинете. Суммы — строками-числами, USDT."},"BlockCard":{"properties":{"confirm":{"type":"boolean","title":"Confirm","description":"true — вы понимаете, что блокировка навсегда и остаток карты не возвращается"}},"type":"object","required":["confirm"],"title":"BlockCard"},"Card3dsCode":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"код, который покупатель вводит на странице оплаты"},"merchant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merchant","description":"магазин, где идёт оплата"},"amount":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Amount"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","description":"после этого момента код не действует"}},"type":"object","title":"Card3dsCode","description":"Одноразовый код подтверждения онлайн-оплаты; поля — как их отдал поставщик."},"Card3dsCodes":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Card3dsCode"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"Card3dsCodes","description":"Действующие коды 3-DS (GET /v1/cards/{card_id}/3ds-codes)."},"CardBalance":{"properties":{"card_id":{"type":"string","title":"Card Id","description":"id карты (число строкой)"},"currency":{"type":"string","title":"Currency","description":"валюта карты в нижнем регистре: usd, eur"},"available":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Available","description":"доступно к тратам, как отдал поставщик"},"total":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Total","description":"всего на карте, как отдал поставщик"},"negative":{"type":"boolean","title":"Negative","description":"баланс ушёл в минус"}},"type":"object","required":["card_id","currency","negative"],"title":"CardBalance","description":"Остаток на карте по данным поставщика (GET /v1/cards/{card_id}/balance)."},"CardCredentials":{"properties":{"card_id":{"type":"string","title":"Card Id","description":"id карты (число строкой)"},"pan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pan","description":"полный номер карты"},"cvv":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cvv"},"exp_month":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Exp Month","description":"месяц срока действия, как отдал поставщик"},"exp_year":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Exp Year","description":"год срока действия, как отдал поставщик"},"pin_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pin Code","description":"PIN, если поставщик его выдаёт"},"three_ds_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Three Ds Password","description":"статический пароль 3-DS, если есть"},"name_on_card":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name On Card"}},"type":"object","required":["card_id"],"title":"CardCredentials","description":"Реквизиты карты прямо от поставщика: Platina их не хранит. Не кэшируйте."},"CardIssueOut":{"properties":{"operation":{"$ref":"#/components/schemas/CardOperationOut"},"card":{"anyOf":[{"$ref":"#/components/schemas/CardOut"},{"type":"null"}],"description":"null — карта ещё не создана (операция pending или failed)"}},"type":"object","required":["operation"],"title":"CardIssueOut","description":"Операция и карта (POST /v1/cards, GET /v1/cards/operations/{op_id})."},"CardList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CardOut"},"type":"array","title":"Items","description":"карты, до limit штук"}},"type":"object","required":["items"],"title":"CardList"},"CardOpError":{"properties":{"code":{"type":"string","title":"Code","description":"машинный код, сейчас всегда supplier_rejected"},"message":{"type":"string","title":"Message","description":"что случилось, по-русски"}},"type":"object","required":["code","message"],"title":"CardOpError"},"CardOperationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"id операции для GET /v1/cards/operations/{op_id}"},"kind":{"type":"string","enum":["issue","topup"],"title":"Kind","description":"issue — выпуск, topup — пополнение"},"client_ref":{"type":"string","title":"Client Ref","description":"ваш client_card_id (выпуск) или client_ref (пополнение)"},"status":{"type":"string","enum":["pending","success","failed"],"title":"Status","description":"pending — ждём поставщика, опрашивайте операцию"},"sandbox":{"type":"boolean","title":"Sandbox"},"card_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Id","description":"id карты (число строкой); у выпуска — когда карта создана"},"product":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product","description":"код продукта (выпуск)"},"units":{"type":"integer","title":"Units","description":"начальная сумма или сумма пополнения, в валюте карты"},"price_usdt":{"type":"string","title":"Price Usdt","description":"списано или зарезервировано, USDT"},"error":{"anyOf":[{"$ref":"#/components/schemas/CardOpError"},{"type":"null"}],"description":"только у failed; деньги вернулись на баланс"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","kind","client_ref","status","sandbox","units","price_usdt"],"title":"CardOperationOut","description":"Операция с картой: выпуск или пополнение."},"CardOut":{"properties":{"id":{"type":"string","title":"Id","description":"id карты (число строкой) — для путей /v1/cards/{card_id}"},"client_card_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Card Id","description":"ваш идентификатор карты"},"sandbox":{"type":"boolean","title":"Sandbox"},"product":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product","description":"код продукта"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"название продукта"},"currency":{"type":"string","title":"Currency","description":"валюта карты: usd, eur"},"status":{"type":"string","title":"Status","description":"issuing | active | frozen | suspended | closed | expired | failed"},"blocked_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blocked Reason"},"masked_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Masked Number","description":"номер со звёздочками"},"last4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last4"},"exp_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exp Month"},"exp_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exp Year"},"name_on_card":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name On Card"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"ваша пометка"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","sandbox","currency","status"],"title":"CardOut","description":"Виртуальная карта. Реквизиты — отдельно, GET /v1/cards/{card_id}/credentials."},"CardProduct":{"properties":{"product":{"type":"string","title":"Product","description":"код продукта для POST /v1/cards"},"name":{"type":"string","title":"Name"},"currency":{"type":"string","title":"Currency","description":"валюта карты: usd, eur"},"available":{"type":"boolean","title":"Available","description":"можно выпустить прямо сейчас"},"issue_price_usdt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Issue Price Usdt","description":"цена выпуска без начальной суммы, USDT; null — цены нет"},"initial_unit_price_usdt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Unit Price Usdt","description":"цена единицы начальной суммы при выпуске, USDT"},"topup_unit_price_usdt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topup Unit Price Usdt","description":"цена единицы отдельного пополнения, USDT; null — цены нет"},"initial_amount":{"$ref":"#/components/schemas/CardRange","description":"пределы начальной суммы, в валюте карты"}},"type":"object","required":["product","name","currency","available","initial_amount"],"title":"CardProduct"},"CardProducts":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CardProduct"},"type":"array","title":"Items"},"topup_units":{"$ref":"#/components/schemas/CardRange","description":"пределы суммы одного пополнения, в валюте карты"},"take_pct":{"type":"string","title":"Take Pct","description":"доля тарифа по категории card, %"},"currency_note":{"type":"string","title":"Currency Note","description":"пояснение к ценам по-русски"}},"type":"object","required":["items","topup_units","take_pct","currency_note"],"title":"CardProducts","description":"Что можно выпустить и почём (GET /v1/cards/products)."},"CardRange":{"properties":{"min":{"type":"integer","title":"Min"},"max":{"type":"integer","title":"Max"}},"type":"object","required":["min","max"],"title":"CardRange"},"CardTopupOut":{"properties":{"operation":{"$ref":"#/components/schemas/CardOperationOut"}},"type":"object","required":["operation"],"title":"CardTopupOut","description":"Пополнение карты (POST /v1/cards/{card_id}/topup)."},"CardTransaction":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Id"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"тип операции у поставщика"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"amount":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Amount"},"fee":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Fee"},"fee_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fee Type"},"merchant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merchant","description":"магазин"},"merchant_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merchant Country"},"mcc":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Mcc"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"decline_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decline Reason","description":"почему отклонено"},"occurred_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Occurred At","description":"когда, как отдал поставщик"}},"type":"object","title":"CardTransaction","description":"Операция по карте у поставщика; поля — как их отдал поставщик, любое может быть null."},"CardTransactions":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CardTransaction"},"type":"array","title":"Items"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total","description":"всего операций у поставщика"}},"type":"object","required":["items"],"title":"CardTransactions","description":"Операции по карте (GET /v1/cards/{card_id}/transactions)."},"CatalogFx":{"properties":{"rate":{"type":"string","title":"Rate","description":"рыночный курс USDT→RUB"},"buy_rate":{"type":"string","title":"Buy Rate","description":"курс с запасом — по нему считаются розничные цены в ₽ и зачисляются рубли"},"stale":{"type":"boolean","title":"Stale","description":"курс устарел; на списание в USDT не влияет"},"fetched_at":{"type":"string","format":"date-time","title":"Fetched At","description":"когда курс получен"}},"type":"object","required":["rate","buy_rate","stale","fetched_at"],"title":"CatalogFx"},"CatalogItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"product_id для POST /v1/orders"},"code":{"type":"string","title":"Code","description":"код продукта; можно передать в product вместо product_id"},"category":{"$ref":"#/components/schemas/Category"},"name":{"type":"string","title":"Name"},"brand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"страна или регион продукта: RU, KZ, US, TR …"},"recipient_type":{"$ref":"#/components/schemas/RecipientType","description":"какой recipient нужен заказу: login, uid+server, username, email или никакой"},"suppliers":{"type":"integer","title":"Suppliers","description":"сколько поставщиков сейчас могут выполнить заказ"},"take_pct":{"type":"string","title":"Take Pct","description":"доля тарифа к опту по категории, %, строкой-числом"},"nominal_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nominal Usd","description":"номинал, $; только у фиксированных номиналов"},"price_usdt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Usdt","description":"цена одной штуки, USDT — столько спишется с баланса; только у фиксированных номиналов"},"amount_min_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount Min Usd","description":"минимальная сумма, $; только у диапазонных продуктов"},"amount_max_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount Max Usd","description":"максимальная сумма, $; только у диапазонных продуктов"},"price_usdt_per_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Usdt Per Usd","description":"цена за $1 номинала, USDT (4 знака; заказ округляется вверх до цента); только у диапазонных продуктов"},"available":{"type":"boolean","title":"Available","description":"есть у поставщиков сейчас; false — только с include_unavailable=true, цен тогда нет","default":true},"markup_pct":{"type":"string","title":"Markup Pct","description":"ваша наценка на товар из кабинета, %: товар, бренд, категория или общая"},"price_mode":{"type":"string","title":"Price Mode","description":"как задана цена покупателя: markup — закупка + наценка, fixed — ваша фиксированная цена в ₽, market — на 1 ₽ дешевле самой низкой цены на площадках в границах вашей наценки","default":"markup"},"retail_rub":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retail Rub","description":"цена покупателя за штуку с вашей наценкой и округлением или ваша фиксированная цена, ₽ — как в боте и витрине"},"retail_rub_per_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retail Rub Per Usd","description":"цена покупателя за $1 номинала с вашей наценкой, ₽; у диапазонных продуктов"},"hidden":{"type":"boolean","title":"Hidden","description":"вы скрыли товар из бота и витрины; по API он заказывается как обычно","default":false}},"type":"object","required":["id","code","category","name","recipient_type","suppliers","take_pct","markup_pct"],"title":"CatalogItem","description":"Продукт каталога с ценой для вашего тарифа. Баланс в USDT: у фиксированного номинала есть nominal_usd и price_usdt,\nу диапазонного (Steam) — amount_min_usd, amount_max_usd и price_usdt_per_usd. Цены покупателя (retail_*) — в рублях."},"CatalogOut":{"properties":{"sandbox":{"type":"boolean","title":"Sandbox","description":"true — каталог песочницы (тестовый ключ)"},"tariff":{"$ref":"#/components/schemas/Tariff"},"fx":{"$ref":"#/components/schemas/CatalogFx"},"items":{"items":{"$ref":"#/components/schemas/CatalogItem"},"type":"array","title":"Items"}},"type":"object","required":["sandbox","tariff","fx","items"],"title":"CatalogOut","description":"Каталог с ценами для вашего тарифа (GET /v1/catalog)."},"Category":{"type":"string","enum":["steam_topup","steam_gift","mobile","stars","premium","voucher","subscription","esim","game_key","card"],"title":"Category"},"ConfirmSandbox":{"properties":{"amount_rub":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Rub","description":"песочница: зачесть другую сумму (недоплата, наличные)"}},"type":"object","title":"ConfirmSandbox"},"CreateOrder":{"properties":{"client_order_id":{"type":"string","maxLength":128,"minLength":1,"title":"Client Order Id","description":"ваш идентификатор заказа; повтор вернёт тот же заказ"},"product_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Product Id"},"product":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Product","description":"код продукта, если нет product_id"},"amount_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Usd","description":"сумма для диапазонных продуктов (Steam)"},"qty":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Qty","description":"штук для фиксированных номиналов","default":1},"recipient":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Recipient","description":"{login} | {uid, server} | {username} | {email}"},"src":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Src","description":"метка источника трафика для отчёта в кабинете (например, канал или промокод)"}},"type":"object","required":["client_order_id"],"title":"CreateOrder"},"CreatePayment":{"properties":{"client_payment_id":{"type":"string","maxLength":128,"minLength":1,"title":"Client Payment Id","description":"ваш id платежа; повтор вернёт тот же платёж"},"method":{"$ref":"#/components/schemas/PaymentMethod"},"asset":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Asset","description":"для method=crypto: usdt_trc20 | usdt_bep20 | usdt_sol | usdt_erc20 | usdc_bep20 | usdc_erc20 | usdc_sol (доступные — GET /v1/payments/methods)"},"amount_usdt":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Usdt","description":"для method=crypto: сумма счёта в USDT (1 актив = 1 USD), от 1 до 3500; рубли тогда справочные. Указывайте её или amount_rub"},"amount_rub":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Rub","description":"сумма к оплате покупателем, ₽ (sbp_qr, usdt_trc20, cash — обязательна; crypto — пересчёт по курсу без запаса)"},"customer_ref":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Customer Ref","description":"id покупателя у вас — придёт в вебхуке"},"description":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Description","description":"назначение, видно покупателю в банке (СБП)"},"ttl_min":{"anyOf":[{"type":"integer","maximum":4320.0,"minimum":5.0},{"type":"null"}],"title":"Ttl Min","description":"срок оплаты, минут (по умолчанию: СБП 15, USDT 30, crypto 60, наличные 1440)"}},"type":"object","required":["client_payment_id","method"],"title":"CreatePayment"},"CreateTopup":{"properties":{"method":{"$ref":"#/components/schemas/TopupMethod"},"amount_rub":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Rub","description":"сумма в рублях: для sbp и invoice (зачислится в USDT по курсу)"},"amount_usdt":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Usdt","description":"сумма в USDT: для method=usdt, зачисляется 1:1"},"client_ref":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Client Ref","description":"ваш идентификатор заявки; повтор с тем же client_ref вернёт ту же заявку, а не создаст вторую"}},"type":"object","required":["method"],"title":"CreateTopup"},"Error":{"properties":{"code":{"type":"string","title":"Code","description":"машинный код: unauthorized, validation_error, insufficient_funds, …","examples":["validation_error"]},"message":{"type":"string","title":"Message","description":"что случилось, по-русски, для человека"},"retryable":{"type":"boolean","title":"Retryable","description":"имеет ли смысл повторить тот же запрос позже"},"request_id":{"type":"string","title":"Request Id","description":"тот же, что в заголовке X-Request-Id; по нему запрос найдётся в «Журнале API»"},"fields":{"anyOf":[{"items":{"$ref":"#/components/schemas/FieldError"},"type":"array"},{"type":"null"}],"title":"Fields","description":"только у validation_error"}},"type":"object","required":["code","message","retryable","request_id"],"title":"Error","description":"Единый формат ошибки /v1 (фаза 11 аудита кабинета)."},"FieldError":{"properties":{"field":{"type":"string","title":"Field","description":"поле запроса, например qty или recipient.login"},"message":{"type":"string","title":"Message","description":"причина по-русски"},"type":{"type":"string","title":"Type","description":"машинный тип ошибки проверки"}},"type":"object","required":["field","message","type"],"title":"FieldError"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IssueCard":{"properties":{"client_card_id":{"type":"string","maxLength":128,"minLength":1,"title":"Client Card Id","description":"ваш идентификатор карты; повтор вернёт ту же карту"},"product":{"type":"string","maxLength":120,"title":"Product","description":"код продукта из GET /v1/cards/products"},"initial_amount":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"Initial Amount","description":"начальный баланс в валюте карты (целое); дешевле отдельного пополнения","default":1},"label":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Label","description":"ваша пометка (например, id покупателя)"}},"type":"object","required":["client_card_id","product"],"title":"IssueCard"},"LedgerItem":{"properties":{"id":{"type":"integer","title":"Id","description":"id записи; передайте последний в before_id за следующей страницей"},"kind":{"$ref":"#/components/schemas/LedgerKind"},"amount_usdt":{"type":"string","title":"Amount Usdt","description":"сумма со знаком: + приход, − расход, USDT"},"ref":{"type":"string","title":"Ref","description":"ключ операции, например order:<id>:hold или topup:<id>"},"order_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Order Id","description":"заказ, к которому относится запись"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note","description":"пояснение по-русски"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","kind","amount_usdt","ref"],"title":"LedgerItem"},"LedgerKind":{"type":"string","enum":["topup","hold","release","refund","fee","subscription","adjustment","payin"],"title":"LedgerKind"},"LedgerList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LedgerItem"},"type":"array","title":"Items"},"next_before_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Before Id","description":"передайте в before_id за следующей страницей; null — страниц больше нет"}},"type":"object","required":["items"],"title":"LedgerList","description":"Движения по счёту от новых к старым (GET /v1/ledger)."},"MeKey":{"properties":{"prefix":{"type":"string","title":"Prefix","description":"начало ключа для показа, например pk_live_xxxx"},"sandbox":{"type":"boolean","title":"Sandbox","description":"true — тестовый ключ (песочница)"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","description":"права ключа: read, orders, topups, payments"}},"type":"object","required":["prefix","sandbox","scopes"],"title":"MeKey"},"MeOut":{"properties":{"partner":{"$ref":"#/components/schemas/MePartner"},"key":{"$ref":"#/components/schemas/MeKey"}},"type":"object","required":["partner","key"],"title":"MeOut","description":"Кто я: партнёр и ключ, которым сделан запрос (GET /v1/me)."},"MePartner":{"properties":{"slug":{"type":"string","title":"Slug","description":"код партнёра"},"brand":{"type":"string","title":"Brand","description":"название магазина партнёра"},"tariff":{"$ref":"#/components/schemas/Tariff","description":"тариф: от него зависит доля к опту в ценах"},"status":{"$ref":"#/components/schemas/PartnerStatus","description":"состояние партнёра; на паузе запись (scope orders) запрещена"}},"type":"object","required":["slug","brand","tariff","status"],"title":"MePartner"},"MetaOut":{"properties":{"name":{"type":"string","title":"Name","description":"имя сервиса, всегда platina","examples":["platina"]},"version":{"type":"string","title":"Version","description":"версия сервиса","examples":["1.0.0"]},"api":{"type":"string","title":"Api","description":"версия API, сейчас v1","examples":["v1"]}},"type":"object","required":["name","version","api"],"title":"MetaOut","description":"Версия API (GET /v1/meta, без ключа)."},"OrderError":{"properties":{"code":{"type":"string","title":"Code","description":"recipient_invalid | premium_active | supplier_unavailable | supplier_rejected | supplier_timeout"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["code"],"title":"OrderError"},"OrderList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OrderOut"},"type":"array","title":"Items"},"next_before":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Next Before","description":"передайте в before за следующей страницей; null — страниц больше нет"}},"type":"object","required":["items"],"title":"OrderList"},"OrderOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"client_order_id":{"type":"string","title":"Client Order Id"},"status":{"$ref":"#/components/schemas/OrderStatus"},"sandbox":{"type":"boolean","title":"Sandbox"},"product_id":{"type":"string","format":"uuid","title":"Product Id"},"product":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product","description":"код продукта"},"amount_usd":{"type":"string","title":"Amount Usd","description":"номинал, строкой-числом"},"qty":{"type":"integer","title":"Qty"},"recipient":{"additionalProperties":true,"type":"object","title":"Recipient"},"price_usdt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Usdt","description":"списано или зарезервировано, USDT"},"error":{"anyOf":[{"$ref":"#/components/schemas/OrderError"},{"type":"null"}]},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"код товара (гифт-карты), только у success; null — код скрыт, причина в code_hidden; поля нет, пока кода нет"},"code_hidden":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Hidden","description":"почему code равен null: scope_orders_required — у ключа нет права orders, open_order_card — в списке кодов нет, запросите карточку заказа","examples":["scope_orders_required"]},"src":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Src"},"delivery":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Delivery","description":"подтверждение выдачи, если поставщик его дал: у Telegram Stars и Premium через свой канал — {type: ton_tx, tx_hash, url, kind, quantity, username, recipient_name, at}; поля нет, пока подтверждения нет"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At"}},"type":"object","required":["id","client_order_id","status","sandbox","product_id","amount_usd","qty","recipient"],"title":"OrderOut","description":"Карточка заказа — та же приходит в data вебхука order.updated. Схема для документации, ответ не фильтруется."},"OrderStatus":{"type":"string","enum":["new","validated","held","sent","pending","success","failed","refunded","expired"],"title":"OrderStatus"},"PartnerStatus":{"type":"string","enum":["invited","active","paused","blocked"],"title":"PartnerStatus"},"PaymentList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PaymentOut"},"type":"array","title":"Items","description":"платежи от новых к старым, до limit штук"}},"type":"object","required":["items"],"title":"PaymentList"},"PaymentMethod":{"type":"string","enum":["sbp_qr","usdt_trc20","crypto","cash"],"title":"PaymentMethod"},"PaymentMethodOut":{"properties":{"method":{"$ref":"#/components/schemas/PaymentMethod"},"available":{"type":"boolean","title":"Available","description":"метод можно использовать прямо сейчас"},"fee_pct":{"type":"string","title":"Fee Pct","description":"комиссия метода, %"},"ttl_min":{"type":"integer","title":"Ttl Min","description":"срок оплаты по умолчанию, минут"},"assets":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Assets","description":"для crypto: какие активы можно указать в asset"},"fee_payer":{"type":"string","title":"Fee Payer","description":"кто платит комиссию: merchant — удерживается из зачисления, buyer — добавляется к сумме покупателя (USDT и crypto, выбирается в кабинете)","default":"merchant"}},"type":"object","required":["method","available","fee_pct","ttl_min"],"title":"PaymentMethodOut"},"PaymentMethods":{"properties":{"sandbox":{"type":"boolean","title":"Sandbox"},"module_enabled":{"type":"boolean","title":"Module Enabled","description":"модуль платежей подключён; в песочнице всегда true"},"items":{"items":{"$ref":"#/components/schemas/PaymentMethodOut"},"type":"array","title":"Items"}},"type":"object","required":["sandbox","module_enabled","items"],"title":"PaymentMethods","description":"Доступные методы приёма оплаты (GET /v1/payments/methods)."},"PaymentOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"client_payment_id":{"type":"string","title":"Client Payment Id","description":"ваш id платежа"},"method":{"$ref":"#/components/schemas/PaymentMethod"},"status":{"$ref":"#/components/schemas/PaymentStatus"},"sandbox":{"type":"boolean","title":"Sandbox"},"asset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset","description":"для crypto: актив платежа (usdt_trc20, usdt_bep20, …)"},"amount_rub":{"type":"string","title":"Amount Rub","description":"сумма платежа: столько получите вы, если комиссию платит покупатель"},"amount_due_rub":{"type":"string","title":"Amount Due Rub","description":"сколько платит покупатель: amount_rub + комиссия, если её платит покупатель"},"fee_payer":{"type":"string","title":"Fee Payer","description":"кто платит комиссию: merchant или buyer","default":"merchant"},"pay_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pay Url","description":"страница оплаты Platina для покупателя (crypto и USDT): адрес, QR, сумма, таймер и статус — можно отдать ссылкой вместо своей страницы"},"paid_rub":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paid Rub","description":"сколько фактически пришло; null — денег ещё нет"},"fee_pct":{"type":"string","title":"Fee Pct","description":"комиссия, %"},"fee_rub":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fee Rub","description":"комиссия в рублях; после оплаты"},"credited_rub":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credited Rub","description":"paid_rub − fee_rub, ₽"},"credited_usdt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credited Usdt","description":"зачислено на баланс в USDT после оплаты; рубли переведены по credit_rate"},"credit_rate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credit Rate","description":"курс ₽ за USDT, по которому зачислено: у крипто-платежа — курс счёта, иначе Rapira с запасом"},"customer_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Ref","description":"id покупателя у вас"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"назначение платежа"},"amount_usdt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount Usdt","description":"crypto: сколько переводит покупатель, USDT (= instructions.amount)"},"received_usdt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Received Usdt","description":"crypto: сколько уже пришло на адрес; меньше amount_usdt — недоплата, покупатель может доплатить до expires_at; при каждом новом поступлении приходит payment.updated"},"overpaid_usdt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overpaid Usdt","description":"crypto: переплата сверх счёта (больше 1 % или после оплаты) — не зачислена, разбирает менеджер Platina"},"instructions":{"additionalProperties":true,"type":"object","title":"Instructions","description":"что показать покупателю: QR СБП, адрес и сумма USDT (crypto — адрес, сеть и сумма в активе), код для кассира — зависит от method"},"tx_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tx Id","description":"хеш транзакции USDT или № операции СБП"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"до какого момента ждём оплату"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","client_payment_id","method","status","sandbox","amount_rub","amount_due_rub","fee_pct","instructions"],"title":"PaymentOut","description":"Платёж покупателя — та же карточка приходит в data вебхука payment.updated. Суммы — строками-числами, ₽."},"PaymentStatus":{"type":"string","enum":["pending","paid","expired","canceled","failed","review"],"title":"PaymentStatus"},"RatesOut":{"properties":{"pair":{"type":"string","title":"Pair","description":"валютная пара, всегда USDT_RUB","examples":["USDT_RUB"]},"rate":{"type":"string","title":"Rate","description":"рыночный курс"},"buy_rate":{"type":"string","title":"Buy Rate","description":"курс закупки с запасом — по нему считаются цены"},"source":{"type":"string","title":"Source","description":"откуда взят курс"},"fetched_at":{"type":"string","format":"date-time","title":"Fetched At","description":"когда курс получен"},"stale":{"type":"boolean","title":"Stale","description":"курс устарел; новые заказы получат 503, пока он не обновится"},"steam_wallet":{"items":{"$ref":"#/components/schemas/SteamWalletRate"},"type":"array","title":"Steam Wallet","description":"курс кошелька Steam: сколько рублей или тенге зачислится на аккаунт за 1 $ amount_usd; пусто — курс ещё не снят"}},"type":"object","required":["pair","rate","buy_rate","source","fetched_at","stale"],"title":"RatesOut","description":"Текущий курс (GET /v1/rates)."},"RecipientCheck":{"properties":{"product_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Product Id"},"product":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Product","description":"код продукта, если нет product_id"},"recipient":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Recipient","description":"{login} | {uid, server} | {username} | {email}"}},"type":"object","title":"RecipientCheck"},"RecipientCheckOut":{"properties":{"status":{"type":"string","title":"Status","description":"ok — получатель найден · not_found — нет такого · premium_active — у получателя уже есть Telegram Premium · invalid — неверный формат · format_ok — формат верный, у поставщика этот товар заранее не проверяется · unknown — проверка сейчас не ответила, заказ можно создавать, получатель проверится при покупке"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"имя получателя в Telegram, если его показал Telegram"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["status"],"title":"RecipientCheckOut"},"RecipientType":{"type":"string","enum":["steam_login","uid","username","email","none"],"title":"RecipientType"},"SetWebhook":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url","description":"https-адрес, куда слать события"},"rotate_secret":{"type":"boolean","title":"Rotate Secret","description":"выпустить новый секрет; прежний действует ещё 24 часа — события подписываются обоими","default":false}},"type":"object","required":["url"],"title":"SetWebhook"},"SteamWalletRate":{"properties":{"currency":{"type":"string","title":"Currency","description":"валюта кошелька: RUB, KZT","examples":["RUB"]},"per_usd":{"type":"string","title":"Per Usd","description":"единиц валюты кошелька за 1 $ amount_usd","examples":["79.85"]},"source":{"type":"string","title":"Source","description":"кто отдал курс: playwallet, fazercards, manual"},"fetched_at":{"type":"string","format":"date-time","title":"Fetched At","description":"когда курс снят"},"stale":{"type":"boolean","title":"Stale","description":"курс старше двух суток: сумму в рублях показывайте покупателю как примерную"}},"type":"object","required":["currency","per_usd","source","fetched_at","stale"],"title":"SteamWalletRate","description":"Курс зачисления на кошелёк Steam (29.10): покупатель думает в рублях, а заказ — в долларах."},"Tariff":{"type":"string","enum":["pilot","start","business","api","turnkey"],"title":"Tariff"},"TopupCard":{"properties":{"client_ref":{"type":"string","maxLength":128,"minLength":1,"title":"Client Ref","description":"ваш идентификатор пополнения; повтор не спишет второй раз"},"units":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"Units","description":"сумма пополнения в валюте карты (целое)"}},"type":"object","required":["client_ref","units"],"title":"TopupCard"},"TopupList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TopupOut"},"type":"array","title":"Items","description":"заявки от новых к старым, до limit штук"}},"type":"object","required":["items"],"title":"TopupList"},"TopupMethod":{"type":"string","enum":["sbp","invoice","usdt"],"title":"TopupMethod"},"TopupOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"method":{"$ref":"#/components/schemas/TopupMethod"},"status":{"$ref":"#/components/schemas/TopupStatus"},"sandbox":{"type":"boolean","title":"Sandbox"},"currency":{"type":"string","title":"Currency","description":"валюта баланса, на который зачислится заявка","default":"USDT"},"amount_usdt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount Usdt","description":"у method=usdt — сумма заявки, зачисляется 1:1; у рублёвой заявки — сколько зачислено после конвертации (null, пока не зачислена)"},"amount_rub":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Amount Rub","description":"у sbp и invoice — сумма перевода, ₽; конвертируется в USDT по курсу при зачислении"},"requisites":{"additionalProperties":true,"type":"object","title":"Requisites","description":"куда платить: счёт, ссылка СБП или адрес USDT — зависит от method"},"external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Ref","description":"номер платёжки или хеш транзакции; заполняет менеджер при проведении"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"confirmed_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Confirmed By","description":"кто провёл заявку"},"confirmed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Confirmed At","description":"когда деньги зачислены на баланс"}},"type":"object","required":["id","method","status","sandbox","requisites"],"title":"TopupOut","description":"Заявка на пополнение баланса."},"TopupStatus":{"type":"string","enum":["pending","confirmed","rejected"],"title":"TopupStatus"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WebhookDeleteOut":{"properties":{"url":{"type":"null","title":"Url","description":"адреса больше нет"},"mode":{"type":"string","const":"sandbox","title":"Mode","description":"удаляется только адрес песочницы; боевой — в кабинете"},"deleted":{"type":"boolean","title":"Deleted","description":"адрес был и удалён; false — его и не было"}},"type":"object","required":["mode","deleted"],"title":"WebhookDeleteOut","description":"Адрес песочницы удалён (DELETE /v1/webhooks)."},"WebhookDeliveryList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WebhookDeliveryOut"},"type":"array","title":"Items","description":"доставки, до limit штук"},"next_before":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Next Before","description":"курсор следующей страницы: передайте в before; null — страниц больше нет"}},"type":"object","required":["items"],"title":"WebhookDeliveryList","description":"Журнал доставок режима (GET /v1/webhooks/deliveries), от новых к старым."},"WebhookDeliveryOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"id доставки — он же id в подписанном теле события и заголовок X-Platina-Delivery"},"event":{"type":"string","title":"Event","description":"событие: order.updated, balance.low, payment.updated, webhook.test"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"когда событие создано"},"url":{"type":"string","title":"Url","description":"адрес последней попытки (или адрес на момент события, если попыток не было)"},"attempts":{"type":"integer","title":"Attempts","description":"сколько попыток доставки сделано, включая ручные повторы"},"max_attempts":{"type":"integer","title":"Max Attempts","description":"сколько попыток по графику: первая и повторы (11 в бою, 4 в песочнице)"},"last_status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Status","description":"HTTP-код последней попытки; null — ответа не было"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At","description":"когда доставлено; null — ещё нет"},"next_attempt_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Attempt At","description":"когда следующая попытка; null — попыток больше не будет"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error","description":"причина неудачи последней попытки"}},"type":"object","required":["id","event","created_at","url","attempts","max_attempts"],"title":"WebhookDeliveryOut"},"WebhookEnvelope":{"properties":{"id":{"type":"string","title":"Id","description":"номер доставки, тот же, что в X-Platina-Delivery; одинаков у повторов. Дубли отбрасывайте по нему: поле под подписью, а заголовок — нет"},"event":{"type":"string","title":"Event","description":"событие, тот же, что в X-Platina-Event"},"api_version":{"type":"string","title":"Api Version","description":"версия формата событий, сейчас 2026-10-29"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"когда событие создано, UTC"},"livemode":{"type":"boolean","title":"Livemode","description":"true — боевое событие, false — песочница (то же, что X-Platina-Mode)"},"data":{"additionalProperties":true,"type":"object","title":"Data","description":"объект события, см. описание события"}},"type":"object","required":["id","event","api_version","created_at","livemode","data"],"title":"WebhookEnvelope","description":"Тело запроса на ваш адрес. Подпись проверяйте от сырого тела: HMAC-SHA256(secret, t + \".\" + body)."},"WebhookOut":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"адрес вебхука; null — не задан"},"secret_set":{"type":"boolean","title":"Secret Set","description":"секрет подписи задан (сам секрет не показывается)"},"mode":{"type":"string","enum":["sandbox","live"],"title":"Mode","description":"режим ключа: адрес песочницы или боевой"},"previous_secret_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Previous Secret Until","description":"до какого момента действует прежний секрет после ротации"},"recent":{"items":{"$ref":"#/components/schemas/WebhookDeliveryOut"},"type":"array","title":"Recent","description":"последние 20 доставок, от новых к старым"}},"type":"object","required":["secret_set","mode","recent"],"title":"WebhookOut","description":"Настройки вебхука и последние 20 доставок (GET /v1/webhooks)."},"WebhookSetOut":{"properties":{"url":{"type":"string","title":"Url","description":"адрес, куда пойдут события"},"mode":{"type":"string","enum":["sandbox","live"],"title":"Mode","description":"чей адрес задан: песочницы (тестовый ключ) или боевой"},"events":{"items":{"type":"string"},"type":"array","title":"Events","description":"все события, которые придут на адрес"},"secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret","description":"секрет подписи; приходит один раз — при первой установке или rotate_secret=true, иначе поля нет"},"previous_secret_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Previous Secret Until","description":"до какого момента действует прежний секрет; только вместе с secret"}},"type":"object","required":["url","mode","events"],"title":"WebhookSetOut","description":"Адрес вебхука установлен (PUT /v1/webhooks)."},"WebhookTestOut":{"properties":{"delivery_id":{"type":"string","format":"uuid","title":"Delivery Id","description":"id доставки"},"ok":{"type":"boolean","title":"Ok","description":"адрес ответил 2xx"},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status","description":"HTTP-код ответа; null — ответа не было"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"причина неудачи"},"next_attempt_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Attempt At","description":"когда повторим, если не доставили"}},"type":"object","required":["delivery_id","ok"],"title":"WebhookTestOut","description":"Результат тестовой доставки события webhook.test (POST /v1/webhooks/test)."}},"securitySchemes":{"ApiKey":{"type":"http","description":"Ключ из кабинета: `Authorization: Bearer pk_test_…` (песочница) или `pk_live_…` (бой).","scheme":"bearer","bearerFormat":"pk_test_… / pk_live_…"}},"headers":{"X-Request-Id":{"description":"номер запроса — по нему запрос находится в кабинете, «Журнал API»","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"ёмкость лимита ключа (20)","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"сколько запросов можно сделать прямо сейчас","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"через сколько секунд снова доступны все 20","schema":{"type":"integer"}},"X-RateLimit-Policy":{"description":"10;w=1;burst=20","schema":{"type":"string"}},"Retry-After":{"description":"через сколько секунд повторить","schema":{"type":"integer"}}}},"tags":[{"name":"meta","description":"Проверка ключа и версии."},{"name":"catalog","description":"Продукты, цены в рублях с учётом тарифа, курс USDT/RUB."},{"name":"orders","description":"Создание заказов (идемпотентно), статусы, код гифт-карты в карточке заказа."},{"name":"webhooks","description":"order.updated, balance.low, webhook.test. Подпись HMAC-SHA256, повторы 1м/5м/30м/2ч/12ч."},{"name":"billing","description":"Заявки на пополнение (СБП, счёт, USDT), баланс, движения по счёту."},{"name":"cards","description":"Виртуальные карты Visa USD/EUR: выпуск с начальным балансом, реквизиты (не хранятся), баланс, пополнение, операции, коды 3-DS, блокировка. Песочница = мок-карты без денег."},{"name":"payments","description":"Доп. модуль: приём оплаты от ваших покупателей — QR СБП, USDT TRC20 (уникальная сумма, зачисление автоматически), наличные в кассе по коду. Деньги — на ваш рублёвый баланс за вычетом комиссии метода, вебхук payment.updated."}]}