-
Notifications
You must be signed in to change notification settings - Fork 2
/
XS2A_Open_API.yml
548 lines (548 loc) · 17.2 KB
/
XS2A_Open_API.yml
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
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
openapi: 3.0.0
info:
title: XS2A_N26
version: 1.0.0
contact: {}
servers:
- url: 'https://xs2a.tech26.de/v1/berlin-group/v1'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
links: {}
callbacks: {}
schemas: {}
paths:
/consents:
post:
tags:
- default
summary: 1.1 POST /consents (Bank-Offered consent)
requestBody:
content:
application/json:
schema:
type: object
example:
access:
accounts:
- iban: MC4626956939912m8R99LWS9749
transactions:
- iban: MC4626956939912m8R99LWS9749
balances:
- iban: MC4626956939912m8R99LWS9749
additionalInformation:
ownerName:
- iban: MC4626956939912m8R99LWS9749
allPsd2: ALL_ACCOUNTS_WITH_OWNER_NAME
recurringIndicator: true
validUntil:
year: 2021
month: DECEMBER
chronology:
calendarType: iso8601
id: ISO
leapYear: false
dayOfWeek: MONDAY
dayOfYear: 361
era: CE
monthValue: 12
dayOfMonth: 27
frequencyPerDay: 9
security:
- bearerAuth: []
responses:
'201':
description: Successful response
content:
application/json:
example:
consentStatus: RECEIVED
consentId:
value: 9b8d2906-0a80-4c52-876c-61d04ce8dbe4
links: {}
'400':
description: Incorrectly formatted consent or wrong parameters
'500':
description: Account not found on our systems or invalid certificate
'/consents/{consent_id}/status':
get:
tags:
- default
summary: 2.1 GET /consents/status (polling)
security:
- bearerAuth: []
parameters:
- name: consent_id
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
example:
consentStatus: received
'/consents/{consent_id}':
get:
tags:
- default
summary: 2.2 GET /consents/
security:
- bearerAuth: []
parameters:
- name: consent_id
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
example:
access:
accounts:
- iban: ST66797089939462764637664
transactions:
- iban: ST66797089939462764637664
balances:
- iban: ST66797089939462764637664
additionalInformation:
ownerName:
- iban: ST66797089939462764637664
allPsd2: ALL_ACCOUNTS_WITH_OWNER_NAME
recurringIndicator: true
validUntil:
year: 2021
month: AUGUST
monthValue: 8
dayOfMonth: 2
leapYear: false
dayOfWeek: MONDAY
dayOfYear: 214
era: CE
chronology:
calendarType: iso8601
id: ISO
frequencyPerDay: 9
lastActionDate:
year: 2021
month: JUNE
monthValue: 6
dayOfMonth: 30
leapYear: false
dayOfWeek: WEDNESDAY
dayOfYear: 181
era: CE
chronology:
calendarType: iso8601
id: ISO
consentStatus: VALID
links: {}
delete:
tags:
- default
summary: 2.3 DELETE /consents/
security:
- bearerAuth: []
parameters:
- name: consent_id
in: path
schema:
type: string
required: true
responses:
'204':
description: Successful response
/accounts:
get:
tags:
- default
summary: 3. GET /accounts
security:
- bearerAuth: []
parameters:
- name: Consent-ID
in: header
schema:
type: string
example: '{{consent_id}}'
responses:
'200':
description: Successful response
content:
application/json:
example:
accounts:
- resourceId: 00e446bb-9c90-4811-a48f-a288f14d74bf
iban: DEq2Y5AM1lstJtfGgK7Iccrs9pFuNl25sL
currency: EUR
product: Main Account
name: wMOvmbvffu
bic: NTSBDEB1XXX
cashAccountType: CACC
status: enabled
usage: PRIV
_links:
balances:
href: "/v1/berlin-group/v1/accounts/00e446bb-9c90-4811-a48f-a288f14d74bf/balances"
transactions:
href: "/v1/berlin-group/v1/accounts/00e446bb-9c90-4811-a48f-a288f14d74bf/transactions"
- resourceId: f642c68f-5812-4242-b5b9-0fd64eb302df
currency: EUR
product: Space
name: ZPiPMliqFK
cashAccountType: CACC
status: enabled
usage: PRIV
_links:
balances:
href: "/v1/berlin-group/v1/accounts/f642c68f-5812-4242-b5b9-0fd64eb302df/balances"
transactions:
href: "/v1/berlin-group/v1/accounts/f642c68f-5812-4242-b5b9-0fd64eb302df/transactions"
- resourceId: 8565f643-412a-43b2-ab1b-aefd29c03507
currency: EUR
product: Space
cashAccountType: CACC
status: deleted
usage: PRIV
_links:
balances:
href: "/v1/berlin-group/v1/accounts/8565f643-412a-43b2-ab1b-aefd29c03507/balances"
transactions:
href: "/v1/berlin-group/v1/accounts/8565f643-412a-43b2-ab1b-aefd29c03507/transactions"
'429':
description: Rate limit error
content:
application/json:
example:
title: Request limit breached
code: ACCESS_EXCEEDED
detail: Request limit has been breached! Request blocked.
'500':
description: Error getting accounts from database
content:
application/json:
example:
title: Could not retrieve accounts
code: GENERIC_ERROR
detail: ''
'/accounts/{bg_account_id}':
get:
tags:
- default
summary: 3.1 GET /accounts by ID
security:
- bearerAuth: []
parameters:
- name: Consent-ID
in: header
schema:
type: string
example: '{{consent_id}}'
- name: bg_account_id
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
example:
account:
resourceId: 35453846-38d5-4417-8e0c-eab21dee93a7
iban: DE00000000001234000000
currency: EUR
product: Main Account
name: Primary Space
bic: NTSBDEB1XXX
cashAccountType: CACC
status: enabled
usage: PRIV
_links:
balances:
href: "/v1/berlin-group/v1/accounts/35453846-38d5-4417-8e0c-eab21dee93a7/balances"
transactions:
href: "/v1/berlin-group/v1/accounts/35453846-38d5-4417-8e0c-eab21dee93a7/transactions"
'404':
description: Account does not exist or user does not have access to it
'429':
description: Rate limit error
content:
application/json:
example:
title: Request limit breached
code: ACCESS_EXCEEDED
detail: Request limit has been breached! Request blocked.
'500':
description: Failed to get account details
content:
application/json:
example:
title: GENERIC_ERROR
code: GENERIC_ERROR
detail: ''
'/accounts/{bg_account_id}/balances':
get:
tags:
- default
summary: 4. GET /balances
security:
- bearerAuth: []
parameters:
- name: Consent-ID
in: header
schema:
type: string
example: '{{consent_id}}'
- name: bg_account_id
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
example:
balances:
- balanceType: expected
balanceAmount:
amount: '2000'
currency: EUR
lastChangeDateTime: '1970-01-01T00:00:01Z'
referenceDate: '1970-01-01'
account:
iban: DE00000000001234000000
'404':
description: Account does not exist or user has not access to account
'429':
description: Rate limit error
content:
application/json:
example:
title: Request limit breached
code: ACCESS_EXCEEDED
detail: Request limit has been breached! Request blocked.
'500':
description: Error getting account balances
content:
application/json:
example:
title: GENERIC_ERROR
code: GENERIC_ERROR
detail: ''
'/accounts/{space_bg_account_id}/balances':
get:
tags:
- default
summary: 4.1 GET /balances for a space
security:
- bearerAuth: []
parameters:
- name: Consent-ID
in: header
schema:
type: string
example: '{{consent_id}}'
- name: space_bg_account_id
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
example:
balances:
- balanceType: expected
balanceAmount:
amount: '2000'
currency: EUR
lastChangeDateTime: '1970-01-01T00:00:01Z'
referenceDate: '1970-01-01'
account:
iban: DE00000000001234000000
'404':
description: Account does not exist or user has not access to account
'429':
description: Rate limit error
content:
application/json:
example:
title: Request limit breached
code: ACCESS_EXCEEDED
detail: Request limit has been breached! Request blocked.
'500':
description: Error getting account balances
content:
application/json:
example:
title: GENERIC_ERROR
code: GENERIC_ERROR
detail: ''
'/accounts/{bg_account_id}/transactions':
get:
tags:
- default
summary: 5. GET /transactions (standing orders)
security:
- bearerAuth: []
parameters:
- name: Consent-ID
in: header
schema:
type: string
example: '{{consent_id}}'
- name: bookingStatus
in: query
schema:
type: string
example: information
- name: dateFrom
in: query
schema:
type: string
- name: dateTo
in: query
schema:
type: string
example: information
- name: bg_account_id
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
example:
account:
iban: DE65100110011234567890
transactions:
pending: []
booked:
- transactionId: 26e6eccd-2753-45b8-abc8-050207849edc
creditorName: partner name
creditorAccount:
iban: DE65100110011234567890
transactionAmount:
amount: "-10.0"
currency: EUR
bookingDate: '2021-07-05'
valueDate: '2021-07-05'
remittanceInformationUnstructuredArray:
- Debited transaction
bankTransactionCode: PMNT-RCDT-ESCT
- transactionId: e605c895-d1a7-4db7-bda4-dddc429c0ae1
debtorName: merchant name
transactionAmount:
amount: '3.0'
currency: EUR
bookingDate: '2021-07-05'
valueDate: '2021-07-05'
currencyExchange:
- exchangeRate: '0.2'
unitCurrency: GBP
sourceCurrency: GBP
targetCurrency: EUR
quotationDate: '2021-07-05'
remittanceInformationUnstructuredArray:
- Credited transaction
bankTransactionCode: PMNT-CCRD-CWDL
_links:
account:
href: "/v1/berlin-group/v1/accounts/0a3fa412-0e5a-4437-a5ca-12873166c8f0"
'400':
description: Invalid search params
content:
application/json:
example:
title: Invalid booking status
code: FORMAT_ERROR
detail: bookingStatus=invalidStatus
'404':
description: User has not access to its account
content:
application/json:
example:
title: Account unknown
code: RESOURCE_UNKNOWN
detail: Account unknown
'429':
description: Rate limit error
content:
application/json:
example:
title: Request limit breached
code: ACCESS_EXCEEDED
detail: Request limit has been breached! Request blocked.
'/accounts/{bg_account_id}/transactions/{transaction_id}':
get:
tags:
- default
summary: 6. GET /transactions by ID
security:
- bearerAuth: []
parameters:
- name: Consent-ID
in: header
schema:
type: string
example: '{{consent_id}}'
- name: bg_account_id
in: path
schema:
type: string
required: true
- name: transaction_id
in: path
schema:
type: string
required: true
responses:
'200':
description: Successful response
content:
application/json:
example:
transactionDetails:
transactionId: 4289174b-b6c4-4470-b6e8-e5bf5e043723
creditorName: merchant name
transactionAmount:
amount: "-3.0"
currency: EUR
bookingDate: '1970-01-01'
valueDate: '1970-01-01'
remittanceInformationUnstructuredArray:
- reference text
bankTransactionCode: PMNT-CCRD-POSD
'404':
description: User has not access to transaction
content:
application/json:
example:
title: Account unknown
code: RESOURCE_UNKNOWN
detail: Account unknown
'429':
description: Rate limit error
content:
application/json:
example:
title: Request limit breached
code: ACCESS_EXCEEDED
detail: Request limit has been breached! Request blocked.
security: []