# Изменить триггерную цену ордера

`PATCH /orders/{orderId}`

Редактирует ожидающий ордер: триггерную цену, зарезервированный `amount`, допуск проскальзывания или базовый размер. Движок делает это путём замены ордера, поэтому
ответ содержит **новый ордер с новым идентификатором**, а предыдущий в итоге становится `canceled_by_update`.

Проверено вне схемы:

- Ордер должен существовать и всё ещё быть `active`, а его счёт должен принадлежать вызывающему и находиться в торговом статусе.
- Ордера `market` и `liquidation` вообще нельзя редактировать, как и ордер `stop` / `take`, созданный без триггерной цены
  (`order_not_updatable`); установленную триггерную цену нельзя сбросить в `0` (`trigger_price_reset_forbidden`).
- Увеличение резерва ордера на увеличение требует разницу в качестве свободного баланса и отклоняется, пока счёт заблокирован лимитом управляемого капитала.
- Ордер, созданный с `sizeMode: base`, требует нового `amount` всякий раз, когда изменяется `baseSize` (`base_size_requires_amount`).
- Рынок должен быть открыт, и полученный ордер перепроверяется точно так же, как при создании — те же коды формы полей, триггерной цены и номинала, перечисленные в `POST /orders`, применяются здесь, кроме `invalid_leverage`: кредитное плечо нельзя редактировать.

Запрос, который не задаёт ни одного из полей, ничего не меняет и возвращает ордер в текущем состоянии.

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

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

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

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

## Параметры

- path: orderId (string · uuid; обязательно). Идентификатор ордера, который нужно редактировать.

Тип: string · uuid

format: uuid

<a id="request-body-orderupdaterequest"></a>

## Тело запроса · OrderUpdateRequest

application/json · обязательно

Схема: OrderUpdateRequest

Тип: object

Обязательные поля: нет

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

triggerPrice пример: 65000000000000

triggerPrice.Тип: string · int32

triggerPrice.Новая триггерная цена, fp9 в необработанном виде. Границы перепроверяются относительно текущей рыночной цены (а для `stop` / `take` — относительно цены ликвидации позиции). Уже установленную триггерную цену нельзя сбросить до `0`.

triggerPrice.format: int32

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

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

amount пример: 100000000000

amount.Тип: string · int32

amount.Новый `amount`, fp9 в необработанном виде, в единице, используемой его классом ордера — см. то же поле при создании ордера. В ордере на увеличение это резерв котируемого актива: для его увеличения требуется, чтобы разница была доступна в виде свободного баланса, и он требуется вместе с `baseSize` для ордера с размером в `base`. В ордере на закрытие это размер базового актива закрываемой позиции.

amount.format: int32

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

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

expectedAmount пример: 1000000000

expectedAmount.Тип: string · int32

expectedAmount.Новый допуск проскальзывания, fp9 в исходном виде. См. то же поле при создании ордера.

expectedAmount.format: int32

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

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

baseSize пример: 1000000000

baseSize.Тип: string · int32

baseSize.Новый размер в единицах базового актива, fp9 в исходном виде. Только для ордеров, созданных с `sizeMode: base`.

baseSize.format: int32

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

Пример



```json
{}
```

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

## Пример · cURL

```bash
curl --request PATCH 'https://api.upscale.trade/orders/{orderId}' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{}'
```

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

## Пример · JavaScript

```javascript
const response = await fetch("https://api.upscale.trade/orders/{orderId}", {
  method: "PATCH",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: "{}",
});
console.log(response.status, await response.text());
```

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

## Пример · Python

```python
import requests

response = requests.request(
    "PATCH",
    "https://api.upscale.trade/orders/{orderId}",
    headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY","Content-Type":"application/json"},
    data="{}",
    timeout=30,
)
print(response.status_code, response.text)
```

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

## Ответ 401

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

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

## Ответ 403

**403**  — Ордер больше не активен. Аккаунт принадлежит другому пользователю (`account_access_denied`), или запрос аутентифицирован с помощью API-ключа, пока `api_trading` отключён на аккаунте (`api_trading_not_enabled`). Торговля на аккаунте завершена в его текущем статусе (`challenge_closed`), или аккаунт заблокирован лимитом управляемого капитала (`funded_limit_trading_locked`). Рынок приостановлен (`market_paused`) или принимает только ордера на закрытие (`market_close_only`).

<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-orderresponse"></a>

## Ответ default · OrderResponse

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

Схема: OrderResponse

Тип: object

