damsel/proto/event_stock.thrift
Vladimir Pankrashkin a46ee27a7c
Ft/bm 43/geck support (#306)
* BM-43: Pull up stock event info definition
2018-03-01 15:02:35 +03:00

138 lines
4.9 KiB
Thrift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

include "base.thrift"
include "payment_processing.thrift"
include "payout_processing.thrift"
namespace java com.rbkmoney.damsel.event_stock
namespace erlang event_stock
typedef list<StockEvent> StockEvents
typedef base.EventID EventID
typedef base.Timestamp Timestamp
typedef base.InvalidRequest InvalidRequest
/**
* Исходное событие, полученное из HG или другого источника.
*/
union SourceEvent {
1: payment_processing.Event processing_event
2: payout_processing.Event payout_event
100: RawEvent raw_event
}
/**
* Событие, которое BM отдает клиентам.
* source_event - Исходное событие, к которому применяeтся фильтр.
* id - id события, соответствующее идентификатору source_event
* time - время создания события, соответствующее времени создания в source_event
* version - версия thrift протокола, которой соответствуют передаваемые данные
*/
struct StockEvent {
1: required SourceEvent source_event
2: optional EventID id
3: optional Timestamp time
4: optional string version
}
/**
* Событие в виде абстрактной структуры данных geck, по умолчанию application/msgpack
*/
struct RawEvent {
4: required base.Content content
}
/**
* Граница диапазона EventId.
*/
union EventIDBound {
1: EventID inclusive
2: EventID exclusive
}
/**
* Диапазон идентификаторов событий.
* from_id - с какого ID.
* to_id - по какой ID. Если не задано - запрашиваются все данные от from_id.
* Если from > to - диапазон считается некорректным.
*/
struct EventIDRange {
1: required EventIDBound from_id
2: optional EventIDBound to_id
}
/**
* Граница диапазона Timestamp.
*/
union EventTimeBound {
1: Timestamp inclusive;
2: Timestamp exclusive;
}
/**
* Диапазон времени создания событий.
* from_time - начальное время.
* to_time - конечное время. Если не задано - запрашиваются все данные от from_time.
* Если from > to - диапазон считается некорректным.
*/
struct EventTimeRange {
1: required EventTimeBound from_time;
2: optional EventTimeBound to_time;
}
/**
* Диапазон событий по ID или времени создания.
* Если границы диапазона выборки указавают на не существующие значения, то в выборку попадут ближайшие удовлетворяющее условию значения.
*/
union EventRange {
1: EventIDRange id_range;
2: EventTimeRange time_range;
}
/**
* Ограничение выборки событий.
* event_range - диапазон выборки. Нужно явно задавать, какой диапазон ID или времени должен быть отфильтрован.
* limit - максимальный размер выборки, неотрицательное целое число.
*/
struct EventConstraint {
1: required EventRange event_range;
3: required i32 limit;
}
/**
* Ошибка превышения максимального размера блока данных, доступного для отправки клиенту.
* limit - текущий максимальный размер блока.
*/
exception DatasetTooBig {
1: i32 limit;
}
/***
* Ошибка доступа к отсутствующему элементу в хранилище событий.
**/
exception NoStockEvent {
}
/**
* Интерфейс BM для клиентов.
*/
service EventRepository {
/**
* Возвращает события, удовлетворяющие переданному условию.
* Возвращаемый набор данных отсортирован по ID.
* Возвращает ошибку InvalidRequest, если диапазон фильтрации или лимит указан некорректно.
* Возвращает ошибку DatasetTooBig, если результирующий блок данных слишком большой.
*/
StockEvents GetEvents(1: EventConstraint constraint) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2)
/**
* Возвращает наиболее позднее известное на момент исполнения запроса событие.
*/
StockEvent GetLastEvent () throws (1: NoStockEvent ex1)
/**
* Возвращает наиболее раннее событие, имеющееся в хранилище.
*/
StockEvent GetFirstEvent () throws (1: NoStockEvent ex1)
}