Merge pull request #1 from rbkmoney/ft/BJ-456/magista-dark-api

dark-api for magista
This commit is contained in:
Pospolita Nikita 2019-05-23 19:05:26 +03:00 committed by GitHub
commit 3054bcd358
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 463 additions and 8 deletions

4
.gitignore vendored
View File

@ -58,6 +58,4 @@ package-lock.json
# Gradle:
.idea/gradle.xml
.idea/libraries
*.iml
.idea/libraries

View File

@ -15,4 +15,8 @@
4. All changes are immediately propagated to your local server, moreover all documentation pages will be automagically refreshed in a browser after each change
**TIP:** you can open `swagger-editor`, documentation and `swagger-ui` in parallel
5. Once you finish with the changes you can run tests using: `npm test`
6. Share you changes with the rest of the world by pushing to GitHub :smile:
6. Share you changes with the rest of the world by pushing to GitHub :smile:
Для генерации java-кода используйте команду
'mvn package' OR
`npm run-script build && swagger-codegen generate -i web_deploy/swagger.json -l java -o ./java --api-package "com.rbkmoney.dark.api" --artifact-id "swag-dark-api" --artifact-version "1.0.0" --group-id "com.rbkmoney" --model-package "com.rbkmoney.dark.model" --additional-properties dateLibrary=java8`

View File

@ -19,7 +19,7 @@
</description>
<properties>
<default.package>com.rbkmoney.swag.dark.api.server</default.package>
<default.package>com.rbkmoney.swag.dark_api</default.package>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<swagger-annotations-version>1.5.21</swagger-annotations-version>
<jodatime-version>2.7</jodatime-version>

View File

@ -0,0 +1,5 @@
description: |
Токен, сигнализирующий о том, что в ответе передана только часть данных.
Для получения следующей части нужно повторно обратиться к сервису, указав тот-же набор условий и полученый токен.
Если токена нет, получена последняя часть данных.
type: string

View File

@ -0,0 +1,10 @@
type: object
allOf:
- type: object
required:
- payment
properties:
payment:
$ref: '#/definitions/PaymentSearchResult'
refund:
$ref: '#/definitions/RefundSearchResult'

View File

@ -0,0 +1,12 @@
description: Информация о геопозиции
type: object
required:
- cityGeoID
- countryGeoID
properties:
cityGeoID:
type: integer
format: int32
countryGeoID:
type: integer
format: int32

View File

@ -0,0 +1,68 @@
type: object
allOf:
- $ref: '#/definitions/PaymentStatus'
- type: object
required:
- id
- invoiceID
- createdAt
- amount
- currency
- payer
- flow
properties:
id:
description: Идентификатор платежа
type: string
shortID:
description: Cокращенный идентификатор платежа и инвойса (spid)
type: string
invoiceID:
description: 'Идентификатор инвойса, в рамках которого был создан платеж'
type: string
shopID:
description: 'Идентификатор магазина, в рамках которого был создан платеж'
type: string
createdAt:
description: Дата и время создания
type: string
format: date-time
amount:
description: |
Стоимость предлагаемых товаров или услуг, в минорных денежных
единицах, например в копейках в случае указания российских рублей в
качестве валюты.
type: integer
format: int64
minimum: 1
fee:
description: 'Комиссия системы, в минорных денежных единицах'
type: integer
format: int64
minimum: 0
currency:
x-rebillyMerge:
- $ref: '#/definitions/Currency'
payer:
$ref: '#/definitions/Payer'
flow:
$ref: '#/definitions/PaymentFlow'
geoLocationInfo:
$ref: '#/definitions/GeoLocationInfo'
metadata:
description: Связанные с платежом метаданные
type: object
invoiceMetadata:
description: Связанные с инвойсом метаданные
type: object
statusChangedAt:
description: Дата и время изменения статуса платежа
type: string
format: date-time
makeRecurrent:
x-rebillyMerge:
- $ref: '#/definitions/PaymentMakeRecurrent'
- readOnly: true
cart:
$ref: '#/definitions/InvoiceCart'

View File

@ -0,0 +1,38 @@
type: object
x-merge-properties:
- type: object
required:
- id
- createdAt
- amount
- currency
properties:
id:
description: Идентификатор возврата
type: string
createdAt:
description: Дата и время осуществления
type: string
format: date-time
amount:
description: >
Сумма возврата, в минорных денежных единицах,
например в копейках в случае указания российских рублей в качестве
валюты.
type: integer
format: int64
minimum: 1
currency:
x-rebillyMerge:
- $ref: '#/definitions/Currency'
reason:
description: Причина осуществления возврата
type: string
cart:
x-rebillyMerge:
- $ref: '#/definitions/InvoiceCart'
- description: >
Итоговая корзина предоставляемых товаров и услуг, которая должна формироваться
из корзины инвойса исключением позиций, по которым производился возврат.
Сумма корзины должна совпадать с суммой платежа за вычетом суммы возврата.
- $ref: '#/definitions/RefundStatus'

View File

@ -0,0 +1,14 @@
type: object
allOf:
- type: object
required:
- invoiceID
- paymentID
properties:
invoiceID:
description: Идентификатор инвойса
type: string
paymentID:
description: Идентификатор платежа
type: string
- $ref: '#/definitions/Refund'

View File

