damsel/proto/withdrawals_provider_adapter.thrift
Артем 47767ae734
FF-93: FIX - Get rate point (#455)
* changed to get rate point instead of rate table

* minor
2019-06-28 12:12:39 +03:00

147 lines
4.6 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 "msgpack.thrift"
include "domain.thrift"
include "withdrawals_domain.thrift"
namespace java com.rbkmoney.damsel.withdrawals.provider_adapter
namespace erlang wthadpt
typedef domain.Failure Failure
/**
* Adapter options.
*/
typedef domain.ProxyOptions Options
/**
* Непрозрачное для процессинга состояние адаптера, связанное с определённой сессией взаимодействия с
* третьей стороной.
*/
typedef msgpack.Value InternalState
/**
* Непрозрачные для процессинга данные конвертации валют, связанные с особенностями взаимодействия с
* третьей стороной.
*/
typedef msgpack.Value RateData
/**
* Требование адаптера к процессингу, отражающее дальнейший прогресс сессии взаимодействия с третьей
* стороной.
*/
union Intent {
1: FinishIntent finish
2: SleepIntent sleep
}
/**
* Требование завершить сессию взаимодействия с третьей стороной.
*/
struct FinishIntent {
1: required FinishStatus status
}
/**
* Статус, c которым завершилась сессия взаимодействия с третьей стороной.
*/
union FinishStatus {
/** Успешное завершение взаимодействия. */
1: Success success
/** Неуспешное завершение взаимодействия с пояснением возникшей проблемы. */
2: Failure failure
}
struct Success {
1: required domain.TransactionInfo trx_info
}
/**
* Требование прервать на определённое время сессию взаимодействия, с намерением продолжить её потом.
*/
struct SleepIntent {
/** Таймер, определяющий когда следует продолжить взаимодействие. */
1: required base.Timer timer
}
///
/**
* Данные вывода, необходимые для обращения к провайдеру.
*/
struct Withdrawal {
1: required base.ID id
2: required Cash body
3: required Destination destination
4: optional Identity sender
5: optional Identity receiver
6: optional ExchangeRate exchange_rate
}
typedef withdrawals_domain.Destination Destination
typedef withdrawals_domain.Identity Identity
struct Cash {
1: required domain.Amount amount
2: required domain.Currency currency
}
/**
* Данные для получения курса конвертации заданной суммы по выбранным валютам.
*/
struct GetExchangeRateParams {
1: optional base.ID idempotency_id
2: required domain.Currency currency_from
3: required domain.Currency currency_to
/**
* Сумма в одной из валют обмена
*/
4: required Cash exchange_cash
}
///
/**
* Результат обращения к адаптеру в рамках сессии.
*
* В результате обращения адаптер может решить, следует ли:
* - завершить сессию взаимодействия с провайдером (FinishIntent); или
* - просто приостановить на определённое время (SleepIntent), обновив своё состояние, которое
* вернётся к нему в последующем запросе.
*/
struct ProcessResult {
1: required Intent intent
2: optional InternalState next_state
}
struct ExchangeRate {
1: required Cash cash_from
2: required Cash cash_to
3: required base.Timestamp created_at
4: required base.Timestamp expires_on
5: optional RateData rate_data
}
service Adapter {
/**
* Запрос к адаптеру на проведение взаимодействия с провайдером в рамках платежной сессии.
*/
ProcessResult ProcessWithdrawal (
1: Withdrawal withdrawal
2: InternalState state
3: Options opts
)
throws (
)
/**
* Запрос к адаптеру на получение курсов конвертации.
*/
ExchangeRate GetExchangeRate (
1: GetExchangeRateParams params
2: Options opts
)
throws (
)
}