# Получить рынок по id

`GET /v2/markets/{id}`

Один рынок с тем же снимком, который возвращает список.

Отвечает `404`, когда рынок не существует, исключён из листинга или скрыт от вызывающего.

<a id="authorization"></a>

## Авторизация

bearer: http · bearer (обязательно). Персональный API-ключ с префиксом `usk_`.

<a id="parameters"></a>

## Параметры

- path: id (string · uuid; обязательно). Идентификатор рынка, возвращаемый `GET /v2/markets`.

Тип: string · uuid

format: uuid

- query: accountId (string · uuid; необязательно). Торговый счёт, относительно которого формируется список рынков: границы кредитного плеча и доступность возвращаются применительно к этому счёту. Если не указан — возвращаются значения по умолчанию для всей платформы.

Тип: string · uuid

format: uuid

pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

<a id="example-curl"></a>

## Пример · cURL

```bash
curl --request GET 'https://api.upscale.trade/v2/markets/{id}' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY'
```

<a id="example-javascript"></a>

## Пример · JavaScript

```javascript
const response = await fetch("https://api.upscale.trade/v2/markets/{id}", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
  },
});
console.log(response.status, await response.text());
```

<a id="example-python"></a>

## Пример · Python

```python
import requests

response = requests.request(
    "GET",
    "https://api.upscale.trade/v2/markets/{id}",
    headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY"},
    timeout=30,
)
print(response.status_code, response.text)
```

<a id="response-401"></a>

## Ответ 401

**401**  — Неавторизовано

<a id="response-404"></a>

## Ответ 404

**404**  — Рынок не найден, исключён из листинга или скрыт от вызывающего.

<a id="response-429"></a>

## Ответ 429

**429**  — Превышен лимит частоты запросов API-ключа (`api_key_rate_limit_exceeded`). `Retry-After` указывает, когда вернуться; тело содержит бакет (`read` / `write`), окно, которое сработало, его лимит и `retryAt`.

<a id="response-default-marketv2response"></a>

## Ответ default · MarketV2Response

**default** application/json — Ответ

Схема: MarketV2Response

Тип: object

Обязательные поля: id, config, state, settings, change, schedule

Типы обязательных полей: id (string · uuid; обязательно), config (object; обязательно), state (object; обязательно), settings (object; обязательно), change (object; обязательно), schedule (object · nullable; обязательно)

- id (string · uuid; обязательно)

id пример: 00000000-0000-4000-8000-000000000000

id.Тип: string · uuid

id.Идентификатор рынка — значение, которое создание Ордера принимает в качестве `marketId`.

id.format: uuid

id.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- config (object; обязательно)

config пример: {
  "baseAsset": "BTC",
  "quoteAsset": "USD",
  "settlementToken": "USD",
  "type": "base",
  "name": "BTC",
  "description": "Market description",
  "ticker": "BTC/USD",
  "imageLink": "https://app.storm.tg/markets/btc.png",
  "tags": [
    "Crypto"
  ],
  "category": "crypto",
  "priority": 0
}

config.Тип: object

config.Обязательные поля: baseAsset, quoteAsset, settlementToken, type, name, description, ticker, imageLink, tags, category, priority

config.Типы обязательных полей: baseAsset (string; обязательно), quoteAsset (string; обязательно), settlementToken (string; обязательно), type (string; обязательно), name (string; обязательно), description (string; обязательно), ticker (string; обязательно), imageLink (string; обязательно), tags (string[]; обязательно), category (string · enum; обязательно), priority (number · nullable; обязательно)

config.Статическое описание рынка: активы, наименование и категория.

- config.baseAsset (string; обязательно)

config.baseAsset пример: BTC

config.baseAsset.Тип: string

config.baseAsset.Тикер базового актива — значение, которое эндпоинты для конкретного рынка принимают как `asset`.

- config.quoteAsset (string; обязательно)

config.quoteAsset пример: USD

