damsel/proto/domain.thrift

2232 lines
59 KiB
Thrift
Raw Normal View History

/**
* Определения предметной области.
*/
include "base.thrift"
include "msgpack.thrift"
include "json.thrift"
namespace java com.rbkmoney.damsel.domain
namespace erlang domain
typedef i64 DataRevision
typedef i32 ObjectID
typedef json.Value Metadata
/* Common */
/** Контактная информация. **/
struct ContactInfo {
1: optional string phone_number
2: optional string email
}
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
union OperationFailure {
1: OperationTimeout operation_timeout
2: Failure failure
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
}
struct OperationTimeout {}
/**
* "Динамическое" представление ошибки,
* должно использоваться только для передачи,
* для интерпретации нужно использовать конвертацию в типизированный вид.
*
* Если при попытке интерпретировать код через типизированный вид происходит ошибка (нет такого типа),
* то это означает, что ошибка неизвестна, и такую ситуацию нужно уметь обрабатывать
* (например просто отдать неизветсную ошибку наверх).
*
* Старые ошибки совместимы с новыми и будут читаться.
* Структура осталась та же, только поле description переименовалось в reason,
* и добавилось поле sub.
* В результате для старых ошибок description будет в reason, а в code будет код ошибки
* (который будет интропретирован как неизвестная ошибка).
*
*/
struct Failure {
1: required FailureCode code;
2: optional FailureReason reason;
3: optional SubFailure sub;
}
typedef string FailureCode;
typedef string FailureReason; // причина возникшей ошибки и пояснение откуда она взялась
// возможность делать коды ошибок иерархическими
struct SubFailure {
1: required FailureCode code;
2: optional SubFailure sub;
}
/** Сумма в минимальных денежных единицах. */
typedef i64 Amount
/** Номер счёта. */
typedef i64 AccountID
/** Денежные средства, состоящие из суммы и валюты. */
struct Cash {
2016-05-18 16:27:06 +00:00
1: required Amount amount
2: required CurrencyRef currency
}
/* Contractor transactions */
struct TransactionInfo {
1: required string id
2: optional base.Timestamp timestamp
3: required base.StringMap extra
4: optional AdditionalTransactionInfo additional_info
}
struct AdditionalTransactionInfo {
1: optional string rrn // Retrieval Reference Number
2: optional string approval_code // Authorization Approval Code
3: optional string acs_url // Issuer Access Control Server (ACS)
4: optional string pareq // Payer Authentication Request (PAReq)
5: optional string md // Merchant Data
6: optional string term_url // Upon success term_url callback is called with following form encoded params
7: optional string pares // Payer Authentication Response (PARes)
8: optional string eci // Electronic Commerce Indicator
9: optional string cavv // Cardholder Authentication Verification Value
10: optional string xid // 3D Secure transaction identifier
11: optional string cavv_algorithm // Indicates algorithm used to generate CAVV
12: optional ThreeDsVerification three_ds_verification
}
/**
* Issuer Authentication Results Values
**/
enum ThreeDsVerification {
authentication_successful // Y
attempts_processing_performed // A
authentication_failed // N
authentication_could_not_be_performed // U
2016-05-18 16:27:06 +00:00
}
/* Invoices */
typedef base.ID InvoiceID
typedef base.ID InvoicePaymentID
typedef base.ID InvoicePaymentRefundID
typedef base.ID InvoicePaymentAdjustmentID
typedef base.Content InvoiceContext
typedef base.Content InvoicePaymentContext
typedef string PaymentSessionID
typedef string Fingerprint
typedef string IPAddress
struct Invoice {
1 : required InvoiceID id
2 : required PartyID owner_id
13: optional PartyRevision party_revision
3 : required ShopID shop_id
4 : required base.Timestamp created_at
6 : required InvoiceStatus status
7 : required InvoiceDetails details
8 : required base.Timestamp due
10: required Cash cost
11: optional InvoiceContext context
12: optional InvoiceTemplateID template_id
14: optional string external_id
}
struct InvoiceDetails {
1: required string product
2: optional string description
3: optional InvoiceCart cart
}
struct InvoiceCart {
1: required list<InvoiceLine> lines
}
struct InvoiceLine {
1: required string product
2: required i32 quantity
3: required Cash price
/* Taxes and other stuff goes here */
4: required map<string, msgpack.Value> metadata
}
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
}
struct InvoicePayment {
1: required InvoicePaymentID id
2: required base.Timestamp created_at
10: required DataRevision domain_revision
16: optional PartyID owner_id
17: optional ShopID shop_id
15: optional PartyRevision party_revision
3: required InvoicePaymentStatus status
14: required Payer payer
8: required Cash cost
13: required InvoicePaymentFlow flow
18: optional bool make_recurrent
6: optional InvoicePaymentContext context
19: optional string external_id
2019-08-15 12:32:03 +00:00
20: optional string payment_deadline
}
struct InvoicePaymentPending {}
struct InvoicePaymentProcessed {}
2019-01-28 10:52:37 +00:00
struct InvoicePaymentCaptured {
1: optional string reason
2: optional Cash cost
3: optional InvoiceCart cart
2019-01-28 10:52:37 +00:00
}
struct InvoicePaymentCancelled { 1: optional string reason }
struct InvoicePaymentRefunded {}
struct InvoicePaymentFailed { 1: required OperationFailure failure }
/**
* Шаблон инвойса.
* Согласно https://github.com/rbkmoney/coredocs/blob/0a5ae1a79f977be3134c3b22028631da5225d407/docs/domain/entities/invoice.md#шаблон-инвойса
*/
typedef base.ID InvoiceTemplateID
struct InvoiceTemplate {
1: required InvoiceTemplateID id
2: required PartyID owner_id
3: required ShopID shop_id
5: required LifetimeInterval invoice_lifetime
9: required string product # for backward compatibility
10: optional string description
8: required InvoiceTemplateDetails details
7: optional InvoiceContext context
}
union InvoiceTemplateDetails {
1: InvoiceCart cart
2: InvoiceTemplateProduct product
}
struct InvoiceTemplateProduct {
1: required string product
2: required InvoiceTemplateProductPrice price
3: required map<string, msgpack.Value> metadata
}
union InvoiceTemplateProductPrice {
1: Cash fixed
2: CashRange range
3: InvoiceTemplateCostUnlimited unlim
}
struct InvoiceTemplateCostUnlimited {}
/**
* Статус платежа.
*/
union InvoicePaymentStatus {
1: InvoicePaymentPending pending
4: InvoicePaymentProcessed processed
2: InvoicePaymentCaptured captured
5: InvoicePaymentCancelled cancelled
6: InvoicePaymentRefunded refunded
3: InvoicePaymentFailed failed
}
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
/**
* Целевое значение статуса платежа.
*/
union TargetInvoicePaymentStatus {
/**
* Платёж обработан.
*
* При достижении платежом этого статуса процессинг должен обладать:
* - фактом того, что провайдер _по крайней мере_ авторизовал списание денежных средств в
* пользу системы;
* - данными транзакции провайдера.
*/
1: InvoicePaymentProcessed processed
/**
* Платёж подтверждён.
*
* При достижении платежом этого статуса процессинг должен быть уверен в том, что провайдер
* _по крайней мере_ подтвердил финансовые обязательства перед системой.
*/
2: InvoicePaymentCaptured captured
/**
* Платёж отменён.
*
* При достижении платежом этого статуса процессинг должен быть уверен в том, что провайдер
* аннулировал неподтверждённое списание денежных средств.
*
* В случае, если в рамках сессии проведения платежа провайдер авторизовал, но _ещё не
* подтвердил_ списание средств, эта цель является обратной цели `processed`. В ином случае
* эта цель недостижима, и взаимодействие в рамках сессии должно завершится с ошибкой.
*/
3: InvoicePaymentCancelled cancelled
/**
* Платёж возвращён.
*
* При достижении платежом этого статуса процессинг должен быть уверен в том, что провайдер
* возвратил денежные средства плательщику, потраченные им в ходе подтверждённого списания.
*
* Если эта цель недостижима, взаимодействие в рамках сессии должно завершится с ошибкой.
*/
4: InvoicePaymentRefunded refunded
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
}
union Payer {
1: PaymentResourcePayer payment_resource
2: CustomerPayer customer
3: RecurrentPayer recurrent
}
struct PaymentResourcePayer {
1: required DisposablePaymentResource resource
2: required ContactInfo contact_info
}
struct CustomerPayer {
1: required CustomerID customer_id
2: required CustomerBindingID customer_binding_id
3: required RecurrentPaymentToolID rec_payment_tool_id
4: required PaymentTool payment_tool
2017-11-22 10:21:20 +00:00
5: required ContactInfo contact_info
}
struct RecurrentPayer {
1: required PaymentTool payment_tool
2: required RecurrentParentPayment recurrent_parent
3: required ContactInfo contact_info
}
struct ClientInfo {
1: optional IPAddress ip_address
2: optional Fingerprint fingerprint
}
struct PaymentRoute {
1: required ProviderRef provider
2: required TerminalRef terminal
}
struct RecurrentParentPayment {
1: required InvoiceID invoice_id
2: required InvoicePaymentID payment_id
}
/* Adjustments */
struct InvoicePaymentAdjustment {
1: required InvoicePaymentAdjustmentID id
2: required InvoicePaymentAdjustmentStatus status
3: required base.Timestamp created_at
4: required DataRevision domain_revision
5: required string reason
6: required FinalCashFlow new_cash_flow
7: required FinalCashFlow old_cash_flow_inverse
8: optional PartyRevision party_revision
}
struct InvoicePaymentAdjustmentPending {}
struct InvoicePaymentAdjustmentProcessed {}
struct InvoicePaymentAdjustmentCaptured { 1: required base.Timestamp at }
struct InvoicePaymentAdjustmentCancelled { 1: required base.Timestamp at }
union InvoicePaymentAdjustmentStatus {
1: InvoicePaymentAdjustmentPending pending
2: InvoicePaymentAdjustmentCaptured captured
3: InvoicePaymentAdjustmentCancelled cancelled
4: InvoicePaymentAdjustmentProcessed processed
}
/**
* Процесс выполнения платежа.
*/
union InvoicePaymentFlow {
1: InvoicePaymentFlowInstant instant
2: InvoicePaymentFlowHold hold
}
struct InvoicePaymentFlowInstant {}
struct InvoicePaymentFlowHold {
1: required OnHoldExpiration on_hold_expiration
2: required base.Timestamp held_until
}
enum OnHoldExpiration {
cancel
capture
}
/* Refunds */
struct InvoicePaymentRefund {
1: required InvoicePaymentRefundID id
2: required InvoicePaymentRefundStatus status
3: required base.Timestamp created_at
4: required DataRevision domain_revision
7: optional PartyRevision party_revision
6: optional Cash cash
5: optional string reason
8: optional InvoiceCart cart
9: optional string external_id
}
union InvoicePaymentRefundStatus {
1: InvoicePaymentRefundPending pending
2: InvoicePaymentRefundSucceeded succeeded
3: InvoicePaymentRefundFailed failed
}
struct InvoicePaymentRefundPending {}
struct InvoicePaymentRefundSucceeded {}
struct InvoicePaymentRefundFailed {
1: required OperationFailure failure
}
/* Blocking and suspension */
union Blocking {
1: Unblocked unblocked
2: Blocked blocked
}
struct Unblocked {
1: required string reason
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
2: required base.Timestamp since
}
struct Blocked {
1: required string reason
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
2: required base.Timestamp since
}
union Suspension {
1: Active active
2: Suspended suspended
}
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
struct Active {
1: required base.Timestamp since
}
struct Suspended {
1: required base.Timestamp since
}
/* Parties */
typedef base.ID PartyID
typedef i64 PartyRevision
typedef string PartyMetaNamespace
typedef msgpack.Value PartyMetaData
typedef map<PartyMetaNamespace, PartyMetaData> PartyMeta
/** Участник. */
struct Party {
1: required PartyID id
7: required PartyContactInfo contact_info
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
8: required base.Timestamp created_at
2: required Blocking blocking
3: required Suspension suspension
9: required map<ContractorID, PartyContractor> contractors
4: required map<ContractID, Contract> contracts
5: required map<ShopID, Shop> shops
10: required map<WalletID, Wallet> wallets
6: required PartyRevision revision
}
struct PartyContactInfo {
1: required string email
}
/* Shops */
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
typedef base.ID ShopID
/** Магазин мерчанта. */
struct Shop {
1: required ShopID id
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
11: required base.Timestamp created_at
2: required Blocking blocking
3: required Suspension suspension
4: required ShopDetails details
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
10: required ShopLocation location
5: required CategoryRef category
6: optional ShopAccount account
7: required ContractID contract_id
8: optional PayoutToolID payout_tool_id
12: optional BusinessScheduleRef payout_schedule
}
struct ShopAccount {
1: required CurrencyRef currency
2: required AccountID settlement
3: required AccountID guarantee
/* Аккаунт на который выводятся деньги из системы */
4: required AccountID payout
}
struct ShopDetails {
1: required string name
2: optional string description
}
union ShopLocation {
1: string url
}
/** RBKM Wallets **/
typedef base.ID WalletID
struct Wallet {
1: required WalletID id
2: optional string name
3: required base.Timestamp created_at
4: required Blocking blocking
5: required Suspension suspension
6: required ContractID contract
7: optional WalletAccount account
}
struct WalletAccount {
1: required CurrencyRef currency
2: required AccountID settlement
// TODO
// ?????
3: required AccountID payout
}
/* Инспекция платежа */
enum RiskScore {
low = 1
high = 100
2017-08-10 08:43:26 +00:00
fatal = 9999
}
/* Contracts */
typedef base.ID ContractorID
typedef base.Opaque IdentityDocumentToken
struct PartyContractor {
1: required ContractorID id
2: required Contractor contractor
3: required ContractorIdentificationLevel status
4: required list<IdentityDocumentToken> identity_documents
}
2016-04-26 16:01:04 +00:00
/** Лицо, выступающее стороной договора. */
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
union Contractor {
2: RegisteredUser registered_user
1: LegalEntity legal_entity
3: PrivateEntity private_entity
}
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
struct RegisteredUser {
1: required string email
}
union LegalEntity {
1: RussianLegalEntity russian_legal_entity
2: InternationalLegalEntity international_legal_entity
}
// TODO refactor with RepresentativePerson
/** Юридическое лицо-резидент РФ */
struct RussianLegalEntity {
/* Наименование */
1: required string registered_name
/* ОГРН */
2: required string registered_number
/* ИНН/КПП */
3: required string inn
/* Адрес места нахождения */
4: required string actual_address
/* Адрес для отправки корреспонденции (почтовый) */
5: required string post_address
/* Наименование должности ЕИО/представителя */
6: required string representative_position
/* ФИО ЕИО/представителя */
7: required string representative_full_name
/* Наименование документа, на основании которого действует ЕИО/представитель */
8: required string representative_document
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
/* Реквизиты юр.лица */
9: required RussianBankAccount russian_bank_account
}
struct InternationalLegalEntity {
/* Наименование */
1: required string legal_name
/* Торговое наименование (если применимо) */
2: optional string trading_name
/* Адрес места регистрации */
3: required string registered_address
/* Адрес места нахождения (если отличается от регистрации)*/
4: optional string actual_address
/* Регистрационный номер */
5: optional string registered_number
}
enum ContractorIdentificationLevel {
none = 100
partial = 200
full = 300
}
/** Банковский счёт. */
struct RussianBankAccount {
1: required string account
2: required string bank_name
3: required string bank_post_account
4: required string bank_bik
}
struct InternationalBankAccount {
// common
6: optional string number
7: optional InternationalBankDetails bank
8: optional InternationalBankAccount correspondent_account
// sources
4: optional string iban // International Bank Account Number (ISO 13616)
// deprecated
1: optional string account_holder // we have `InternationalLegalEntity.legal_name` for that purpose
}
struct InternationalBankDetails {
// common
1: optional string bic // Business Identifier Code (ISO 9362)
2: optional Residence country
3: optional string name
4: optional string address
// sources
5: optional string aba_rtn // ABA Routing Transit Number
}
2018-12-10 11:00:35 +00:00
struct WalletInfo {
1: required WalletID wallet_id
}
union PrivateEntity {
1: RussianPrivateEntity russian_private_entity
}
struct RussianPrivateEntity {
1: required string first_name
2: required string second_name
3: required string middle_name
4: required ContactInfo contact_info
}
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
typedef base.ID PayoutToolID
struct PayoutTool {
1: required PayoutToolID id
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
4: required base.Timestamp created_at
2: required CurrencyRef currency
3: required PayoutToolInfo payout_tool_info
}
union PayoutToolInfo {
1: RussianBankAccount russian_bank_account
2: InternationalBankAccount international_bank_account
2018-12-10 11:00:35 +00:00
3: WalletInfo wallet_info
}
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
typedef base.ID ContractID
/** Договор */
struct Contract {
1: required ContractID id
14: optional ContractorID contractor_id
12: optional PaymentInstitutionRef payment_institution
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
11: required base.Timestamp created_at
4: optional base.Timestamp valid_since
5: optional base.Timestamp valid_until
6: required ContractStatus status
7: required TermSetHierarchyRef terms
8: required list<ContractAdjustment> adjustments
// TODO think about it
// looks like payout tools are a bit off here,
// maybe they should be directly in party
9: required list<PayoutTool> payout_tools
10: optional LegalAgreement legal_agreement
13: optional ReportPreferences report_preferences
// deprecated
3: optional Contractor contractor
}
/** Юридическое соглашение */
struct LegalAgreement {
1: required base.Timestamp signed_at
2: required string legal_agreement_id
3: optional base.Timestamp valid_until
}
struct ReportPreferences {
1: optional ServiceAcceptanceActPreferences service_acceptance_act_preferences
}
struct ServiceAcceptanceActPreferences {
1: required BusinessScheduleRef schedule
2: required Representative signer
}
struct Representative {
/* Наименование должности ЕИО/представителя */
1: required string position
/* ФИО ЕИО/представителя */
2: required string full_name
/* Документ, на основании которого действует ЕИО/представитель */
3: required RepresentativeDocument document
}
union RepresentativeDocument {
1: ArticlesOfAssociation articles_of_association // устав
2: LegalAgreement power_of_attorney // доверенность
}
struct ArticlesOfAssociation {}
union ContractStatus {
1: ContractActive active
2: ContractTerminated terminated
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
3: ContractExpired expired
}
struct ContractActive {}
struct ContractTerminated { 1: required base.Timestamp terminated_at }
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
struct ContractExpired {}
/* Categories */
struct CategoryRef { 1: required ObjectID id }
enum CategoryType {
test
live
}
/** Категория продаваемых товаров или услуг. */
struct Category {
1: required string name
2: required string description
3: optional CategoryType type = CategoryType.test
}
struct ContractTemplateRef { 1: required ObjectID id }
/** Шаблон договора или поправки **/
struct ContractTemplate {
4: optional string name
5: optional string description
1: optional Lifetime valid_since
2: optional Lifetime valid_until
3: required TermSetHierarchyRef terms
}
union Lifetime {
1: base.Timestamp timestamp
2: LifetimeInterval interval
}
struct LifetimeInterval {
1: optional i16 years
2: optional i16 months
3: optional i16 days
}
union ContractTemplateSelector {
1: list<ContractTemplateDecision> decisions
2: ContractTemplateRef value
}
struct ContractTemplateDecision {
1: required Predicate if_
2: required ContractTemplateSelector then_
}
/** Поправки к договору **/
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
typedef base.ID ContractAdjustmentID
struct ContractAdjustment {
HG-192: Introduce multiclaims (#131) * DC-23: changed PartyManagement interface to claims (#122) * DC-23: changed PartyManagement interface to work with claims as primary editing method DC-25: changed PartyChangeset to match with new interface (DC-23) Moved ShopLocation to Shop level * added ContractExpiered status and creation timestamp * changed contracts & shops IDs types from Int to String * extracted ShopUpdate fields to ShopModification level * added InvalidChangeset exception * Claim effects added (v0.1) * Claim effects v1.0 * Claim effects v1.1 added created_at in all party objects * Added ShopProxyChanged effect produced by ProxyModification changeset * added ClaimUpdated event and ClaimRevision property * added revision check to AcceptClaim * added revision to deny/revoke methods for uniformity * added ShopContractChanged to make one-to-one relations beetween change & effect * Category is back to ShopParams as optional field * AcceptClaim can throw InvalidChangeset exception * Added AnonymousEntity to fulfill contract creation requirements * Renamed AninymousEntity to RegisteredUser * Added PayoutToolType to distinguish test and live payout tools * Removed payout tool type due to redundancy * Added PayoutToolPrototype to incapsulate test payout tool params * Walker2 API (#125) * Walker 2 api new Methods for CRUD operations fro Claims, Comments and history(Actions) WALK-20 * rename to wc_deploy * add deploy_epic_nexus to list * fix make cmd * fixed suspension naming * elastico interface get end search party methods Ft/walk 27/elastico (#133) * Syncronize walker and payment processing thrifts * WALK-27: Bump to rbkmoney/image-build@efd28e5 (#138) * DC-27: added timestamp and revision to claim related events * DC-27: added updated timestamp to claim Added timestamp to blocking/suspension statuses (party & shop) for same reason. * DC-27: removed unnecessary timestamp from accepted status (#143) * Added missed InvalidContractStatus exception (#144) * Removed timestamp from ContractTermination changeset rebased to newest master * jenkins pr crutch * update walker 2 interface * fix signature * replace strings * add update and create date * Event batching v0.1 (obvious one) (#160) * HG-227: Publish formerly internal events (#161) * HG-227: Streamline event payload definitions * HG-227: Publish formerly internal events * HG-227: Introduce session-level result * HG-227: Start classifying operation failures * HG-227: Differentiate between domain and payproc invoicing models * HG-227: Strip domain models further * HG-227: Make risk score, route and cash flow required * HG-227: Give shop location back to proxies (#164)
2017-07-17 10:21:41 +00:00
1: required ContractAdjustmentID id
5: required base.Timestamp created_at
2: optional base.Timestamp valid_since
3: optional base.Timestamp valid_until
4: required TermSetHierarchyRef terms
}
/** Условия **/
// Service
// Payments
// Regular
// Held
// Recurring
// ...
// Payouts
// ...
struct TermSet {
1: optional PaymentsServiceTerms payments
2017-11-22 10:21:20 +00:00
2: optional RecurrentPaytoolsServiceTerms recurrent_paytools
3: optional PayoutsServiceTerms payouts
4: optional ReportsServiceTerms reports
5: optional WalletServiceTerms wallets
}
struct TimedTermSet {
1: required base.TimestampInterval action_time
2: required TermSet terms
}
struct TermSetHierarchy {
3: optional string name
4: optional string description
1: optional TermSetHierarchyRef parent_terms
2: required list<TimedTermSet> term_sets
}
struct TermSetHierarchyRef { 1: required ObjectID id }
2017-11-22 10:21:20 +00:00
/* Payments service terms */
struct PaymentsServiceTerms {
/* Shop level */
// TODO It looks like you belong to the better place, something they call `AccountsServiceTerms`.
1: optional CurrencySelector currencies
2: optional CategorySelector categories
/* Invoice level*/
4: optional PaymentMethodSelector payment_methods
5: optional CashLimitSelector cash_limit
/* Payment level */
6: optional CashFlowSelector fees
9: optional PaymentHoldsServiceTerms holds
8: optional PaymentRefundsServiceTerms refunds
}
struct PaymentHoldsServiceTerms {
1: optional PaymentMethodSelector payment_methods
2: optional HoldLifetimeSelector lifetime
2019-02-22 08:05:25 +00:00
/* Allow partial capture if this undefined, otherwise throw exception */
3: optional PartialCaptureServiceTerms partial_captures
}
2019-02-22 08:05:25 +00:00
struct PartialCaptureServiceTerms {}
struct PaymentRefundsServiceTerms {
1: optional PaymentMethodSelector payment_methods
2: optional CashFlowSelector fees
3: optional TimeSpanSelector eligibility_time
4: optional PartialRefundsServiceTerms partial_refunds
}
struct PartialRefundsServiceTerms {
1: optional CashLimitSelector cash_limit
}
/* Recurrent payment tools service terms */
struct RecurrentPaytoolsServiceTerms {
1: optional PaymentMethodSelector payment_methods
}
/* Payouts service terms */
struct PayoutsServiceTerms {
/* Payout schedule level */
4: optional BusinessScheduleSelector payout_schedules
/* Payout level */
1: optional PayoutMethodSelector payout_methods
2: optional CashLimitSelector cash_limit
3: optional CashFlowSelector fees
}
// legacy
struct PayoutCompilationPolicy {
1: required base.TimeSpan assets_freeze_for
}
/** Wallets service terms **/
struct WalletServiceTerms {
1: optional CurrencySelector currencies
2: optional CashLimitSelector wallet_limit
3: optional CumulativeLimitSelector turnover_limit
4: optional WithdrawalServiceTerms withdrawals
}
union CumulativeLimitSelector {
1: list<CumulativeLimitDecision> decisions
2: set<CumulativeLimit> value
}
struct CumulativeLimitDecision {
1: required Predicate if_
2: required CumulativeLimitSelector then_
}
// TODO think about abstracting period & cash to some union of diferend metrics & bounds
struct CumulativeLimit {
1: required CumulativeLimitPeriod period
2: required CashRange cash
}
enum CumulativeLimitPeriod {
today
this_week
this_month
this_year
}
/** Withdrawal service terms **/
struct WithdrawalServiceTerms {
1: optional CurrencySelector currencies
2: optional CashLimitSelector cash_limit
3: optional CashFlowSelector cash_flow
}
/* Payout methods */
enum PayoutMethod {
russian_bank_account
international_bank_account
2018-12-10 11:00:35 +00:00
wallet_info
}
struct PayoutMethodRef { 1: required PayoutMethod id }
/** Способ вывода, категория средства вывода. */
struct PayoutMethodDefinition {
1: required string name
2: required string description
}
union PayoutMethodSelector {
1: list<PayoutMethodDecision> decisions
2: set<PayoutMethodRef> value
}
struct PayoutMethodDecision {
1: required Predicate if_
2: required PayoutMethodSelector then_
}
/* Reports service terms */
struct ReportsServiceTerms {
1: optional ServiceAcceptanceActsTerms acts
}
/* Service Acceptance Acts (Акты об оказании услуг) */
struct ServiceAcceptanceActsTerms {
1: optional BusinessScheduleSelector schedules
}
/* Currencies */
/** Символьный код, уникально идентифицирующий валюту. */
typedef string CurrencySymbolicCode
struct CurrencyRef { 1: required CurrencySymbolicCode symbolic_code }
/** Валюта. */
struct Currency {
1: required string name
2: required CurrencySymbolicCode symbolic_code
3: required i16 numeric_code
4: required i16 exponent
}
union CurrencySelector {
1: list<CurrencyDecision> decisions
2: set<CurrencyRef> value
}
struct CurrencyDecision {
1: required Predicate if_
2: required CurrencySelector then_
}
/* Категории */
union CategorySelector {
1: list<CategoryDecision> decisions
2: set<CategoryRef> value
}
struct CategoryDecision {
1: required Predicate if_
2: required CategorySelector then_
}
/* Резиденция */
// Для обозначения спользуется alpha-3 код по стандарту ISO_3166-1
// https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
enum Residence {
ABH = 0 /*Abkhazia*/
AUS = 1 /*Australia*/
AUT = 2 /*Austria*/
AZE = 3 /*Azerbaijan*/
ALB = 4 /*Albania*/
DZA = 5 /*Algeria*/
ASM = 6 /*American Samoa*/
AIA = 7 /*Anguilla*/
AGO = 8 /*Angola*/
AND = 9 /*Andorra*/
ATA = 10 /*Antarctica*/
ATG = 11 /*Antigua and Barbuda*/
ARG = 12 /*Argentina*/
ARM = 13 /*Armenia*/
ABW = 14 /*Aruba*/
AFG = 15 /*Afghanistan*/
BHS = 16 /*Bahamas*/
BGD = 17 /*Bangladesh*/
BRB = 18 /*Barbados*/
BHR = 19 /*Bahrain*/
BLR = 20 /*Belarus*/
BLZ = 21 /*Belize*/
BEL = 22 /*Belgium*/
BEN = 23 /*Benin*/
BMU = 24 /*Bermuda*/
BGR = 25 /*Bulgaria*/
BOL = 26 /*Bolivia, plurinational state of*/
BES = 27 /*Bonaire, Sint Eustatius and Saba*/
BIH = 28 /*Bosnia and Herzegovina*/
BWA = 29 /*Botswana*/
BRA = 30 /*Brazil*/
IOT = 31 /*British Indian Ocean Territory*/
BRN = 32 /*Brunei Darussalam*/
BFA = 33 /*Burkina Faso*/
BDI = 34 /*Burundi*/
BTN = 35 /*Bhutan*/
VUT = 36 /*Vanuatu*/
HUN = 37 /*Hungary*/
VEN = 38 /*Venezuela*/
VGB = 39 /*Virgin Islands, British*/
VIR = 40 /*Virgin Islands, U.S.*/
VNM = 41 /*Vietnam*/
GAB = 42 /*Gabon*/
HTI = 43 /*Haiti*/
GUY = 44 /*Guyana*/
GMB = 45 /*Gambia*/
GHA = 46 /*Ghana*/
GLP = 47 /*Guadeloupe*/
GTM = 48 /*Guatemala*/
GIN = 49 /*Guinea*/
GNB = 50 /*Guinea-Bissau*/
DEU = 51 /*Germany*/
GGY = 52 /*Guernsey*/
GIB = 53 /*Gibraltar*/
HND = 54 /*Honduras*/
HKG = 55 /*Hong Kong*/
GRD = 56 /*Grenada*/
GRL = 57 /*Greenland*/
GRC = 58 /*Greece*/
GEO = 59 /*Georgia*/
GUM = 60 /*Guam*/
DNK = 61 /*Denmark*/
JEY = 62 /*Jersey*/
DJI = 63 /*Djibouti*/
DMA = 64 /*Dominica*/
DOM = 65 /*Dominican Republic*/
EGY = 66 /*Egypt*/
ZMB = 67 /*Zambia*/
ESH = 68 /*Western Sahara*/
ZWE = 69 /*Zimbabwe*/
ISR = 70 /*Israel*/
IND = 71 /*India*/
IDN = 72 /*Indonesia*/
JOR = 73 /*Jordan*/
IRQ = 74 /*Iraq*/
IRN = 75 /*Iran, Islamic Republic of*/
IRL = 76 /*Ireland*/
ISL = 77 /*Iceland*/
ESP = 78 /*Spain*/
ITA = 79 /*Italy*/
YEM = 80 /*Yemen*/
CPV = 81 /*Cape Verde*/
KAZ = 82 /*Kazakhstan*/
KHM = 83 /*Cambodia*/
CMR = 84 /*Cameroon*/
CAN = 85 /*Canada*/
QAT = 86 /*Qatar*/
KEN = 87 /*Kenya*/
CYP = 88 /*Cyprus*/
KGZ = 89 /*Kyrgyzstan*/
KIR = 90 /*Kiribati*/
CHN = 91 /*China*/
CCK = 92 /*Cocos (Keeling) Islands*/
COL = 93 /*Colombia*/
COM = 94 /*Comoros*/
COG = 95 /*Congo*/
COD = 96 /*Congo, Democratic Republic of the*/
PRK = 97 /*Korea, Democratic People's republic of*/
KOR = 98 /*Korea, Republic of*/
CRI = 99 /*Costa Rica*/
CIV = 100 /*Cote d'Ivoire*/
CUB = 101 /*Cuba*/
KWT = 102 /*Kuwait*/
CUW = 103 /*Curaçao*/
LAO = 104 /*Lao People's Democratic Republic*/
LVA = 105 /*Latvia*/
LSO = 106 /*Lesotho*/
LBN = 107 /*Lebanon*/
LBY = 108 /*Libyan Arab Jamahiriya*/
LBR = 109 /*Liberia*/
LIE = 110 /*Liechtenstein*/
LTU = 111 /*Lithuania*/
LUX = 112 /*Luxembourg*/
MUS = 113 /*Mauritius*/
MRT = 114 /*Mauritania*/
MDG = 115 /*Madagascar*/
MYT = 116 /*Mayotte*/
MAC = 117 /*Macao*/
MWI = 118 /*Malawi*/
MYS = 119 /*Malaysia*/
MLI = 120 /*Mali*/
UMI = 121 /*United States Minor Outlying Islands*/
MDV = 122 /*Maldives*/
MLT = 123 /*Malta*/
MAR = 124 /*Morocco*/
MTQ = 125 /*Martinique*/
MHL = 126 /*Marshall Islands*/
MEX = 127 /*Mexico*/
FSM = 128 /*Micronesia, Federated States of*/
MOZ = 129 /*Mozambique*/
MDA = 130 /*Moldova*/
MCO = 131 /*Monaco*/
MNG = 132 /*Mongolia*/
MSR = 133 /*Montserrat*/
MMR = 134 /*Burma*/
NAM = 135 /*Namibia*/
NRU = 136 /*Nauru*/
NPL = 137 /*Nepal*/
NER = 138 /*Niger*/
NGA = 139 /*Nigeria*/
NLD = 140 /*Netherlands*/
NIC = 141 /*Nicaragua*/
NIU = 142 /*Niue*/
NZL = 143 /*New Zealand*/
NCL = 144 /*New Caledonia*/
NOR = 145 /*Norway*/
ARE = 146 /*United Arab Emirates*/
OMN = 147 /*Oman*/
BVT = 148 /*Bouvet Island*/
IMN = 149 /*Isle of Man*/
NFK = 150 /*Norfolk Island*/
CXR = 151 /*Christmas Island*/
HMD = 152 /*Heard Island and McDonald Islands*/
CYM = 153 /*Cayman Islands*/
COK = 154 /*Cook Islands*/
TCA = 155 /*Turks and Caicos Islands*/
PAK = 156 /*Pakistan*/
PLW = 157 /*Palau*/
PSE = 158 /*Palestinian Territory, Occupied*/
PAN = 159 /*Panama*/
VAT = 160 /*Holy See (Vatican City State)*/
PNG = 161 /*Papua New Guinea*/
PRY = 162 /*Paraguay*/
PER = 163 /*Peru*/
PCN = 164 /*Pitcairn*/
POL = 165 /*Poland*/
PRT = 166 /*Portugal*/
PRI = 167 /*Puerto Rico*/
MKD = 168 /*Macedonia, The Former Yugoslav Republic Of*/
REU = 169 /*Reunion*/
RUS = 170 /*Russian Federation*/
RWA = 171 /*Rwanda*/
ROU = 172 /*Romania*/
WSM = 173 /*Samoa*/
SMR = 174 /*San Marino*/
STP = 175 /*Sao Tome and Principe*/
SAU = 176 /*Saudi Arabia*/
SWZ = 177 /*Swaziland*/
SHN = 178 /*Saint Helena, Ascension And Tristan Da Cunha*/
MNP = 179 /*Northern Mariana Islands*/
BLM = 180 /*Saint Barthélemy*/
MAF = 181 /*Saint Martin (French Part)*/
SEN = 182 /*Senegal*/
VCT = 183 /*Saint Vincent and the Grenadines*/
KNA = 184 /*Saint Kitts and Nevis*/
LCA = 185 /*Saint Lucia*/
SPM = 186 /*Saint Pierre and Miquelon*/
SRB = 187 /*Serbia*/
SYC = 188 /*Seychelles*/
SGP = 189 /*Singapore*/
SXM = 190 /*Sint Maarten*/
SYR = 191 /*Syrian Arab Republic*/
SVK = 192 /*Slovakia*/
SVN = 193 /*Slovenia*/
GBR = 194 /*United Kingdom*/
USA = 195 /*United States*/
SLB = 196 /*Solomon Islands*/
SOM = 197 /*Somalia*/
SDN = 198 /*Sudan*/
SUR = 199 /*Suriname*/
SLE = 200 /*Sierra Leone*/
TJK = 201 /*Tajikistan*/
THA = 202 /*Thailand*/
TWN = 203 /*Taiwan, Province of China*/
TZA = 204 /*Tanzania, United Republic Of*/
TLS = 205 /*Timor-Leste*/
TGO = 206 /*Togo*/
TKL = 207 /*Tokelau*/
TON = 208 /*Tonga*/
TTO = 209 /*Trinidad and Tobago*/
TUV = 210 /*Tuvalu*/
TUN = 211 /*Tunisia*/
TKM = 212 /*Turkmenistan*/
TUR = 213 /*Turkey*/
UGA = 214 /*Uganda*/
UZB = 215 /*Uzbekistan*/
UKR = 216 /*Ukraine*/
WLF = 217 /*Wallis and Futuna*/
URY = 218 /*Uruguay*/
FRO = 219 /*Faroe Islands*/
FJI = 220 /*Fiji*/
PHL = 221 /*Philippines*/
FIN = 222 /*Finland*/
FLK = 223 /*Falkland Islands (Malvinas)*/
FRA = 224 /*France*/
GUF = 225 /*French Guiana*/
PYF = 226 /*French Polynesia*/
ATF = 227 /*French Southern Territories*/
HRV = 228 /*Croatia*/
CAF = 229 /*Central African Republic*/
TCD = 230 /*Chad*/
MNE = 231 /*Montenegro*/
CZE = 232 /*Czech Republic*/
CHL = 233 /*Chile*/
CHE = 234 /*Switzerland*/
SWE = 235 /*Sweden*/
SJM = 236 /*Svalbard and Jan Mayen*/
LKA = 237 /*Sri Lanka*/
ECU = 238 /*Ecuador*/
GNQ = 239 /*Equatorial Guinea*/
ALA = 240 /*Aland Islands*/
SLV = 241 /*El Salvador*/
ERI = 242 /*Eritrea*/
EST = 243 /*Estonia*/
ETH = 244 /*Ethiopia*/
ZAF = 245 /*South Africa*/
SGS = 246 /*South Georgia and the South Sandwich Islands*/
OST = 247 /*South Ossetia*/
SSD = 248 /*South Sudan*/
JAM = 249 /*Jamaica*/
JPN = 250 /*Japan*/
}
/* Schedules */
struct BusinessScheduleRef { 1: required ObjectID id }
struct BusinessSchedule {
1: required string name
2: optional string description
3: required base.Schedule schedule
5: optional base.TimeSpan delay
// legacy
4: optional PayoutCompilationPolicy policy
}
union BusinessScheduleSelector {
1: list<BusinessScheduleDecision> decisions
2: set<BusinessScheduleRef> value
}
struct BusinessScheduleDecision {
1: required Predicate if_
2: required BusinessScheduleSelector then_
}
/* Calendars */
struct CalendarRef { 1: required ObjectID id }
struct Calendar {
1: required string name
2: optional string description
3: required base.Timezone timezone
4: required CalendarHolidaySet holidays
5: optional base.DayOfWeek first_day_of_week
}
typedef map<base.Year, set<CalendarHoliday>> CalendarHolidaySet
struct CalendarHoliday {
1: required string name
2: optional string description
3: required base.DayOfMonth day
4: required base.Month month
}
/* Limits */
struct CashRange {
1: required CashBound upper
2: required CashBound lower
}
union CashBound {
1: Cash inclusive
2: Cash exclusive
}
union CashLimitSelector {
1: list<CashLimitDecision> decisions
2: CashRange value
}
struct CashLimitDecision {
1: required Predicate if_
2: required CashLimitSelector then_
}
/* Payment methods */
union PaymentMethod {
1: BankCardPaymentSystem bank_card
2: TerminalPaymentProvider payment_terminal
3: DigitalWalletProvider digital_wallet
4: TokenizedBankCard tokenized_bank_card
2019-02-19 09:07:27 +00:00
5: BankCardPaymentSystem empty_cvv_bank_card
6: CryptoCurrency crypto_currency
7: MobileOperator mobile
}
struct TokenizedBankCard {
1: required BankCardPaymentSystem payment_system
2: required BankCardTokenProvider token_provider
}
enum BankCardPaymentSystem {
visa
mastercard
visaelectron
maestro
forbrugsforeningen
dankort
amex
dinersclub
discover
unionpay
jcb
nspkmir
2016-04-26 16:01:04 +00:00
}
/** Тип платежного токена **/
enum BankCardTokenProvider {
applepay
googlepay
samsungpay
}
typedef base.ID CustomerID
typedef base.ID CustomerBindingID
typedef base.ID RecurrentPaymentToolID
2016-04-26 16:01:04 +00:00
union PaymentTool {
1: BankCard bank_card
2: PaymentTerminal payment_terminal
3: DigitalWallet digital_wallet
4: CryptoCurrency crypto_currency
5: MobileCommerce mobile_commerce
2016-04-26 16:01:04 +00:00
}
struct DisposablePaymentResource {
1: required PaymentTool payment_tool
2: optional PaymentSessionID payment_session_id
3: optional ClientInfo client_info
}
typedef string Token
struct BankCard {
1: required Token token
2: required BankCardPaymentSystem payment_system
3: required string bin
4: required string masked_pan
5: optional BankCardTokenProvider token_provider
6: optional Residence issuer_country
7: optional string bank_name
8: optional map<string, msgpack.Value> metadata
2019-02-19 09:07:27 +00:00
9: optional bool is_cvv_empty
}
struct CryptoWallet {
1: required string id // ID or wallet of the recipient in the third-party payment system
2: required CryptoCurrency crypto_currency
2019-07-15 10:06:53 +00:00
// A destination tag is a unique 9-digit figure assigned to each Ripple (XRP) account
3: optional string destination_tag
}
enum CryptoCurrency {
bitcoin
litecoin
bitcoin_cash
ripple
ethereum
zcash
}
struct MobileCommerce {
1: required MobileOperator operator
2: required MobilePhone phone
}
enum MobileOperator {
mts = 1
beeline = 2
megafone = 3
tele2 = 4
yota = 5
}
/**
* Телефонный номер согласно (E.164 рекомендация ITU-T)
* +79114363738
* cc = 7 - код страны(1-3 цифры)
* ctn = 9114363738 - 10-ти значный номер абонента(макс 12)
*/
struct MobilePhone {
1: required string cc
2: required string ctn
}
/** Платеж через терминал **/
struct PaymentTerminal {
1: required TerminalPaymentProvider terminal_type
}
/**
* Вид платежного терминала
*
* например Евросеть
**/
enum TerminalPaymentProvider {
euroset
}
typedef string DigitalWalletID
struct DigitalWallet {
1: required DigitalWalletProvider provider
2: required DigitalWalletID id
3: optional Token token
}
enum DigitalWalletProvider {
qiwi
rbkmoney
yandex_money
}
struct BankRef { 1: required ObjectID id }
struct Bank {
1: required string name
2: required string description
2018-10-12 13:24:58 +00:00
4: optional set<string> binbase_id_patterns
/* legacy */
3: required set<string> bins
}
struct PaymentMethodRef { 1: required PaymentMethod id }
/** Способ платежа, категория платёжного средства. */
2016-04-26 16:01:04 +00:00
struct PaymentMethodDefinition {
1: required string name
2: required string description
}
union PaymentMethodSelector {
1: list<PaymentMethodDecision> decisions
2: set<PaymentMethodRef> value
}
struct PaymentMethodDecision {
1: required Predicate if_
2: required PaymentMethodSelector then_
}
/* Holds */
struct HoldLifetime {
1: required i32 seconds
}
union HoldLifetimeSelector {
1: list<HoldLifetimeDecision> decisions
2: HoldLifetime value
}
struct HoldLifetimeDecision {
1: required Predicate if_
2: required HoldLifetimeSelector then_
}
/* Refunds */
union TimeSpanSelector {
1: list<TimeSpanDecision> decisions
2: base.TimeSpan value
}
struct TimeSpanDecision {
1: required Predicate if_
2: required TimeSpanSelector then_
}
/* Flows */
// TODO
/* Cash flows */
/** Счёт в графе финансовых потоков. */
union CashFlowAccount {
1: MerchantCashFlowAccount merchant
2: ProviderCashFlowAccount provider
3: SystemCashFlowAccount system
4: ExternalCashFlowAccount external
5: WalletCashFlowAccount wallet
}
enum MerchantCashFlowAccount {
/**
* Расчётный счёт:
* - учёт прибыли по платежам в магазине;
* - учёт возмещённых вознаграждений.
*/
settlement
/**
* Счёт гарантийного депозита:
* - учёт средств для погашения реализовавшихся рисков по мерчанту.
*/
guarantee
/**
* Счёт выплаченных средств:
* - учёт средств выплаченных мерчанту.
*/
payout
}
enum ProviderCashFlowAccount {
/**
* Расчётный счёт:
* - учёт полученных средств;
* - учёт вознаграждений.
*/
settlement
}
enum SystemCashFlowAccount {
/**
* Расчётный счёт:
* - учёт полученных и возмещённых вознаграждений.
*/
settlement
/**
* Расчётный счёт:
* - проводки между внутренними участниками взаиморасчётов.
*/
subagent
}
enum ExternalCashFlowAccount {
/**
* Счёт поступлений:
* - учёт любых поступлений в систему извне.
*/
income
/**
* Счёт выводов:
* - учёт любых выводов из системы вовне.
*/
outcome
}
enum WalletCashFlowAccount {
sender_source
sender_settlement
receiver_settlement
receiver_destination
}
enum CashFlowConstant {
operation_amount = 1
// ...
// TODO
/* deprecated */
// invoice_amount = 0
// payment_amount = 1
}
typedef map<CashFlowConstant, Cash> CashFlowContext
/** Граф финансовых потоков. */
typedef list<CashFlowPosting> CashFlow
/** Денежный поток между двумя участниками. */
struct CashFlowPosting {
1: required CashFlowAccount source
2: required CashFlowAccount destination
3: required CashVolume volume
4: optional string details
}
/** Полностью вычисленный граф финансовых потоков с проводками всех участников. */
typedef list<FinalCashFlowPosting> FinalCashFlow
/** Вычисленный денежный поток между двумя участниками. */
struct FinalCashFlowPosting {
1: required FinalCashFlowAccount source
2: required FinalCashFlowAccount destination
3: required Cash volume
4: optional string details
}
struct FinalCashFlowAccount {
1: required CashFlowAccount account_type
2: required AccountID account_id
}
/** Объём финансовой проводки. */
union CashVolume {
1: CashVolumeFixed fixed
2: CashVolumeShare share
3: CashVolumeProduct product
}
/** Объём в абсолютных денежных единицах. */
struct CashVolumeFixed {
1: required Cash cash
}
/** Объём в относительных единицах. */
struct CashVolumeShare {
1: required base.Rational parts
2: required CashFlowConstant of
3: optional RoundingMethod rounding_method
}
/** Метод округления к целому числу. */
enum RoundingMethod {
/** https://en.wikipedia.org/wiki/Rounding#Round_half_towards_zero. */
round_half_towards_zero
/** https://en.wikipedia.org/wiki/Rounding#Round_half_away_from_zero. */
round_half_away_from_zero
}
/** Композиция различных объёмов. */
union CashVolumeProduct {
/** Минимальный из полученных объёмов. */
1: set<CashVolume> min_of
/** Максимальный из полученных объёмов. */
2: set<CashVolume> max_of
}
union CashFlowSelector {
1: list<CashFlowDecision> decisions
2: CashFlow value
}
struct CashFlowDecision {
1: required Predicate if_
2: required CashFlowSelector then_
}
/* Providers */
struct ProviderRef { 1: required ObjectID id }
struct Provider {
1: required string name
2: required string description
3: required Proxy proxy
4: required TerminalSelector terminal
/* Счет для платажей принятых эквайеромв АБС*/
5: required string abs_account
2017-11-22 10:21:20 +00:00
6: optional PaymentsProvisionTerms payment_terms
8: optional RecurrentPaytoolsProvisionTerms recurrent_paytool_terms
7: optional ProviderAccountSet accounts = {}
}
struct WithdrawalProviderRef { 1: required ObjectID id }
2018-12-26 17:27:44 +00:00
struct WithdrawalProvider {
2018-12-26 17:27:44 +00:00
1: required string name
2: optional string description
3: required Proxy proxy
4: optional string identity
5: optional WithdrawalProvisionTerms withdrawal_terms
2018-12-26 17:27:44 +00:00
6: optional ProviderAccountSet accounts = {}
}
struct PaymentsProvisionTerms {
1: optional CurrencySelector currencies
2: optional CategorySelector categories
3: optional PaymentMethodSelector payment_methods
6: optional CashLimitSelector cash_limit
4: optional CashFlowSelector cash_flow
5: optional PaymentHoldsProvisionTerms holds
7: optional PaymentRefundsProvisionTerms refunds
}
struct PaymentHoldsProvisionTerms {
1: required HoldLifetimeSelector lifetime
2019-02-22 08:05:25 +00:00
/* Allow partial capture if this undefined, otherwise throw exception */
2: optional PartialCaptureProvisionTerms partial_captures
}
2019-02-22 08:05:25 +00:00
struct PartialCaptureProvisionTerms {}
struct PaymentRefundsProvisionTerms {
1: required CashFlowSelector cash_flow
/**
* Условия для частичных рефандов.
*/
2: optional PartialRefundsProvisionTerms partial_refunds
}
struct PartialRefundsProvisionTerms {
1: required CashLimitSelector cash_limit
}
2017-11-22 10:21:20 +00:00
struct RecurrentPaytoolsProvisionTerms {
1: required CashValueSelector cash_value
2: required CategorySelector categories
3: required PaymentMethodSelector payment_methods
}
struct WithdrawalProvisionTerms {
2018-12-26 17:27:44 +00:00
1: required CurrencySelector currencies
2: required PayoutMethodSelector payout_methods
3: required CashLimitSelector cash_limit
4: required CashFlowSelector cash_flow
}
2017-11-22 10:21:20 +00:00
union CashValueSelector {
1: list<CashValueDecision> decisions
2: Cash value
}
struct CashValueDecision {
1: required Predicate if_
2: required CashValueSelector then_
}
typedef map<CurrencyRef, ProviderAccount> ProviderAccountSet
struct ProviderAccount {
1: required AccountID settlement
}
union ProviderSelector {
1: list<ProviderDecision> decisions
2: set<ProviderRef> value
}
struct ProviderDecision {
1: required Predicate if_
2: required ProviderSelector then_
}
union WithdrawalProviderSelector {
1: list<WithdrawalProviderDecision> decisions
2: set<WithdrawalProviderRef> value
2018-12-26 17:27:44 +00:00
}
struct WithdrawalProviderDecision {
2018-12-26 17:27:44 +00:00
1: required Predicate if_
2: required WithdrawalProviderSelector then_
2018-12-26 17:27:44 +00:00
}
/** Inspectors */
struct InspectorRef { 1: required ObjectID id }
struct Inspector {
1: required string name
2: required string description
3: required Proxy proxy
4: optional RiskScore fallback_risk_score
}
union InspectorSelector {
1: list<InspectorDecision> decisions
2: InspectorRef value
}
struct InspectorDecision {
1: required Predicate if_
2: required InspectorSelector then_
}
/**
* Обобщённый терминал у провайдера.
*
* Представляет собой единицу предоставления услуг по процессингу платежей со
* стороны провайдера, согласно нашим с ним договорённостям.
*/
struct Terminal {
1: required string name
2: required string description
9: optional ProxyOptions options
10: required RiskScore risk_coverage
12: optional PaymentsProvisionTerms terms
}
union TerminalSelector {
1: list<TerminalDecision> decisions
2: set<ProviderTerminalRef> value
}
struct TerminalDecision {
1: required Predicate if_
2: required TerminalSelector then_
}
struct ProviderTerminalRef {
1: required ObjectID id
2: optional i64 priority = 1000
2019-07-09 13:20:25 +00:00
3: optional i64 weight
}
struct TerminalRef {
1: required ObjectID id
}
/* Predicates / conditions */
union Predicate {
5: bool constant
1: Condition condition
2: Predicate is_not
3: set<Predicate> all_of
4: set<Predicate> any_of
}
union Condition {
1: CategoryRef category_is
2: CurrencyRef currency_is
4: CashRange cost_in
3: PaymentToolCondition payment_tool
5: ShopLocation shop_location_is
6: PartyCondition party
7: PayoutMethodRef payout_method_is
8: ContractorIdentificationLevel identification_level_is
}
union PaymentToolCondition {
1: BankCardCondition bank_card
2: PaymentTerminalCondition payment_terminal
3: DigitalWalletCondition digital_wallet
4: CryptoCurrencyCondition crypto_currency
5: MobileCommerceCondition mobile_commerce
}
struct BankCardCondition {
3: optional BankCardConditionDefinition definition
}
union BankCardConditionDefinition {
1: BankCardPaymentSystem payment_system_is // deprecated
2018-10-12 13:24:58 +00:00
2: BankRef issuer_bank_is
3: PaymentSystemCondition payment_system
4: Residence issuer_country_is
2019-02-19 09:07:27 +00:00
5: bool empty_cvv_is
}
struct PaymentSystemCondition {
1: required BankCardPaymentSystem payment_system_is
2: optional BankCardTokenProvider token_provider_is
}
struct PaymentTerminalCondition {
1: optional PaymentTerminalConditionDefinition definition
}
union PaymentTerminalConditionDefinition {
1: TerminalPaymentProvider provider_is
}
struct DigitalWalletCondition {
1: optional DigitalWalletConditionDefinition definition
}
union DigitalWalletConditionDefinition {
1: DigitalWalletProvider provider_is
}
struct CryptoCurrencyCondition {
1: optional CryptoCurrencyConditionDefinition definition
}
union CryptoCurrencyConditionDefinition {
1: CryptoCurrency crypto_currency_is
}
struct MobileCommerceCondition {
1: optional MobileCommerceConditionDefinition definition
}
union MobileCommerceConditionDefinition {
1: MobileOperator operator_is
}
struct PartyCondition {
1: required PartyID id
2: optional PartyConditionDefinition definition
}
union PartyConditionDefinition {
1: ShopID shop_is
2: WalletID wallet_is
}
/* Proxies */
typedef base.StringMap ProxyOptions
struct ProxyRef { 1: required ObjectID id }
struct ProxyDefinition {
1: required string name
2: required string description
3: required string url
4: required ProxyOptions options
}
struct Proxy {
1: required ProxyRef ref
2: required ProxyOptions additional
}
/* System accounts */
struct SystemAccountSetRef { 1: required ObjectID id }
struct SystemAccountSet {
1: required string name
2: required string description
3: required map<CurrencyRef, SystemAccount> accounts
}
struct SystemAccount {
1: required AccountID settlement
2: optional AccountID subagent
}
union SystemAccountSetSelector {
1: list<SystemAccountSetDecision> decisions
2: SystemAccountSetRef value
}
struct SystemAccountSetDecision {
1: required Predicate if_
2: required SystemAccountSetSelector then_
}
/* External accounts */
struct ExternalAccountSetRef { 1: required ObjectID id }
struct ExternalAccountSet {
1: required string name
2: required string description
3: required map<CurrencyRef, ExternalAccount> accounts
}
struct ExternalAccount {
1: required AccountID income
2: required AccountID outcome
}
union ExternalAccountSetSelector {
1: list<ExternalAccountSetDecision> decisions
2: ExternalAccountSetRef value
}
struct ExternalAccountSetDecision {
1: required Predicate if_
2: required ExternalAccountSetSelector then_
}
/* Payment institution */
struct PaymentInstitutionRef { 1: required ObjectID id }
struct PaymentInstitution {
1: required string name
2: optional string description
9: optional CalendarRef calendar
3: required SystemAccountSetSelector system_account_set
4: required ContractTemplateSelector default_contract_template
10: optional ContractTemplateSelector default_wallet_contract_template
5: required ProviderSelector providers
6: required InspectorSelector inspector
7: required PaymentInstitutionRealm realm
8: required set<Residence> residences
2018-12-26 17:27:44 +00:00
/* TODO: separated system accounts for wallets look weird */
11: optional SystemAccountSetSelector wallet_system_account_set
12: optional string identity
13: optional WithdrawalProviderSelector withdrawal_providers
}
enum PaymentInstitutionRealm {
test
live
}
struct ContractPaymentInstitutionDefaults {
1: required PaymentInstitutionRef test
2: required PaymentInstitutionRef live
}
/* legacy */
/* TODO rework (de)serializer to handle those cases more politely and then remove */
struct PartyPrototypeRef { 1: required ObjectID id }
struct PartyPrototype {}
struct PartyPrototypeObject {
1: required PartyPrototypeRef ref
2: required PartyPrototype data
}
/* Root config */
struct GlobalsRef {}
struct Globals {
4: required ExternalAccountSetSelector external_account_set
8: optional set<PaymentInstitutionRef> payment_institutions
42: optional ContractPaymentInstitutionDefaults contract_payment_institution_defaults
}
2016-10-08 12:07:07 +00:00
/** Dummy (for integrity test purpose) */
struct Dummy {}
struct DummyRef {
1: base.ID id
}
struct DummyObject {
1: DummyRef ref
2: Dummy data
}
struct DummyLink {
1: DummyRef link
}
struct DummyLinkRef {
1: base.ID id
}
struct DummyLinkObject {
1: DummyLinkRef ref
2: DummyLink data
}
/* Type enumerations */
struct ContractTemplateObject {
1: required ContractTemplateRef ref
2: required ContractTemplate data
}
struct TermSetHierarchyObject {
1: required TermSetHierarchyRef ref
2: required TermSetHierarchy data
}
struct CategoryObject {
1: required CategoryRef ref
2: required Category data
}
struct CurrencyObject {
1: required CurrencyRef ref
2: required Currency data
}
struct BusinessScheduleObject {
1: required BusinessScheduleRef ref
2: required BusinessSchedule data
}
struct CalendarObject {
1: required CalendarRef ref
2: required Calendar data
}
struct PaymentMethodObject {
1: required PaymentMethodRef ref
2: required PaymentMethodDefinition data
}
struct PayoutMethodObject {
1: required PayoutMethodRef ref
2: required PayoutMethodDefinition data
}
struct BankObject {
1: required BankRef ref
2: required Bank data
}
struct ProviderObject {
1: required ProviderRef ref
2: required Provider data
}
struct WithdrawalProviderObject {
1: required WithdrawalProviderRef ref
2: required WithdrawalProvider data
2018-12-26 17:27:44 +00:00
}
struct TerminalObject {
1: required TerminalRef ref
2: required Terminal data
}
struct InspectorObject {
1: required InspectorRef ref
2: required Inspector data
}
struct PaymentInstitutionObject {
1: required PaymentInstitutionRef ref
2: required PaymentInstitution data
}
struct SystemAccountSetObject {
1: required SystemAccountSetRef ref
2: required SystemAccountSet data
}
struct ExternalAccountSetObject {
1: required ExternalAccountSetRef ref
2: required ExternalAccountSet data
}
struct ProxyObject {
1: required ProxyRef ref
2: required ProxyDefinition data
}
struct GlobalsObject {
1: required GlobalsRef ref
2: required Globals data
}
union Reference {
1 : CategoryRef category
2 : CurrencyRef currency
19 : BusinessScheduleRef business_schedule
20 : CalendarRef calendar
3 : PaymentMethodRef payment_method
21 : PayoutMethodRef payout_method
2018-10-12 13:24:58 +00:00
5 : BankRef bank
6 : ContractTemplateRef contract_template
17 : TermSetHierarchyRef term_set_hierarchy
18 : PaymentInstitutionRef payment_institution
7 : ProviderRef provider
8 : TerminalRef terminal
15 : InspectorRef inspector
14 : SystemAccountSetRef system_account_set
16 : ExternalAccountSetRef external_account_set
9 : ProxyRef proxy
11 : GlobalsRef globals
22 : WithdrawalProviderRef withdrawal_provider
12 : DummyRef dummy
13 : DummyLinkRef dummy_link
/* legacy */
10 : PartyPrototypeRef party_prototype
}
union DomainObject {
1 : CategoryObject category
2 : CurrencyObject currency
19 : BusinessScheduleObject business_schedule
20 : CalendarObject calendar
3 : PaymentMethodObject payment_method
21 : PayoutMethodObject payout_method
2018-10-12 13:24:58 +00:00
5 : BankObject bank
6 : ContractTemplateObject contract_template
17 : TermSetHierarchyObject term_set_hierarchy
18 : PaymentInstitutionObject payment_institution
7 : ProviderObject provider
8 : TerminalObject terminal
15 : InspectorObject inspector
14 : SystemAccountSetObject system_account_set
16 : ExternalAccountSetObject external_account_set
9 : ProxyObject proxy
11 : GlobalsObject globals
22 : WithdrawalProviderObject withdrawal_provider
12 : DummyObject dummy
13 : DummyLinkObject dummy_link
/* legacy */
10 : PartyPrototypeObject party_prototype
}
/* Domain */
typedef map<Reference, DomainObject> Domain