@ -0,0 +1,26 @@
type: object
required:
- status
properties:
status:
description: Статус возврата
type: string
enum:
- pending
- succeeded
- failed
error:
description: |
Данные ошибки, возникшей в процессе проведения возврата, в случае если
возврат был неуспешен
type: object
required:
- code
- message
properties:
code:
description: Код ошибки, пригодный для обработки автоматическими системами
type: string
message:
description: Описание ошибки, пригодное для восприятия человеком
type: string

View File

@ -0,0 +1,139 @@
get:
description: Поиск платежей
tags:
- Search
operationId: searchPayments
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- $ref: '#/parameters/shopID'
- $ref: '#/parameters/fromTime'
- $ref: '#/parameters/toTime'
- $ref: '#/parameters/limit'
- name: paymentStatus
in: query
description: Статус платежа для поиска
required: false
type: string
enum:
- pending
- processed
- captured
- cancelled
- refunded
- failed
- name: paymentFlow
in: query
description: Flow платежа
required: false
type: string
enum:
- instant
- hold
- name: paymentMethod
in: query
description: Метод оплаты
required: false
type: string
enum:
- bankCard
- paymentTerminal
- name: paymentTerminalProvider
in: query
description: Провайдер платежного терминала
required: false
type: string
enum:
- euroset
- name: invoiceID
in: query
description: Идентификатор инвойса
required: false
type: string
maxLength: 40
minLength: 1
- name: paymentID
in: query
description: Идентификатор платежа
required: false
type: string
maxLength: 40
minLength: 1
- name: payerEmail
in: query
description: 'Email, указанный при оплате'
required: false
type: string
format: email
maxLength: 100
- name: payerIP
in: query
description: IP-адрес плательщика
required: false
type: string
format: ip-address
maxLength: 45
- name: payerFingerprint
in: query
description: Уникальный отпечаток user agent'а плательщика
required: false
type: string
maxLength: 1000
- name: customerID
in: query
description: Идентификатор плательщика
required: false
type: string
maxLength: 40
minLength: 1
- name: bin
in: query
description: BIN банка-эмитента карты
required: false
type: string
pattern: '^\d{6,8}$'
- name: lastDigits
in: query
description: Последние цифры номера карты
required: false
type: string
pattern: '^\d{2,4}$'
- x-rebillyMerge:
- name: bankCardTokenProvider
in: query
required: false
- $ref: '#/definitions/BankCardTokenProvider'
- x-rebillyMerge:
- name: bankCardPaymentSystem
in: query
required: false
- $ref: '#/definitions/BankCardPaymentSystem'
- name: paymentAmount
in: query
description: Сумма платежа
required: false
type: integer
format: int64
minimum: 1
- 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:
type: array
items:
$ref: '#/definitions/EnrichedSearchResult'
'404':
$ref: '#/responses/NotFound'
'401':
$ref: '#/responses/Unauthorized'

View File

@ -0,0 +1,63 @@
get:
description: Поиск возвратов
tags:
- Search
operationId: searchRefunds
parameters:
- $ref: '#/parameters/requestID'
- $ref: '#/parameters/deadline'
- $ref: '#/parameters/shopID'
- $ref: '#/parameters/fromTime'
- $ref: '#/parameters/toTime'
- $ref: '#/parameters/limit'
- name: invoiceID
in: query
description: Идентификатор инвойса
required: false
type: string
maxLength: 40
minLength: 1
- name: paymentID
in: query
description: Идентификатор платежа
required: false
type: string
maxLength: 40
minLength: 1
- name: refundID
in: query
description: Идентификатор возврата
required: false
type: string
maxLength: 40
minLength: 1
- name: refundStatus
in: query
description: Статус возврата
type: string
enum:
- pending
- succeeded
- failed
- 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:
type: array
items:
$ref: '#/definitions/EnrichedSearchResult'
'404':
$ref: '#/responses/NotFound'
'401':
$ref: '#/responses/Unauthorized'

View File

@ -60,11 +60,89 @@ parameters:
type: string
maxLength: 32
minLength: 1
shopID:
name: shopID
in: path
description: Идентификатор магазина
required: true
type: string
maxLength: 40
minLength: 1
paymentID:
name: paymentID
in: path
description: Идентификатор платежа в рамках инвойса
required: true
type: string
maxLength: 40
minLength: 1
refundID:
name: refundID
in: path
description: Идентификатор возврата в рамках платежа
required: true
type: string
maxLength: 40
minLength: 1
customerID:
name: customerID
in: path
description: Идентификатор кастомера
required: true
type: string
maxLength: 40
minLength: 1
payoutID:
name: payoutID
in: path
description: Идентификатор вывода
required: true
type: string
maxLength: 40
minLength: 1
invoiceID:
name: invoiceID
in: path
description: Идентификатор инвойса
required: true
type: string
maxLength: 40
minLength: 1
fromTime:
name: fromTime
in: query
description: Начало временного отрезка
required: true
type: string
format: date-time
toTime:
name: toTime
in: query
description: Конец временного отрезка
required: true
type: string
format: date-time
limit:
name: limit
in: query
description: Лимит выборки
required: true
type: integer
format: int32
minimum: 1
maximum: 1000
deadline:
name: X-Request-Deadline
in: header
description: Максимальное время обработки запроса
required: false
type: string
maxLength: 40
minLength: 1
tags:
- name: Payments
x-displayName: Управление платежами
- name: Search
x-displayName: Управление поиском
description: ""
- name: Questionary