config.quoteAsset.Тип: string

config.quoteAsset.Актив, в котором котируются цены активов и номиналы.

- config.settlementToken (string; обязательно)

config.settlementToken пример: USD

config.settlementToken.Тип: string

config.settlementToken.Актив, в котором рассчитываются позиции.

- config.type (string; обязательно)

config.type пример: base

config.type.Тип: string

config.type.Модель ценообразования рынка.

- config.name (string; обязательно)

config.name пример: BTC

config.name.Тип: string

config.name.Отображаемое имя рынка.

- config.description (string; обязательно)

config.description пример: Market description

config.description.Тип: string

config.description.Описание в свободной форме, отображаемое в приложении.

- config.ticker (string; обязательно)

config.ticker пример: BTC/USD

config.ticker.Тип: string

config.ticker.Полная метка пары.

- config.imageLink (string; обязательно)

config.imageLink пример: https://app.storm.tg/markets/btc.png

config.imageLink.Тип: string

config.imageLink.Иконка рынка.

- config.tags (string[]; обязательно)

config.tags пример: [
  "Crypto"
]

config.tags.Тип: string[]

config.tags.Теги, по которым приложение группирует рынки.

config.tags.[]Тип: string

- config.category (string · enum; обязательно)

config.category пример: crypto

config.category.Тип: string · enum

config.category.Является ли рынок криптовалютным или реальным активом — аккаунт может быть ограничен одним из двух.

config.category.Допустимые значения: ["crypto","rwa"]

- config.priority (number · nullable; обязательно)

config.priority пример: 0

config.priority.Тип: number · nullable

config.priority.Вес сортировки в списке рынков; более высокий идёт первым. Null, если не ранжирован.

- state (object; обязательно)

state пример: {
  "indexPrice": "1000000000",
  "blockTimestamp": 0,
  "fundingRate": "1000000000",
  "nextFundingAt": 0,
  "lastFundingAt": 0,
  "vpiSpread": "1000000000",
  "vpiMarketDepthLong": "1000000000",
  "vpiMarketDepthShort": "1000000000",
  "vpiCoefficientLong": "1000000000",
  "vpiCoefficientShort": "1000000000"
}

state.Тип: object

state.Обязательные поля: indexPrice, blockTimestamp, fundingRate, nextFundingAt, lastFundingAt, vpiSpread, vpiMarketDepthLong, vpiMarketDepthShort, vpiCoefficientLong, vpiCoefficientShort

state.Типы обязательных полей: indexPrice (string · int32; обязательно), blockTimestamp (number; обязательно), fundingRate (string · int32; обязательно), nextFundingAt (number; обязательно), lastFundingAt (number · nullable; обязательно), vpiSpread (string · int32; обязательно), vpiMarketDepthLong (string · int32; обязательно), vpiMarketDepthShort (string · int32; обязательно), vpiCoefficientLong (string · int32; обязательно), vpiCoefficientShort (string · int32; обязательно)

state.Текущее состояние: индексная цена, финансирование и глубина, относительно которой рассчитывается цена ордера.

- state.indexPrice (string · int32; обязательно)

state.indexPrice пример: 1000000000

state.indexPrice.Тип: string · int32

state.indexPrice.Текущая индексная цена рынка, fp9 в сыром виде — то, относительно чего оцениваются ордера и сравниваются триггеры.

state.indexPrice.format: int32

state.indexPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- state.blockTimestamp (number; обязательно)

state.blockTimestamp пример: 0

state.blockTimestamp.Тип: number

state.blockTimestamp.Когда был создан этот снимок состояния, временная метка Unix в миллисекундах.

- state.fundingRate (string · int32; обязательно)

state.fundingRate пример: 1000000000

state.fundingRate.Тип: string · int32

state.fundingRate.Ставка финансирования текущего интервала, fp9 в виде необработанной доли. Положительное значение означает, что лонги платят шортам.

state.fundingRate.format: int32

