damsel/proto/cds.thrift
Andrew Mayorov 5e569fcaaa HG-116: Fix a couple of consistency and clarity issues (#97)
* HG-116: Fix a couple of consistency and clarity issues

* HG-116: Introduce JSON-like type

* HG-116: Fix JSON types and introduce msgpack types

* HG-116: Remove the notion of schema revision

* HG-116: Introduce invoice info, better term needed

* HG-116: Rename `SmthPredicate` -> `SmthDecision`

* HG-116: Add missing namespace declarations

* HG-116: Try to get rid of keyword conflicts

* HG-116: Mention missing support for extreme floats
2016-12-13 20:23:13 +03:00

93 lines
3.1 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"
namespace java com.rbkmoney.damsel.cds
/** Часть мастер-ключа */
typedef binary MasterKeyShare;
typedef list<MasterKeyShare> MasterKeyShares;
/** Дата экспирации */
struct ExpDate {
/** Месяц 1..12 */
1: required i8 month
/** Год 2015..∞ */
2: required i16 year
}
/** Открытые карточные данные (в отличие от domain.BankCard) */
struct CardData {
/** Номер карточки без пробелов [0-9]{14,19} */
1: required string pan
2: required ExpDate exp_date
/** Имя держателя */
3: required string cardholder_name
/** Код верификации [0-9]{3,4} */
4: required string cvv
}
struct PutCardDataResult {
1: required domain.BankCard bank_card
2: required domain.PaymentSession session
}
struct Unlocked {}
union UnlockStatus {
/** Успешно. */
1: Unlocked unlocked
/** Сколько частей ключа нужно еще ввести, чтобы расшифровать хранилище. */
2: i16 more_keys_needed
}
exception InvalidCardData {}
exception CardDataNotFound {}
exception NoKeyring {}
exception KeyringLocked {}
exception KeyringExists {}
/** Интерфейс для администраторов */
service Keyring {
/** Создать новый кейринг
* threshold - минимально необходимое количество ключей для восстановления мастер ключа
* num_shares - общее количество частей, на которое нужно разбить мастер-ключ
*/
MasterKeyShares Init (1: i16 threshold, 2: i16 num_shares) throws (1: KeyringExists exists)
/** Предоставить часть мастер-ключа для расшифровки кейринга.
* Необходимо вызвать с разными частами мастер столько раз, сколько было указано в качестве
* параметра threshold при создании кейринга
*/
UnlockStatus Unlock (1: MasterKeyShare key_share) throws (1: NoKeyring no_keyring)
/** Зашифровать кейринг */
void Lock () throws ()
/** Добавить новый ключ в кейринг */
void Rotate () throws (1: KeyringLocked locked)
}
/** Интерфейс для приложений */
service Storage {
/** Получить карточные данные без CVV */
CardData GetCardData (1: domain.Token token)
throws (1: CardDataNotFound not_found, 2: KeyringLocked locked)
/** Получить карточные данные c CVV */
CardData GetSessionCardData (1: domain.Token token, 2: domain.PaymentSession session)
throws (1: CardDataNotFound not_found, 2: KeyringLocked locked)
/** Сохранить карточные данные */
PutCardDataResult PutCardData (1: CardData card_data)
throws (1: InvalidCardData invalid, 2: KeyringLocked locked)
}