Merge remote-tracking branch 'upstream/master' into fix_typos_in_postman_scripts
diff --git a/README.md b/README.md
index 775501d..35a75c6 100644
--- a/README.md
+++ b/README.md
@@ -5,11 +5,13 @@
- Docker
- Docker-compose
-## Deploy and provision Fineract CN
+# Deploy and provision Fineract CN
-You can either deploy and provision Fineract CN automatically using bash scripts or manually using postman.
+You can either deploy and provision Fineract CN automatically using bash scripts or manually using Postman.
+Postman is the preferred way as it is more tested and this way you understand better what is happening.
+Also this way you don't have to start all the micro services (helpful if your workstation is lacking resources).
-## 1. Deploy Fineract automtically using bash scripts
+# 1. Deploy and provision Fineract automtically using bash scripts
- To start up all the Fineract CN services run:
@@ -63,7 +65,7 @@
For example you could start the following additional micro services and an fims-web-app:
```
-docker-compose up rhythm-ms identity-ms customer-ms accounting-ms deposit-ms portfolio-ms fims-web-app
+docker-compose up rhythm-ms identity-ms customer-ms accounting-ms deposit-ms portfolio-ms office-ms fims-web-app
```
If you want you can add other micro services (listed in docker-compose.yml) to the list.
@@ -116,7 +118,7 @@
2. Reach out to [mailing list](https://lists.apache.org/list.html?dev@fineract.apache.org) with the relevant details
-### Sign-in using fims-web-app
+# Sign-in using fims-web-app
Prerequisites: Fineract-CN has been successfully provisioned by following the instructions in the previous sections
User ```mifos``` is created in the the last two requests (user creation and role assignment) in the postman request-list.
@@ -133,7 +135,7 @@
```
### Use the Postman scripts when running locally
-Postman scripts use service names (postgres, provisioner-ms, etc) when refering to different services.
+Postman scripts use service names (postgres, provisioner-ms, etc) when referring to different services.
If you want to use the same Postman scripts when running micro services locally then add into your hosts (/etc/hosts in Unix) file:
```
@@ -159,6 +161,8 @@
### How to reset everything and start from scratch
+Run ./shut-down-and-reset.sh or
+
```
cd external-tools
docker-compose stop
@@ -171,9 +175,10 @@
## Note:
**These scripts are ideal for a docker swarm deployment environment. If you are to deploy Fineract CN using Docker swarm you will have remove the network configuration from the docker-compose script and implement a load balancer (using docker swarm) that reflects the network configuratioin you just removed from the compose file.**
-## TODO
+### Automating Postman scripts
+You can use [Newman](https://learning.getpostman.com/docs/postman/collection_runs/command_line_integration_with_newman/) to run Postman scripts from command line.
-- Provision the web services using a script
+## TODO
- Adjust scripts for Kubernetes
There are some scripts in [https://github.com/openMF/fineract-cn-containers](https://github.com/openMF/fineract-cn-containers)
diff --git a/docker-compose.yml b/docker-compose.yml
index 750907e..cb72194 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -16,6 +16,8 @@
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2020
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.initialclientid: ${SYSTEM_INITIAL_CLIENT_ID}
system.privateKey.exponent: ${PRIVATE_KEY_EXPONENT}
@@ -26,7 +28,7 @@
deploy:
replicas: 1
restart_policy:
- condition: on-failure
+ condition: any
delay: 10s
max_attempts: 3
networks:
@@ -39,6 +41,10 @@
ports:
- "2021:2021"
environment:
+ bonecp.partitionCount: 1
+ bonecp.maxConnectionsPerPartition: 4
+ bonecp.minConnectionsPerPartition: 1
+ bonecp.acquireIncrement: 1
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
cassandra.cluster.pwd: ${CASSANDRA_CLUSTER_PASSWORD}
cassandra.cluster.user: ${CASSANDRA_CLUSTER_USER}
@@ -46,15 +52,18 @@
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
+ identity.token.refresh.secureCookie: "false" # demoserver
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2021
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
deploy:
replicas: 1
restart_policy:
- condition: on-failure
+ condition: any
delay: 10s
max_attempts: 3
networks:
@@ -69,25 +78,27 @@
- "2022:2022"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
+ rhythm.beatCheckRate: 600000
+ rhythm.user: ${SCHEDULER_USER_NAME}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2022
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- rhythm.beatCheckRate: 600000
deploy:
replicas: 1
restart_policy:
condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
- ipv4_address: ${RHYTHM_IP}
+ ipv4_address: ${RHYTHM_IP}
office-ms:
image: apache/fineract-cn-office:latest
@@ -95,23 +106,20 @@
- "2023:2023"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2023
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
system.privateKey.exponent: ${PRIVATE_KEY_EXPONENT}
system.privateKey.modulus: ${PRIVATE_KEY_MODULUS}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -123,21 +131,19 @@
- "2024:2024"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2024
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
+ system.initialclientid: ${SYSTEM_INITIAL_CLIENT_ID}
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -149,21 +155,18 @@
image: apache/fineract-cn-accounting:latest
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2025
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -175,6 +178,7 @@
- "2026:2026"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
@@ -182,16 +186,12 @@
custom.postgresql.user: ${POSTGRESQL_USER}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2026
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -203,21 +203,18 @@
- "2027:2027"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2027
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -229,21 +226,18 @@
- "2028:2028"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2028
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -255,21 +249,18 @@
- "2029:2029"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2029
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -281,21 +272,18 @@
- "2030:2030"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2030
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -307,21 +295,18 @@
- "2031:2031"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2031
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -333,21 +318,18 @@
- "2032:2032"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2032
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -356,24 +338,21 @@
notifications-ms:
image: apache/fineract-cn-notifications:latest
ports:
- - "2033:2033"
+ - "2033:2033"
environment:
activemq.brokerUrl: ${ACTIVEMQ_BROKER_URL}
+ cassandra.clusterName: ${CASSANDRA_CLUSTER_NAME}
cassandra.contactPoints: ${CASSANDRA_CONTACT_POINTS}
eureka.client.serviceUrl.defaultZone: ${EUREKA_CLIENT_SERVICE_URL_DEFAULT_ZONE}
eureka.instance.hostname: ${EUREKA_INSTANCE_HOSTNAME}
postgresql.host: ${POSTGRESQL_HOST}
ribbon.listOfServers: ${RIBBON_EUREKA_SERVER}
+ server.max-http-header-size: ${SERVER_MAX_HTTP_HEADER_SIZE}
+ server.port: 2033
spring.datasource.url: jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/seshat
system.publicKey.exponent: ${PUBLIC_KEY_EXPONENT}
system.publicKey.modulus: ${PUBLIC_KEY_MODULUS}
system.publicKey.timestamp: ${PUBLIC_KEY_TIMESTAMP}
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
@@ -383,12 +362,6 @@
image: apache/fineract-cn-fims-web-app:latest
ports:
- "8888:8888"
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
networks:
external_tools_default:
fineract:
diff --git a/env_variables b/env_variables
index 12b167a..b17564f 100644
--- a/env_variables
+++ b/env_variables
@@ -13,6 +13,7 @@
POSTGRESQL_USER=postgres
RIBBON_EUREKA_SERVER=eureka:9090
SYSTEM_INITIAL_CLIENT_ID=service-runner
+SCHEDULER_USER_NAME=imhotep
FIMS_WEB_APP_IP=172.16.238.19
PROVISIONER_IP=172.16.238.20
IDENTITY_IP=172.16.238.21
diff --git a/external_tools/docker-compose.yml b/external_tools/docker-compose.yml
index 67e2579..010666d 100644
--- a/external_tools/docker-compose.yml
+++ b/external_tools/docker-compose.yml
@@ -16,7 +16,7 @@
deploy:
replicas: 1
restart_policy:
- condition: on-failure
+ condition: any
delay: 10s
max_attempts: 3
@@ -32,7 +32,7 @@
deploy:
replicas: 1
restart_policy:
- condition: on-failure
+ condition: any
delay: 10s
max_attempts: 3
@@ -48,16 +48,6 @@
POSTGRES_PASSWORD: postgres
ports:
- "5432:5432"
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U postgres"]
- interval: 1m
- retries: 5
- deploy:
- replicas: 1
- restart_policy:
- condition: on-failure
- delay: 10s
- max_attempts: 3
volumes:
- postgres-volume:/var/lib/postgresql/data
@@ -73,7 +63,7 @@
deploy:
replicas: 1
restart_policy:
- condition: on-failure
+ condition: any
delay: 10s
max_attempts: 3
volumes:
diff --git a/postman_scripts/Fineract-Cn-Initial-Requests.postman_collection.json b/postman_scripts/Fineract-Cn-Initial-Requests.postman_collection.json
index ef7e4af..dc1de37 100644
--- a/postman_scripts/Fineract-Cn-Initial-Requests.postman_collection.json
+++ b/postman_scripts/Fineract-Cn-Initial-Requests.postman_collection.json
@@ -490,7 +490,7 @@
"raw": "[\n\t{\n\t\t\"name\": \"identity-v1\"\n\t}\n]"
},
"url": {
- "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/s{{tenantIdentifier}}/applications",
+ "raw": "http://{{provisionerUrl}}/provisioner/v1/tenants/{{tenantIdentifier}}/applications",
"protocol": "http",
"host": [
"{{provisionerUrl}}"
@@ -499,7 +499,7 @@
"provisioner",
"v1",
"tenants",
- "s{{tenantIdentifier}}",
+ "{{tenantIdentifier}}",
"applications"
]
}
@@ -543,7 +543,7 @@
],
"body": {
"mode": "raw",
- "raw": "{\n\t\"name\": \"rhythm-v1\",\n\t\"description\": \"Customer Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://rhythym-ms:2022/rhythm/v1\"\n}",
+ "raw": "{\n\t\"name\": \"rhythm-v1\",\n\t\"description\": \"Customer Service\",\n\t\"vendor\": \"Apache Fineract\",\n\t\"homepage\": \"http://rhythm-ms:2022/rhythm/v1\"\n}",
"options": {
"raw": {
"language": "json"
@@ -3743,4 +3743,4 @@
}
],
"protocolProfileBehavior": {}
-}
\ No newline at end of file
+}