state.fundingRate.pattern: ^(?:-?[1-9][0-9]*|0)$

- state.nextFundingAt (number; обязательно)

state.nextFundingAt пример: 0

state.nextFundingAt.Тип: number

state.nextFundingAt.Когда в следующий раз будет произведен расчет финансирования, временная метка Unix в миллисекундах.

- state.lastFundingAt (number · nullable; обязательно)

state.lastFundingAt пример: 0

state.lastFundingAt.Тип: number · nullable

state.lastFundingAt.Когда финансирование было рассчитано в последний раз, временная метка Unix в миллисекундах. Null до первого расчета.

- state.vpiSpread (string · int32; обязательно)

state.vpiSpread пример: 1000000000

state.vpiSpread.Тип: string · int32

state.vpiSpread.Текущий спред, взимаемый сверх цены индекса, fp9 в виде необработанной доли.

state.vpiSpread.format: int32

state.vpiSpread.pattern: ^(?:-?[1-9][0-9]*|0)$

- state.vpiMarketDepthLong (string · int32; обязательно)

state.vpiMarketDepthLong пример: 1000000000

state.vpiMarketDepthLong.Тип: string · int32

state.vpiMarketDepthLong.Глубина, доступная на стороне лонгов, fp9 в необработанном виде. Крупные ордера против нее сдвигают цену исполнения.

state.vpiMarketDepthLong.format: int32

state.vpiMarketDepthLong.pattern: ^(?:-?[1-9][0-9]*|0)$

- state.vpiMarketDepthShort (string · int32; обязательно)

state.vpiMarketDepthShort пример: 1000000000

state.vpiMarketDepthShort.Тип: string · int32

state.vpiMarketDepthShort.Глубина, доступная на стороне шорта, fp9 в сыром виде.

state.vpiMarketDepthShort.format: int32

state.vpiMarketDepthShort.pattern: ^(?:-?[1-9][0-9]*|0)$

- state.vpiCoefficientLong (string · int32; обязательно)

state.vpiCoefficientLong пример: 1000000000

state.vpiCoefficientLong.Тип: string · int32

state.vpiCoefficientLong.Коэффициент влияния на цену, применяемый к длинным ордерам, fp9 в сыром виде.

state.vpiCoefficientLong.format: int32

state.vpiCoefficientLong.pattern: ^(?:-?[1-9][0-9]*|0)$

- state.vpiCoefficientShort (string · int32; обязательно)

state.vpiCoefficientShort пример: 1000000000

state.vpiCoefficientShort.Тип: string · int32

state.vpiCoefficientShort.Коэффициент влияния на цену, применяемый к коротким ордерам, fp9 в сыром виде.

state.vpiCoefficientShort.format: int32

state.vpiCoefficientShort.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings (object; обязательно)

settings пример: {
  "fee": "1000000000",
  "minInitMarginRatio": "1000000000",
  "initMarginRatio": "1000000000",
  "maintenanceMarginRatio": "1000000000",
  "maxLeverageByAccount": {
    "key": "1000000000"
  },
  "spreadLimit": "1000000000",
  "maxPriceImpact": "1000000000",
  "maxPriceSpread": "1000000000",
  "maxOpenNotionalLong": "1000000000",
  "maxOpenNotionalShort": "1000000000",
  "minStopTriggerDistanceRatio": "1000000000",
  "isCloseOnly": true,
  "isClosed": true,
  "isPaused": true,
  "isZeroSpread": true
}

settings.Тип: object

settings.Обязательные поля: fee, minInitMarginRatio, initMarginRatio, maintenanceMarginRatio, maxLeverageByAccount, spreadLimit, maxPriceImpact, maxPriceSpread, maxOpenNotionalLong, maxOpenNotionalShort, minStopTriggerDistanceRatio, isCloseOnly, isClosed, isPaused, isZeroSpread

