Aller au contenu principal

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);
ChampTypeDescription
operator_idstringVotre identifiant d'opérateur
category_idstringUUID de la catégorie (optionnel)
titlestringTitre du marché
descriptionstringDescription du marché
image_urlstringURL de l'image
currencystringCode de la devise
trading_starts_atint64Horodatage Unix (ms)
trading_ends_atint64Horodatage Unix (ms)
outcomesMarketOutcomeInput[]Définitions des résultats

GetMarket

rpc GetMarket(GetMarketRequest) returns (MarketResponse);
ChampTypeDescription
idstringUUID du marché
operator_idstringOptionnel — valide la propriété si fourni

ListMarkets

rpc ListMarkets(ListMarketsRequest) returns (ListMarketsResponse);
ChampTypeDescription
operator_idstringFiltrer par opérateur
category_idstringFiltrer par catégorie
statusstring[]Filtrer par statuts
searchstringRechercher dans le titre
cursorstringCurseur de pagination
limitint32Taille 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);
ChampTypeDescription
operator_idstringVotre identifiant d'opérateur
player_idstringIdentifiant du joueur
market_idstringUUID du marché
outcome_idstringUUID du résultat
sidestringBUY ou SELL
typestringMARKET ou LIMIT
sharesdoubleNombre de parts
pricedoublePrix limite (requis pour LIMIT)
transaction_idstringClé de référence de l'opérateur (optionnel)
expires_atint64Horodatage Unix (ms, optionnel)

Réponse : OrderResultResponse

ChampTypeDescription
successboolIndique si l'ordre a été accepté
orderOrderLes détails de l'ordre
tradesTrade[]Transactions exécutées
statusstringStatut de l'ordre
filled_sharesstringParts exécutées
avg_fill_pricestringPrix d'exécution moyen
remaining_sharesstringParts encore dans le carnet
error_codestringCode d'erreur en cas d'échec
error_messagestringDétails de l'erreur en cas d'échec

CancelOrder

rpc CancelOrder(CancelOrderRequest) returns (OrderResponse);
ChampTypeDescription
operator_idstringVotre identifiant d'opérateur
order_idstringUUID de l'ordre

GetOrder

rpc GetOrder(GetOrderRequest) returns (OrderResponse);

ListOrders

rpc ListOrders(ListOrdersRequest) returns (ListOrdersResponse);
ChampTypeDescription
operator_idstringVotre identifiant d'opérateur
player_idstringFiltrer par joueur (optionnel)
market_idstringFiltrer par marché
outcome_idstringFiltrer par résultat
sidestringFiltrer par côté
typestringFiltrer par type
statusstring[]Filtrer par statuts
cursorstringCurseur de pagination
limitint32Taille de la page

Opérations sur les positions et les transactions

GetPositions

rpc GetPositions(GetPositionsRequest) returns (GetPositionsResponse);
ChampTypeDescription
operator_idstringVotre identifiant d'opérateur
market_idstringFiltrer par marché (optionnel)

GetTrades

rpc GetTrades(GetTradesRequest) returns (GetTradesResponse);
ChampTypeDescription
operator_idstringVotre identifiant d'opérateur
market_idstringFiltrer par marché
outcome_idstringFiltrer par résultat
cursorstringCurseur de pagination
limitint32Taille de la page

Données de marché

GetOrderBook

rpc GetOrderBook(GetOrderBookRequest) returns (OrderBookResponse);
ChampTypeDescription
market_idstringUUID du marché
outcome_idstringUUID du résultat
depthint32Nombre 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);
ChampTypeDescription
operator_idstringVotre identifiant d'opérateur
market_idstringFiltrer par marché (optionnel)

Vérification de santé

rpc HealthCheck(Empty) returns (HealthResponse);

Réponse :

ChampTypeDescription
healthyboolÉtat de santé du service
versionstringVersion du service
timestampint64Horodatage 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.