Обязательные поля: id, txId, trader, market, status, type, direction, triggerPrice, requestedTriggerPrice, stopPrice, limitPrice, stopTriggerPrice, takeTriggerPrice, trailingStopActivationPrice, trailingStopOffset, trailingStopOffsetPercent, leverage, index, positionId, parentOrderId, expiration, amount, indexPrice, settlementOraclePrice, createdAt, error, realizedPnl, rawRealizedPnl, profitAdjustmentApplied, executedAfterPause, sizeMode, baseSize, reservedAmount, errorCode, reason

Типы обязательных полей: id (string · uuid; обязательно), txId (string; обязательно), trader (string · uuid; обязательно), market (string · uuid; обязательно), status (string · enum; обязательно), type (string · enum; обязательно), direction (string · enum; обязательно), triggerPrice (string · int32; обязательно), requestedTriggerPrice (string · int32 · nullable; обязательно), stopPrice (string · int32; обязательно), limitPrice (string · int32; обязательно), stopTriggerPrice (string · int32; обязательно), takeTriggerPrice (string · int32; обязательно), trailingStopActivationPrice (string · int32; обязательно), trailingStopOffset (string · int32; обязательно), trailingStopOffsetPercent (string · int32; обязательно), leverage (string · int32 · nullable; обязательно), index (string; обязательно), positionId (string[]; обязательно), parentOrderId (string[]; обязательно), expiration (string · date-time · nullable; обязательно), amount (string · int32; обязательно), indexPrice (string · int32 · nullable; обязательно), settlementOraclePrice (string · int32; обязательно), createdAt (string · date-time; обязательно), error (string[]; обязательно), realizedPnl (string · int32 · nullable; обязательно), rawRealizedPnl (string · int32 · nullable; обязательно), profitAdjustmentApplied (boolean; обязательно), executedAfterPause (boolean; обязательно), sizeMode (string · enum; обязательно), baseSize (string · int32 · nullable; обязательно), reservedAmount (string · int32 · nullable; обязательно), errorCode (string[]; обязательно), reason (string · enum · nullable; обязательно)

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

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

id.Тип: string · uuid

id.Идентификатор ордера.

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})$

- txId (string; обязательно)

txId пример: string

txId.Тип: string

txId.Идентификатор ордера. Сохранён для обратной совместимости, всегда равен `id`.

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

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

trader.Тип: string · uuid

trader.Аккаунт трейдера, которому принадлежит ордер.

trader.format: uuid

trader.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})$

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

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

market.Тип: string · uuid

market.Рынок, на котором размещён ордер.

market.format: uuid

market.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})$

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

status пример: active

status.Тип: string · enum

status.Состояние жизненного цикла: `active`, пока он ожидает, `executed` после исполнения, `canceled` при отмене трейдером или платформой, `canceled_by_update` при замене в результате редактирования, `canceled_by_position` когда позиция, к которой он был привязан, исчезла, `canceled_by_error` при неудачном исполнении — см. `errorCode`.

status.Допустимые значения: ["active","canceled","canceled_by_update","canceled_by_error","canceled_by_position","executed"]

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

type пример: market

type.Тип: string · enum

type.Тип ордера. `liquidation` обозначает ордер, который движок выставил сам.

type.Допустимые значения: ["market","limit","stop","trailing_stop","take","stop_limit","stop_market","liquidation"]

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

direction пример: long

direction.Тип: string · enum

direction.Направление ордера.

direction.Допустимые значения: ["long","short"]

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

triggerPrice пример: 1000000000

triggerPrice.Тип: string · int32

triggerPrice.Цена, при которой срабатывает ордер, fp9 в необработанном виде. `0`, когда ордер не имеет триггера.

triggerPrice.format: int32

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

- requestedTriggerPrice (string · int32 · nullable; обязательно)

requestedTriggerPrice пример: 1000000000

requestedTriggerPrice.Тип: string · int32 · nullable

requestedTriggerPrice.Цена триггера, как запрошено, до того как движок вытолкнул её до минимального стоп-расстояния, fp9 в исходном виде. Null, когда запрошенная цена была оставлена как есть.

requestedTriggerPrice.format: int32

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

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

stopPrice пример: 1000000000

stopPrice.Тип: string · int32

stopPrice.Цена триггера ордера `stop_market` / `stop_limit`, fp9 в исходном виде; `0` для любого другого типа.

stopPrice.format: int32

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

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

limitPrice пример: 1000000000

limitPrice.Тип: string · int32