settings.Типы обязательных полей: fee (string · int32; обязательно), minInitMarginRatio (string · int32; обязательно), initMarginRatio (string · int32; обязательно), maintenanceMarginRatio (string · int32; обязательно), maxLeverageByAccount (object; обязательно), spreadLimit (string · int32; обязательно), maxPriceImpact (string · int32; обязательно), maxPriceSpread (string · int32; обязательно), maxOpenNotionalLong (string · int32; обязательно), maxOpenNotionalShort (string · int32; обязательно), minStopTriggerDistanceRatio (string · int32; обязательно), isCloseOnly (boolean; обязательно), isClosed (boolean; обязательно), isPaused (boolean; обязательно), isZeroSpread (boolean; обязательно)

settings.Правила торговли на рынке: комиссии, коэффициенты маржи и лимиты, с которыми сверяется ордер.

- settings.fee (string · int32; обязательно)

settings.fee пример: 1000000000

settings.fee.Тип: string · int32

settings.fee.Ставка торговой комиссии, fp9 в виде сырой дроби (`1000000` = 0.1%).

settings.fee.format: int32

settings.fee.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.minInitMarginRatio (string · int32; обязательно)

settings.minInitMarginRatio пример: 1000000000

settings.minInitMarginRatio.Тип: string · int32

settings.minInitMarginRatio.Наименьший коэффициент начальной маржи, который принимает рынок, fp9 в виде необработанной дроби — предел кредитного плеча.

settings.minInitMarginRatio.format: int32

settings.minInitMarginRatio.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.initMarginRatio (string · int32; обязательно)

settings.initMarginRatio пример: 1000000000

settings.initMarginRatio.Тип: string · int32

settings.initMarginRatio.Коэффициент начальной маржи рынка по умолчанию, fp9 в виде необработанной дроби.

settings.initMarginRatio.format: int32

settings.initMarginRatio.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.maintenanceMarginRatio (string · int32; обязательно)

settings.maintenanceMarginRatio пример: 1000000000

settings.maintenanceMarginRatio.Тип: string · int32

settings.maintenanceMarginRatio.Коэффициент маржи, ниже которого позиция ликвидируется, fp9 в виде необработанной дроби.

settings.maintenanceMarginRatio.format: int32

settings.maintenanceMarginRatio.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.maxLeverageByAccount (object; обязательно)

settings.maxLeverageByAccount пример: {
  "key": "1000000000"
}

settings.maxLeverageByAccount.Тип: object

settings.maxLeverageByAccount.Наибольшее кредитное плечо, разрешённое для каждого типа аккаунта, fp9 в необработанном виде, с ключом по типу аккаунта.

settings.maxLeverageByAccount.*.Тип: string · int32

settings.maxLeverageByAccount.*.Пример: "1000000000"

settings.maxLeverageByAccount.*.format: int32

settings.maxLeverageByAccount.*.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.spreadLimit (string · int32; обязательно)

settings.spreadLimit пример: 1000000000

settings.spreadLimit.Тип: string · int32

settings.spreadLimit.Наибольший спред, который будет взимать рынок, fp9 в виде необработанной дроби.

settings.spreadLimit.format: int32

settings.spreadLimit.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.maxPriceImpact (string · int32; обязательно)

settings.maxPriceImpact пример: 1000000000

settings.maxPriceImpact.Тип: string · int32

settings.maxPriceImpact.Максимальное влияние на цену, которое может вызвать один ордер, fp9 в виде необработанной доли.

settings.maxPriceImpact.format: int32

settings.maxPriceImpact.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.maxPriceSpread (string · int32; обязательно)

settings.maxPriceSpread пример: 1000000000

settings.maxPriceSpread.Тип: string · int32

settings.maxPriceSpread.Максимально допустимое отклонение между рыночной и индексной ценой, fp9 в виде необработанной доли.

settings.maxPriceSpread.format: int32

settings.maxPriceSpread.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.maxOpenNotionalLong (string · int32; обязательно)

