@mojaloop/sdk-scheme-adapter 11.18.8 → 11.18.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/InboundServer/api.yaml +2 -0
- package/InboundServer/handlers.js +0 -38
- package/OutboundServer/api.yaml +23 -270
- package/OutboundServer/api_interfaces/openapi.d.ts +10 -127
- package/OutboundServer/api_template/openapi.yaml +0 -3
- package/OutboundServer/handlers.js +2 -40
- package/audit-resolve.json +80 -0
- package/lib/model/index.js +1 -3
- package/package.json +2 -2
- package/test/__mocks__/@mojaloop/sdk-standard-components.js +0 -2
- package/test/config/integration.env +0 -3
- package/test/unit/inboundApi/handlers.test.js +0 -46
- package/test/unit/outboundApi/handlers.test.js +1 -100
- package/OutboundServer/api_template/components/responses/authorizationPostSuccess.yaml +0 -5
- package/OutboundServer/api_template/components/responses/authorizationsServerError.yaml +0 -5
- package/OutboundServer/api_template/components/schemas/authorizationsPostRequest.yaml +0 -15
- package/OutboundServer/api_template/components/schemas/authorizationsPostResponse.yaml +0 -19
- package/OutboundServer/api_template/components/schemas/errorAuthorizationsResponse.yaml +0 -3
- package/OutboundServer/api_template/paths/authorizations.yaml +0 -19
- package/lib/model/AuthorizationsModel.js +0 -86
- package/test/integration/lib/Outbound/authorizations.test.js +0 -58
- package/test/integration/lib/Outbound/data/authorizationsPostRequest.json +0 -43
- package/test/unit/lib/model/AuthorizationsModel.test.js +0 -460
- package/test/unit/lib/model/data/putAuthorizationsResponse.json +0 -10
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [11.18.9](https://github.com/mojaloop/sdk-scheme-adapter/compare/v11.18.8...v11.18.9) (2021-10-20)
|
|
6
|
+
|
|
5
7
|
### [11.18.8](https://github.com/mojaloop/sdk-scheme-adapter/compare/v11.18.7...v11.18.8) (2021-09-16)
|
|
6
8
|
|
|
7
9
|
|
package/InboundServer/api.yaml
CHANGED
|
@@ -17,7 +17,6 @@ const Model = require('../lib/model').InboundTransfersModel;
|
|
|
17
17
|
const PartiesModel = require('../lib/model').PartiesModel;
|
|
18
18
|
const QuotesModel = require('../lib/model').QuotesModel;
|
|
19
19
|
const TransfersModel = require('../lib/model').TransfersModel;
|
|
20
|
-
const AuthorizationsModel = require('../lib/model').AuthorizationsModel;
|
|
21
20
|
|
|
22
21
|
/**
|
|
23
22
|
* Handles a GET /authorizations/{id} request
|
|
@@ -303,43 +302,9 @@ const putAuthorizationsById = async (ctx) => {
|
|
|
303
302
|
data: ctx.request.body,
|
|
304
303
|
headers: ctx.request.headers
|
|
305
304
|
});
|
|
306
|
-
|
|
307
|
-
// duplicate publication until legacy code refactored
|
|
308
|
-
await AuthorizationsModel.triggerDeferredJob({
|
|
309
|
-
cache: ctx.state.cache,
|
|
310
|
-
message: ctx.request.body,
|
|
311
|
-
args: {
|
|
312
|
-
transactionRequestId: ctx.state.path.params.ID
|
|
313
|
-
}
|
|
314
|
-
});
|
|
315
|
-
|
|
316
305
|
ctx.response.status = 200;
|
|
317
306
|
};
|
|
318
307
|
|
|
319
|
-
/**
|
|
320
|
-
* Handles a PUT /authorizations/{ID}/error request.
|
|
321
|
-
* This is an error response to a POST /authorizations request
|
|
322
|
-
*/
|
|
323
|
-
const putAuthorizationsByIdError = async (ctx) => {
|
|
324
|
-
|
|
325
|
-
// publish an event onto the cache for subscribers to action
|
|
326
|
-
await ctx.state.cache.publish(`otp_${ctx.state.path.params.ID}`, {
|
|
327
|
-
type: 'authorizationResponseError',
|
|
328
|
-
data: ctx.request.body,
|
|
329
|
-
});
|
|
330
|
-
|
|
331
|
-
// duplicate publication until legacy code refactored
|
|
332
|
-
await AuthorizationsModel.triggerDeferredJob({
|
|
333
|
-
cache: ctx.state.cache,
|
|
334
|
-
message: ctx.request.body,
|
|
335
|
-
args: {
|
|
336
|
-
transactionRequestId: ctx.state.path.params.ID
|
|
337
|
-
}
|
|
338
|
-
});
|
|
339
|
-
|
|
340
|
-
ctx.response.status = 200;
|
|
341
|
-
ctx.response.body = '';
|
|
342
|
-
};
|
|
343
308
|
|
|
344
309
|
/**
|
|
345
310
|
* Handles a PUT /participants/{ID}. This is a response to a POST /participants request
|
|
@@ -854,9 +819,6 @@ module.exports = {
|
|
|
854
819
|
get: getAuthorizationsById,
|
|
855
820
|
put: putAuthorizationsById
|
|
856
821
|
},
|
|
857
|
-
'/authorizations/{ID}/error': {
|
|
858
|
-
put: putAuthorizationsByIdError
|
|
859
|
-
},
|
|
860
822
|
'/bulkQuotes': {
|
|
861
823
|
post: postBulkQuotes
|
|
862
824
|
},
|
package/OutboundServer/api.yaml
CHANGED
|
@@ -468,27 +468,6 @@ paths:
|
|
|
468
468
|
$ref: '#/components/responses/simpleTransfersPostSuccess'
|
|
469
469
|
'500':
|
|
470
470
|
$ref: '#/components/responses/simpleTransfersServerError'
|
|
471
|
-
/authorizations:
|
|
472
|
-
post:
|
|
473
|
-
description: >-
|
|
474
|
-
The HTTP request `POST /authorizations` is used to request the Payer to
|
|
475
|
-
enter the applicable credentials in the PISP system.
|
|
476
|
-
summary: Authorizations endpoint
|
|
477
|
-
operationId: AuthorizationsPost
|
|
478
|
-
tags:
|
|
479
|
-
- authorizations
|
|
480
|
-
requestBody:
|
|
481
|
-
description: Perform authorization
|
|
482
|
-
required: true
|
|
483
|
-
content:
|
|
484
|
-
application/json:
|
|
485
|
-
schema:
|
|
486
|
-
$ref: '#/components/schemas/authorizationsPostRequest'
|
|
487
|
-
responses:
|
|
488
|
-
'200':
|
|
489
|
-
$ref: '#/components/responses/authorizationPostSuccess'
|
|
490
|
-
'500':
|
|
491
|
-
$ref: '#/components/responses/authorizationsServerError'
|
|
492
471
|
components:
|
|
493
472
|
schemas:
|
|
494
473
|
TransactionInitiatorType:
|
|
@@ -521,11 +500,6 @@ components:
|
|
|
521
500
|
- CONSENT
|
|
522
501
|
- THIRD_PARTY_LINK
|
|
523
502
|
description: >
|
|
524
|
-
This is a variant based on FSPIOP `PartyIdType` specification.
|
|
525
|
-
|
|
526
|
-
Main difference being the CONSENT and THIRD_PARTY_LINK enums.
|
|
527
|
-
|
|
528
|
-
|
|
529
503
|
Below are the allowed values for the enumeration.
|
|
530
504
|
|
|
531
505
|
- MSISDN - An MSISDN (Mobile Station International Subscriber Directory
|
|
@@ -556,7 +530,7 @@ components:
|
|
|
556
530
|
certificate
|
|
557
531
|
|
|
558
532
|
number, and national registration number. The identifier number is added
|
|
559
|
-
in
|
|
533
|
+
in
|
|
560
534
|
|
|
561
535
|
the PartyIdentifier element. The personal identifier type is added in
|
|
562
536
|
the
|
|
@@ -613,9 +587,27 @@ components:
|
|
|
613
587
|
|
|
614
588
|
by the PartyIdentifier.
|
|
615
589
|
|
|
616
|
-
- CONSENT -
|
|
590
|
+
- CONSENT - A Consent represents an agreement between a PISP, a Customer
|
|
591
|
+
and
|
|
617
592
|
|
|
618
|
-
|
|
593
|
+
a DFSP which allows the PISP permission to perform actions on behalf of
|
|
594
|
+
the
|
|
595
|
+
|
|
596
|
+
customer. A Consent has an authoritative source: either the DFSP who
|
|
597
|
+
issued
|
|
598
|
+
|
|
599
|
+
the Consent, or an Auth Service which administers the Consent.
|
|
600
|
+
|
|
601
|
+
- THIRD_PARTY_LINK - A Third Party Link represents an agreement between
|
|
602
|
+
a PISP,
|
|
603
|
+
|
|
604
|
+
a DFSP, and a specific Customer's account at the DFSP. The content of
|
|
605
|
+
the link
|
|
606
|
+
|
|
607
|
+
is created by the DFSP at the time when it gives permission to the PISP
|
|
608
|
+
for
|
|
609
|
+
|
|
610
|
+
specific access to a given account.
|
|
619
611
|
example: PERSONAL_ID
|
|
620
612
|
PartyIdentifier:
|
|
621
613
|
title: PartyIdentifier
|
|
@@ -946,6 +938,8 @@ components:
|
|
|
946
938
|
- XDR
|
|
947
939
|
- XOF
|
|
948
940
|
- XPF
|
|
941
|
+
- XTS
|
|
942
|
+
- XXX
|
|
949
943
|
- YER
|
|
950
944
|
- ZAR
|
|
951
945
|
- ZMW
|
|
@@ -2281,235 +2275,6 @@ components:
|
|
|
2281
2275
|
allOf:
|
|
2282
2276
|
- $ref: '#/components/schemas/errorResponse'
|
|
2283
2277
|
- type: object
|
|
2284
|
-
AuthenticationType-2:
|
|
2285
|
-
title: AuthenticationType
|
|
2286
|
-
type: string
|
|
2287
|
-
enum:
|
|
2288
|
-
- OTP
|
|
2289
|
-
- QRCODE
|
|
2290
|
-
- U2F
|
|
2291
|
-
description: |-
|
|
2292
|
-
Below are the allowed values for the enumeration AuthenticationType.
|
|
2293
|
-
- OTP - One-time password generated by the Payer FSP.
|
|
2294
|
-
- QRCODE - QR code used as One Time Password.
|
|
2295
|
-
- U2F - U2F is a new addition isolated to Thirdparty stream.
|
|
2296
|
-
Integer:
|
|
2297
|
-
title: Integer
|
|
2298
|
-
type: string
|
|
2299
|
-
pattern: '^[1-9]\d*$'
|
|
2300
|
-
description: >-
|
|
2301
|
-
The API data type Integer is a JSON String consisting of digits only.
|
|
2302
|
-
Negative numbers and leading zeroes are not allowed. The data type is
|
|
2303
|
-
always limited to a specific number of digits.
|
|
2304
|
-
AuthorizationsPostRequest:
|
|
2305
|
-
title: AuthorizationsPostRequest
|
|
2306
|
-
description: POST /authorizations request object.
|
|
2307
|
-
type: object
|
|
2308
|
-
properties:
|
|
2309
|
-
authenticationType:
|
|
2310
|
-
$ref: '#/components/schemas/AuthenticationType-2'
|
|
2311
|
-
retriesLeft:
|
|
2312
|
-
$ref: '#/components/schemas/Integer'
|
|
2313
|
-
amount:
|
|
2314
|
-
$ref: '#/components/schemas/Money'
|
|
2315
|
-
transactionId:
|
|
2316
|
-
$ref: '#/components/schemas/CorrelationId'
|
|
2317
|
-
transactionRequestId:
|
|
2318
|
-
$ref: '#/components/schemas/CorrelationId'
|
|
2319
|
-
quote:
|
|
2320
|
-
$ref: '#/components/schemas/QuotesIDPutResponse'
|
|
2321
|
-
required:
|
|
2322
|
-
- authenticationType
|
|
2323
|
-
- retriesLeft
|
|
2324
|
-
- amount
|
|
2325
|
-
- transactionId
|
|
2326
|
-
- transactionRequestId
|
|
2327
|
-
- quote
|
|
2328
|
-
additionalProperties: false
|
|
2329
|
-
authorizationsPostRequest:
|
|
2330
|
-
title: AuthorizationsPostRequest
|
|
2331
|
-
description: POST /authorizations Request object
|
|
2332
|
-
type: object
|
|
2333
|
-
properties:
|
|
2334
|
-
fspId:
|
|
2335
|
-
title: destination DFSP
|
|
2336
|
-
$ref: '#/components/schemas/FspId'
|
|
2337
|
-
authorizationsPostRequest:
|
|
2338
|
-
$ref: '#/components/schemas/AuthorizationsPostRequest'
|
|
2339
|
-
required:
|
|
2340
|
-
- fspId
|
|
2341
|
-
- authorizationsPostRequest
|
|
2342
|
-
OtpValue:
|
|
2343
|
-
title: OtpValue
|
|
2344
|
-
type: string
|
|
2345
|
-
pattern: '^\d{3,10}$'
|
|
2346
|
-
description: >-
|
|
2347
|
-
The API data type OtpValue is a JSON String of 3 to 10 characters,
|
|
2348
|
-
consisting of digits only. Negative numbers are not allowed. One or more
|
|
2349
|
-
leading zeros are allowed.
|
|
2350
|
-
QRCODE:
|
|
2351
|
-
title: QRCODE
|
|
2352
|
-
type: string
|
|
2353
|
-
minLength: 1
|
|
2354
|
-
maxLength: 64
|
|
2355
|
-
description: QR code used as a One Time Password.
|
|
2356
|
-
U2FPIN:
|
|
2357
|
-
title: U2FPIN
|
|
2358
|
-
type: string
|
|
2359
|
-
pattern: '^\S{1,64}$'
|
|
2360
|
-
minLength: 1
|
|
2361
|
-
maxLength: 64
|
|
2362
|
-
description: >
|
|
2363
|
-
U2F challenge-response, where payer FSP verifies if the response
|
|
2364
|
-
provided by end-user device matches the previously registered key.
|
|
2365
|
-
U2FPinValue:
|
|
2366
|
-
title: U2FPinValue
|
|
2367
|
-
type: object
|
|
2368
|
-
description: >
|
|
2369
|
-
U2F challenge-response, where payer FSP verifies if the response
|
|
2370
|
-
provided by end-user device matches the previously registered key.
|
|
2371
|
-
properties:
|
|
2372
|
-
pinValue:
|
|
2373
|
-
allOf:
|
|
2374
|
-
- $ref: '#/components/schemas/U2FPIN'
|
|
2375
|
-
description: U2F challenge-response.
|
|
2376
|
-
counter:
|
|
2377
|
-
allOf:
|
|
2378
|
-
- $ref: '#/components/schemas/Integer'
|
|
2379
|
-
description: >-
|
|
2380
|
-
Sequential counter used for cloning detection. Present only for U2F
|
|
2381
|
-
authentication.
|
|
2382
|
-
required:
|
|
2383
|
-
- pinValue
|
|
2384
|
-
- counter
|
|
2385
|
-
FIDOPublicKeyCredentialAssertion:
|
|
2386
|
-
title: FIDOPublicKeyCredentialAssertion
|
|
2387
|
-
type: object
|
|
2388
|
-
description: >
|
|
2389
|
-
An object sent in a `PUT /thirdpartyRequests/authorization/{ID}`
|
|
2390
|
-
request.
|
|
2391
|
-
|
|
2392
|
-
based mostly on: https://webauthn.guide/#authentication
|
|
2393
|
-
|
|
2394
|
-
AuthenticatorAssertionResponse
|
|
2395
|
-
properties:
|
|
2396
|
-
id:
|
|
2397
|
-
type: string
|
|
2398
|
-
description: |
|
|
2399
|
-
credential id: identifier of pair of keys, base64 encoded
|
|
2400
|
-
https://w3c.github.io/webauthn/#ref-for-dom-credential-id
|
|
2401
|
-
minLength: 59
|
|
2402
|
-
maxLength: 118
|
|
2403
|
-
rawId:
|
|
2404
|
-
type: string
|
|
2405
|
-
description: |
|
|
2406
|
-
raw credential id: identifier of pair of keys, base64 encoded.
|
|
2407
|
-
minLength: 59
|
|
2408
|
-
maxLength: 118
|
|
2409
|
-
response:
|
|
2410
|
-
type: object
|
|
2411
|
-
description: |
|
|
2412
|
-
AuthenticatorAssertionResponse
|
|
2413
|
-
properties:
|
|
2414
|
-
authenticatorData:
|
|
2415
|
-
type: string
|
|
2416
|
-
description: |
|
|
2417
|
-
Authenticator data object.
|
|
2418
|
-
minLength: 49
|
|
2419
|
-
maxLength: 256
|
|
2420
|
-
clientDataJSON:
|
|
2421
|
-
type: string
|
|
2422
|
-
description: |
|
|
2423
|
-
JSON string with client data.
|
|
2424
|
-
minLength: 121
|
|
2425
|
-
maxLength: 512
|
|
2426
|
-
signature:
|
|
2427
|
-
type: string
|
|
2428
|
-
description: >
|
|
2429
|
-
The signature generated by the private key associated with this
|
|
2430
|
-
credential.
|
|
2431
|
-
minLength: 59
|
|
2432
|
-
maxLength: 256
|
|
2433
|
-
userHandle:
|
|
2434
|
-
type: string
|
|
2435
|
-
description: |
|
|
2436
|
-
This field is optionally provided by the authenticator, and
|
|
2437
|
-
represents the user.id that was supplied during registration.
|
|
2438
|
-
minLength: 1
|
|
2439
|
-
maxLength: 88
|
|
2440
|
-
required:
|
|
2441
|
-
- authenticatorData
|
|
2442
|
-
- clientDataJSON
|
|
2443
|
-
- signature
|
|
2444
|
-
additionalProperties: false
|
|
2445
|
-
type:
|
|
2446
|
-
type: string
|
|
2447
|
-
description: 'response type, we need only the type of public-key'
|
|
2448
|
-
enum:
|
|
2449
|
-
- public-key
|
|
2450
|
-
required:
|
|
2451
|
-
- id
|
|
2452
|
-
- rawId
|
|
2453
|
-
- response
|
|
2454
|
-
- type
|
|
2455
|
-
additionalProperties: false
|
|
2456
|
-
AuthenticationValue:
|
|
2457
|
-
title: AuthenticationValue
|
|
2458
|
-
anyOf:
|
|
2459
|
-
- $ref: '#/components/schemas/OtpValue'
|
|
2460
|
-
- $ref: '#/components/schemas/QRCODE'
|
|
2461
|
-
- $ref: '#/components/schemas/U2FPinValue'
|
|
2462
|
-
- $ref: '#/components/schemas/FIDOPublicKeyCredentialAssertion'
|
|
2463
|
-
description: >-
|
|
2464
|
-
Contains the authentication value. The format depends on the
|
|
2465
|
-
authentication type used in the AuthenticationInfo complex type.
|
|
2466
|
-
AuthenticationInfo:
|
|
2467
|
-
title: AuthenticationInfo
|
|
2468
|
-
type: object
|
|
2469
|
-
description: Data model for the complex type AuthenticationInfo.
|
|
2470
|
-
properties:
|
|
2471
|
-
authentication:
|
|
2472
|
-
$ref: '#/components/schemas/AuthenticationType-2'
|
|
2473
|
-
authenticationValue:
|
|
2474
|
-
$ref: '#/components/schemas/AuthenticationValue'
|
|
2475
|
-
required:
|
|
2476
|
-
- authentication
|
|
2477
|
-
- authenticationValue
|
|
2478
|
-
AuthorizationResponseType:
|
|
2479
|
-
title: AuthorizationResponseType
|
|
2480
|
-
description: |
|
|
2481
|
-
Enum containing response information; if the customer entered the
|
|
2482
|
-
authentication value, rejected the transaction, or requested a
|
|
2483
|
-
resend of the authentication value.
|
|
2484
|
-
type: string
|
|
2485
|
-
enum:
|
|
2486
|
-
- ENTERED
|
|
2487
|
-
- REJECTED
|
|
2488
|
-
- RESEND
|
|
2489
|
-
authorizationsPostResponse:
|
|
2490
|
-
title: AuthorizationsPostResponse
|
|
2491
|
-
description: POST /authorizations response object
|
|
2492
|
-
type: object
|
|
2493
|
-
properties:
|
|
2494
|
-
authorizations:
|
|
2495
|
-
type: object
|
|
2496
|
-
properties:
|
|
2497
|
-
authenticationInfo:
|
|
2498
|
-
$ref: '#/components/schemas/AuthenticationInfo'
|
|
2499
|
-
responseType:
|
|
2500
|
-
$ref: '#/components/schemas/AuthorizationResponseType'
|
|
2501
|
-
required:
|
|
2502
|
-
- responseType
|
|
2503
|
-
currentState:
|
|
2504
|
-
$ref: '#/components/schemas/async2SyncCurrentState'
|
|
2505
|
-
required:
|
|
2506
|
-
- authorizations
|
|
2507
|
-
- currentState
|
|
2508
|
-
additionalProperties: false
|
|
2509
|
-
errorAuthorizationsResponse:
|
|
2510
|
-
allOf:
|
|
2511
|
-
- $ref: '#/components/schemas/errorResponse'
|
|
2512
|
-
- type: object
|
|
2513
2278
|
responses:
|
|
2514
2279
|
transferSuccess:
|
|
2515
2280
|
description: Transfer completed successfully
|
|
@@ -2658,18 +2423,6 @@ components:
|
|
|
2658
2423
|
application/json:
|
|
2659
2424
|
schema:
|
|
2660
2425
|
$ref: '#/components/schemas/errorSimpleTransfersResponse'
|
|
2661
|
-
authorizationPostSuccess:
|
|
2662
|
-
description: Sync response from POST /authorizations
|
|
2663
|
-
content:
|
|
2664
|
-
application/json:
|
|
2665
|
-
schema:
|
|
2666
|
-
$ref: '#/components/schemas/authorizationsPostResponse'
|
|
2667
|
-
authorizationsServerError:
|
|
2668
|
-
description: An error occurred processing the authorizations request
|
|
2669
|
-
content:
|
|
2670
|
-
application/json:
|
|
2671
|
-
schema:
|
|
2672
|
-
$ref: '#/components/schemas/errorAuthorizationsResponse'
|
|
2673
2426
|
parameters:
|
|
2674
2427
|
transferId:
|
|
2675
2428
|
name: transferId
|
|
@@ -327,10 +327,6 @@ export interface paths {
|
|
|
327
327
|
/** is used to request a transfer */
|
|
328
328
|
post: operations["SimpleTransfersPost"];
|
|
329
329
|
};
|
|
330
|
-
"/authorizations": {
|
|
331
|
-
/** The HTTP request `POST /authorizations` is used to request the Payer to enter the applicable credentials in the PISP system. */
|
|
332
|
-
post: operations["AuthorizationsPost"];
|
|
333
|
-
};
|
|
334
330
|
}
|
|
335
331
|
|
|
336
332
|
export interface components {
|
|
@@ -344,9 +340,6 @@ export interface components {
|
|
|
344
340
|
*/
|
|
345
341
|
TransactionInitiatorType: "CONSUMER" | "AGENT" | "BUSINESS" | "DEVICE";
|
|
346
342
|
/**
|
|
347
|
-
* This is a variant based on FSPIOP `PartyIdType` specification.
|
|
348
|
-
* Main difference being the CONSENT and THIRD_PARTY_LINK enums.
|
|
349
|
-
*
|
|
350
343
|
* Below are the allowed values for the enumeration.
|
|
351
344
|
* - MSISDN - An MSISDN (Mobile Station International Subscriber Directory
|
|
352
345
|
* Number, that is, the phone number) is used as reference to a participant.
|
|
@@ -382,8 +375,14 @@ export interface components {
|
|
|
382
375
|
* The ALIAS identifier can be in any format. It is also possible to use the
|
|
383
376
|
* PartySubIdOrType element for identifying an account under an Alias defined
|
|
384
377
|
* by the PartyIdentifier.
|
|
385
|
-
* - CONSENT -
|
|
386
|
-
*
|
|
378
|
+
* - CONSENT - A Consent represents an agreement between a PISP, a Customer and
|
|
379
|
+
* a DFSP which allows the PISP permission to perform actions on behalf of the
|
|
380
|
+
* customer. A Consent has an authoritative source: either the DFSP who issued
|
|
381
|
+
* the Consent, or an Auth Service which administers the Consent.
|
|
382
|
+
* - THIRD_PARTY_LINK - A Third Party Link represents an agreement between a PISP,
|
|
383
|
+
* a DFSP, and a specific Customer's account at the DFSP. The content of the link
|
|
384
|
+
* is created by the DFSP at the time when it gives permission to the PISP for
|
|
385
|
+
* specific access to a given account.
|
|
387
386
|
*/
|
|
388
387
|
PartyIdType:
|
|
389
388
|
| "MSISDN"
|
|
@@ -610,6 +609,8 @@ export interface components {
|
|
|
610
609
|
| "XDR"
|
|
611
610
|
| "XOF"
|
|
612
611
|
| "XPF"
|
|
612
|
+
| "XTS"
|
|
613
|
+
| "XXX"
|
|
613
614
|
| "YER"
|
|
614
615
|
| "ZAR"
|
|
615
616
|
| "ZMW"
|
|
@@ -1126,99 +1127,6 @@ export interface components {
|
|
|
1126
1127
|
errorSimpleTransfersResponse: components["schemas"]["errorResponse"] & {
|
|
1127
1128
|
[key: string]: unknown;
|
|
1128
1129
|
};
|
|
1129
|
-
/**
|
|
1130
|
-
* Below are the allowed values for the enumeration AuthenticationType.
|
|
1131
|
-
* - OTP - One-time password generated by the Payer FSP.
|
|
1132
|
-
* - QRCODE - QR code used as One Time Password.
|
|
1133
|
-
* - U2F - U2F is a new addition isolated to Thirdparty stream.
|
|
1134
|
-
*/
|
|
1135
|
-
"AuthenticationType-2": "OTP" | "QRCODE" | "U2F";
|
|
1136
|
-
/** The API data type Integer is a JSON String consisting of digits only. Negative numbers and leading zeroes are not allowed. The data type is always limited to a specific number of digits. */
|
|
1137
|
-
Integer: string;
|
|
1138
|
-
/** POST /authorizations request object. */
|
|
1139
|
-
AuthorizationsPostRequest: {
|
|
1140
|
-
authenticationType: components["schemas"]["AuthenticationType-2"];
|
|
1141
|
-
retriesLeft: components["schemas"]["Integer"];
|
|
1142
|
-
amount: components["schemas"]["Money"];
|
|
1143
|
-
transactionId: components["schemas"]["CorrelationId"];
|
|
1144
|
-
transactionRequestId: components["schemas"]["CorrelationId"];
|
|
1145
|
-
quote: components["schemas"]["QuotesIDPutResponse"];
|
|
1146
|
-
};
|
|
1147
|
-
/** POST /authorizations Request object */
|
|
1148
|
-
authorizationsPostRequest: {
|
|
1149
|
-
fspId: components["schemas"]["FspId"];
|
|
1150
|
-
authorizationsPostRequest: components["schemas"]["AuthorizationsPostRequest"];
|
|
1151
|
-
};
|
|
1152
|
-
/** The API data type OtpValue is a JSON String of 3 to 10 characters, consisting of digits only. Negative numbers are not allowed. One or more leading zeros are allowed. */
|
|
1153
|
-
OtpValue: string;
|
|
1154
|
-
/** QR code used as a One Time Password. */
|
|
1155
|
-
QRCODE: string;
|
|
1156
|
-
/** U2F challenge-response, where payer FSP verifies if the response provided by end-user device matches the previously registered key. */
|
|
1157
|
-
U2FPIN: string;
|
|
1158
|
-
/** U2F challenge-response, where payer FSP verifies if the response provided by end-user device matches the previously registered key. */
|
|
1159
|
-
U2FPinValue: {
|
|
1160
|
-
/** U2F challenge-response. */
|
|
1161
|
-
pinValue: components["schemas"]["U2FPIN"];
|
|
1162
|
-
/** Sequential counter used for cloning detection. Present only for U2F authentication. */
|
|
1163
|
-
counter: components["schemas"]["Integer"];
|
|
1164
|
-
};
|
|
1165
|
-
/**
|
|
1166
|
-
* An object sent in a `PUT /thirdpartyRequests/authorization/{ID}` request.
|
|
1167
|
-
* based mostly on: https://webauthn.guide/#authentication
|
|
1168
|
-
* AuthenticatorAssertionResponse
|
|
1169
|
-
*/
|
|
1170
|
-
FIDOPublicKeyCredentialAssertion: {
|
|
1171
|
-
/**
|
|
1172
|
-
* credential id: identifier of pair of keys, base64 encoded
|
|
1173
|
-
* https://w3c.github.io/webauthn/#ref-for-dom-credential-id
|
|
1174
|
-
*/
|
|
1175
|
-
id: string;
|
|
1176
|
-
/** raw credential id: identifier of pair of keys, base64 encoded. */
|
|
1177
|
-
rawId: string;
|
|
1178
|
-
/** AuthenticatorAssertionResponse */
|
|
1179
|
-
response: {
|
|
1180
|
-
/** Authenticator data object. */
|
|
1181
|
-
authenticatorData: string;
|
|
1182
|
-
/** JSON string with client data. */
|
|
1183
|
-
clientDataJSON: string;
|
|
1184
|
-
/** The signature generated by the private key associated with this credential. */
|
|
1185
|
-
signature: string;
|
|
1186
|
-
/**
|
|
1187
|
-
* This field is optionally provided by the authenticator, and
|
|
1188
|
-
* represents the user.id that was supplied during registration.
|
|
1189
|
-
*/
|
|
1190
|
-
userHandle?: string;
|
|
1191
|
-
};
|
|
1192
|
-
/** response type, we need only the type of public-key */
|
|
1193
|
-
type: "public-key";
|
|
1194
|
-
};
|
|
1195
|
-
/** Contains the authentication value. The format depends on the authentication type used in the AuthenticationInfo complex type. */
|
|
1196
|
-
AuthenticationValue: Partial<components["schemas"]["OtpValue"]> &
|
|
1197
|
-
Partial<components["schemas"]["QRCODE"]> &
|
|
1198
|
-
Partial<components["schemas"]["U2FPinValue"]> &
|
|
1199
|
-
Partial<components["schemas"]["FIDOPublicKeyCredentialAssertion"]>;
|
|
1200
|
-
/** Data model for the complex type AuthenticationInfo. */
|
|
1201
|
-
AuthenticationInfo: {
|
|
1202
|
-
authentication: components["schemas"]["AuthenticationType-2"];
|
|
1203
|
-
authenticationValue: components["schemas"]["AuthenticationValue"];
|
|
1204
|
-
};
|
|
1205
|
-
/**
|
|
1206
|
-
* Enum containing response information; if the customer entered the
|
|
1207
|
-
* authentication value, rejected the transaction, or requested a
|
|
1208
|
-
* resend of the authentication value.
|
|
1209
|
-
*/
|
|
1210
|
-
AuthorizationResponseType: "ENTERED" | "REJECTED" | "RESEND";
|
|
1211
|
-
/** POST /authorizations response object */
|
|
1212
|
-
authorizationsPostResponse: {
|
|
1213
|
-
authorizations: {
|
|
1214
|
-
authenticationInfo?: components["schemas"]["AuthenticationInfo"];
|
|
1215
|
-
responseType: components["schemas"]["AuthorizationResponseType"];
|
|
1216
|
-
};
|
|
1217
|
-
currentState: components["schemas"]["async2SyncCurrentState"];
|
|
1218
|
-
};
|
|
1219
|
-
errorAuthorizationsResponse: components["schemas"]["errorResponse"] & {
|
|
1220
|
-
[key: string]: unknown;
|
|
1221
|
-
};
|
|
1222
1130
|
};
|
|
1223
1131
|
responses: {
|
|
1224
1132
|
/** Transfer completed successfully */
|
|
@@ -1367,18 +1275,6 @@ export interface components {
|
|
|
1367
1275
|
"application/json": components["schemas"]["errorSimpleTransfersResponse"];
|
|
1368
1276
|
};
|
|
1369
1277
|
};
|
|
1370
|
-
/** Sync response from POST /authorizations */
|
|
1371
|
-
authorizationPostSuccess: {
|
|
1372
|
-
content: {
|
|
1373
|
-
"application/json": components["schemas"]["authorizationsPostResponse"];
|
|
1374
|
-
};
|
|
1375
|
-
};
|
|
1376
|
-
/** An error occurred processing the authorizations request */
|
|
1377
|
-
authorizationsServerError: {
|
|
1378
|
-
content: {
|
|
1379
|
-
"application/json": components["schemas"]["errorAuthorizationsResponse"];
|
|
1380
|
-
};
|
|
1381
|
-
};
|
|
1382
1278
|
};
|
|
1383
1279
|
parameters: {
|
|
1384
1280
|
/** Identifier of the transfer to continue as returned in the response to a `POST /transfers` request. */
|
|
@@ -1457,19 +1353,6 @@ export interface operations {
|
|
|
1457
1353
|
};
|
|
1458
1354
|
};
|
|
1459
1355
|
};
|
|
1460
|
-
/** The HTTP request `POST /authorizations` is used to request the Payer to enter the applicable credentials in the PISP system. */
|
|
1461
|
-
AuthorizationsPost: {
|
|
1462
|
-
responses: {
|
|
1463
|
-
200: components["responses"]["authorizationPostSuccess"];
|
|
1464
|
-
500: components["responses"]["authorizationsServerError"];
|
|
1465
|
-
};
|
|
1466
|
-
/** Perform authorization */
|
|
1467
|
-
requestBody: {
|
|
1468
|
-
content: {
|
|
1469
|
-
"application/json": components["schemas"]["authorizationsPostRequest"];
|
|
1470
|
-
};
|
|
1471
|
-
};
|
|
1472
|
-
};
|
|
1473
1356
|
}
|
|
1474
1357
|
|
|
1475
1358
|
export interface external {}
|
|
@@ -23,8 +23,7 @@ const {
|
|
|
23
23
|
OutboundBulkQuotesModel,
|
|
24
24
|
PartiesModel,
|
|
25
25
|
QuotesModel,
|
|
26
|
-
TransfersModel
|
|
27
|
-
AuthorizationsModel
|
|
26
|
+
TransfersModel
|
|
28
27
|
} = require('../lib/model');
|
|
29
28
|
|
|
30
29
|
|
|
@@ -97,9 +96,6 @@ const handleRequestQuotesInformationError = (method, err, ctx) =>
|
|
|
97
96
|
const handleRequestSimpleTransfersInformationError = (method, err, ctx) =>
|
|
98
97
|
handleError(method, err, ctx, 'requestSimpleTransfersInformationState');
|
|
99
98
|
|
|
100
|
-
const handleRequestAuthorizationsInformationError = (method, err, ctx) =>
|
|
101
|
-
handleError(method, err, ctx, 'requestAuthorizationsInformationState');
|
|
102
|
-
|
|
103
99
|
/**
|
|
104
100
|
* Handler for outbound transfer request initiation
|
|
105
101
|
*/
|
|
@@ -538,37 +534,6 @@ const postSimpleTransfers = async (ctx) => {
|
|
|
538
534
|
}
|
|
539
535
|
};
|
|
540
536
|
|
|
541
|
-
const postAuthorizations = async (ctx) => {
|
|
542
|
-
|
|
543
|
-
const authorization = { ...ctx.request.body.authorizationsPostRequest };
|
|
544
|
-
const fspId = ctx.request.body.fspId;
|
|
545
|
-
const args = { transactionRequestId: authorization.transactionRequestId, fspId, authorization };
|
|
546
|
-
|
|
547
|
-
try {
|
|
548
|
-
// prepare config
|
|
549
|
-
const modelConfig = {
|
|
550
|
-
...ctx.state.conf,
|
|
551
|
-
cache: ctx.state.cache,
|
|
552
|
-
logger: ctx.state.logger,
|
|
553
|
-
wso2Auth: ctx.state.wso2Auth,
|
|
554
|
-
};
|
|
555
|
-
|
|
556
|
-
const cacheKey = AuthorizationsModel.generateKey(args);
|
|
557
|
-
|
|
558
|
-
// use the authorizations model to execute asynchronous stages with the switch
|
|
559
|
-
const model = await AuthorizationsModel.create({}, cacheKey, modelConfig);
|
|
560
|
-
|
|
561
|
-
// run model's workflow
|
|
562
|
-
const response = await model.run(args);
|
|
563
|
-
|
|
564
|
-
// return the result
|
|
565
|
-
ctx.response.status = 200;
|
|
566
|
-
ctx.response.body = response;
|
|
567
|
-
} catch (err) {
|
|
568
|
-
return handleRequestAuthorizationsInformationError('postAuthorizations', err, ctx);
|
|
569
|
-
}
|
|
570
|
-
};
|
|
571
|
-
|
|
572
537
|
module.exports = {
|
|
573
538
|
'/': {
|
|
574
539
|
get: healthCheck
|
|
@@ -615,8 +580,5 @@ module.exports = {
|
|
|
615
580
|
},
|
|
616
581
|
'/simpleTransfers': {
|
|
617
582
|
post: postSimpleTransfers
|
|
618
|
-
}
|
|
619
|
-
'/authorizations': {
|
|
620
|
-
post: postAuthorizations
|
|
621
|
-
}
|
|
583
|
+
}
|
|
622
584
|
};
|