gRPC API
L'API Prediction Market expose une interface gRPC pour une intégration haute performance et à faible latence. L'API gRPC fournit les mêmes fonctionnalités que l'API REST en utilisant les Protocol Buffers.
Adresse par défaut : {host}:50055
Package : prediction
Service : PredictionService
Définition Proto
Le fichier .proto complet est disponible à src/proto/prediction.proto dans le dépôt source. Voici un résumé de tous les RPCs disponibles.
Opérations sur les marchés
CreateMarket
rpc CreateMarket(CreateMarketRequest) returns (MarketResponse);
| Champ | Type | Description |
|---|---|---|
operator_id | string | Votre identifiant d'opérateur |
category_id | string | UUID de la catégorie (optionnel) |
title | string | Titre du marché |
description | string | Description du marché |
image_url | string | URL de l'image |
currency | string | Code de la devise |
trading_starts_at | int64 | Horodatage Unix (ms) |
trading_ends_at | int64 | Horodatage Unix (ms) |
outcomes | MarketOutcomeInput[] | Définitions des résultats |
GetMarket
rpc GetMarket(GetMarketRequest) returns (MarketResponse);
| Champ | Type | Description |
|---|---|---|
id | string | UUID du marché |
operator_id | string | Optionnel — valide la propriété si fourni |
ListMarkets
rpc ListMarkets(ListMarketsRequest) returns (ListMarketsResponse);
| Champ | Type | Description |
|---|---|---|
operator_id | string | Filtrer par opérateur |
category_id | string | Filtrer par catégorie |
status | string[] | Filtrer par statuts |
search | string | Rechercher dans le titre |
cursor | string | Curseur de pagination |
limit | int32 | Taille de la page |
UpdateMarket
rpc UpdateMarket(UpdateMarketRequest) returns (MarketResponse);
Cycle de vie du marché
rpc OpenMarket(MarketActionRequest) returns (MarketResponse);
rpc SuspendMarket(SuspendMarketRequest) returns (MarketResponse);
rpc ResumeMarket(MarketActionRequest) returns (MarketResponse);
rpc CloseMarket(MarketActionRequest) returns (MarketResponse);
rpc CancelMarket(CancelMarketRequest) returns (MarketResponse);
rpc ResolveMarket(ResolveMarketRequest) returns (MarketResponse);
Opérations sur les catégories
CreateCategory
rpc CreateCategory(CreateCategoryRequest) returns (CategoryResponse);
ListCategories
rpc ListCategories(ListCategoriesRequest) returns (ListCategoriesResponse);
Opérations de trading
PlaceOrder
rpc PlaceOrder(PlaceOrderRequest) returns (OrderResultResponse);
| Champ | Type | Description |
|---|---|---|
operator_id | string | Votre identifiant d'opérateur |
player_id | string | Identifiant du joueur |
market_id | string | UUID du marché |
outcome_id | string | UUID du résultat |
side | string | BUY ou SELL |
type | string | MARKET ou LIMIT |
shares | double | Nombre de parts |
price | double | Prix limite (requis pour LIMIT) |
transaction_id | string | Clé de référence de l'opérateur (optionnel) |
expires_at | int64 | Horodatage Unix (ms, optionnel) |
Réponse : OrderResultResponse
| Champ | Type | Description |
|---|---|---|
success | bool | Indique si l'ordre a été accepté |
order | Order | Les détails de l'ordre |
trades | Trade[] | Transactions exécutées |
status | string | Statut de l'ordre |
filled_shares | string | Parts exécutées |
avg_fill_price | string | Prix d'exécution moyen |
remaining_shares | string | Parts encore dans le carnet |
error_code | string | Code d'erreur en cas d'échec |
error_message | string | Détails de l'erreur en cas d'échec |
CancelOrder
rpc CancelOrder(CancelOrderRequest) returns (OrderResponse);
| Champ | Type | Description |
|---|---|---|
operator_id | string | Votre identifiant d'opérateur |
order_id | string | UUID de l'ordre |
GetOrder
rpc GetOrder(GetOrderRequest) returns (OrderResponse);
ListOrders
rpc ListOrders(ListOrdersRequest) returns (ListOrdersResponse);
| Champ | Type | Description |
|---|---|---|
operator_id | string | Votre identifiant d'opérateur |
player_id | string | Filtrer par joueur (optionnel) |
market_id | string | Filtrer par marché |
outcome_id | string | Filtrer par résultat |
side | string | Filtrer par côté |
type | string | Filtrer par type |
status | string[] | Filtrer par statuts |
cursor | string | Curseur de pagination |
limit | int32 | Taille de la page |
Opérations sur les positions et les transactions
GetPositions
rpc GetPositions(GetPositionsRequest) returns (GetPositionsResponse);
| Champ | Type | Description |
|---|---|---|
operator_id | string | Votre identifiant d'opérateur |
market_id | string | Filtrer par marché (optionnel) |
GetTrades
rpc GetTrades(GetTradesRequest) returns (GetTradesResponse);
| Champ | Type | Description |
|---|---|---|
operator_id | string | Votre identifiant d'opérateur |
market_id | string | Filtrer par marché |
outcome_id | string | Filtrer par résultat |
cursor | string | Curseur de pagination |
limit | int32 | Taille de la page |
Données de marché
GetOrderBook
rpc GetOrderBook(GetOrderBookRequest) returns (OrderBookResponse);
| Champ | Type | Description |
|---|---|---|
market_id | string | UUID du marché |
outcome_id | string | UUID du résultat |
depth | int32 | Nombre de niveaux de prix |
GetMarketPrices
rpc GetMarketPrices(GetMarketPricesRequest) returns (MarketPricesResponse);
Opérations de règlement
SettleMarket
rpc SettleMarket(SettleMarketRequest) returns (SettleMarketResponse);
GetSettlementStatus
rpc GetSettlementStatus(GetSettlementStatusRequest) returns (SettlementStatusResponse);
RetrySettlements
rpc RetrySettlements(RetrySettlementsRequest) returns (SettleMarketResponse);
GetOperatorSettlements
rpc GetOperatorSettlements(GetOperatorSettlementsRequest) returns (GetOperatorSettlementsResponse);
| Champ | Type | Description |
|---|---|---|
operator_id | string | Votre identifiant d'opérateur |
market_id | string | Filtrer par marché (optionnel) |
Vérification de santé
rpc HealthCheck(Empty) returns (HealthResponse);
Réponse :
| Champ | Type | Description |
|---|---|---|
healthy | bool | État de santé du service |
version | string | Version du service |
timestamp | int64 | Horodatage Unix |
Types de messages
Order
message Order {
string id = 1;
string market_id = 2;
string outcome_id = 3;
string operator_id = 4;
string player_id = 5;
string side = 6;
string type = 7;
string shares = 8;
string price = 9;
string filled_shares = 10;
string avg_fill_price = 11;
string remaining_shares = 12;
string status = 13;
string transaction_id = 14;
int64 expires_at = 15;
int64 created_at = 16;
int64 updated_at = 17;
}
Trade
message Trade {
string id = 1;
string market_id = 2;
string outcome_id = 3;
string buy_order_id = 4;
string sell_order_id = 5;
string buyer_operator_id = 6;
string seller_operator_id = 7;
string price = 8;
string shares = 9;
string buyer_fee = 10;
string seller_fee = 11;
int64 created_at = 12;
}
Position
message Position {
string id = 1;
string market_id = 2;
string outcome_id = 3;
string operator_id = 4;
string shares = 5;
string avg_price = 6;
string total_cost = 7;
string realized_pnl = 8;
int64 created_at = 9;
int64 updated_at = 10;
}
Settlement
message Settlement {
string id = 1;
string position_id = 2;
string market_id = 3;
string outcome_id = 4;
string operator_id = 5;
string shares = 6;
string payout_per_share = 7;
string total_payout = 8;
string transaction_id = 9;
string status = 10;
string error_message = 11;
int64 settled_at = 12;
int64 created_at = 13;
int64 updated_at = 14;
}
Gestion des erreurs
Les erreurs gRPC sont retournées dans les champs error_code et error_message du message de réponse. Le champ success indique si l'opération a réussi. Les codes d'erreur sont les mêmes que ceux documentés dans la référence Codes d'erreur.