settings.maxOpenNotionalLong пример: 1000000000

settings.maxOpenNotionalLong.Тип: string · int32

settings.maxOpenNotionalLong.Ограничение на открытый номинал, удерживаемый в длинной позиции на этом рынке, fp9 в необработанном виде. `0` означает отсутствие ограничения.

settings.maxOpenNotionalLong.format: int32

settings.maxOpenNotionalLong.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.maxOpenNotionalShort (string · int32; обязательно)

settings.maxOpenNotionalShort пример: 1000000000

settings.maxOpenNotionalShort.Тип: string · int32

settings.maxOpenNotionalShort.Ограничение на открытый номинал, удерживаемый в короткой позиции на этом рынке, fp9 в необработанном виде. `0` означает отсутствие ограничения.

settings.maxOpenNotionalShort.format: int32

settings.maxOpenNotionalShort.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.minStopTriggerDistanceRatio (string · int32; обязательно)

settings.minStopTriggerDistanceRatio пример: 1000000000

settings.minStopTriggerDistanceRatio.Тип: string · int32

settings.minStopTriggerDistanceRatio.Минимальное расстояние между текущей ценой и триггером стоп-ордера, fp9 в виде необработанной доли. Более близкий триггер отодвигается на это расстояние.

settings.minStopTriggerDistanceRatio.format: int32

settings.minStopTriggerDistanceRatio.pattern: ^(?:-?[1-9][0-9]*|0)$

- settings.isCloseOnly (boolean; обязательно)

settings.isCloseOnly пример: true

settings.isCloseOnly.Тип: boolean

settings.isCloseOnly.Принимает ли рынок только ордера, закрывающие позицию.

- settings.isClosed (boolean; обязательно)

settings.isClosed пример: true

settings.isClosed.Тип: boolean

- settings.isPaused (boolean; обязательно)

settings.isPaused пример: true

settings.isPaused.Тип: boolean

- settings.isZeroSpread (boolean; обязательно)

settings.isZeroSpread пример: true

settings.isZeroSpread.Тип: boolean

settings.isZeroSpread.Торгуется ли рынок в настоящее время без спреда.

- change (object; обязательно)

change пример: {
  "initialPrice": 0,
  "initialPrice1h": 0,
  "initialPrice4h": 0
}

change.Тип: object

change.Обязательные поля: initialPrice, initialPrice1h, initialPrice4h

change.Типы обязательных полей: initialPrice (number; обязательно), initialPrice1h (number; обязательно), initialPrice4h (number; обязательно)

change.Справочные цены для расчёта изменений цены за 1 ч, 4 ч и 24 ч.

- change.initialPrice (number; обязательно)

change.initialPrice пример: 0

change.initialPrice.Тип: number

change.initialPrice.Цена 24 часов назад, в виде десятичного числа — база дневного изменения. `0`, если история недоступна.

- change.initialPrice1h (number; обязательно)

change.initialPrice1h пример: 0

change.initialPrice1h.Тип: number

change.initialPrice1h.Цена один час назад, в виде десятичного числа. `0`, если история недоступна.

- change.initialPrice4h (number; обязательно)

change.initialPrice4h пример: 0

change.initialPrice4h.Тип: number

change.initialPrice4h.Цена четыре часа назад, в виде десятичного числа. `0`, когда история недоступна.

- schedule (object · nullable; обязательно)

schedule пример: {
  "nextPauseAt": 0,
  "nextUnpauseAt": 0,
  "closestPauseAt": 0,
  "closestUnpauseAt": 0,
  "pausedAt": 0,
  "inPause": true
}

schedule.Тип: object · nullable

schedule.Обязательные поля: nextPauseAt, nextUnpauseAt, closestPauseAt, closestUnpauseAt, pausedAt, inPause

schedule.Типы обязательных полей: nextPauseAt (number; обязательно), nextUnpauseAt (number; обязательно), closestPauseAt (number; обязательно), closestUnpauseAt (number; обязательно), pausedAt (number; обязательно), inPause (boolean; обязательно)

