# Эндпоинты модулей

## Эндпоинты POST

Данные эндпоинты требуют наличие подписанной транзакции (Tx). Здесь вы можете найти пример использования клиента cosmjs <https://github.com/sei-protocol/sei-chain/blob/master/oracle/oracle.js>

### Размещение ордеров

#### Модуль DEX

Данный эндпоинт принимает запрос на массовое размещение ордеров.

```
rpc PlaceOrders(MsgPlaceOrders) returns (MsgPlaceOrdersResponse);

message MsgPlaceOrders {
  string creator = 1;
  repeated OrderPlacement orders = 2;
  string contractAddr = 3;
  repeated cosmos.base.v1beta1.Coin funds = 5 [
    (gogoproto.nullable) = false,
    (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
  ];
}

message MsgPlaceOrdersResponse {
  repeated uint64 orderIds = 1;
}
```

### Отмена ордеров

#### Модуль DEX

Данный эндпоинт принимает запрос на массовую отмену ордеров.

```
rpc CancelOrders(MsgCancelOrders) returns (MsgCancelOrdersResponse);

message MsgCancelOrders {
  string creator = 1;
  repeated OrderCancellation orderCancellations = 2;
  string contractAddr = 3;
}

message MsgCancelOrdersResponse {}
```

### Ликвидация

#### Модуль DEX

Эндпоинт ликвидирует аккаунт.

```
message MsgLiquidation {
  string creator = 1;
  string accountToLiquidate = 2;
  string contractAddr = 3;
}

message MsgLiquidationResponse {}
```

### Предварительное голосование по обменному курсу

#### Модуль Оракул

Данный эндпоинт отправляет оракулу хэш предварительного голосования для следующего цикла.

```
message MsgAggregateExchangeRatePrevote {
  string hash = 1;
  string feeder = 2;
  string validator = 3;
}

message MsgAggregateExchangeRatePrevoteResponse {}
```

### Голосование по обменному курсу

#### Модуль Оракул

Эндпоинт используется для голосования по величине обменного курса в текущем цикле голосования. Предоставляемые биржевые курсы должны совпадать с хэшем предварительного голосования предыдущего цикла голосования (для текущего цикла голосования).

```
message MsgAggregateExchangeRateVote {
  string salt = 1;
  string exchange_rates = 2;
  string feeder = 3;
  string validator = 4;
}

message MsgAggregateExchangeRateVoteResponse {}
```

## Эндпоинты GET

### Получение последних сделок

#### Модуль DEX

Эндпоинт принимает id рынка и возвращает сделки, размещенные в последнем блоке.

```
GetSettledTradesRequest {
  int market_id;
}

GetSettledTradesResponse {
  vector<Order> settled_trades;
}
```

### Получение полной книги ордеров

#### Модуль DEX

Эндпоинт принимает id рынка и возвращает полную книгу ордеров в последнем блоке.\
**Сервис**: `codchen.matrixchain.dex.Query`\
**Метод**: `LongBook`\
**Формат сообщения:**

```
// Request
QueryGetLongBookRequest {
  uint64 id = 1;
}

// Response
QueryGetLongBookResponse {
  LongBook LongBook = 1 [(gogoproto.nullable) = false];
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: codchen.matrixchain.dex.Query
? Choose a method: LongBook
Message json (type ? to see defaults): {"id": 0}
```

### Получение краткой книги ордеров

#### Модуль DEX

Эндпоинт принимает id рынка и возвращает краткую книгу ордеров в последнем блоке.\
**Сервис**: `codchen.matrixchain.dex.Query`\
**Метод**: `ShortBook`\
**Формат сообщения:**

```
// Request
QueryGetShortBookRequest {
  uint64 id = 1;
}

// Response
QueryGetShortBookResponse {
  ShortBook ShortBook = 1 [(gogoproto.nullable) = false];
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: codchen.matrixchain.dex.Query
? Choose a method: ShortBook
Message json (type ? to see defaults): {"id": 0}
```

### Получение обменного курса

#### Модуль Оракул

Эндпоинт возвращает обменный курс для определенной валюты. \
**Сервис**: `seiprotocol.seichain.oracle.Query`\
**Метод**: `ExchangeRate`\
**Формат сообщения:**

```
// Request
QueryExchangeRatesRequest {}

// Response
QueryExchangeRateResponse {
  OracleExchangeRate oracle_exchange_rate = 1 [(gogoproto.nullable) = false];
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: ExchangeRate
Message json (type ? to see defaults): {"denom": "foo"}
```

### Получение обменных курсов

#### Модуль Оракул

Эндпоинт возвращает все активные обменные курсы. \
**Сервис**: `seiprotocol.seichain.oracle.Query`\
**Метод**: `ExchangeRates`\
**Формат сообщения:**

```
// Request
QueryExchangeRateRequest {
  string denom = 1;
}

DenomOracleExchangeRatePair {
  string denom = 1;
  OracleExchangeRate oracle_exchange_rate = 2 [(gogoproto.nullable) = false];
}

// Response
QueryExchangeRatesResponse {
  // exchange_rates defines a list of the exchange rate for all whitelisted denoms.
  repeated DenomOracleExchangeRatePair denom_oracle_exchange_rate_pairs = 1;
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: ExchangeRates
Message json (type ? to see defaults): {}
```

### Получение целей для голосования

#### Модуль Оракул

Эндпоинт возвращает все наименования, доступные для голосования по цене. \
**Сервис**: `seiprotocol.seichain.oracle.Query`\
**Метод**: `VoteTargets`\
**Формат сообщения:**

```
// Request
QueryVoteTargetsRequest {}

// Response
QueryVoteTargetsResponse {
  repeated string vote_targets = 1;
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: VoteTargets
Message json (type ? to see defaults): {}
```

### Получение счетчика пропусков

#### Модуль Оракул

Эндпоинт возвращает счетчик пропусков для конкретного валидатора. \
**Сервис**: `seiprotocol.seichain.oracle.Query`\
**Метод**: `MissCounter`\
**Формат сообщения:**

```
// Request
QueryMissCounterRequest {
  string validator_addr = 1;
}

// Response
QueryMissCounterResponse {
  uint64 miss_counter = 1;
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: MissCounter
Message json (type ? to see defaults): {"validator_addr": "seivaloperADDR"}
```

{% hint style="info" %}
Другие эндпоинды, доступные для использования, а также подробную спецификацию вы сможете найти здесь <https://github.com/sei-protocol/sei-chain/blob/master/proto/oracle/query.proto>
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://seinetwork.gitbook.io/docs/nodes-and-validators/module-endpoints.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
