API
Получить официальный график комиссий площадки
GET /websites/{code}/fee-schedule — Получить официальный график комиссий площадки
Операция
GET /websites/{code}/fee-schedule
Поведение
Возвращает комиссии, которые платформа сейчас публикует для одной площадки, по одному слоту на каждое назначение: deposit, sale и withdraw.
- Каждый опубликованный слот содержит полностью развёрнутую официальную цепочку расчёта: все операторы комиссий, операторы конвертации и группы операторов конвертации с их значениями и валютами, поэтому одного запроса достаточно, чтобы воспроизвести расчёт платформы.
- Слот, цепочка которого имеет
id0, явно бесплатен: платформа ничего не взимает за это назначение, а у цепочки нет шагов. - Слот равен
null, если у платформы нет опубликованной официальной цепочки расчёта для этого назначения: комиссия неизвестна или площадка его не предлагает.nullникогда не означает «бесплатно». - Каждая цепочка указывает свою
start_currency: валюту, в которой должна быть цена, чтобы цепочка применялась (null: любая валюта). - Поля владения и управления не включаются.
404 означает, что площадки с таким кодом нет.
Использование
{
"authentication": "public",
"credit_cost": 0,
"premium": false,
"recommended_interval_seconds": 300,
"rate_limit": null,
"unit_pricing": null
}Запрос
{
"parameters": [
{
"name": "code",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Код площадки из списка `GET /websites`.",
"title": "Code"
},
"description": "Код площадки из списка `GET /websites`."
}
]
}Ответы
{
"200": {
"description": "Успешный ответ",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Envelope_FeeScheduleOut_"
}
}
}
},
"404": {
"description": "Запрошенный ресурс не существует",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorEnvelope"
}
}
}
},
"422": {
"description": "Параметр или тело запроса некорректны",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorEnvelope"
}
}
}
},
"503": {
"description": "Сервис временно недоступен; повторите позже",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorEnvelope"
}
}
}
}
}Модели
{
"CreditMeta": {
"properties": {
"cost": {
"type": "integer",
"title": "Cost",
"description": "Сколько кредитов стоит этот запрос."
},
"remaining": {
"type": "integer",
"title": "Remaining",
"description": "Расчётный остаток кредитов после этого запроса. Это ориентир, а не данные учёта: из-за параллельных запросов значение может немного отличаться."
}
},
"type": "object",
"required": [
"cost",
"remaining"
],
"title": "CreditMeta",
"description": "Учёт кредитов для платного запроса."
},
"Envelope_FeeScheduleOut_": {
"properties": {
"data": {
"$ref": "#/components/schemas/FeeScheduleOut",
"description": "Полезные данные эндпоинта."
},
"meta": {
"$ref": "#/components/schemas/Meta",
"description": "Метаданные запроса."
}
},
"type": "object",
"required": [
"data",
"meta"
],
"title": "Envelope[FeeScheduleOut]"
},
"ErrorBody": {
"properties": {
"code": {
"type": "string",
"title": "Code",
"description": "Стабильный машиночитаемый код ошибки. Ориентируйтесь на это значение, а не на `message`."
},
"message": {
"type": "string",
"title": "Message",
"description": "Пояснение для человека. Формулировка может меняться."
},
"details": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Details",
"description": "Необязательный структурированный контекст, например список ошибок валидации или, для `credit_insufficient`, требуемое и оставшееся количество кредитов."
}
},
"type": "object",
"required": [
"code",
"message"
],
"title": "ErrorBody",
"description": "Подробности неудачного запроса."
},
"ErrorEnvelope": {
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorBody",
"description": "Что пошло не так."
},
"meta": {
"$ref": "#/components/schemas/Meta",
"description": "Метаданные запроса."
}
},
"type": "object",
"required": [
"error",
"meta"
],
"title": "ErrorEnvelope",
"description": "Ответ с ошибкой: ошибка в `error` и метаданные запроса в `meta`."
},
"FeeScheduleOut": {
"properties": {
"website_code": {
"type": "string",
"title": "Website Code",
"description": "Код площадки."
},
"slots": {
"$ref": "#/components/schemas/FeeScheduleSlotsOut",
"description": "Опубликованная официальная цепочка для каждого назначения."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"website_code",
"slots"
],
"title": "FeeScheduleOut",
"description": "Официальные комиссии, которые платформа сейчас публикует для одной площадки,\nпо назначениям. Назначение равно `null`, если для него не опубликована\nофициальная цепочка."
},
"FeeScheduleSlotOut": {
"properties": {
"purpose": {
"type": "string",
"enum": [
"deposit",
"sale",
"withdraw"
],
"title": "Purpose",
"description": "Назначение: `deposit`, `sale` или `withdraw`."
},
"calculation_chain": {
"$ref": "#/components/schemas/PublicCalculationChainOut",
"description": "Официальная цепочка расчёта для этого назначения."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"purpose",
"calculation_chain"
],
"title": "FeeScheduleSlotOut",
"description": "Официальная цепочка, опубликованная для одного назначения."
},
"FeeScheduleSlotsOut": {
"properties": {
"deposit": {
"anyOf": [
{
"$ref": "#/components/schemas/FeeScheduleSlotOut"
},
{
"type": "null"
}
],
"description": "Комиссии при пополнении; `null`, если ничего не опубликовано."
},
"sale": {
"anyOf": [
{
"$ref": "#/components/schemas/FeeScheduleSlotOut"
},
{
"type": "null"
}
],
"description": "Комиссии при продаже; `null`, если ничего не опубликовано."
},
"withdraw": {
"anyOf": [
{
"$ref": "#/components/schemas/FeeScheduleSlotOut"
},
{
"type": "null"
}
],
"description": "Комиссии при выводе; `null`, если ничего не опубликовано."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"deposit",
"sale",
"withdraw"
],
"title": "FeeScheduleSlotsOut",
"description": "Опубликованные официальные цепочки одной площадки по назначениям."
},
"Meta": {
"properties": {
"request_id": {
"type": "string",
"title": "Request Id",
"description": "Уникальный идентификатор этого запроса, совпадает с заголовком ответа `X-Request-ID`. Указывайте его при обращении в поддержку."
},
"billable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Billable",
"description": "Оплачивается ли запрос кредитами. Присутствует только у тарифицируемых эндпоинтов; `false` означает, что запрос бесплатен — например, потому что он ничего не стоит или его покрывает ваша подписка."
},
"credit": {
"anyOf": [
{
"$ref": "#/components/schemas/CreditMeta"
},
{
"type": "null"
}
],
"description": "Стоимость запроса и расчётный остаток вашего баланса. Присутствует, только если `billable` равен `true`."
}
},
"type": "object",
"required": [
"request_id"
],
"title": "Meta",
"description": "Метаданные запроса, которые есть в каждом ответе в обёртке."
},
"PublicCalculationChainOut": {
"properties": {
"id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Id",
"description": "Уникальный ID цепочки расчёта. `0` — встроенная цепочка без комиссий: платформа ничего не взимает за это назначение."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"description": "Отображаемое название, если задано."
},
"start_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Currency",
"description": "Валюта, в которой цепочка ожидает цену; `null`, если она применима к любой валюте. На цену в другой валюте цепочка не распространяется."
},
"steps": {
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/PublicFeeOperatorOut"
},
{
"$ref": "#/components/schemas/PublicConvertOperatorOut"
},
{
"$ref": "#/components/schemas/PublicConvertOperatorGroupOut"
}
],
"discriminator": {
"propertyName": "kind",
"mapping": {
"convert": "#/components/schemas/PublicConvertOperatorOut",
"convert_operator_group": "#/components/schemas/PublicConvertOperatorGroupOut",
"fee": "#/components/schemas/PublicFeeOperatorOut"
}
}
},
"type": "array",
"title": "Steps",
"description": "Шаги в порядке выполнения; тип определяется полем `kind`."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"id",
"name",
"start_currency",
"steps"
],
"title": "PublicCalculationChainOut",
"description": "Официальная цепочка расчёта в том виде, в каком она опубликована в графике комиссий."
},
"PublicConvertOperatorGroupOut": {
"properties": {
"kind": {
"type": "string",
"const": "convert_operator_group",
"title": "Kind",
"description": "Тип шага: всегда `convert_operator_group`."
},
"id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Id",
"description": "Уникальный ID группы."
},
"name": {
"type": "string",
"title": "Name",
"description": "Отображаемое название."
},
"rule": {
"type": "string",
"enum": [
"min",
"max",
"avg"
],
"title": "Rule",
"description": "Как выбирается результат среди участников, успешно выполнивших конвертацию: `min`, `max` или `avg`."
},
"members": {
"items": {
"$ref": "#/components/schemas/PublicConvertOperatorOut"
},
"type": "array",
"title": "Members",
"description": "Конвертации — участники группы, по порядку."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"kind",
"id",
"name",
"rule",
"members"
],
"title": "PublicConvertOperatorGroupOut",
"description": "Группа альтернативных конвертаций в опубликованном графике комиссий."
},
"PublicConvertOperatorOut": {
"properties": {
"kind": {
"type": "string",
"const": "convert",
"title": "Kind",
"description": "Тип шага: всегда `convert`."
},
"id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Id",
"description": "Уникальный ID оператора конвертации."
},
"name": {
"type": "string",
"title": "Name",
"description": "Отображаемое название."
},
"from": {
"$ref": "#/components/schemas/PublicCurrencyOut",
"description": "Исходная валюта."
},
"to": {
"$ref": "#/components/schemas/PublicCurrencyOut",
"description": "Целевая валюта."
},
"mode": {
"type": "string",
"enum": [
"auto",
"fixed"
],
"title": "Mode",
"description": "`auto` конвертирует через `usd_rate` обеих валют; `fixed` умножает на `rate`."
},
"rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Rate",
"description": "Количество единиц целевой валюты за одну единицу исходной, в виде десятичной строки; используется в режиме `fixed`."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"kind",
"id",
"name",
"from",
"to",
"mode",
"rate"
],
"title": "PublicConvertOperatorOut",
"description": "Шаг конвертации валюты в опубликованном графике комиссий."
},
"PublicCurrencyOut": {
"properties": {
"id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Id",
"description": "Уникальный ID валюты."
},
"code": {
"type": "string",
"title": "Code",
"description": "Код валюты, например `USD`."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"description": "Отображаемое название."
},
"kind": {
"type": "string",
"title": "Kind",
"description": "Вид валюты, например `fiat`."
},
"usd_rate": {
"type": "string",
"title": "Usd Rate",
"description": "Стоимость одной единицы в долларах США в виде десятичной строки."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"id",
"code",
"name",
"kind",
"usd_rate"
],
"title": "PublicCurrencyOut",
"description": "Валюта в том виде, в каком её использует опубликованный график комиссий."
},
"PublicFeeOperatorOut": {
"properties": {
"kind": {
"type": "string",
"const": "fee",
"title": "Kind",
"description": "Тип шага: всегда `fee`."
},
"id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Id",
"description": "Уникальный ID оператора комиссии."
},
"name": {
"type": "string",
"title": "Name",
"description": "Отображаемое название."
},
"operator": {
"type": "string",
"enum": [
"add",
"sub",
"mul",
"div"
],
"title": "Operator",
"description": "Арифметическое действие над текущей суммой: `add`, `sub`, `mul` или `div`."
},
"value": {
"type": "string",
"title": "Value",
"description": "Операнд арифметического действия в виде десятичной строки."
},
"currency_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Currency Code",
"description": "Валюта суммы для `add` и `sub`; `null` для `mul` и `div`."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"kind",
"id",
"name",
"operator",
"value",
"currency_code"
],
"title": "PublicFeeOperatorOut",
"description": "Шаг комиссии в опубликованном графике комиссий."
}
}