openapi info version title Core Broker Bank API description Все POST-з

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
openapi: "3.0.0"
info:
version: 1.2.2
title: Core Broker Bank API
description: |
Все POST-запросы в рамках межсистемного взаимодействия, инициированные сторонами-участниками сценариев, должны содержать электронную подпись, сформированную на сертификате инициировавшей запрос стороны. GET-запросы не содержат электронную подпись. Все ответы в рамках межсистемного взаимодействия также должны содержать электронную подпись, сформированную на сертификате предоставляющей ответ стороны.
При обработке запросов обязательна проверка действительности электронной подписи и принадлежности её стороне, сформировавшей запрос.
При сохранении (логировании) запросов обязательно сохранение всех электронных подписей, полученных с запросом/ответом.
<br><br>
Допустимые алгоритмы подписи: RSA, либо ECDSA. В перспективе возможен переход к использованию алгоритма ГОСТ (в рамках стандарта ГОСТ 34.10-2012) в качестве алгоритма подписи.
<br>
Для схемы с RSA используется хэш-функция SHA256, тип паддинга PKCS1v1.5, алгоритм хэширования MGF1 SHA256.
<br><br>
Тело запроса подписывается по следующему правилу:
- Вычисляется хэш от бинарного тела запроса по алгоритму sha256.
- Отправляющая сторона шифрует вычисленный хэш закрытым ключом.
- Полученная подпись передается в заголовке “X-Request-Sign” в base64.
Тело ответа подписывается аналогично:
- Вычисляется хэш от бинарного тела ответа по алгоритму sha256.
- Отвечающая сторона шифрует вычисленный хэш закрытым ключом.
- Полученная подпись передается в заголовке “X-Request-Sign” в base64.
license:
name: InPlat Technologies
servers:
- url: https://host_name
paths:
/ping/:
get:
summary: Возвращает PONG.
responses:
'200':
description: PONG
content:
text/html:
schema:
type: string
enum:
- pong
/health/:
get:
summary: Возвращает состояние здоровья сервиса.
responses:
'200':
description: Состояние здоровья сервиса.
content:
application/json:
schema:
type: object
/v1/send_application_status/:
post:
summary: Принимает оповещение об изменении статуса заявки
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationEventRequest'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralResponse'
'500':
description: Internal service error
/v1/change_payment_schedule/:
post:
summary: Загрузка обновленного графика платежей
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ChangePaymentScheduleRequest'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralResponse'
'500':
description: Internal service error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralResponse'
/v1/close_contract/:
post:
summary: Закрытие контракта
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CloseContractRequest"
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralResponse'
'500':
description: Internal service error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralResponse'
components:
schemas:
GeneralRequest:
required:
- request_id
- request_stamp
- operation_id
properties:
request_id:
description: Уникальный идентификатор ответа (`uuid4`). Каждый раз должен быть уникальным.
type: string
format: uuid
operation_id:
description: Идентификатор операции (`uuid4`). Должен оставаться неизменным, при попытке повторить уже отправленный ранее запрос.
type: string
format: uuid
request_stamp:
description: "Дата и время запроса в формате ISO 8601: YYYY-MM-DDTHH:MM:SS+HH:MM с указанием часового пояса"
type: string
format: datetime
example: '2019-01-01T00:00:00+00:00'
GeneralResponse:
required:
- response_id
- response_stamp
- response_code
properties:
response_id:
description: Идентификатор ответа (`uuid4`). Должен быть равен request_id.
type: string
format: uuid
response_stamp:
description: "Дата и время ответа в формате ISO 8601: YYYY-MM-DDTHH:MM:SS+HH:MM С указанием часового пояса"
type: string
format: datetime
response_code:
description: |
Код ответа <br>
Общие коды
- 0 - запрос принят успешно
- 1 - ошибка валидации данных в запросе
- 2 - техническая ошибка при обработке запроса
- 3 - запрос отклонён
- 4 - электронная подпись запроса неверна
- 5 - зарезервировано для дальнейшего использования
- 6 - Оригинальный запрос с указанным operation_id находится в процессе обработки
- 7 - Запрос с указанным operation id не совпадает с оригинальным запросом
<br> коды метода /v1/change_payment_schedule/
- 19001 - договор с данным ID не найден
- 19002 - переданная версия графика платежей меньше текущей
<br> коды метода /v1/close_conrtract/
- 25001 - контракт с данным ID не найден
- 25002 - контракт с данным ID находится в неподходящем статусе
<br> Коды метода /v1/send_application_status
- 30001 - клиент с данным ID не найден
- 30002 - недопустимо для текущего статуса
type: integer
enum:
# общие коды
- 0 # запрос принят успешно
- 1 # ошибка валидации данных в запросе
- 2 # техническая ошибка при обработке запроса
- 3 # запрос отклонён
- 4 # электронная подпись запроса неверна
- 5 # зарезервировано для дальнейшего использования
- 6 # Оригинальный запрос с указанным operation_id находится в процессе обработки
- 7 # Запрос с указанным operation id не совпадает с оригинальным запросом
# коды метода /v1/change_payment_schedule/
- 19001 # договор с данным ID не найден
- 19002 # Переданная версия графика платежей меньше текущей
# коды метода /v1/close_conrtract/
- 25001 # Контракт с данным ID не найден
- 25002 # Контракт с данным ID находится в неподходящем статусе
# коды метода /v1/send_application_status
- 30001 # контракт с данным ID не найден
- 30002 # недопустимо для текущего статуса
response_description:
description: Текстовое описание кода ответа
type: string
ChangePaymentScheduleRequest:
allOf:
- $ref: "#/components/schemas/GeneralRequest"
- type: object
required:
- payment_schedule
properties:
payment_schedule:
$ref: "#/components/schemas/PaymentSchedule"
CloseContractRequest:
allOf:
- $ref: "#/components/schemas/GeneralRequest"
- type: object
required:
- bank_contract_id
properties:
bank_contract_id:
description: Идентификатор контракта в банке-кредиторе
type: string
ApplicationEventRequest:
allOf:
- $ref: "#/components/schemas/GeneralRequest"
- type: object
required:
- application_id
properties:
application_id:
description: Идентификатор заявки в банке-кредиторе
type: string
event_code:
description: |
Код события
- INPUT_INITIAL - заявка прошла первоначальную обработку.
- OFFER_SIGN - согласия по заявке прошли проверку, пакет кредитной документации сформирован.
- COMPLETED - банк принял финальное решение о выдаче кредита.
- REJECT_BANK - заявка отклонена банком.
- REJECT_CLIENT - заявка отклонена по инициативе клиента или истекло время ожидания действий клиента.
type: string
enum:
- INPUT_INITIAL
- OFFER_SIGN
- COMPLETED
- REJECT_BANK
- REJECT_CLIENT
PaymentSchedule:
required:
- bank_contract_id
- version
- payments
properties:
bank_contract_id:
description: Идентификатор контракта в банке-кредиторе
type: string
version:
description: Версия графика платежей
type: string
format: timestamp
payments:
description: График платежей
type: array
items:
$ref: '#/components/schemas/Payment'
Payment:
required:
- payment_id
- payment_status_code
- payment_date
- payment_amount
- base_debt_amount
- interest_amount
- amount_to_pay
- amount_to_pay_base_debt
- amount_to_pay_interest
properties:
payment_id:
description: Идентификатор записи в графике платежей
type: integer
payment_status_code:
description: |
Код cтатуса платежа
- 0 - будущий платеж
- 1 - погашен
- 2 - просрочен
type: integer
payment_date:
description: Дата платежа
type: string
format: date
example: '2017-07-21'
payment_amount:
description: Сумма планового платежа (в копейках)
type: integer
base_debt_amount:
description: Часть суммы планового платежа в счёт погашения основного долга (в копейках)
type: integer
interest_amount:
description: Часть суммы планового платежа в счёт погашения процентов (в копейках)
type: integer
penalty_amount:
description: Часть суммы планового платежа в счёт погашения штрафов (в копейках)
type: integer
amount_to_pay:
description: Сумма фактического платежа, т.е. остатка к списанию (в копейках)
type: integer
amount_to_pay_base_debt:
description: Часть суммы фактического платежа в счёт погашения основного долга (в копейках)
type: integer
amount_to_pay_interest:
description: Часть суммы фактического платежа в счёт погашения процентов (в копейках)
type: integer
securitySchemes:
RemoteSystem:
type: apiKey
in: header
name: X-Token
description: Аутентификация происходит по токену и IP-адресу клиента.
RequestSignature:
type: apiKey
in: header
name: X-Request-Sign
description: Подпись запроса
security:
- RemoteSystem: []
RequestSignature: []