[ED-269]: Delete P2P functional (#98)

This commit is contained in:
Boris 2021-09-24 09:22:09 +03:00 committed by GitHub
parent bbc014e117
commit 3dbbabfe15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 20 additions and 774 deletions

View File

@ -1,5 +1,23 @@
# Swag-wallets changelog
## Version 0.0.2 to 0.0.3 - 22.09.2021
---
### What's Deprecated(not supported yet)
---
`POST` /p2p/quotes Расчет комиссии и фиксирование их в виде токена, который можно использовать при создании перевода
`POST` /p2p/transfers Создание перевода
`GET` /p2p/transfers/{p2pTransferID} Получить перевод
`GET` /p2p/transfers/{p2pTransferID}/events Получить историю перевода в виде набора событий.
`POST` /p2p/transfer/templates Создать шаблон перевода
`GET` /p2p/transfer/templates/{p2pTransferTemplateID} Получить шаблон перевода по его идентификатору.
`POST` /p2p/transfer/templates/{p2pTransferTemplateID}/access-tokens Получить токен доступа для чтения шаблона и выписывание талонов на создание переводов по шаблону
`POST` /p2p/transfer/templates/{p2pTransferTemplateID}/block Заблокировать использование шаблона.
`POST` /p2p/transfer/templates/{p2pTransferTemplateID}/quotes Расчитать комиссии и зафиксировать их в виде токена
`POST` /p2p/transfer/templates/{p2pTransferTemplateID}/tickets Получить талон на одну попытку создания перевода по шаблону
`POST` /p2p/transfer/templates/{p2pTransferTemplateID}/transfers Создать новый перевод по шаблону.
## Version 0.0.1 to 0.0.2 - 26.11.2020
---
### What's New
@ -19,11 +37,11 @@
---
### What's Changed
---
`POST` /identities Создать личность владельца
`POST` /identities Создать личность владельца
Parameters
Insert identity.partyID //Уникальный в рамках платформы идентификатор участника.
`GET` /identities/{identityID} Получить данные личности владельца
`GET` /identities/{identityID} Получить данные личности владельца
Return Type
Insert partyID //Уникальный в рамках платформы идентификатор участника.

View File

@ -1,38 +0,0 @@
description: Cхема содержимого [токена для создания перевода](#/definitions/P2PTransferQuoteToken.yaml) версии 1
type: object
required:
- version
- amount
- partyRevision
- domainRevision
- createdAt
- expiresOn
- partyID
- identityID
- sender
- receiver
properties:
version:
type: integer
minimum: 1
maximum: 1
amount:
$ref: '../spec/definitions/Asset.yaml'
partyRevision:
type: integer
domainRevision:
type: integer
createdAt:
type: string
format: date-time
expiresOn:
type: string
format: date-time
partyID:
type: string
identityID:
$ref: '../spec/definitions/IdentityID.yaml'
sender:
$ref: 'CompactResource.yaml'
receiver:
$ref: 'CompactResource.yaml'

View File

@ -1,43 +0,0 @@
description: Данные перевода
type: object
required:
- id
- identityID
- createdAt
- body
- sender
- receiver
- status
- contactInfo
properties:
id:
x-rebillyMerge:
- $ref: '#/definitions/P2PTransferID'
identityID:
x-rebillyMerge:
- $ref: '#/definitions/IdentityID'
- description: Идентификатор личности владельца перевода
createdAt:
description: Дата и время создания
type: string
format: date-time
body:
x-rebillyMerge:
- $ref: '#/definitions/Asset'
- description: Сумма операции
sender:
$ref: '#/definitions/SenderResource'
receiver:
$ref: '#/definitions/ReceiverResource'
status:
$ref: '#/definitions/P2PTransferStatus'
contactInfo:
x-rebillyMerge:
- $ref: '#/definitions/ContactInfo'
- description: Контактные данные отправителя
externalID:
x-rebillyMerge:
- $ref: '#/definitions/ExternalID'
metadata:
description: Связанные с переводом метаданные
type: object

View File

@ -1,10 +0,0 @@
type: object
discriminator: changeType
required:
- changeType
properties:
changeType:
type: string
enum:
- P2PTransferStatusChanged
- P2PTransferInteractionChanged

View File

@ -1,10 +0,0 @@
type: object
required:
- createdAt
- change
properties:
createdAt:
type: string
format: date-time
change:
$ref: '#/definitions/P2PTransferChange'

View File

@ -1,11 +0,0 @@
description: |
[Ошибка, возникшая в процессе проведения перевода](#tag/Error-Codes)
type: object
required:
- code
properties:
code:
description: Основной код ошибки
type: string
subError:
$ref: '#/definitions/SubFailure'

View File

@ -1,5 +0,0 @@
description: Идентификатор перевода
type: string
example: "10a0b68D3E21"
maxLength: 40
minLength: 1

View File

@ -1,15 +0,0 @@
type: object
allOf:
- $ref: '#/definitions/P2PTransferChange'
- type: object
description: |
Изменения определённого взаимодействия с пользователем
required:
- userInteractionID
- userInteractionChange
properties:
userInteractionID:
description: Идентификатор взаимодействия с пользователем
type: string
userInteractionChange:
$ref: '#/definitions/UserInteractionChange'

View File

@ -1,34 +0,0 @@
description: Параметры создания перевода
type: object
required:
- sender
- receiver
- identityID
- body
- contactInfo
properties:
sender:
$ref: '#/definitions/SenderResourceParams'
receiver:
$ref: '#/definitions/ReceiverResourceParams'
identityID:
x-rebillyMerge:
- $ref: '#/definitions/IdentityID'
- description: Идентификатор личности владельца перевода
body:
x-rebillyMerge:
- $ref: '#/definitions/Asset'
- description: Сумма перевода
contactInfo:
x-rebillyMerge:
- $ref: '#/definitions/ContactInfo'
- description: Контактные данные отправителя
quoteToken:
x-rebillyMerge:
- $ref: '#/definitions/P2PTransferQuoteToken'
metadata:
description: 'Метаданные, которые необходимо связать с переводом'
type: object
externalID:
x-rebillyMerge:
- $ref: '#/definitions/ExternalID'

View File

@ -1,17 +0,0 @@
description: Комиссия и токен предназначеный для создания перевода
type: object
required:
- customerFee
- token
- expiresOn
properties:
customerFee:
x-rebillyMerge:
- $ref: '#/definitions/Asset'
- description: Комиссия "сверху" - взимается с клиента в дополнение к сумме операции
token:
$ref: '#/definitions/P2PTransferQuoteToken'
expiresOn:
description: Дата и время прекращения действия токена
type: string
format: date-time

View File

@ -1,5 +0,0 @@
type: string
minLength: 1
maxLength: 4000
description: >
Токен, полученный в результате вычисления и фиксирования комиссий перевода

View File

@ -1,26 +0,0 @@
type: object
required:
- status
properties:
status:
description: |
Статус вывода денежных средств.
| Значение | Пояснение |
| ----------- | ------------------------------------------ |
| `Pending` | Перевод в процессе выполнения |
| `Succeeded` | Перевод средств произведён успешно |
| `Failed` | Перевод средств завершился неудачей |
type: string
enum:
- Pending
- Succeeded
- Failed
failure:
x-rebillyMerge:
- description: |
> Если `status` == `Failed`
Пояснение причины неудачи
- $ref: '#/definitions/P2PTransferFailure'

View File

@ -1,4 +0,0 @@
type: object
allOf:
- $ref: '#/definitions/P2PTransferChange'
- $ref: '#/definitions/P2PTransferStatus'

View File

@ -1,29 +0,0 @@
type: object
required:
- id
- identityID
- createdAt
- details
properties:
id:
x-rebillyMerge:
- $ref: '#/definitions/P2PTransferTemplateID'
- readOnly: true
identityID:
x-rebillyMerge:
- $ref: '#/definitions/IdentityID'
- description: Идентификатор личности владельца шаблона
createdAt:
description: Дата и время создания
type: string
format: date-time
isBlocked:
description: Заблокирован ли шаблон?
type: boolean
readOnly: true
example: false
details:
$ref: '#/definitions/P2PTransferTemplateDetails'
externalID:
x-rebillyMerge:
- $ref: '#/definitions/ExternalID'

View File

@ -1,20 +0,0 @@
type: object
required:
- value
properties:
value:
description: |
Объём денежных средств
type: object
required:
- currency
properties:
amount:
description: |
Сумма денежных средств в минорных единицах, например, в копейках
type: integer
format: int64
example: 1430000
currency:
x-rebillyMerge:
- $ref: '#/definitions/CurrencyID'

View File

@ -1,13 +0,0 @@
type: object
description: Параметры, использующиеся при создании перевода
required:
- body
properties:
description:
description: Описание перевода
type: string
maxLength: 1000
body:
$ref: '#/definitions/P2PTransferTemplateBody'
metadata:
$ref: '#/definitions/P2PTransferTemplateMetadata'

View File

@ -1,5 +0,0 @@
description: Идентификатор шаблона перевода
type: string
example: "10a0b68D3E21"
maxLength: 40
minLength: 1

View File

@ -1,10 +0,0 @@
type: object
required:
- defaultMetadata
properties:
defaultMetadata:
description: >
Метаданные, которые будут связаны с переводом, созданным по шаблону.
Непосредственно при создании перевода можно передать дополнительные метаданные.
При совпадении ключей предпочтение будет отдаваться значениям из этого поля шаблона.
type: object

View File

@ -1,14 +0,0 @@
type: object
required:
- identityID
- details
properties:
identityID:
x-rebillyMerge:
- $ref: '#/definitions/IdentityID'
- description: Идентификатор личности владельца шаблона
details:
$ref: '#/definitions/P2PTransferTemplateDetails'
externalID:
x-rebillyMerge:
- $ref: '#/definitions/ExternalID'

View File

@ -1,15 +0,0 @@
description: Параметры запроса комиссий
type: object
required:
- sender
- receiver
- body
properties:
sender:
$ref: '#/definitions/SenderResource'
receiver:
$ref: '#/definitions/ReceiverResource'
body:
x-rebillyMerge:
- $ref: '#/definitions/Asset'
- description: Сумма операции

View File

@ -1,14 +0,0 @@
type: object
required:
- validUntil
properties:
token:
x-rebillyMerge:
- $ref: '#/definitions/GrantToken'
- readOnly: true
validUntil:
description: |
Желаемые дата и время, до наступления которых будет действителен выданный токен.
Итоговое значение может быть ограничено сроком действия AccessToken, его можно узнать из ответа.
type: string
format: date-time

View File

@ -1,13 +0,0 @@
type: object
required:
- validUntil
properties:
token:
x-rebillyMerge:
- $ref: '#/definitions/GrantToken'
- readOnly: true
validUntil:
description: |
Дата и время, до наступления которых выданный токен действителен
type: string
format: date-time

View File

@ -1,28 +0,0 @@
type: object
required:
- sender
- receiver
- body
- contactInfo
properties:
sender:
$ref: '#/definitions/SenderResourceParams'
receiver:
$ref: '#/definitions/ReceiverResourceParams'
body:
x-rebillyMerge:
- $ref: '#/definitions/Asset'
- description: Сумма перевода
contactInfo:
x-rebillyMerge:
- $ref: '#/definitions/ContactInfo'
- description: Контактные данные отправителя
quoteToken:
x-rebillyMerge:
- $ref: '#/definitions/P2PTransferQuoteToken'
metadata:
type: object
description: |
Метаданные, которые необходимо связать с переводом.
Добавляются к указанным при создании шаблона.
При совпадении ключей предпочтение отдается значениям из шаблона.

View File

@ -1,29 +0,0 @@
post:
description: >
Расчитать комиссии и зафиксировать их в виде токена,
который можно использовать при создании перевода
operationId: quoteP2PTransfer
tags:
- P2P
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- name: quoteParams
description: Параметры для вычисления комиссий
in: body
required: true
schema:
$ref: '#/definitions/QuoteParameters'
responses:
'201':
description: Результат вычисления комиссий
schema:
$ref: '#/definitions/P2PTransferQuote'
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'422':
description: Неверные данные для расчета комиссий
schema:
$ref: '#/definitions/InvalidOperationParameters'

View File

@ -1,28 +0,0 @@
post:
description: Создать шаблон перевода
tags:
- P2PTemplates
operationId: createP2PTransferTemplate
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- name: transferTemplateParams
in: body
description: 'Параметры создания шаблона перевода'
schema:
$ref: '#/definitions/P2PTransferTemplateParameters'
responses:
'201':
description: Шаблон перевода создан
schema:
$ref: '#/definitions/P2PTransferTemplate'
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'409':
$ref: '#/responses/ConflictRequest'
'422':
description: Неверные входные данные для создания шаблона перевода
schema:
$ref: '#/definitions/InvalidOperationParameters'

View File

@ -1,20 +0,0 @@
get:
description: Получить шаблон перевода по его идентификатору.
tags:
- P2PTemplates
operationId: getP2PTransferTemplateByID
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- $ref: '#/parameters/p2pTransferTemplateID'
responses:
'200':
description: Шаблон перевода
schema:
$ref: '#/definitions/P2PTransferTemplate'
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'

View File

@ -1,32 +0,0 @@
post:
operationId: issueP2PTransferTemplateAccessToken
description: |
Получить токен доступа для чтения шаблона и
выписывание талонов на создание переводов по шаблону
tags:
- P2PTemplates
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- $ref: '#/parameters/p2pTransferTemplateID'
- name: request
description: Запрос на получение токена доступа
in: body
required: true
schema:
$ref: '#/definitions/P2PTransferTemplateTokenRequest'
responses:
'201':
description: Токен получен
schema:
$ref: '#/definitions/P2PTransferTemplateTokenRequest'
'404':
$ref: '#/responses/NotFound'
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'422':
description: Неверные данные для получения
schema:
$ref: '#/definitions/InvalidOperationParameters'

View File

@ -1,22 +0,0 @@
post:
description: Заблокировать использование шаблона.
tags:
- P2PTemplates
operationId: blockP2PTransferTemplate
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- $ref: '#/parameters/p2pTransferTemplateID'
responses:
'204':
description: Шаблон заблокирован
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'
'422':
description: Неверные данные для блокировки шаблона
schema:
$ref: '#/definitions/InvalidOperationParameters'

View File

@ -1,32 +0,0 @@
post:
description: >
Расчитать комиссии и зафиксировать их в виде токена,
который можно использовать при создании перевода по шаблону
operationId: quoteP2PTransferWithTemplate
tags:
- P2PTemplates
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- $ref: '#/parameters/p2pTransferTemplateID'
- name: quoteParams
description: Параметры для вычисления комиссий
in: body
required: true
schema:
$ref: '#/definitions/P2PTransferTemplateQuoteParameters'
responses:
'201':
description: Результат вычисления комиссий
schema:
$ref: '#/definitions/P2PTransferQuote'
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'
'422':
description: Неверные данные для расчета комиссий
schema:
$ref: '#/definitions/InvalidOperationParameters'

View File

@ -1,30 +0,0 @@
post:
operationId: issueP2PTransferTicket
description: Получить талон на одну попытку создания перевода по шаблону
tags:
- P2PTemplates
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- $ref: '#/parameters/p2pTransferTemplateID'
- name: request
description: Запрос на получение талона
in: body
required: true
schema:
$ref: '#/definitions/P2PTransferTemplateTicketRequest'
responses:
'201':
description: Талон получен
schema:
$ref: '#/definitions/P2PTransferTemplateTokenRequest'
'404':
$ref: '#/responses/NotFound'
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'422':
description: Неверные данные для получения
schema:
$ref: '#/definitions/InvalidOperationParameters'

View File

@ -1,37 +0,0 @@
post:
description: Создать новый перевод по шаблону.
tags:
- P2PTemplates
operationId: createP2PTransferWithTemplate
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- $ref: '#/parameters/p2pTransferTemplateID'
- name: p2pTransferParamsWithTemplate
description: Параметры создаваемого перевода
in: body
required: true
schema:
$ref: '#/definitions/P2PTransferWithTemplateParameters'
responses:
'202':
description: Перевод запущен
headers:
Location:
description: URI запущенного перевода
type: string
format: uri
schema:
$ref: '#/definitions/P2PTransfer'
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'
'409':
$ref: '#/responses/ConflictRequest'
'422':
description: Неверные входные данные для создания перевода
schema:
$ref: '#/definitions/InvalidOperationParameters'

View File

@ -1,33 +0,0 @@
post:
description: Создать перевод
tags:
- P2P
operationId: createP2PTransfer
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- name: transferParams
in: body
description: 'Параметры создания перевода'
schema:
$ref: '#/definitions/P2PTransferParameters'
responses:
'202':
description: Перевод запущен
headers:
Location:
description: URI запущенного перевода
type: string
format: uri
schema:
$ref: '#/definitions/P2PTransfer'
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'409':
$ref: '#/responses/ConflictRequest'
'422':
description: Неверные входные данные для перевода
schema:
$ref: '#/definitions/InvalidOperationParameters'

View File

@ -1,20 +0,0 @@
get:
description: Получить состояние перевода.
tags:
- P2P
operationId: getP2PTransfer
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- $ref: '#/parameters/p2pTransferID'
responses:
'200':
description: Найденный перевод
schema:
$ref: '#/definitions/P2PTransfer'
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'

View File

@ -1,34 +0,0 @@
get:
description: Получить историю перевода в виде набора событий.
tags:
- P2P
operationId: getP2PTransferEvents
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- $ref: '#/parameters/p2pTransferID'
- x-rebillyMerge:
- name: continuationToken
in: query
required: false
- $ref: '#/definitions/ContinuationToken'
responses:
'200':
description: Результат запроса событий
schema:
type: object
properties:
continuationToken:
x-rebillyMerge:
- $ref: '#/definitions/ContinuationToken'
result:
description: Набор событий
type: array
items:
$ref: '#/definitions/P2PTransferEvent'
'400':
$ref: '#/responses/BadRequest'
'401':
$ref: '#/responses/Unauthorized'
'404':
$ref: '#/responses/NotFound'

View File

@ -311,24 +311,6 @@ parameters:
maxLength: 40
minLength: 1
p2pTransferID:
name: p2pTransferID
in: path
description: Идентификатор перевода
required: true
type: string
maxLength: 40
minLength: 1
p2pTransferTemplateID:
name: p2pTransferTemplateID
in: path
description: Идентификатор шаблона перевода
required: true
type: string
maxLength: 40
minLength: 1
w2wTransferID:
name: w2wTransferID
in: path
@ -382,63 +364,6 @@ tags:
x-displayName: Загрузка файлов
description: ""
- name: P2P
x-displayName: Переводы вне платформы
description: "Переводы средств между людьми с использованием инструментов вне платформы"
- name: P2PTemplates
x-displayName: Шаблоны переводов вне платформы
description: >
Шаблоны переводов вне платформы позволяют упростить создание переводов. Шаблон перевода
привязан к [личности-владельцу](#tag/Identities) и содержит спецификацию, по которой можно
создавать переводы, указывая только конкретнyю сумму и/или метаданные перевода.
Шаблоны служат в первую очередь для простой и при этом безопасной реализации сценариев
совершения переводов клиентами в браузере, например с использованием нашей формы.
### Сценарий интеграции
1. Владелец [создаёт шаблон перевода](#operation/createP2PTransferTemplate), при помощи личного кабинета или непосредственно вызова метода API.
2. Владелец [выписывает токен доступа](#operation/issueP2PTransferTemplateAccessToken) к шаблону и использует его вместе с идентификатором шаблона при встраивании формы для переводов на своём сайте.
3. Будучи открытой клиентом, форма использует [полученный токен](#operation/issueP2PTransferTemplateAccessToken) для доступа к различной информации о шаблоне и для [выписывания талона](#operation/issueP2PTransferTicket) на единоразовое совершение перевода.
4. Клиент заполняет необходимые данные, и, используя [полученный талон](#operation/issueP2PTransferTicket) в качестве токена доступа, запускает перевод и начинает следить изменениями его статуса*.
5. В случае неуспешного завершения перевода форма может повторить процесс, [выписав очередной талон](#operation/issueP2PTransferTicket) на совершение перевода.
* В том случае, если перевод не удалось создать, например по причине кратковременной недоступности сервиса, повторный запрос с тем же талоном будет обработан идемпотентно.
Cоздание и модификация шаблона перевода не требуют верификации на
стороне платформы и заявок на эти изменения.
### Токен доступа к шаблону перевода
Токен доступа к шаблону перевода создается с помощью соответствующего
метода API [issueP2PTransferTemplateAccessToken](#operation/issueP2PTransferTemplateAccessToken).
Он авторизует:
* чтение шаблона,
* выписывание талона для проведения перевода по шаблону.
### Талон на совершение перевода
Талон на совершение перевода является расширенной версией токена доступа
и создается с помощью соответствующего метода API [issueP2PTransferTicket](#operation/issueP2PTransferTicket).
Он авторизует:
* запросы комиссии перевода,
* одну попытку создания перевода по данному шаблону,
* операции чтения, связанные с этим переводом.
- name: W2W
x-displayName: Переводы внутри платформы
description: "Переводы средств между кошельками внутри платформы"
@ -475,5 +400,4 @@ tags:
| InsufficientFunds | Недостаточно средств на счете банковской карты |
| PreauthorizationFailed | Предварительная авторизация отклонена (введен неверный код 3D-Secure, на форме 3D-Secure нажата ссылка отмены) |
| RejectedByIssuer | Перевод отклонён эмитентом (установлены запреты по стране списания, запрет на покупки в интернете, платёж отклонен антифродом эмитента и т.п.) |
| P2PTransferRejected | Перевод отклонён по иным причинам |