Changelog
Introduction

Sections

Theme switcher

Prop gRPC

This gRPC model outlines a collection of interconnected services within the Broker API package, enabling seamless real‑time communication and data streaming. The following documentation provides detailed information on each service and its methods, ensuring developers have the guidance they need for efficient integration and interaction with the system.

A separate gRPC ping stream sends pings every 50 seconds (configurable) to maintain an active connection.

Prop RPC methods do not require any input parameters.

Plain text
syntax = "proto3";
option java_multiple_files = true; option java_package = 'com.matchtrade.broker_api.prop_grpc'; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; import "google/protobuf/empty.proto";
service PropAccountExternalStreamService { rpc GetPropAccountsCreated(google.protobuf.Empty) returns (stream PropAccountCreatedResponseExternal) {} rpc GetPropAccountTargetsUpdates(google.protobuf.Empty) returns (stream PropAccountTargetsUpdateResponseExternal) {} rpc GetPropAccountStatusUpdates(google.protobuf.Empty) returns (stream PropAccountStatusUpdateResponseExternal) {} rpc GetPropAccountMaxLossUpdates(google.protobuf.Empty) returns (stream PropAccountMaxLossUpdateResponseExternal) {} }
service PropEvaluationExternalStreamService { rpc GetPropEvaluationRequests(google.protobuf.Empty) returns (stream PropAccountEvaluationRequestCreatedResponseExternal) {} rpc GetPropAccountEvaluationStatusUpdates(google.protobuf.Empty) returns (stream PropAccountEvaluationStatusUpdateResponseExternal) {} }
enum AccountInChallengeStatus { ACTIVE_PARTICIPATING_IN_CHALLENGE = 0; ACTIVE_FUNDED = 1; CREATED_NOT_YET_PAID_CHALLENGE_FEE = 2; LOCKED_FAILED_CHALLENGE = 3; AWAITING_COMPETITION_START = 4; AWAITING_COMPETITION_FEE_NOT_PAID = 5; ACTIVE_COMPETITION = 6; LOCKED_FINISHED_COMPETITION = 7; LOCKED_FAILED_COMPETITION = 8; }
enum AccountEvaluationStatus { MAX_LOSS_REACHED = 0; MAX_DAILY_LOSS_REACHED = 1; PROFIT_TARGET_REACHED_OPEN_TRADES = 2; PROFIT_TARGET_REACHED_NO_OPEN_TRADES = 3; }
enum ChallengeType { DEFAULT = 0; COMPETITION = 1; }
message PropAccountCreatedResponseExternal { oneof msg { PropAccountCreated propAccountCreated = 1; bool heartbeat = 2; } }
message PropAccountCreated { int64 login = 1; string propAccountUuid = 2; string challengeUuid = 3; int64 phaseStep = 4; AccountInChallengeStatus status = 5; google.protobuf.Timestamp created = 6; }
message PropAccountTargetsUpdateResponseExternal { oneof msg { PropAccountTargetsUpdate propAccountTargetsUpdate = 1; bool heartbeat = 2; } }
message PropAccountTargetsUpdate { int64 login = 1; string propAccountUuid = 2; double maxLossEquityLevel = 3; double maxDailyLossEquityLevel = 4; double profitTargetEquityLevel = 5; int64 tradingPeriod = 6; int64 minimumTradingPeriod = 7; }
message PropAccountStatusUpdateResponseExternal { oneof msg { PropAccountStatusUpdate propAccountStatusUpdate = 1; bool heartbeat = 2; } }
message PropAccountStatusUpdate { string propAccountUuid = 1; AccountInChallengeStatus status = 2; int64 login = 3; }
message PropAccountEvaluationStatusUpdateResponseExternal { oneof msg { PropAccountEvaluationStatusUpdate propAccountEvaluationStatusUpdate = 1; bool heartbeat = 2; } }
message PropAccountEvaluationStatusUpdate { int64 login = 1; string propAccountUuid = 2; AccountEvaluationStatus status = 3; }
message PropAccountEvaluationRequestCreatedResponseExternal { oneof msg { PropAccountEvaluationRequestCreated propAccountEvaluationRequestCreated = 1; bool heartbeat = 2; } }
message PropAccountEvaluationRequestCreated { int64 login = 1; string propAccountUuid = 2; }
message PropAccountMaxLossUpdateResponseExternal { oneof msg { PropAccountMaxLossUpdate propAccountMaxLossUpdate = 1; bool heartbeat = 2; } }
message PropAccountMaxLossUpdate { string propAccountUuid = 1; double dailyMaxLoss = 2; double maxLoss = 3; int64 login = 4; }
Was this section helpful?

What made this section unhelpful for you?

Base URL

Production:

Sandbox:

Was this section helpful?

What made this section unhelpful for you?