syntax = "proto3"; package tinkoff.public.invest.api.contract.v1; option go_package = "./;investapi"; option java_package = "ru.tinkoff.piapi.contract.v1"; option java_multiple_files = true; option csharp_namespace = "Tinkoff.InvestApi.V1"; option objc_class_prefix = "TIAPI"; option php_namespace = "Tinkoff\\Invest\\V1"; import "google/protobuf/timestamp.proto"; import "t_tech/invest/grpc/common.proto"; import "t_tech/invest/grpc/google/api/field_behavior.proto"; service OperationsService {/*С помощью методов сервиса можно получить:

**1**. Список операций по счету.
**2**. Портфель по счету.
**3**. Позиции ценных бумаг на счете.
**4**. Доступный остаток для вывода средств.
**5**. Различные отчеты.*/ //GetOperations — список операций по счету //При работе с методом учитывайте [особенности взаимодействия](/invest/services/operations/operations_problems). rpc GetOperations(OperationsRequest) returns (OperationsResponse); //GetPortfolio — портфель по счету rpc GetPortfolio(PortfolioRequest) returns (PortfolioResponse); //GetPositions — список позиций по счету rpc GetPositions(PositionsRequest) returns (PositionsResponse); //GetWithdrawLimits — доступный остаток для вывода средств rpc GetWithdrawLimits(WithdrawLimitsRequest) returns (WithdrawLimitsResponse); //GetBrokerReport — брокерский отчет. rpc GetBrokerReport(BrokerReportRequest) returns (BrokerReportResponse); //GetDividendsForeignIssuer — отчет «Справка о доходах за пределами РФ» rpc GetDividendsForeignIssuer(GetDividendsForeignIssuerRequest) returns (GetDividendsForeignIssuerResponse); //GetOperationsByCursor — список операций по счету с пагинацией //При работе с методом учитывайте [особенности взаимодействия](/invest/services/operations/operations_problems). rpc GetOperationsByCursor(GetOperationsByCursorRequest) returns (GetOperationsByCursorResponse); } service OperationsStreamService { //PortfolioStream — стрим обновлений портфеля rpc PortfolioStream(PortfolioStreamRequest) returns (stream PortfolioStreamResponse); //PositionsStream — стрим обновлений информации по изменению позиций портфеля rpc PositionsStream(PositionsStreamRequest) returns (stream PositionsStreamResponse); //OperationsStream — стрим обновлений операций rpc OperationsStream(OperationsStreamRequest) returns (stream OperationsStreamResponse); } //Запрос получения списка операций по счету. message OperationsRequest { string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счета клиента. optional google.protobuf.Timestamp from = 2; //Начало периода по UTC. optional google.protobuf.Timestamp to = 3; //Окончание периода по UTC. optional OperationState state = 4; //Статус запрашиваемых операций. optional string figi = 5; //FIGI-идентификатор инструмента для фильтрации. } //Список операций. message OperationsResponse { repeated Operation operations = 1; //Массив операций. } //Данные по операции. message Operation { string id = 1; //Идентификатор операции. string parent_operation_id = 2; //Идентификатор родительской операции. string currency = 3; //Валюта операции. MoneyValue payment = 4; //Сумма операции. MoneyValue price = 5; //Цена операции за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. OperationState state = 6; //Статус операции. int64 quantity = 7; //Количество единиц инструмента. int64 quantity_rest = 8; //Неисполненный остаток по сделке. string figi = 9; //FIGI-идентификатор инструмента, связанного с операцией. string instrument_type = 10; //Тип инструмента. Возможные значения:

`bond` — облигация;
`share` — акция;
`currency` — валюта;
`etf` — фонд;
`futures` — фьючерс. google.protobuf.Timestamp date = 11; //Дата и время операции в формате часовом поясе UTC. string type = 12; //Текстовое описание типа операции. OperationType operation_type = 13; //Тип операции. repeated OperationTrade trades = 14; //Массив сделок. string asset_uid = 16; //Идентификатор актива string position_uid = 17; //Уникальный идентификатор позиции. string instrument_uid = 18; //Уникальный идентификатор инструмента. repeated ChildOperationItem child_operations = 19; //Массив дочерних операций. } //Сделка по операции. message OperationTrade { string trade_id = 1; //Идентификатор сделки. google.protobuf.Timestamp date_time = 2; //Дата и время сделки по UTC. int64 quantity = 3; //Количество инструментов. MoneyValue price = 4; //Цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. } //Запрос получения текущего портфеля по счету. message PortfolioRequest { string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счета пользователя. optional CurrencyRequest currency = 2; //Валюта, в которой нужно рассчитать портфель. enum CurrencyRequest { RUB = 0; //Рубли USD = 1; //Доллары EUR = 2; //Евро } } //Текущий портфель по счету. message PortfolioResponse { MoneyValue total_amount_shares = 1; //Общая стоимость акций в портфеле. MoneyValue total_amount_bonds = 2; //Общая стоимость облигаций в портфеле. MoneyValue total_amount_etf = 3; //Общая стоимость фондов в портфеле. MoneyValue total_amount_currencies = 4; //Общая стоимость валют в портфеле. MoneyValue total_amount_futures = 5; //Общая стоимость фьючерсов в портфеле. Quotation expected_yield = 6; //Текущая относительная доходность портфеля в %. repeated PortfolioPosition positions = 7; //Список позиций портфеля. string account_id = 8; //Идентификатор счета пользователя. MoneyValue total_amount_options = 9; //Общая стоимость опционов в портфеле. MoneyValue total_amount_sp = 10; //Общая стоимость структурных нот в портфеле. MoneyValue total_amount_portfolio = 11; //Общая стоимость портфеля. repeated VirtualPortfolioPosition virtual_positions = 12; //Массив виртуальных позиций портфеля. MoneyValue daily_yield = 15; // Рассчитанная доходность портфеля за день в рублях. Quotation daily_yield_relative = 16; //Относительная доходность в день в %. MoneyValue total_amount_dfa = 17; //Общая стоимость смарт-активов в портфеле в рублях. } //Запрос позиций портфеля по счету. message PositionsRequest { string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счета пользователя. } //Список позиций по счету. message PositionsResponse { repeated MoneyValue money = 1; //Массив валютных позиций портфеля. repeated MoneyValue blocked = 2; //Массив заблокированных валютных позиций портфеля. repeated PositionsSecurities securities = 3; //Список ценно-бумажных позиций портфеля. bool limits_loading_in_progress = 4; //Признак идущей выгрузки лимитов в данный момент. repeated PositionsFutures futures = 5; //Список фьючерсов портфеля. repeated PositionsOptions options = 6; //Список опционов портфеля. string account_id = 15; //Идентификатор счёта пользователя. } //Запрос доступного остатка для вывода. message WithdrawLimitsRequest { string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счета пользователя. } //Доступный остаток для вывода. message WithdrawLimitsResponse { repeated MoneyValue money = 1; //Массив валютных позиций портфеля. repeated MoneyValue blocked = 2; //Массив заблокированных валютных позиций портфеля. repeated MoneyValue blocked_guarantee = 3; //Заблокировано под гарантийное обеспечение фьючерсов. } //Позиции портфеля. message PortfolioPosition { string figi = 1; //FIGI-идентификатор инструмента. string instrument_type = 2; //Тип инструмента. Quotation quantity = 3; //Количество инструмента в портфеле в штуках. MoneyValue average_position_price = 4; //Средневзвешенная цена позиции. Для пересчета возможна задержка до одной секунды. Quotation expected_yield = 5; //Текущая рассчитанная доходность позиции. MoneyValue current_nkd = 6; // Текущий НКД. Quotation average_position_price_pt = 7 [ deprecated = true ]; // Deprecated Средняя цена позиции в пунктах (для фьючерсов). Для пересчета возможна задержка до одной секунды. MoneyValue current_price = 8; //Текущая цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. MoneyValue average_position_price_fifo = 9; //Средняя цена позиции по методу FIFO. Для пересчета возможна задержка до одной секунды. Quotation quantity_lots = 10 [ deprecated = true ]; //Deprecated Количество лотов в портфеле. bool blocked = 21; //Заблокировано на бирже. Quotation blocked_lots = 22; //Количество бумаг, заблокированных выставленными заявками. string position_uid = 24; //Уникальный идентификатор позиции. string instrument_uid = 25; //Уникальный идентификатор инструмента. MoneyValue var_margin = 26; //Вариационная маржа. Quotation expected_yield_fifo = 27; //Текущая рассчитанная доходность позиции. MoneyValue daily_yield = 31; // Рассчитанная доходность портфеля за день. string ticker = 32; //Тикер инструмента. string class_code = 33; //Класс-код (секция торгов). } message VirtualPortfolioPosition { string position_uid = 1; //Уникальный идентификатор позиции. string instrument_uid = 2; //Уникальный идентификатор инструмента. string figi = 3; //FIGI-идентификатор инструмента. string instrument_type = 4; //Тип инструмента. Quotation quantity = 5; //Количество инструмента в портфеле в штуках. MoneyValue average_position_price = 6; //Средневзвешенная цена позиции. Для пересчета возможна задержка до одной секунды. Quotation expected_yield = 7; //Текущая рассчитанная доходность позиции. Quotation expected_yield_fifo = 8; //Текущая рассчитанная доходность позиции. google.protobuf.Timestamp expire_date = 9; //Дата, до которой нужно продать виртуальные бумаги. После этой даты виртуальная позиция «сгораетт». MoneyValue current_price = 10; //Текущая цена за 1 инструмент. Чтобы получить стоимость лота, нужно умножить на лотность инструмента. MoneyValue average_position_price_fifo = 11; //Средняя цена позиции по методу FIFO. Для пересчета возможна задержка до одной секунды. MoneyValue daily_yield = 31; // Рассчитанная доходность портфеля за день. string ticker = 32; //Тикер инструмента. string class_code = 33; //Класс-код (секция торгов). } //Баланс позиции ценной бумаги. message PositionsSecurities { string figi = 1; //FIGI-идентификатор бумаги. int64 blocked = 2; //Количество бумаг, заблокированных выставленными заявками. int64 balance = 3; //Текущий незаблокированный баланс. string position_uid = 4; //Уникальный идентификатор позиции. string instrument_uid = 5; //Уникальный идентификатор инструмента. string ticker = 6; //Тикер инструмента. string class_code = 7; //Класс-код (секция торгов). bool exchange_blocked = 11; //Заблокировано на бирже. string instrument_type = 16; //Тип инструмента. } //Баланс фьючерса. message PositionsFutures { string figi = 1; //FIGI-идентификатор фьючерса. int64 blocked = 2; //Количество бумаг, заблокированных выставленными заявками. int64 balance = 3; //Текущий незаблокированный баланс. string position_uid = 4; //Уникальный идентификатор позиции. string instrument_uid = 5; //Уникальный идентификатор инструмента. string ticker = 6; //Тикер инструмента. string class_code = 7; //Класс-код (секция торгов). } //Баланс опциона. message PositionsOptions { string position_uid = 1; //Уникальный идентификатор позиции опциона. string instrument_uid = 2; //Уникальный идентификатор инструмента. string ticker = 3; //Тикер инструмента. string class_code = 4; //Класс-код (секция торгов). int64 blocked = 11; //Количество бумаг, заблокированных выставленными заявками. int64 balance = 21; //Текущий незаблокированный баланс. } message BrokerReportRequest { oneof payload { GenerateBrokerReportRequest generate_broker_report_request = 1; GetBrokerReportRequest get_broker_report_request = 2; } } message BrokerReportResponse { oneof payload { GenerateBrokerReportResponse generate_broker_report_response = 1; GetBrokerReportResponse get_broker_report_response = 2; } } message GenerateBrokerReportRequest { string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счета клиента. google.protobuf.Timestamp from = 2 [(google.api.field_behavior) = REQUIRED]; //Начало периода по UTC. google.protobuf.Timestamp to = 3 [(google.api.field_behavior) = REQUIRED]; //Окончание периода по UTC. } message GenerateBrokerReportResponse { string task_id = 1; //Идентификатор задачи формирования брокерского отчета. } message GetBrokerReportRequest { string task_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор задачи формирования брокерского отчета. optional int32 page = 2; //Номер страницы отчета, начинается с 1. Значение по умолчанию — 0. } message GetBrokerReportResponse { repeated BrokerReport broker_report = 1; int32 itemsCount = 2; //Количество записей в отчете. int32 pagesCount = 3; //Количество страниц с данными отчета, начинается с 0. int32 page = 4; //Текущая страница, начинается с 0. string task_id = 5; //Идентификатор задачи формирования брокерского отчета. } message BrokerReport { string trade_id = 1;//Номер сделки. string order_id = 2; //Номер поручения. string figi = 3; //FIGI-идентификаторинструмента. string execute_sign = 4; //Признак исполнения. google.protobuf.Timestamp trade_datetime = 5; //Дата и время заключения по UTC. string exchange = 6; //Торговая площадка. string class_code = 7; //Режим торгов. string direction = 8; //Вид сделки. string name = 9; //Сокращенное наименование актива. string ticker = 10; //Код актива. MoneyValue price = 11; //Цена за единицу. int64 quantity = 12; //Количество. MoneyValue order_amount = 13; //Сумма без НКД. Quotation aci_value = 14; //НКД. MoneyValue total_order_amount = 15; //Сумма сделки. MoneyValue broker_commission = 16; //Комиссия брокера. MoneyValue exchange_commission = 17; //Комиссия биржи. MoneyValue exchange_clearing_commission = 18; //Комиссия клирингового центра. Quotation repo_rate = 19; //Ставка РЕПО, %. string party = 20; //Контрагент или брокерарокер. google.protobuf.Timestamp clear_value_date = 21; //Дата расчетов по UTC. google.protobuf.Timestamp sec_value_date = 22; //Дата поставки по UTC. string broker_status = 23; //Статус брокера. string separate_agreement_type = 24; //Тип договора. string separate_agreement_number = 25; //Номер договора. string separate_agreement_date = 26; //Дата договора. string delivery_type = 27; //Тип расчета по сделке. } //Статус запрашиваемых операций. enum OperationState { OPERATION_STATE_UNSPECIFIED = 0; //Статус операции не определен. OPERATION_STATE_EXECUTED = 1; //Исполнена частично или полностью. OPERATION_STATE_CANCELED = 2; //Отменена. OPERATION_STATE_PROGRESS = 3; //Исполняется. } //Тип операции. enum OperationType { OPERATION_TYPE_UNSPECIFIED = 0; //Тип операции не определен. OPERATION_TYPE_INPUT = 1; //Пополнение брокерского счета. OPERATION_TYPE_BOND_TAX = 2; //Удержание НДФЛ по купонам. OPERATION_TYPE_OUTPUT_SECURITIES = 3; //Вывод ЦБ. OPERATION_TYPE_OVERNIGHT = 4; //Доход по сделке РЕПО овернайт. OPERATION_TYPE_TAX = 5; //Удержание налога. OPERATION_TYPE_BOND_REPAYMENT_FULL = 6; //Полное погашение облигаций. OPERATION_TYPE_SELL_CARD = 7; //Продажа ЦБ с карты. OPERATION_TYPE_DIVIDEND_TAX = 8; //Удержание налога по дивидендам. OPERATION_TYPE_OUTPUT = 9; //Вывод денежных средств. OPERATION_TYPE_BOND_REPAYMENT = 10; //Частичное погашение облигаций. OPERATION_TYPE_TAX_CORRECTION = 11; //Корректировка налога. OPERATION_TYPE_SERVICE_FEE = 12; //Удержание комиссии за обслуживание брокерского счета. OPERATION_TYPE_BENEFIT_TAX = 13; //Удержание налога за материальную выгоду. OPERATION_TYPE_MARGIN_FEE = 14; //Удержание комиссии за непокрытую позицию. OPERATION_TYPE_BUY = 15; //Покупка ЦБ. OPERATION_TYPE_BUY_CARD = 16; //Покупка ЦБ с карты. OPERATION_TYPE_INPUT_SECURITIES = 17; //Перевод ценных бумаг из другого депозитария. OPERATION_TYPE_SELL_MARGIN = 18; //Продажа в результате Margin-call. OPERATION_TYPE_BROKER_FEE = 19; //Удержание комиссии за операцию. OPERATION_TYPE_BUY_MARGIN = 20; //Покупка в результате Margin-call. OPERATION_TYPE_DIVIDEND = 21; //Выплата дивидендов. OPERATION_TYPE_SELL = 22; //Продажа ЦБ. OPERATION_TYPE_COUPON = 23; //Выплата купонов. OPERATION_TYPE_SUCCESS_FEE = 24; //Удержание комиссии SuccessFee. OPERATION_TYPE_DIVIDEND_TRANSFER = 25; //Передача дивидендного дохода. OPERATION_TYPE_ACCRUING_VARMARGIN = 26; //Зачисление вариационной маржи. OPERATION_TYPE_WRITING_OFF_VARMARGIN = 27; //Списание вариационной маржи. OPERATION_TYPE_DELIVERY_BUY = 28; //Покупка в рамках экспирации фьючерсного контракта. OPERATION_TYPE_DELIVERY_SELL = 29; //Продажа в рамках экспирации фьючерсного контракта. OPERATION_TYPE_TRACK_MFEE = 30; //Комиссия за управление по счету автоследования. OPERATION_TYPE_TRACK_PFEE = 31; //Комиссия за результат по счету автоследования. OPERATION_TYPE_TAX_PROGRESSIVE = 32; //Удержание налога по ставке 15%. OPERATION_TYPE_BOND_TAX_PROGRESSIVE = 33; //Удержание налога по купонам по ставке 15%. OPERATION_TYPE_DIVIDEND_TAX_PROGRESSIVE = 34; //Удержание налога по дивидендам по ставке 15%. OPERATION_TYPE_BENEFIT_TAX_PROGRESSIVE = 35; //Удержание налога за материальную выгоду по ставке 15%. OPERATION_TYPE_TAX_CORRECTION_PROGRESSIVE = 36; //Корректировка налога по ставке 15%. OPERATION_TYPE_TAX_REPO_PROGRESSIVE = 37; //Удержание налога за возмещение по сделкам РЕПО по ставке 15%. OPERATION_TYPE_TAX_REPO = 38; //Удержание налога за возмещение по сделкам РЕПО. OPERATION_TYPE_TAX_REPO_HOLD = 39; //Удержание налога по сделкам РЕПО. OPERATION_TYPE_TAX_REPO_REFUND = 40; //Возврат налога по сделкам РЕПО. OPERATION_TYPE_TAX_REPO_HOLD_PROGRESSIVE = 41; //Удержание налога по сделкам РЕПО по ставке 15%. OPERATION_TYPE_TAX_REPO_REFUND_PROGRESSIVE = 42; //Возврат налога по сделкам РЕПО по ставке 15%. OPERATION_TYPE_DIV_EXT = 43; //Выплата дивидендов на карту. OPERATION_TYPE_TAX_CORRECTION_COUPON = 44; //Корректировка налога по купонам. OPERATION_TYPE_CASH_FEE = 45; //Комиссия за валютный остаток. OPERATION_TYPE_OUT_FEE = 46; //Комиссия за вывод валюты с брокерского счета. OPERATION_TYPE_OUT_STAMP_DUTY = 47; //Гербовый сбор. OPERATION_TYPE_OUTPUT_SWIFT = 50; // SWIFT-перевод. OPERATION_TYPE_INPUT_SWIFT = 51; // SWIFT-перевод. OPERATION_TYPE_OUTPUT_ACQUIRING = 53; // Перевод на карту. OPERATION_TYPE_INPUT_ACQUIRING = 54; // Перевод с карты. OPERATION_TYPE_OUTPUT_PENALTY = 55; // Комиссия за вывод средств. OPERATION_TYPE_ADVICE_FEE = 56; // Списание оплаты за сервис Советов. OPERATION_TYPE_TRANS_IIS_BS = 57; // Перевод ценных бумаг с ИИС на брокерский счет. OPERATION_TYPE_TRANS_BS_BS = 58; // Перевод ценных бумаг с одного брокерского счета на другой. OPERATION_TYPE_OUT_MULTI = 59; // Вывод денежных средств со счета. OPERATION_TYPE_INP_MULTI = 60; // Пополнение денежных средств со счета. OPERATION_TYPE_OVER_PLACEMENT = 61; // Размещение биржевого овернайта. OPERATION_TYPE_OVER_COM = 62; // Списание комиссии. OPERATION_TYPE_OVER_INCOME = 63; // Доход от оверанайта. OPERATION_TYPE_OPTION_EXPIRATION = 64; // Экспирация опциона. OPERATION_TYPE_FUTURE_EXPIRATION = 65; // Экспирация фьючерса. OPERATION_TYPE_OTHER_FEE = 66; // Прочие комиссии; OPERATION_TYPE_OTHER = 67; // Операция по счету; OPERATION_TYPE_DFA_REDEMPTION = 68; // погашение ЦФА-токена; OPERATION_TYPE_PRIMARY_ORDER =69; // отмена заявки на первичное размещение по ЦФА; } message GetDividendsForeignIssuerRequest { oneof payload { GenerateDividendsForeignIssuerReportRequest generate_div_foreign_issuer_report = 1; //Объект запроса формирования отчета. GetDividendsForeignIssuerReportRequest get_div_foreign_issuer_report = 2; //Объект запроса сформированного отчета. } } message GetDividendsForeignIssuerResponse { oneof payload { GenerateDividendsForeignIssuerReportResponse generate_div_foreign_issuer_report_response = 1; //Объект результата задачи запуска формирования отчета. GetDividendsForeignIssuerReportResponse div_foreign_issuer_report = 2; //Отчет «Справка о доходах за пределами РФ». } } //Объект запроса формирования отчета «Справка о доходах за пределами РФ». message GenerateDividendsForeignIssuerReportRequest { string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счета клиента. google.protobuf.Timestamp from = 2 [(google.api.field_behavior) = REQUIRED]; //Начало периода по UTC. google.protobuf.Timestamp to = 3 [(google.api.field_behavior) = REQUIRED]; //Окончание периода по UTC. Как правило, можно сформировать отчет по дату на несколько дней меньше текущей. Начало и окончание периода должны быть в рамках одного календарного года. } // Объект запроса сформированного отчета «Справка о доходах за пределами РФ». message GetDividendsForeignIssuerReportRequest { string task_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор задачи формирования отчета. optional int32 page = 2; //Номер страницы отчета (начинается с 0), значение по умолчанию: 0. } // Объект результата задачи запуска формирования отчета «Справка о доходах за пределами РФ». message GenerateDividendsForeignIssuerReportResponse { string task_id = 1; //Идентификатор задачи формирования отчета. } message GetDividendsForeignIssuerReportResponse { repeated DividendsForeignIssuerReport dividends_foreign_issuer_report = 1; int32 itemsCount = 2; //Количество записей в отчете. int32 pagesCount = 3; //Количество страниц с данными отчета, начинается с 0. int32 page = 4; //Текущая страница, начинается с 0. } // Отчет «Справка о доходах за пределами РФ». message DividendsForeignIssuerReport { google.protobuf.Timestamp record_date = 1; //Дата фиксации реестра. google.protobuf.Timestamp payment_date = 2; //Дата выплаты. string security_name = 3; //Наименование ценной бумаги. string isin = 4; //ISIN-идентификатор ценной бумаги. string issuer_country = 5; //Страна эмитента. Для депозитарных расписок указывается страна эмитента базового актива. int64 quantity = 6; //Количество ценных бумаг. Quotation dividend = 7; //Выплаты на одну бумагу Quotation external_commission = 8; //Комиссия внешних платежных агентов. Quotation dividend_gross = 9; //Сумма до удержания налога. Quotation tax = 10; //Сумма налога, удержанного агентом. Quotation dividend_amount = 11; //Итоговая сумма выплаты. string currency = 12; //Валюта. } //Запрос установки stream-соединения. message PortfolioStreamRequest { repeated string accounts = 1; //Массив идентификаторов счетов пользователя. PingDelaySettings ping_settings = 15; //Запрос настройки пинга. } //Информация по позициям и доходностям портфелей. message PortfolioStreamResponse { oneof payload { PortfolioSubscriptionResult subscriptions = 1; //Объект результата подписки. PortfolioResponse portfolio = 2; //Объект стриминга портфеля. Ping ping = 3; //Проверка активности стрима. } } //Объект результата подписки. message PortfolioSubscriptionResult { repeated AccountSubscriptionStatus accounts = 1; //Массив счетов клиента. string tracking_id = 7; //Уникальный идентификатор запроса, подробнее: [tracking_id](/invest/intro/developer/protocols/grpc#tracking-id). string stream_id = 8; //Идентификатор открытого соединения } //Счет клиента. message AccountSubscriptionStatus { string account_id = 1; //Идентификатор счета. PortfolioSubscriptionStatus subscription_status = 6; //Результат подписки. } //Результат подписки. enum PortfolioSubscriptionStatus { PORTFOLIO_SUBSCRIPTION_STATUS_UNSPECIFIED = 0; //Тип не определен. PORTFOLIO_SUBSCRIPTION_STATUS_SUCCESS = 1; //Успешно. PORTFOLIO_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND = 2; //Счет не найден или недостаточно прав. PORTFOLIO_SUBSCRIPTION_STATUS_INTERNAL_ERROR = 3; //Произошла ошибка. } //Запрос списка операций по счету с пагинацией. message GetOperationsByCursorRequest { string account_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор счета клиента, обязательный параметр. Остальные параметры опциональны. optional string instrument_id = 2; //Идентификатор инструмента. Принимает значение `figi`, `instrument_uid` или `ticker + '_' + class_code`. optional google.protobuf.Timestamp from = 6; //Начало периода по UTC. optional google.protobuf.Timestamp to = 7; //Окончание периода по UTC. optional string cursor = 11; //Идентификатор элемента, с которого начать формировать ответ. optional int32 limit = 12; //Лимит количества операций. По умолчанию — `100`, максимальное значение — `1000`. repeated OperationType operation_types = 13; //Тип операции. Принимает значение из списка `OperationType`. optional OperationState state = 14; //Статус запрашиваемых операций. Возможные значения указаны в `OperationState`. optional bool without_commissions = 15; //Флаг возврата комиссии. По умолчанию — `false`. optional bool without_trades = 16; //Флаг получения ответа без массива сделок. optional bool without_overnights = 17; //Флаг показа overnight операций. } //Список операций по счету с пагинацией. message GetOperationsByCursorResponse { bool has_next = 1; //Признак, есть ли следующий элемент. string next_cursor = 2; //Следующий курсор. repeated OperationItem items = 6; //Список операций. } //Данные об операции. message OperationItem { string cursor = 1; //Курсор. string broker_account_id = 6; //Номер счета клиента. string id = 16; //Идентификатор операции, может меняться с течением времени. string parent_operation_id = 17; //Идентификатор родительской операции. Может измениться, если изменился ID родительской операции. string name = 18; //Название операции. google.protobuf.Timestamp date = 21; //Дата поручения. OperationType type = 22; //Тип операции. string description = 23; //Описание операции. OperationState state = 24; //Статус поручения. string instrument_uid = 31; //Уникальный идентификатор инструмента. string figi = 32; //FIGI. string instrument_type = 33; //Тип инструмента. InstrumentType instrument_kind = 34; //Тип инструмента. string position_uid = 35; //Уникальный идентификатор позиции. string ticker = 36; //Тикер инструмента. string class_code = 37; //Класс-код (секция торгов). MoneyValue payment = 41; //Сумма операции. MoneyValue price = 42; //Цена операции за 1 инструмент. MoneyValue commission = 43; //Комиссия. MoneyValue yield = 44; //Доходность. Quotation yield_relative = 45; //Относительная доходность. MoneyValue accrued_int = 46; //Накопленный купонный доход. int64 quantity = 51; //Количество единиц инструмента. int64 quantity_rest = 52; //Неисполненный остаток по сделке. int64 quantity_done = 53; //Исполненный остаток. google.protobuf.Timestamp cancel_date_time = 56; //Дата и время снятия заявки. string cancel_reason = 57; //Причина отмены операции. OperationItemTrades trades_info = 61; //Массив сделок. string asset_uid = 64; //Идентификатор актива. repeated ChildOperationItem child_operations = 65; //Массив дочерних операций. } //Массив с информацией о сделках. message OperationItemTrades { repeated OperationItemTrade trades = 6; } //Сделка по операции. message OperationItemTrade { string num = 1; //Номер сделки. google.protobuf.Timestamp date = 6; //Дата сделки. int64 quantity = 11; //Количество в единицах. MoneyValue price = 16; //Цена. MoneyValue yield = 21; //Доходность. Quotation yield_relative = 22; //Относительная доходность. } //Запрос установки stream-соединения позиций. message PositionsStreamRequest { repeated string accounts = 1; //Массив идентификаторов счетов пользователя. bool with_initial_positions = 3; //Получение состояния позиций на момент подключения. PingDelaySettings ping_settings = 15; //Запрос настройки пинга. } //Информация по изменению позиций портфеля. message PositionsStreamResponse { oneof payload { PositionsSubscriptionResult subscriptions = 1; //Объект результата подписки. PositionData position = 2; //Объект стриминга позиций. Ping ping = 3; //Проверка активности стрима. PositionsResponse initial_positions = 5; //Текущие позиции. } } //Объект результата подписки. message PositionsSubscriptionResult { repeated PositionsSubscriptionStatus accounts = 1; //Массив счетов клиента. string tracking_id = 7; //Уникальный идентификатор запроса, подробнее: [tracking_id](/invest/intro/developer/protocols/grpc#tracking-id). string stream_id = 8; //Идентификатор открытого соединения } //Счет клиента. message PositionsSubscriptionStatus { string account_id = 1; //Идентификатор счета. PositionsAccountSubscriptionStatus subscription_status = 6; //Результат подписки. } //Результат подписки. enum PositionsAccountSubscriptionStatus { POSITIONS_SUBSCRIPTION_STATUS_UNSPECIFIED = 0; //Тип не определен. POSITIONS_SUBSCRIPTION_STATUS_SUCCESS = 1; //Успешно. POSITIONS_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND = 2; //Счет не найден или недостаточно прав. POSITIONS_SUBSCRIPTION_STATUS_INTERNAL_ERROR = 3; //Произошла ошибка. } //Данные о позиции портфеля. message PositionData { string account_id = 1; //Идентификатор счета. repeated PositionsMoney money = 2; //Массив валютных позиций портфеля. repeated PositionsSecurities securities = 3; //Список ценно-бумажных позиций портфеля. repeated PositionsFutures futures = 4; //Список фьючерсов портфеля. repeated PositionsOptions options = 5; //Список опционов портфеля. google.protobuf.Timestamp date = 6; //Дата и время операции в формате UTC. } //Валютная позиция портфеля. message PositionsMoney { MoneyValue available_value = 1; //Доступное количество валютный позиций. MoneyValue blocked_value = 2; //Заблокированное количество валютных позиций. } message ChildOperationItem { string instrument_uid = 1; //Уникальный идентификатор инструмента. MoneyValue payment = 2; //Сумма операции. } //Запрос установки stream-соединения операций. message OperationsStreamRequest { repeated string accounts = 1; //Массив идентификаторов счетов пользователя. PingDelaySettings ping_settings = 15; //Запрос настройки пинга. } //Информация по операциям. message OperationsStreamResponse { oneof payload { OperationsSubscriptionResult subscriptions = 1; //Объект результата подписки. OperationData operation = 2; //Объект стриминга операций. Ping ping = 3; //Проверка активности стрима. } } //Объект результата подписки. message OperationsSubscriptionResult { repeated string accounts = 1; //Массив счетов клиента. OperationsAccountSubscriptionStatus subscription_status = 2; //Результат подписки. string tracking_id = 7; //Уникальный идентификатор запроса, подробнее: [tracking_id](/invest/intro/developer/protocols/grpc#tracking-id). string stream_id = 8; //Идентификатор открытого соединения } //Результат подписки. enum OperationsAccountSubscriptionStatus { OPERATIONS_SUBSCRIPTION_STATUS_UNSPECIFIED = 0; //Тип не определен. OPERATIONS_SUBSCRIPTION_STATUS_SUCCESS = 1; //Успешно. OPERATIONS_SUBSCRIPTION_STATUS_ACCOUNT_NOT_FOUND = 2; //Счет не найден или недостаточно прав. OPERATIONS_SUBSCRIPTION_STATUS_INTERNAL_ERROR = 3; //Произошла ошибка. } //Данные об операции. message OperationData { string broker_account_id = 1; //Идентификатор счета. string id = 2; //Номер поручения. string parent_operation_id = 3; //Номер родительского поручения. string name = 4; //Название инструмента. google.protobuf.Timestamp date = 5; //Дата. OperationType type = 6; //Тип операции. OperationState state = 7; //Статус поручения. string instrument_uid = 8; //Уникальный идентификатор инструмента. string figi = 9; //FIGI-идентификатор инструмента. string instrument_type = 10; //Тип инструмента. InstrumentType instrument_kind = 11; //Тип инструмента. string position_uid = 12; //Идентификатор позиции. string ticker = 13; //Тикер инструмента. string class_code = 14; //Класс-код (секция торгов). MoneyValue payment = 15; //Сумма операции. }