damsel/proto/merch_stat.thrift
2017-08-01 16:06:29 +03:00

227 lines
6.7 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 "domain.thrift"
include "geo_ip.thrift"
namespace java com.rbkmoney.damsel.merch_stat
namespace erlang merchstat
/**
* Информация о платеже.
* **/
struct StatPayment {
1 : required domain.InvoicePaymentID id
2 : required domain.InvoiceID invoice_id
3 : required domain.PartyID owner_id
4 : required domain.ShopID shop_id
5 : required base.Timestamp created_at
6 : required InvoicePaymentStatus status
7 : required domain.Amount amount
8 : required domain.Amount fee
9 : required string currency_symbolic_code
10: required PaymentTool payment_tool
11: optional domain.IPAddress ip_address
12: optional domain.Fingerprint fingerprint
13: optional string phone_number
14: optional string email
15: required domain.PaymentSessionID session_id
16: optional base.Content context
17: optional geo_ip.LocationInfo location_info
}
union OperationFailure {
1: OperationTimeout operation_timeout
2: ExternalFailure external_failure
}
struct OperationTimeout {}
struct ExternalFailure {
1: required string code
2: optional string description
}
struct InvoicePaymentPending {}
struct InvoicePaymentProcessed {}
struct InvoicePaymentCaptured {}
struct InvoicePaymentCancelled {}
struct InvoicePaymentFailed { 1: required OperationFailure failure }
union InvoicePaymentStatus {
1: InvoicePaymentPending pending
4: InvoicePaymentProcessed processed
2: InvoicePaymentCaptured captured
5: InvoicePaymentCancelled cancelled
3: InvoicePaymentFailed failed
}
union PaymentTool {
1: BankCard bank_card
}
struct BankCard {
1: required domain.Token token
2: required domain.BankCardPaymentSystem payment_system
3: required string bin
4: required string masked_pan
}
/**
* Информация об инвойсе.
*/
struct StatInvoice {
1 : required domain.InvoiceID id
2 : required domain.PartyID owner_id
3 : required domain.ShopID shop_id
4 : required base.Timestamp created_at
5 : required InvoiceStatus status
6 : required string product
7 : optional string description
8 : required base.Timestamp due
9 : required domain.Amount amount
10: required string currency_symbolic_code
11: optional base.Content context
}
struct InvoiceUnpaid {}
struct InvoicePaid {}
struct InvoiceCancelled { 1: required string details }
struct InvoiceFulfilled { 1: required string details }
union InvoiceStatus {
1: InvoiceUnpaid unpaid
2: InvoicePaid paid
3: InvoiceCancelled cancelled
4: InvoiceFulfilled fulfilled
}
/**
* Информация о клиенте. Уникальность клиента определяется по fingerprint.
*/
struct StatCustomer {
1: required domain.Fingerprint id
2: required base.Timestamp created_at
}
typedef base.ID PayoutID
/**
* Информация о выплате
*/
struct StatPayout {
1: required PayoutID id
2: required domain.PartyID party_id
3: required domain.ShopID shop_id
4: required base.Timestamp created_at
5: required PayoutStatus status
6: required domain.Amount amount
7: required domain.Amount fee
8: required PayoutType payout_type
9: optional PaidDetails paidDetails
}
union PayoutStatus {
1: PayoutUnpaid unpaid
2: PayoutPaid paid
3: PayoutCancelled cancelled
4: PayoutConfirmed confirmed
}
union PaidDetails {
1: CardPaidDetails card_details
2: AccountPaidDetails account_details
}
struct CardPaidDetails { 1: required string mask_pan }
struct AccountPaidDetails {}
struct PayoutUnpaid {}
struct PayoutPaid {}
struct PayoutCancelled { 1: required string details }
struct PayoutConfirmed {}
union PayoutType {
1: CardPayout card_payout
2: AccountPayout account_payout
}
struct CardPayout {}
struct AccountPayout {
1: required string account
2: required string bank_corr_account
3: required string bank_bik
4: required string inn
5: required string purpose
}
typedef map<string, string> StatInfo
typedef base.InvalidRequest InvalidRequest
/**
* Данные запроса к сервису. Формат и функциональность запроса зависят от DSL.
* DSL содержит условия выборки, а также id мерчанта, по которому производится выборка.
*/
struct StatRequest {
1: required string dsl
}
/**
* Данные ответа сервиса.
* data - данные, тип зависит от целевой функции.
* total_count - ожидаемое общее количество данных (т.е. размер всех данных результата, без ограничений по количеству)
*/
struct StatResponse {
1: required StatResponseData data
2: optional i32 total_count
}
/**
* Возможные варианты возвращаемых данных
*/
union StatResponseData {
1: list<StatPayment> payments
2: list<StatInvoice> invoices
3: list<StatCustomer> customers
4: list<StatPayout> payouts
5: list<StatInfo> records
}
/**
* Ошибка превышения максимального размера блока данных, доступного для отправки клиенту.
* limit - текущий максимальный размер блока.
*/
exception DatasetTooBig {
1: i32 limit;
}
service MerchantStatistics {
/**
* Возвращает набор данных о платежах
*/
StatResponse GetPayments(1: StatRequest req) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2)
/**
* Возвращает набор данных об инвойсах
*/
StatResponse GetInvoices(1: StatRequest req) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2)
/**
* Возвращает набор данных о покупателях
*/
StatResponse GetCustomers(1: StatRequest req) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2)
/**
* Возвращает набор данных о выплатах
*/
StatResponse GetPayouts(1: StatRequest req) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2)
/**
* Возвращает аггрегированные данные в виде набора записей, формат возвращаемых данных зависит от целевой функции, указанной в DSL.
*/
StatResponse GetStatistics(1: StatRequest req) throws (1: InvalidRequest ex1, 2: DatasetTooBig ex2)
}