schedule.Торговые сессии рынка. Null, когда рынок торгуется круглосуточно.

- schedule.nextPauseAt (number; обязательно)

schedule.nextPauseAt пример: 0

schedule.nextPauseAt.Тип: number

schedule.nextPauseAt.Начало следующего запланированного перерыва, временная метка Unix в миллисекундах. `0`, когда у рынка вообще нет перерывов, и `9007199254740991`, когда после текущего ничего не запланировано.

- schedule.nextUnpauseAt (number; обязательно)

schedule.nextUnpauseAt пример: 0

schedule.nextUnpauseAt.Тип: number

schedule.nextUnpauseAt.Конец перерыва, в котором находится рынок, или следующего перерыва, временная метка Unix в миллисекундах. Те же `0` и правила для сигнальных значений, что и `nextPauseAt`.

- schedule.closestPauseAt (number; обязательно)

schedule.closestPauseAt пример: 0

schedule.closestPauseAt.Тип: number

schedule.closestPauseAt.То же значение, что и `nextPauseAt`. Сохранено для обратной совместимости.

- schedule.closestUnpauseAt (number; обязательно)

schedule.closestUnpauseAt пример: 0

schedule.closestUnpauseAt.Тип: number

schedule.closestUnpauseAt.То же значение, что и `nextUnpauseAt`. Сохранено для обратной совместимости.

- schedule.pausedAt (number; обязательно)

schedule.pausedAt пример: 0

schedule.pausedAt.Тип: number

schedule.pausedAt.Начало текущего перерыва, метка времени Unix в миллисекундах. `0`, когда рынок торгуется.

- schedule.inPause (boolean; обязательно)

schedule.inPause пример: true

schedule.inPause.Тип: boolean

schedule.inPause.Находится ли рынок прямо сейчас в запланированном перерыве. Ордера отклоняются, пока он длится.

Пример



```json
{
  "id": "00000000-0000-4000-8000-000000000000",
  "config": {
    "baseAsset": "BTC",
    "quoteAsset": "USD",
    "settlementToken": "USD",
    "type": "base",
    "name": "BTC",
    "description": "Market description",
    "ticker": "BTC/USD",
    "imageLink": "https://app.storm.tg/markets/btc.png",
    "tags": [
      "Crypto"
    ],
    "category": "crypto",
    "priority": 0
  },
  "state": {
    "indexPrice": "1000000000",
    "blockTimestamp": 0,
    "fundingRate": "1000000000",
    "nextFundingAt": 0,
    "lastFundingAt": 0,
    "vpiSpread": "1000000000",
    "vpiMarketDepthLong": "1000000000",
    "vpiMarketDepthShort": "1000000000",
    "vpiCoefficientLong": "1000000000",
    "vpiCoefficientShort": "1000000000"
  },
  "settings": {
    "fee": "1000000000",
    "minInitMarginRatio": "1000000000",
    "initMarginRatio": "1000000000",
    "maintenanceMarginRatio": "1000000000",
    "maxLeverageByAccount": {
      "key": "1000000000"
    },
    "spreadLimit": "1000000000",
    "maxPriceImpact": "1000000000",
    "maxPriceSpread": "1000000000",
    "maxOpenNotionalLong": "1000000000",
    "maxOpenNotionalShort": "1000000000",
    "minStopTriggerDistanceRatio": "1000000000",
    "isCloseOnly": true,
    "isClosed": true,
    "isPaused": true,
    "isZeroSpread": true
  },
  "change": {
    "initialPrice": 0,
    "initialPrice1h": 0,
    "initialPrice4h": 0
  },
  "schedule": {
    "nextPauseAt": 0,
    "nextUnpauseAt": 0,
    "closestPauseAt": 0,
    "closestUnpauseAt": 0,
    "pausedAt": 0,
    "inPause": true
  }
}
```