account-lookup-service 15.5.0-iso.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.circleci/config.yml +11 -0
- package/.ncurc.yaml +6 -0
- package/.nvmrc +1 -0
- package/.nycrc.yml +20 -0
- package/.versionrc +15 -0
- package/CHANGELOG.md +330 -0
- package/CODEOWNERS +38 -0
- package/Dockerfile +45 -0
- package/LICENSE.md +10 -0
- package/README.md +252 -0
- package/audit-ci.jsonc +32 -0
- package/audit-resolve.json +161 -0
- package/config/default.json +109 -0
- package/config/knexfile.js +21 -0
- package/docker/account-lookup-service/default.json +106 -0
- package/docker/account-lookup-service/make-default-json.sh +5 -0
- package/docker/account-lookup-service/override.json +15 -0
- package/docker/central-ledger/default.json +458 -0
- package/docker/config-modifier/account-lookup-service.js +31 -0
- package/docker/kafka/consumer.properties +26 -0
- package/docker/kafka/producer.properties +45 -0
- package/docker/kafka/server.properties +143 -0
- package/docker/kafka/tools-log4j.properties +21 -0
- package/docker/mock-proxy/Dockerfile +15 -0
- package/docker/mock-proxy/package-lock.json +4986 -0
- package/docker/mock-proxy/package.json +24 -0
- package/docker/mock-proxy/src/config.ts +14 -0
- package/docker/mock-proxy/src/server.ts +94 -0
- package/docker/mock-proxy/src/utils.ts +29 -0
- package/docker/mock-proxy/tsconfig.json +24 -0
- package/docker/sql-init/01_permissions.sql +2 -0
- package/docker/sql-init-central-ledger/01_permissions.sql +2 -0
- package/docker/wait-for/wait-for-account-lookup-service.sh +10 -0
- package/docker/wait-for/wait-for-central-ledger.sh +11 -0
- package/docker/wait-for/wait-for-kafka.sh +7 -0
- package/docker/wait-for/wait-for-ml-api-adapter.sh +9 -0
- package/docker/wait-for/wait-for-mockserver.sh +20 -0
- package/docker/wait-for/wait-for-mysql-als.sh +14 -0
- package/docker/wait-for/wait-for-mysql-central-ledger.sh +11 -0
- package/docker/wait-for/wait-for-mysql.sh +11 -0
- package/docker/wait-for/wait-for-objstore.sh +12 -0
- package/docker/wait-for/wait-for.env +18 -0
- package/docker/wait-for/wait-for.sh +81 -0
- package/docker-compose.integration.yml +29 -0
- package/docker-compose.yml +243 -0
- package/jest-int.config.js +8 -0
- package/jest.config.js +16 -0
- package/jsdoc.json +38 -0
- package/migrations/01_currency.js +42 -0
- package/migrations/02_endpointType.js +43 -0
- package/migrations/03_endpointType-indexes.js +37 -0
- package/migrations/04_partyIdType.js +43 -0
- package/migrations/05_partyIdType-indexes.js +38 -0
- package/migrations/08_oracleEndpoint.js +51 -0
- package/migrations/09_oracleEndpoint-indexes.js +41 -0
- package/migrations/10_oracleEndpoint-remove-constraints.js +38 -0
- package/package.json +180 -0
- package/scripts/_wait4_all.js +143 -0
- package/scripts/test-functional.sh +76 -0
- package/secrets/jwsSigningKey.key +27 -0
- package/seeds/currency.js +765 -0
- package/seeds/endpointType.js +65 -0
- package/seeds/partyIdType.js +79 -0
- package/src/api/endpointcache.js +67 -0
- package/src/api/health.js +66 -0
- package/src/api/index.js +85 -0
- package/src/api/oracles/{ID}.js +100 -0
- package/src/api/oracles.js +96 -0
- package/src/api/participants/{ID}/error.js +44 -0
- package/src/api/participants/{ID}.js +44 -0
- package/src/api/participants/{Type}/{ID}/error.js +74 -0
- package/src/api/participants/{Type}/{ID}/{SubId}/error.js +68 -0
- package/src/api/participants/{Type}/{ID}/{SubId}.js +113 -0
- package/src/api/participants/{Type}/{ID}.js +133 -0
- package/src/api/participants.js +63 -0
- package/src/api/parties/{Type}/{ID}/error.js +66 -0
- package/src/api/parties/{Type}/{ID}/{SubId}/error.js +56 -0
- package/src/api/parties/{Type}/{ID}/{SubId}.js +77 -0
- package/src/api/parties/{Type}/{ID}.js +98 -0
- package/src/api/routes.js +294 -0
- package/src/constants.js +16 -0
- package/src/domain/oracle/index.js +33 -0
- package/src/domain/oracle/oracle.js +234 -0
- package/src/domain/participants/index.js +35 -0
- package/src/domain/participants/participants.js +560 -0
- package/src/domain/parties/getPartiesByTypeAndID.js +239 -0
- package/src/domain/parties/index.js +32 -0
- package/src/domain/parties/parties.js +215 -0
- package/src/domain/parties/utils.js +84 -0
- package/src/domain/timeout/dto.js +48 -0
- package/src/domain/timeout/index.js +104 -0
- package/src/handlers/TimeoutHandler.js +94 -0
- package/src/handlers/index.js +70 -0
- package/src/handlers/monitoring/index.js +51 -0
- package/src/handlers/monitoring/plugins/health.js +61 -0
- package/src/handlers/monitoring/plugins/metrics.js +48 -0
- package/src/handlers/register.js +102 -0
- package/src/index.js +66 -0
- package/src/interface/admin-swagger.yaml +804 -0
- package/src/interface/admin_swagger.json +959 -0
- package/src/interface/api-swagger-iso20022-parties.yaml +1734 -0
- package/src/interface/api-swagger.yaml +1733 -0
- package/src/interface/api_swagger.json +3046 -0
- package/src/interface/fspiop-rest-v2.0-ISO20022_parties.yaml +2256 -0
- package/src/interface/thirdparty/admin-swagger.yaml +808 -0
- package/src/interface/thirdparty/admin_swagger.json +961 -0
- package/src/interface/thirdparty/api-swagger.yaml +1739 -0
- package/src/interface/thirdparty/api_swagger.json +3142 -0
- package/src/lib/argv.js +39 -0
- package/src/lib/cache.js +126 -0
- package/src/lib/config.js +183 -0
- package/src/lib/db.js +26 -0
- package/src/lib/headers.js +53 -0
- package/src/lib/healthCheck/subServiceHealth.js +84 -0
- package/src/lib/index.js +11 -0
- package/src/lib/migrator.js +17 -0
- package/src/lib/requestLogger.js +54 -0
- package/src/lib/util.js +66 -0
- package/src/metrics/handler.js +33 -0
- package/src/metrics/plugin.js +52 -0
- package/src/metrics/routes.js +43 -0
- package/src/models/currency/currency.js +48 -0
- package/src/models/currency/index.js +32 -0
- package/src/models/endpointType/endpointType.js +48 -0
- package/src/models/endpointType/index.js +32 -0
- package/src/models/misc/migrationLock.js +49 -0
- package/src/models/oracle/facade.js +341 -0
- package/src/models/oracle/index.js +41 -0
- package/src/models/oracle/oracleEndpoint.js +192 -0
- package/src/models/oracle/oracleEndpointCached.js +108 -0
- package/src/models/participantEndpoint/facade.js +238 -0
- package/src/models/partyIdType/index.js +32 -0
- package/src/models/partyIdType/partyIdType.js +41 -0
- package/src/plugins.js +139 -0
- package/src/server.js +199 -0
- package/test/fixtures/index.js +131 -0
- package/test/fixtures/iso.js +110 -0
- package/test/integration/.env +8 -0
- package/test/integration/api/parties.test.js +137 -0
- package/test/integration/constants.js +20 -0
- package/test/integration/domain/oracle/index.test.js +324 -0
- package/test/integration/domain/timeout/index.test.js +75 -0
- package/test/integration/env.sh +15 -0
- package/test/integration/example.test.js +12 -0
- package/test/integration/models/currency/currency.test.js +68 -0
- package/test/integration/plugins.test.js +62 -0
- package/test/integration/prepareTestParticipants.js +30 -0
- package/test/integration/setup.js +5 -0
- package/test/integration-config.json +81 -0
- package/test/integration-runner.sh +108 -0
- package/test/unit/api/health.test.js +142 -0
- package/test/unit/api/oracles/{ID}.test.js +264 -0
- package/test/unit/api/oracles.test.js +173 -0
- package/test/unit/api/participants/participants.test.js +117 -0
- package/test/unit/api/participants/{Type}/{ID}/error.test.js +155 -0
- package/test/unit/api/participants/{Type}/{ID}/{SubId}/error.test.js +131 -0
- package/test/unit/api/participants/{Type}/{ID}/{SubId}.test.js +377 -0
- package/test/unit/api/participants/{Type}/{ID}.test.js +383 -0
- package/test/unit/api/participants.test.js +108 -0
- package/test/unit/api/parties/endpointcache.test.js +83 -0
- package/test/unit/api/parties/parties.test.js +102 -0
- package/test/unit/api/parties/{Type}/{ID}/error.test.js +145 -0
- package/test/unit/api/parties/{Type}/{ID}/{SubId}/error.test.js +141 -0
- package/test/unit/api/parties/{Type}/{ID}/{SubId}.test.js +241 -0
- package/test/unit/api/parties/{Type}/{ID}.test.js +240 -0
- package/test/unit/domain/oracle/oracle.test.js +505 -0
- package/test/unit/domain/participants/participants.test.js +1724 -0
- package/test/unit/domain/parties/parties.test.js +940 -0
- package/test/unit/domain/timeout/dto.test.js +28 -0
- package/test/unit/domain/timeout/index.test.js +81 -0
- package/test/unit/handlers/TimeoutHandler.test.js +125 -0
- package/test/unit/handlers/index.test.js +56 -0
- package/test/unit/handlers/register.test.js +90 -0
- package/test/unit/index.test.js +139 -0
- package/test/unit/iso20022/partiesValidation.test.js +129 -0
- package/test/unit/lib/TransformFacades.test.js +18 -0
- package/test/unit/lib/argv.test.js +40 -0
- package/test/unit/lib/cache.test.js +172 -0
- package/test/unit/lib/config.test.js +108 -0
- package/test/unit/lib/healthCheck/subServiceHealth.test.js +89 -0
- package/test/unit/lib/migrator.test.js +52 -0
- package/test/unit/lib/requestLogger.test.js +115 -0
- package/test/unit/lib/util.test.js +68 -0
- package/test/unit/mocks.js +66 -0
- package/test/unit/models/currency/currency.test.js +91 -0
- package/test/unit/models/endpointType/endpointType.test.js +69 -0
- package/test/unit/models/misc/migrationLock.test.js +96 -0
- package/test/unit/models/oracle/facade.test.js +546 -0
- package/test/unit/models/oracle/oracleEndpoint.test.js +409 -0
- package/test/unit/models/oracle/oracleEndpointCached.test.js +153 -0
- package/test/unit/models/participantEndpoint/facade.test.js +295 -0
- package/test/unit/models/partyIdType/partyIdType.test.js +88 -0
- package/test/unit/plugins.test.js +89 -0
- package/test/unit/setup.js +7 -0
- package/test/util/apiClients/AlsApiClient.js +44 -0
- package/test/util/apiClients/BasicApiClient.js +34 -0
- package/test/util/apiClients/ProxyApiClient.js +25 -0
- package/test/util/apiClients/index.js +7 -0
- package/test/util/helper.js +332 -0
- package/test/util/index.js +11 -0
- package/test/util/mockgen.js +43 -0
- package/test/util/onboarding.js +132 -0
- package/test/util/scripts/addAlsDb.sh +33 -0
- package/test/util/scripts/configureMockServer.sh +35 -0
- package/test/util/scripts/env.sh +19 -0
- package/test/util/scripts/populateTestData.sh +62 -0
- package/test/util/scripts/startMockCentralServer.sh +45 -0
- package/test/util/scripts/startMockOracleServer.sh +45 -0
- package/test/util/testConfig.js +44 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
/*****
|
2
|
+
License
|
3
|
+
--------------
|
4
|
+
Copyright © 2017 Bill & Melinda Gates Foundation
|
5
|
+
The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
8
|
+
Contributors
|
9
|
+
--------------
|
10
|
+
This is the official list of the Mojaloop project contributors for this file.
|
11
|
+
Names of the original copyright holders (individuals or organizations)
|
12
|
+
should be listed with a '*' in the first column. People who have
|
13
|
+
contributed from an organization can be listed under the organization
|
14
|
+
that actually holds the copyright for their contributions (see the
|
15
|
+
Gates Foundation organization for an example). Those individuals should have
|
16
|
+
their names indented and be marked with a '-'. Email address can be added
|
17
|
+
optionally within square brackets <email>.
|
18
|
+
* Gates Foundation
|
19
|
+
|
20
|
+
* Rajiv Mothilal <rajiv.mothilal@modusbox.com>
|
21
|
+
|
22
|
+
--------------
|
23
|
+
******/
|
24
|
+
'use strict'
|
25
|
+
|
26
|
+
const { FspEndpointTypes } = require('@mojaloop/central-services-shared').Enum.EndPoints
|
27
|
+
|
28
|
+
const endpointTypes = [
|
29
|
+
{
|
30
|
+
type: 'URL',
|
31
|
+
description: 'REST URLs'
|
32
|
+
},
|
33
|
+
{
|
34
|
+
type: FspEndpointTypes.FSPIOP_CALLBACK_URL_PARTICIPANT_PUT,
|
35
|
+
description: 'Participant callback URL to which put participant information can be sent'
|
36
|
+
},
|
37
|
+
{
|
38
|
+
type: FspEndpointTypes.FSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR,
|
39
|
+
description: 'Participant callback URL to which put participant error information can be sent'
|
40
|
+
},
|
41
|
+
{
|
42
|
+
type: FspEndpointTypes.FSPIOP_CALLBACK_URL_PARTIES_GET,
|
43
|
+
description: 'Parties callback URL to which get parties information can be requested'
|
44
|
+
},
|
45
|
+
{
|
46
|
+
type: FspEndpointTypes.FSPIOP_CALLBACK_URL_PARTIES_PUT,
|
47
|
+
description: 'Parties callback URL to which put parties information can be sent'
|
48
|
+
},
|
49
|
+
{
|
50
|
+
type: FspEndpointTypes.FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR,
|
51
|
+
description: 'Parties callback URL to which put participant error information can be sent'
|
52
|
+
}
|
53
|
+
]
|
54
|
+
|
55
|
+
exports.seed = async function (knex) {
|
56
|
+
try {
|
57
|
+
return await knex('endpointType').insert(endpointTypes)
|
58
|
+
} catch (err) {
|
59
|
+
if (err.code === 'ER_DUP_ENTRY') return -1001
|
60
|
+
else {
|
61
|
+
console.log(`Uploading seeds for endpointType has failed with the following error: ${err}`)
|
62
|
+
return -1000
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
/*****
|
2
|
+
License
|
3
|
+
--------------
|
4
|
+
Copyright © 2017 Bill & Melinda Gates Foundation
|
5
|
+
The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
8
|
+
Contributors
|
9
|
+
--------------
|
10
|
+
This is the official list of the Mojaloop project contributors for this file.
|
11
|
+
Names of the original copyright holders (individuals or organizations)
|
12
|
+
should be listed with a '*' in the first column. People who have
|
13
|
+
contributed from an organization can be listed under the organization
|
14
|
+
that actually holds the copyright for their contributions (see the
|
15
|
+
Gates Foundation organization for an example). Those individuals should have
|
16
|
+
their names indented and be marked with a '-'. Email address can be added
|
17
|
+
optionally within square brackets <email>.
|
18
|
+
* Gates Foundation
|
19
|
+
|
20
|
+
* Rajiv Mothilal <rajiv.mothilal@modusbox.com>
|
21
|
+
|
22
|
+
--------------
|
23
|
+
******/
|
24
|
+
'use strict'
|
25
|
+
|
26
|
+
const partyIdTypes = [
|
27
|
+
{
|
28
|
+
name: 'MSISDN',
|
29
|
+
description: 'A MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the ITU-T E.164 standard. Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.'
|
30
|
+
},
|
31
|
+
{
|
32
|
+
name: 'EMAIL',
|
33
|
+
description: 'An email is used as reference to a participant. The format of the email should be according to the informational RFC 3696.'
|
34
|
+
},
|
35
|
+
{
|
36
|
+
name: 'PERSONAL_ID',
|
37
|
+
description: 'A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.'
|
38
|
+
},
|
39
|
+
{
|
40
|
+
name: 'BUSINESS',
|
41
|
+
description: 'A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.'
|
42
|
+
},
|
43
|
+
{
|
44
|
+
name: 'DEVICE',
|
45
|
+
description: 'A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.'
|
46
|
+
},
|
47
|
+
{
|
48
|
+
name: 'ACCOUNT_ID',
|
49
|
+
description: 'A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.'
|
50
|
+
},
|
51
|
+
{
|
52
|
+
name: 'IBAN',
|
53
|
+
description: 'A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.'
|
54
|
+
},
|
55
|
+
{
|
56
|
+
name: 'ALIAS',
|
57
|
+
description: 'An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier.'
|
58
|
+
},
|
59
|
+
{
|
60
|
+
name: 'CONSENT',
|
61
|
+
description: 'TBD'
|
62
|
+
},
|
63
|
+
{
|
64
|
+
name: 'THIRD_PARTY_LINK',
|
65
|
+
description: 'TBD'
|
66
|
+
}
|
67
|
+
]
|
68
|
+
|
69
|
+
exports.seed = async function (knex) {
|
70
|
+
try {
|
71
|
+
return await knex('partyIdType').insert(partyIdTypes)
|
72
|
+
} catch (err) {
|
73
|
+
if (err.code === 'ER_DUP_ENTRY') return -1001
|
74
|
+
else {
|
75
|
+
console.log(`Uploading seeds for partyIdType has failed with the following error: ${err}`)
|
76
|
+
return -1000
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
@@ -0,0 +1,67 @@
|
|
1
|
+
/*****
|
2
|
+
License
|
3
|
+
--------------
|
4
|
+
Copyright © 2017 Bill & Melinda Gates Foundation
|
5
|
+
The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
8
|
+
Contributors
|
9
|
+
--------------
|
10
|
+
This is the official list of the Mojaloop project contributors for this file.
|
11
|
+
Names of the original copyright holders (individuals or organizations)
|
12
|
+
should be listed with a '*' in the first column. People who have
|
13
|
+
contributed from an organization can be listed under the organization
|
14
|
+
that actually holds the copyright for their contributions (see the
|
15
|
+
Gates Foundation organization for an example). Those individuals should have
|
16
|
+
their names indented and be marked with a '-'. Email address can be added
|
17
|
+
optionally within square brackets <email>.
|
18
|
+
* Gates Foundation
|
19
|
+
|
20
|
+
* Juan Correa <juan.correa@modusbox.com>
|
21
|
+
|
22
|
+
--------------
|
23
|
+
******/
|
24
|
+
|
25
|
+
'use strict'
|
26
|
+
|
27
|
+
const ParticipantEndpointCache = require('@mojaloop/central-services-shared').Util.Endpoints
|
28
|
+
const Enum = require('@mojaloop/central-services-shared').Enum
|
29
|
+
const EventSdk = require('@mojaloop/event-sdk')
|
30
|
+
const Metrics = require('@mojaloop/central-services-metrics')
|
31
|
+
const Config = require('../lib/config.js')
|
32
|
+
const LibUtil = require('../lib/util.js')
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Operations on /endpointcache
|
36
|
+
*/
|
37
|
+
module.exports = {
|
38
|
+
/**
|
39
|
+
* summary: DELETE Endpoint Cache
|
40
|
+
* description: The HTTP request DELETE /endpointcache is used to reset the endpoint cache by performing an stopCache and initializeCache the Admin API.
|
41
|
+
* parameters:
|
42
|
+
* produces: application/json
|
43
|
+
* responses: 202, 400, 401, 403, 404, 405, 406, 501, 503
|
44
|
+
*/
|
45
|
+
delete: async (context, request, h) => {
|
46
|
+
const histTimerEnd = Metrics.getHistogram(
|
47
|
+
'ing_ResetParticipantEndpointCache',
|
48
|
+
'Ingress: Reset endpoint cache',
|
49
|
+
['success']
|
50
|
+
).startTimer()
|
51
|
+
const span = request.span
|
52
|
+
const spanTags = LibUtil.getSpanTags(request, Enum.Events.Event.Type.ENDPOINTCACHE, Enum.Events.Event.Action.DELETE)
|
53
|
+
span.setTags(spanTags)
|
54
|
+
await span.audit({
|
55
|
+
headers: request.headers
|
56
|
+
}, EventSdk.AuditEventAction.start)
|
57
|
+
try {
|
58
|
+
await ParticipantEndpointCache.stopCache()
|
59
|
+
await ParticipantEndpointCache.initializeCache(Config.CENTRAL_SHARED_ENDPOINT_CACHE_CONFIG, LibUtil.hubNameConfig)
|
60
|
+
histTimerEnd({ success: true })
|
61
|
+
} catch (err) {
|
62
|
+
histTimerEnd({ success: false })
|
63
|
+
throw err
|
64
|
+
}
|
65
|
+
return h.response().code(202)
|
66
|
+
}
|
67
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
/*****
|
2
|
+
License
|
3
|
+
--------------
|
4
|
+
Copyright © 2017 Bill & Melinda Gates Foundation
|
5
|
+
The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
8
|
+
Contributors
|
9
|
+
--------------
|
10
|
+
This is the official list of the Mojaloop project contributors for this file.
|
11
|
+
Names of the original copyright holders (individuals or organizations)
|
12
|
+
should be listed with a '*' in the first column. People who have
|
13
|
+
contributed from an organization can be listed under the organization
|
14
|
+
that actually holds the copyright for their contributions (see the
|
15
|
+
Gates Foundation organization for an example). Those individuals should have
|
16
|
+
their names indented and be marked with a '-'. Email address can be added
|
17
|
+
optionally within square brackets <email>.
|
18
|
+
* Gates Foundation
|
19
|
+
|
20
|
+
* Rajiv Mothilal <rajiv.mothilal@modusbox.com>
|
21
|
+
* Steven Oderayi <steven.oderayi@mousbox.com>
|
22
|
+
* Shashikant Hirugade <shashikant.hirugade@mousbox.com>
|
23
|
+
|
24
|
+
--------------
|
25
|
+
******/
|
26
|
+
|
27
|
+
'use strict'
|
28
|
+
|
29
|
+
const HealthCheck = require('@mojaloop/central-services-shared').HealthCheck.HealthCheck
|
30
|
+
const { getSubServiceHealthDatastore, getProxyCacheHealth } = require('../lib/healthCheck/subServiceHealth')
|
31
|
+
const packageJson = require('../../package.json')
|
32
|
+
const Config = require('../lib/config')
|
33
|
+
|
34
|
+
const getSubServices = (appConfig, isAdmin) => {
|
35
|
+
if (isAdmin) {
|
36
|
+
return [getSubServiceHealthDatastore]
|
37
|
+
}
|
38
|
+
|
39
|
+
const subServices = [getSubServiceHealthDatastore]
|
40
|
+
if (appConfig.PROXY_CACHE_CONFIG.enabled) {
|
41
|
+
subServices.push(getProxyCacheHealth)
|
42
|
+
}
|
43
|
+
return subServices
|
44
|
+
}
|
45
|
+
|
46
|
+
const healthCheck = new HealthCheck(packageJson, [])
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Operations on /health
|
50
|
+
*/
|
51
|
+
module.exports = {
|
52
|
+
/**
|
53
|
+
* summary: Get Oracles
|
54
|
+
* description: The HTTP request GET /health is used to return the current status of the API .
|
55
|
+
* parameters:
|
56
|
+
* produces: application/json
|
57
|
+
* responses: 200, 400, 401, 403, 404, 405, 406, 501, 503
|
58
|
+
*/
|
59
|
+
get: async (context, request, h) => {
|
60
|
+
const { isAdmin, proxyCache } = request.server.app
|
61
|
+
healthCheck.serviceChecks = getSubServices(Config, isAdmin)
|
62
|
+
const health = await healthCheck.getHealth(proxyCache)
|
63
|
+
const statusCode = health.status !== 'OK' ? 503 : 200
|
64
|
+
return h.response(health).code(statusCode)
|
65
|
+
}
|
66
|
+
}
|
package/src/api/index.js
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
/*****
|
2
|
+
License
|
3
|
+
--------------
|
4
|
+
Copyright © 2017 Bill & Melinda Gates Foundation
|
5
|
+
The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
8
|
+
Contributors
|
9
|
+
--------------
|
10
|
+
This is the official list of the Mojaloop project contributors for this file.
|
11
|
+
Names of the original copyright holders (individuals or organizations)
|
12
|
+
should be listed with a '*' in the first column. People who have
|
13
|
+
contributed from an organization can be listed under the organization
|
14
|
+
that actually holds the copyright for their contributions (see the
|
15
|
+
Gates Foundation organization for an example). Those individuals should have
|
16
|
+
their names indented and be marked with a '-'. Email address can be added
|
17
|
+
optionally within square brackets <email>.
|
18
|
+
* Gates Foundation
|
19
|
+
|
20
|
+
* ModusBox
|
21
|
+
- Rajiv Mothilal <rajiv.mothilal@modusbox.com>
|
22
|
+
|
23
|
+
--------------
|
24
|
+
******/
|
25
|
+
|
26
|
+
'use strict'
|
27
|
+
|
28
|
+
const OpenapiBackend = require('@mojaloop/central-services-shared').Util.OpenapiBackend
|
29
|
+
|
30
|
+
const participants = require('./participants')
|
31
|
+
const participantsId = require('./participants/{ID}')
|
32
|
+
const participantsErrorById = require('./participants/{ID}/error')
|
33
|
+
const participantsTypeId = require('./participants/{Type}/{ID}')
|
34
|
+
const participantsErrorTypeId = require('./participants/{Type}/{ID}/error')
|
35
|
+
const participantsTypeIdSubId = require('./participants/{Type}/{ID}/{SubId}')
|
36
|
+
const participantsErrorTypeIdSubId = require('./participants/{Type}/{ID}/{SubId}/error')
|
37
|
+
|
38
|
+
const partiesTypeId = require('./parties/{Type}/{ID}')
|
39
|
+
const partiesTypeIdSubId = require('./parties/{Type}/{ID}/{SubId}')
|
40
|
+
const partiesErrorTypeId = require('./parties/{Type}/{ID}/error')
|
41
|
+
const partiesErrorTypeIdSubId = require('./parties/{Type}/{ID}/{SubId}/error')
|
42
|
+
|
43
|
+
const oracles = require('./oracles')
|
44
|
+
const oraclesId = require('./oracles/{ID}')
|
45
|
+
|
46
|
+
const endpointCache = require('./endpointcache')
|
47
|
+
const health = require('./health')
|
48
|
+
|
49
|
+
module.exports.ApiHandlers = {
|
50
|
+
HealthGet: health.get,
|
51
|
+
ParticipantsErrorByIDPut: participantsErrorById.put,
|
52
|
+
ParticipantsByIDPut: participantsId.put,
|
53
|
+
ParticipantsErrorByTypeAndIDPut: participantsErrorTypeId.put,
|
54
|
+
ParticipantsErrorBySubIdTypeAndIDPut: participantsErrorTypeIdSubId.put,
|
55
|
+
ParticipantsSubIdByTypeAndIDGet: participantsTypeIdSubId.get,
|
56
|
+
ParticipantsSubIdByTypeAndIDPut: participantsTypeIdSubId.put,
|
57
|
+
ParticipantsSubIdByTypeAndIDPost: participantsTypeIdSubId.post,
|
58
|
+
ParticipantsSubIdByTypeAndIDDelete: participantsTypeIdSubId.delete,
|
59
|
+
ParticipantsByTypeAndIDGet: participantsTypeId.get,
|
60
|
+
ParticipantsByTypeAndIDPut: participantsTypeId.put,
|
61
|
+
ParticipantsByIDAndTypePost: participantsTypeId.post,
|
62
|
+
ParticipantsByTypeAndIDDelete: participantsTypeId.delete,
|
63
|
+
ParticipantsPost: participants.post,
|
64
|
+
PartiesByTypeAndIDGet: partiesTypeId.get,
|
65
|
+
PartiesByTypeAndIDPut: partiesTypeId.put,
|
66
|
+
PartiesErrorByTypeAndIDPut: partiesErrorTypeId.put,
|
67
|
+
PartiesBySubIdTypeAndIDGet: partiesTypeIdSubId.get,
|
68
|
+
PartiesSubIdByTypeAndIDPut: partiesTypeIdSubId.put,
|
69
|
+
PartiesErrorBySubIdTypeAndIDPut: partiesErrorTypeIdSubId.put,
|
70
|
+
EndpointCacheDelete: endpointCache.delete,
|
71
|
+
validationFail: OpenapiBackend.validationFail,
|
72
|
+
notFound: OpenapiBackend.notFound,
|
73
|
+
methodNotAllowed: OpenapiBackend.methodNotAllowed
|
74
|
+
}
|
75
|
+
|
76
|
+
module.exports.AdminHandlers = {
|
77
|
+
HealthGet: health.get,
|
78
|
+
OraclesGet: oracles.get,
|
79
|
+
OraclesPost: oracles.post,
|
80
|
+
OraclesByIdPut: oraclesId.put,
|
81
|
+
OraclesByIdDelete: oraclesId.delete,
|
82
|
+
validationFail: OpenapiBackend.validationFail,
|
83
|
+
notFound: OpenapiBackend.notFound,
|
84
|
+
methodNotAllowed: OpenapiBackend.methodNotAllowed
|
85
|
+
}
|
@@ -0,0 +1,100 @@
|
|
1
|
+
/*****
|
2
|
+
License
|
3
|
+
--------------
|
4
|
+
Copyright © 2017 Bill & Melinda Gates Foundation
|
5
|
+
The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
8
|
+
Contributors
|
9
|
+
--------------
|
10
|
+
This is the official list of the Mojaloop project contributors for this file.
|
11
|
+
Names of the original copyright holders (individuals or organizations)
|
12
|
+
should be listed with a '*' in the first column. People who have
|
13
|
+
contributed from an organization can be listed under the organization
|
14
|
+
that actually holds the copyright for their contributions (see the
|
15
|
+
Gates Foundation organization for an example). Those individuals should have
|
16
|
+
their names indented and be marked with a '-'. Email address can be added
|
17
|
+
optionally within square brackets <email>.
|
18
|
+
* Gates Foundation
|
19
|
+
|
20
|
+
* Rajiv Mothilal <rajiv.mothilal@modusbox.com>
|
21
|
+
|
22
|
+
--------------
|
23
|
+
******/
|
24
|
+
|
25
|
+
'use strict'
|
26
|
+
|
27
|
+
const ErrorHandler = require('@mojaloop/central-services-error-handling')
|
28
|
+
const Enum = require('@mojaloop/central-services-shared').Enum
|
29
|
+
const EventSdk = require('@mojaloop/event-sdk')
|
30
|
+
const Logger = require('@mojaloop/central-services-logger')
|
31
|
+
const Metrics = require('@mojaloop/central-services-metrics')
|
32
|
+
const LibUtil = require('../../lib/util')
|
33
|
+
const oracle = require('../../domain/oracle')
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Operations on /oracles/{ID}
|
37
|
+
*/
|
38
|
+
module.exports = {
|
39
|
+
/**
|
40
|
+
* summary: Update Oracle
|
41
|
+
* description: The HTTP request PUT /oracles/{ID} is used to update information in the server regarding the provided oracle. This request should be used for individual update of Oracle information.
|
42
|
+
* parameters: body, ID, content-length, content-type, date
|
43
|
+
* produces: application/json
|
44
|
+
* responses: 204, 400, 401, 403, 404, 405, 406, 501, 503
|
45
|
+
*/
|
46
|
+
put: async (context, request, h) => {
|
47
|
+
const histTimerEnd = Metrics.getHistogram(
|
48
|
+
'ing_updateOracle',
|
49
|
+
'Ingress: Update oracle details by Id',
|
50
|
+
['success']
|
51
|
+
).startTimer()
|
52
|
+
const span = request.span
|
53
|
+
const spanTags = LibUtil.getSpanTags(request, Enum.Events.Event.Type.ORACLE, Enum.Events.Event.Action.PUT)
|
54
|
+
span.setTags(spanTags)
|
55
|
+
await span.audit({
|
56
|
+
headers: request.headers,
|
57
|
+
payload: request.payload
|
58
|
+
}, EventSdk.AuditEventAction.start)
|
59
|
+
const metadata = `${request.method} ${request.path}`
|
60
|
+
try {
|
61
|
+
await oracle.updateOracle(request.params, request.payload)
|
62
|
+
histTimerEnd({ success: true })
|
63
|
+
return h.response().code(204)
|
64
|
+
} catch (err) {
|
65
|
+
Logger.isErrorEnabled && Logger.error(`ERROR - ${metadata}: ${err.stack}`)
|
66
|
+
histTimerEnd({ success: false })
|
67
|
+
throw ErrorHandler.Factory.reformatFSPIOPError(err)
|
68
|
+
}
|
69
|
+
},
|
70
|
+
/**
|
71
|
+
* summary: Delete Oracle
|
72
|
+
* description: The HTTP request DELETE /oracles/{ID} is used to delete information in the server regarding the provided oracle.
|
73
|
+
* parameters: accept, ID, content-type, date
|
74
|
+
* produces: application/json
|
75
|
+
* responses: 204, 400, 401, 403, 404, 405, 406, 501, 503
|
76
|
+
*/
|
77
|
+
delete: async (context, request, h) => {
|
78
|
+
const histTimerEnd = Metrics.getHistogram(
|
79
|
+
'ing_deleteOracle',
|
80
|
+
'Ingress: Delete oracle by Id',
|
81
|
+
['success']
|
82
|
+
).startTimer()
|
83
|
+
const span = request.span
|
84
|
+
const spanTags = LibUtil.getSpanTags(request, Enum.Events.Event.Type.ORACLE, Enum.Events.Event.Action.DELETE)
|
85
|
+
span.setTags(spanTags)
|
86
|
+
await span.audit({
|
87
|
+
headers: request.headers
|
88
|
+
}, EventSdk.AuditEventAction.start)
|
89
|
+
const metadata = `${request.method} ${request.path}`
|
90
|
+
try {
|
91
|
+
await oracle.deleteOracle(request.params)
|
92
|
+
histTimerEnd({ success: true })
|
93
|
+
return h.response().code(204)
|
94
|
+
} catch (err) {
|
95
|
+
Logger.isErrorEnabled && Logger.error(`ERROR - ${metadata}: ${err.stack}`)
|
96
|
+
histTimerEnd({ success: false })
|
97
|
+
throw ErrorHandler.Factory.reformatFSPIOPError(err)
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
/*****
|
2
|
+
License
|
3
|
+
--------------
|
4
|
+
Copyright © 2017 Bill & Melinda Gates Foundation
|
5
|
+
The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
8
|
+
Contributors
|
9
|
+
--------------
|
10
|
+
This is the official list of the Mojaloop project contributors for this file.
|
11
|
+
Names of the original copyright holders (individuals or organizations)
|
12
|
+
should be listed with a '*' in the first column. People who have
|
13
|
+
contributed from an organization can be listed under the organization
|
14
|
+
that actually holds the copyright for their contributions (see the
|
15
|
+
Gates Foundation organization for an example). Those individuals should have
|
16
|
+
their names indented and be marked with a '-'. Email address can be added
|
17
|
+
optionally within square brackets <email>.
|
18
|
+
* Gates Foundation
|
19
|
+
|
20
|
+
* Rajiv Mothilal <rajiv.mothilal@modusbox.com>
|
21
|
+
|
22
|
+
--------------
|
23
|
+
******/
|
24
|
+
|
25
|
+
'use strict'
|
26
|
+
|
27
|
+
const Enum = require('@mojaloop/central-services-shared').Enum
|
28
|
+
const EventSdk = require('@mojaloop/event-sdk')
|
29
|
+
const Metrics = require('@mojaloop/central-services-metrics')
|
30
|
+
const LibUtil = require('../lib/util')
|
31
|
+
const oracle = require('../domain/oracle')
|
32
|
+
|
33
|
+
/**
|
34
|
+
* Operations on /oracles
|
35
|
+
*/
|
36
|
+
module.exports = {
|
37
|
+
/**
|
38
|
+
* summary: Get Oracles
|
39
|
+
* description: The HTTP request GET /oracles is used to return the list of all oracle endpoints. There are optional fields for type and currency i.e. /admin/oracles?type=MSISDN&currency=USD which can be used to get more filtered results or a specific entry
|
40
|
+
* parameters: type, currency, accept, content-type, date
|
41
|
+
* produces: application/json
|
42
|
+
* responses: 200, 400, 401, 403, 404, 405, 406, 501, 503
|
43
|
+
*/
|
44
|
+
get: async (context, request, h) => {
|
45
|
+
const histTimerEnd = Metrics.getHistogram(
|
46
|
+
'ing_getOracle',
|
47
|
+
'Ingress: Get oracles',
|
48
|
+
['success']
|
49
|
+
).startTimer()
|
50
|
+
const span = request.span
|
51
|
+
const spanTags = LibUtil.getSpanTags(request, Enum.Events.Event.Type.ORACLE, Enum.Events.Event.Action.LOOKUP)
|
52
|
+
span.setTags(spanTags)
|
53
|
+
await span.audit({
|
54
|
+
headers: request.headers,
|
55
|
+
query: request.query
|
56
|
+
}, EventSdk.AuditEventAction.start)
|
57
|
+
let response
|
58
|
+
try {
|
59
|
+
response = await oracle.getOracle(request.query)
|
60
|
+
histTimerEnd({ success: true })
|
61
|
+
return h.response(response).code(200)
|
62
|
+
} catch (err) {
|
63
|
+
histTimerEnd({ success: false })
|
64
|
+
throw err
|
65
|
+
}
|
66
|
+
},
|
67
|
+
/**
|
68
|
+
* summary: Create Oracles
|
69
|
+
* description: The HTTP request POST /oracles is used to create information in the server regarding the provided oracles. This request should be used for creation of Oracle information.
|
70
|
+
* parameters: body, accept, content-length, content-type, date
|
71
|
+
* produces: application/json
|
72
|
+
* responses: 201, 400, 401, 403, 404, 405, 406, 501, 503
|
73
|
+
*/
|
74
|
+
post: async (context, request, h) => {
|
75
|
+
const histTimerEnd = Metrics.getHistogram(
|
76
|
+
'ing_createOracle',
|
77
|
+
'Ingress: Create oracles',
|
78
|
+
['success']
|
79
|
+
).startTimer()
|
80
|
+
const span = request.span
|
81
|
+
const spanTags = LibUtil.getSpanTags(request, Enum.Events.Event.Type.ORACLE, Enum.Events.Event.Action.POST)
|
82
|
+
span.setTags(spanTags)
|
83
|
+
await span.audit({
|
84
|
+
headers: request.headers,
|
85
|
+
payload: request.payload
|
86
|
+
}, EventSdk.AuditEventAction.start)
|
87
|
+
try {
|
88
|
+
await oracle.createOracle(request.payload)
|
89
|
+
histTimerEnd({ success: true })
|
90
|
+
return h.response().code(201)
|
91
|
+
} catch (err) {
|
92
|
+
histTimerEnd({ success: false })
|
93
|
+
throw err
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
/*****
|
2
|
+
License
|
3
|
+
--------------
|
4
|
+
Copyright © 2017 Bill & Melinda Gates Foundation
|
5
|
+
The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
8
|
+
Contributors
|
9
|
+
--------------
|
10
|
+
This is the official list of the Mojaloop project contributors for this file.
|
11
|
+
Names of the original copyright holders (individuals or organizations)
|
12
|
+
should be listed with a '*' in the first column. People who have
|
13
|
+
contributed from an organization can be listed under the organization
|
14
|
+
that actually holds the copyright for their contributions (see the
|
15
|
+
Gates Foundation organization for an example). Those individuals should have
|
16
|
+
their names indented and be marked with a '-'. Email address can be added
|
17
|
+
optionally within square brackets <email>.
|
18
|
+
* Gates Foundation
|
19
|
+
* Name Surname <name.surname@gatesfoundation.com>
|
20
|
+
|
21
|
+
* Rajiv Mothilal <rajiv.mothilal@modusbox.com>
|
22
|
+
|
23
|
+
--------------
|
24
|
+
******/
|
25
|
+
/* istanbul ignore file */
|
26
|
+
'use strict'
|
27
|
+
|
28
|
+
const ErrorHandler = require('@mojaloop/central-services-error-handling')
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Operations on /participants/{ID}/error
|
32
|
+
*/
|
33
|
+
module.exports = {
|
34
|
+
/**
|
35
|
+
* summary: ParticipantsByIDAndError
|
36
|
+
* description: If there is an error during FSP information creation in the server, the error callback PUT /participants/<ID>/error is used. The <ID> in the URI should contain the requestId that was used for the creation of the participant information.
|
37
|
+
* parameters: ID, body, Content-Length, Content-Type, Date, X-Forwarded-For, FSPIOP-Source, FSPIOP-Destination, FSPIOP-Encryption, FSPIOP-Signature, FSPIOP-URI, FSPIOP-HTTP-Method
|
38
|
+
* produces: application/json
|
39
|
+
* responses: 200, 400, 401, 403, 404, 405, 406, 501, 503
|
40
|
+
*/
|
41
|
+
put: function (context, request, h) {
|
42
|
+
return h.response(ErrorHandler.Factory.createFSPIOPError(ErrorHandler.Enums.FSPIOPErrorCodes.NOT_IMPLEMENTED))
|
43
|
+
}
|
44
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
/*****
|
2
|
+
License
|
3
|
+
--------------
|
4
|
+
Copyright © 2017 Bill & Melinda Gates Foundation
|
5
|
+
The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
8
|
+
Contributors
|
9
|
+
--------------
|
10
|
+
This is the official list of the Mojaloop project contributors for this file.
|
11
|
+
Names of the original copyright holders (individuals or organizations)
|
12
|
+
should be listed with a '*' in the first column. People who have
|
13
|
+
contributed from an organization can be listed under the organization
|
14
|
+
that actually holds the copyright for their contributions (see the
|
15
|
+
Gates Foundation organization for an example). Those individuals should have
|
16
|
+
their names indented and be marked with a '-'. Email address can be added
|
17
|
+
optionally within square brackets <email>.
|
18
|
+
* Gates Foundation
|
19
|
+
* Name Surname <name.surname@gatesfoundation.com>
|
20
|
+
|
21
|
+
* Rajiv Mothilal <rajiv.mothilal@modusbox.com>
|
22
|
+
|
23
|
+
--------------
|
24
|
+
******/
|
25
|
+
/* istanbul ignore file */
|
26
|
+
'use strict'
|
27
|
+
|
28
|
+
const ErrorHandler = require('@mojaloop/central-services-error-handling')
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Operations on /participants/{ID}
|
32
|
+
*/
|
33
|
+
module.exports = {
|
34
|
+
/**
|
35
|
+
* summary: ParticipantsByID
|
36
|
+
* description: The callback PUT /participants/<ID> is used to inform the client of the result of the creation of the provided list of identities.
|
37
|
+
* parameters: ID, body, Content-Length, Content-Type, Date, X-Forwarded-For, FSPIOP-Source, FSPIOP-Destination, FSPIOP-Encryption, FSPIOP-Signature, FSPIOP-URI, FSPIOP-HTTP-Method
|
38
|
+
* produces: application/json
|
39
|
+
* responses: 200, 400, 401, 403, 404, 405, 406, 501, 503
|
40
|
+
*/
|
41
|
+
put: function (context, request, h) {
|
42
|
+
return h.response(ErrorHandler.Factory.createFSPIOPError(ErrorHandler.Enums.FSPIOPErrorCodes.NOT_IMPLEMENTED))
|
43
|
+
}
|
44
|
+
}
|