limitPrice.Цена, по которой ордер размещается при срабатывании, fp9 в исходном виде: цена стоп-лимит, с возвратом к цене триггера.

limitPrice.format: int32

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

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

stopTriggerPrice пример: 1000000000

stopTriggerPrice.Тип: string · int32

stopTriggerPrice.Стоп-лосс, привязанный к ордеру, fp9 в исходном виде. `0`, если он не привязан.

stopTriggerPrice.format: int32

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

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

takeTriggerPrice пример: 1000000000

takeTriggerPrice.Тип: string · int32

takeTriggerPrice.Тейк-профит, привязанный к ордеру, fp9 в исходном виде. `0`, если он не привязан.

takeTriggerPrice.format: int32

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

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

trailingStopActivationPrice пример: 1000000000

trailingStopActivationPrice.Тип: string · int32

trailingStopActivationPrice.Цена, при которой трейлинг-стоп начинает следовать, fp9 в сыром виде. `0`, когда он следует с момента создания.

trailingStopActivationPrice.format: int32

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

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

trailingStopOffset пример: 1000000000

trailingStopOffset.Тип: string · int32

trailingStopOffset.Дистанция трейлинга как абсолютная сумма в котируемой валюте, fp9 в сыром виде. `0`, когда дистанция задана в процентах.

trailingStopOffset.format: int32

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

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

trailingStopOffsetPercent пример: 1000000000

trailingStopOffsetPercent.Тип: string · int32

trailingStopOffsetPercent.Дистанция трейлинга как доля цены, fp9 в сыром виде. `0`, когда дистанция абсолютная.

trailingStopOffsetPercent.format: int32

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

- leverage (string · int32 · nullable; обязательно)

leverage пример: 1000000000

leverage.Тип: string · int32 · nullable

leverage.Кредитное плечо ордера, fp9 в сыром виде. Null для ордеров на закрытие, которые наследуют кредитное плечо позиции.

leverage.format: int32

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

- index (string; обязательно)

index пример: string

index.Тип: string

index.Идентификатор ордера. Сохранён для обратной совместимости, всегда равен `id`.

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

positionId пример: [
  "string"
]

positionId.Тип: string[]

positionId.Позиция, к которой привязан ордер на закрытие. Null для ордеров, которые открывают или увеличивают позицию.

positionId.[]Тип: string

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

parentOrderId пример: [
  "string"
]

parentOrderId.Тип: string[]

parentOrderId.Ордер, из которого был порождён этот: стоп или тейк, созданный из `stopTriggerPrice` / `takeTriggerPrice`, или лимитный ордер, в который превратился `stop_limit`. Null, когда ордер был отправлен напрямую.

parentOrderId.[]Тип: string

- expiration (string · date-time · nullable; обязательно)

expiration пример: 2026-05-01T12:30:00.000Z

expiration.Тип: string · date-time · nullable

expiration.Всегда null. Сохранено для обратной совместимости — ордера не истекают сами по себе.

expiration.format: date-time

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

amount пример: 1000000000

amount.Тип: string · int32

amount.Размер ордера, fp9 в сыром виде, в единице, которую использует его класс: для ордера на увеличение — сумма в котируемой валюте — резерв, пока он ожидает, и то, что он фактически потратил после исполнения; для ордера на закрытие (`stop`, `take`, `trailing_stop`) — размер базового актива, который он закрывает, как было запрошено при создании.

amount.format: int32

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

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

indexPrice пример: 1000000000

indexPrice.Тип: string · int32 · nullable

indexPrice.Цена индекса, по которой был исполнен ордер, fp9 в сыром виде. Null, пока ордер не исполнен.

indexPrice.format: int32

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

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

settlementOraclePrice пример: 1000000000

settlementOraclePrice.Тип: string · int32

settlementOraclePrice.Всегда `1000000000` (1.0). Сохранено для обратной совместимости.

settlementOraclePrice.format: int32

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

- createdAt (string · date-time; обязательно)

createdAt пример: 2026-05-01T12:30:00.000Z

createdAt.Тип: string · date-time

createdAt.Когда ордер был принят.

createdAt.format: date-time

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

error пример: [
  "string"
]

error.Тип: string[]

error.Всегда null. Сохранён для обратной совместимости — используйте `errorCode`.

error.[]Тип: string

- realizedPnl (string · int32 · nullable; обязательно)

realizedPnl пример: 1000000000

realizedPnl.Тип: string · int32 · nullable

