# l2a exchange itch/ouch trading API
## Идеальное апи на взгляд маркетмейкера
https://hackernoon.com/the-ideal-crypto-trading-api-b1bbb2675875
Нужно описать сервисное апи, ответственное за авторизацию и передачу текстовых сообщений. Это апи не чувствительно к задержкам и имеет сложный протокол сериализации тк оперирует типами нефиксировонной длиннны.
Также нужно придумать груповое добавление/удаление ордеров.
Фид для пользователя без подписей.
Подписи биржи только по запросу, те никакого бродкаста подписанных сообщений(это есть ресурсы). В будущем может будет фид подписанных сообщений.
## Мультимаркет
**спот**:
мейкер - ставит лимит и ждет
тейкер - ставит маркет и забирает
**своп**:
спот + открытие/закрытие позиции
**Вейл**:
мейкер - ставит лимит и ждет
тейкер - ставит оффер и ждет
мейкер - апрувит
для поддержки всех площадок в одном апи надо:
для createOrder значащие поля:
1. type - open/close; short/long; limit/market; etc.
2. price - price of order
3. qty - quantity of order
4. instrument_id - market/pair ID
5. order_sub_type - FOK/IOC etc
для выставления плеча в случае свопа - используется в паре сметодом SetLeverage, устанавливающим плечо на пару и сторону
1. instrument_id - market/pair ID
2. leverage - leverage level from 1-100
3. side - Side: 1.FIXED-LONG 2.FIXED-SHORT 3.CROSSED
## Транспорт
трейдер постит бирже рестом, получает отчет через WS
**Endpoints**
--non--
## сообщения
> **REST+WS MIX**
0. A - Auth User Message
1. S - Get Signature Message
2. O - Create Order Message
3. U - Update Order Message
4. C - Cancel Order Message
5. R - Reject Order Message
6. L - Set leverage Order Message
> **WS FEEDS ONLY**
0. E - Exetued Order Message
1. S - Order Book Lvl2 Message Feed
2. T - Order Book Lvl3 Message Feed
## Auth User Message
**POST REQUEST**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “A” | “A” = Auth Session Message ID. |
| Timestamp | 8 | int | Timestamp in nanoseconds |
| Signature | 65 | int | Signature of message |
**POST RESPONSE**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “a” | “a” = Auth Session Message ID. |
| Timestamp_end | 8 | int | Timestamp in nanoseconds of expiration of session |
| Account_Id | 4 | int | Assigned by Auth service User ID |
| Signature | 65 | int | Signature of message |
## Get Signature Message
**POST REQUEST**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “S” | “S” = Get Signature Message Id. |
| Instrument_id | 2 | int | market/pair ID |
| Order Reference Number | 8 | int | unique order reference number. |
| Account_Id | 4 | int | Assigned by Auth service User ID |
| Signature | 65 | int | Signature of message |
> Instrument_id = market ID, for close signature = 65535
**POST RESPONSE**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “s” | “s” = Get Signature Message id. |
| Timestamp | 8 | int | Timestamp of order in nanoseconds |
| Instrument_id | 2 | int | market/pair ID |
| blockchain_id | 1 | int | blockchain ID |
| SignatureL2 | 65 | int | Signature of L2 oracle |
| SignatureTaker | 65 | int | Signature of Taker order, if exist |
| SignatureMaker | 65 | int | Signature of Maker order, if exist |
## Create Order Message
**POST REQUEST**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “O” | “O” = Create Order Message ID. |
| Instrument_id | 2 | int | market/pair ID |
| Order_ID | 4 | int | unique user generated order id. must be uniq per user trading sesion. |
| Order_type | 1 | int | 0-buy limit/1- buy market/ 2- sell limit / 3-sell market |
| Price | 4 | int | price for limit order, for market = 0x7FFFFFFF |
| Quantity | 8 | int | quantity of order |
| Order_Sub_Type | 1 | int | order sub type FOC/IOC etc |
| Account_Id | 4 | int | Assigned by Auth service User ID |
| Signature | 65 | int | Signature of message |
**WS RESPONSE**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “o” | “o” = Create Order Message Id. |
| Timestamp | 8 | int | Timestamp of order in nanoseconds |
| Instrument_id | 2 | int | market/pair ID |
| Order_ID | 4 | int | unique user generated order id. must be uniq per user trading sesion. |
| Order Reference Number | 8 | int | unique order reference number |
| Order_type | 1 | int | 0-limit/1-market |
| Price | 4 | int | price for limit order, for market = 0x7FFFFFFF |
| Quantity | 8 | int | quantity of order |
| Order_Sub_Type | 1 | int | order sub type FOC/IOC etc |
**Order types**
> spot
0-buy limit
1-buy market
2-sell limit
3-sell market
> swap
4-open long
5-open short
6-close long
7-close short
> whale
8 - set offer
9 - set bid
10 - swap
## Update Order Message
**POST REQUEST**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “U” | “U” = Update Order Message Id. |
| Instrument_id | 2 | int | market/pair ID |
| Order Reference Number | 8 | int | unique order reference number. |
| Price | 4 | int | price for limit order, for market = 0x7FFFFFFF |
| Quantity | 8 | int | quantity of order |
| Account_Id | 4 | int | Assigned by Auth service User ID |
| Signature | 65 | int | Signature of message |
**WS RESPONSE**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “u” | “u” = Update Message Id. |
| Timestamp | 8 | int | Timestamp of order in nanoseconds |
| Order Reference Number | 8 | int | unique order reference number |
| Order_type | 1 | int | 0-limit/1-market |
| Price | 4 | int | price for limit order, for market = 0x7FFFFFFF |
| Quantity | 8 | int | quantity of order |
| Instrument_id | 2 | int | market/pair ID |
| Order_Sub_Type | 1 | int | order sub type FOC/IOC etc |
## Cancel Order Message
**POST REQUEST**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “C” | “C” = Cancel Order Message Id. |
| Instrument_id | 2 | int | market/pair ID |
| Order Reference Number | 8 | int | unique order reference number. |
| Account_Id | 4 | int | Assigned by Auth service User ID |
| Signature | 65 | int | Signature of message |
**WS RESPONSE**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “c” | “c” = Canceled Order Message Id. |
| Timestamp | 8 | int | Timestamp of order in nanoseconds |
| Instrument_id | 2 | int | market/pair ID |
| Order Reference Number | 8 | int | unique order reference number |
| Quantity | 8 | int | quantity of order |
## Set leverage Order Message
**POST REQUEST**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “L” | “L” = Set leverage Order Message Id. |
| Instrument_id | 2 | int | market/pair ID |
| leverage | 1 | int | leverage level from 1-100 |
| side | 1 | int | Side: 1.FIXED-LONG 2.FIXED-SHORT 3.CROSSED |
| Account_Id | 4 | int | Assigned by Auth service User ID |
| Signature | 65 | int | Signature of message |
**WS RESPONSE**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “l” | “l” = Set leverage Order Message Id. |
| Instrument_id | 2 | int | market/pair ID |
| leverage | 1 | int | leverage level from 1-100 |
| side | 1 | int | Side: 1.FIXED-LONG 2.FIXED-SHORT 3.CROSSED |
| Account_Id | 4 | int | Assigned by Auth service User ID |
# WEBSOCKET FEED REQUEST
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “E/H/S/T” | Feed msg type |
| Instrument_id | 2 | int | market/pair ID |
| Account_id | 4 | int | Assigned by Auth service User ID |
| Signature | 65 | int | Signature of message |
“E” = Executed Message feed.
“H” = Auth user report messages feed - broadcast last signed msgs for every channel, after live feed forCreate/Delete/Update/Reject response messages.
“S” = Order Book Lvl2 Message feed.
"T" = Order Book Lvl3 Message feed.
## Reject Order Message
**WS RESPONSE**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “R” | “R” = Reject Order Message Id. |
| Timestamp | 8 | int | Timestamp of order in nanoseconds |
| Order_ID | 4 | int | unique user generated order id. must be uniq per user trading sesion. |
| Instrument_id | 2 | int | market/pair ID |
| Reason | 1 | int | Reason the order was rejected |
0 - The secboard, instrument, board or market is not tradeable.
1 - Invalid quantity or quantity exceeds maximum limit.
2 - Invalid orderbook identifier.
3 - The order is not allowed at this time.
4 - Invalid price.
5 - Invalid minimum quantity.
6 - Invalid Order Type. For example, the Time In Force value is not supported in current trading session.
7 - Unknown. Contact support for further information.
## Execute Order Message Feed
**WS FEED**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “E” | “E” = Executed Message Id. |
| Timestamp | 8 | int | Timestamp of order in nanoseconds |
| Instrument_id | 2 | int | market/pair ID |
| Order Reference Number | 8 | int | unique taker order reference number |
| Maker Reference Number | 8 | int | unique maker order reference number |
| Executed Price | 4 | int | price for limit order |
| Executed Quantity | 8 | int | quantity of order |
## Order Book Lvl2 Message Feed
**WS FEED**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “S” | “S” = Order Book Lvl2 Message Id. |
| Price | 4 | int | price for limit order |
| Quantity | 8 | int | quantity of order |
| Side | 1 | int | 0-buy/1-sell |
| num-orders | 2 | int | number of orders |
> after complite in feed will broadcast E/C/U/O messages
## Order Book Lvl3 Message Feed
**WS FEED**
| descrption | length, bytes | value/type | notes |
| -------- | -------- | -------- | -------- |
| Message_type | 1 | “T” | “T” = Order Book Lvl3 Message Id. |
| Price | 4 | int | price for limit order |
| Quantity | 8 | int | quantity of order |
| Side | 1 | int | 0-buy/1-sell |
| Order Reference Number | 8 | int | unique order reference number |
> after complite in feed will broadcast E/C/U/O messages