realizedPnl.Pnl, реализованный этим ордером, fp9 в сыром виде. Устанавливается только для исполненного ордера на закрытие; null, пока ордер в ожидании, и для ордеров, которые открывают или увеличивают позицию.

realizedPnl.format: int32

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

- rawRealizedPnl (string · int32 · nullable; обязательно)

rawRealizedPnl пример: 1000000000

rawRealizedPnl.Тип: string · int32 · nullable

rawRealizedPnl.Реализованный pnl до 60-секундной корректировки, fp9 в сыром виде. Отличается от `realizedPnl` только тогда, когда корректировка сработала.

rawRealizedPnl.format: int32

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

- profitAdjustmentApplied (boolean; обязательно)

profitAdjustmentApplied пример: true

profitAdjustmentApplied.Тип: boolean

profitAdjustmentApplied.Ограничила ли 60-секундная корректировка прибыль этого ордера — в течение минуты после открытия или увеличения позиции pnl позиции не может вырасти выше значения, которое было в тот момент.

- executedAfterPause (boolean; обязательно)

executedAfterPause пример: true

executedAfterPause.Тип: boolean

executedAfterPause.Был ли ордер исполнен после рыночной паузы. Не задаётся текущим движком — всегда `false`.

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

sizeMode пример: quote

sizeMode.Тип: string · enum

sizeMode.Как был выражен размер при создании: `quote` задаёт размер ордера по `amount`, `base` задаёт его по `baseSize`.

sizeMode.Допустимые значения: ["quote","base"]

- baseSize (string · int32 · nullable; обязательно)

baseSize пример: 1000000000

baseSize.Тип: string · int32 · nullable

baseSize.Размер ордера в единицах базового актива, fp9 в сыром виде. Null для ордеров с размером `quote`.

baseSize.format: int32

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

- reservedAmount (string · int32 · nullable; обязательно)

reservedAmount пример: 1000000000

reservedAmount.Тип: string · int32 · nullable

reservedAmount.Сумма в котируемой валюте, зарезервированная при создании ордера с sizeMode=base, fp9 в сыром виде. Остаётся равной исходному резерву после исполнения, тогда как `amount` перезаписывается на потраченную сумму. Null для ордеров с размером `quote`, где `amount` — это резерв.

reservedAmount.format: int32

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

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

errorCode пример: [
  "string"
]

errorCode.Тип: string[]

errorCode.Почему исполнение не удалось, задаётся вместе со статусом `canceled_by_error` — например, `insufficient_reserve_at_execution`, `order_below_min_notional`, `order_exceeds_market_depth` или `slippage_tolerance`. В остальных случаях Null.

errorCode.[]Тип: string

- reason (string · enum · nullable; обязательно)

reason пример: force_close

reason.Тип: string · enum · nullable

reason.Почему платформа сама отменила ордер, например `force_close` или `weekly_session_risk_close`. Null для отмен, инициированных трейдером.

reason.Допустимые значения: ["force_close","stop_accounts_fail","stop_accounts_freeze","stop_accounts_promote","stop_accounts_manual","weekly_session_risk_close",null]

Пример



```json
{
  "id": "00000000-0000-4000-8000-000000000000",
  "txId": "string",
  "trader": "00000000-0000-4000-8000-000000000000",
  "market": "00000000-0000-4000-8000-000000000000",
  "status": "active",
  "type": "market",
  "direction": "long",
  "triggerPrice": "1000000000",
  "requestedTriggerPrice": "1000000000",
  "stopPrice": "1000000000",
  "limitPrice": "1000000000",
  "stopTriggerPrice": "1000000000",
  "takeTriggerPrice": "1000000000",
  "trailingStopActivationPrice": "1000000000",
  "trailingStopOffset": "1000000000",
  "trailingStopOffsetPercent": "1000000000",
  "leverage": "1000000000",
  "index": "string",
  "positionId": [
    "string"
  ],
  "parentOrderId": [
    "string"
  ],
  "expiration": "2026-05-01T12:30:00.000Z",
  "amount": "1000000000",
  "indexPrice": "1000000000",
  "settlementOraclePrice": "1000000000",
  "createdAt": "2026-05-01T12:30:00.000Z",
  "error": [
    "string"
  ],
  "realizedPnl": "1000000000",
  "rawRealizedPnl": "1000000000",
  "profitAdjustmentApplied": true,
  "executedAfterPause": true,
  "sizeMode": "quote",
  "baseSize": "1000000000",
  "reservedAmount": "1000000000",
  "errorCode": [
    "string"
  ],
  "reason": "force_close"
}
```