# Configuration File

A client side configuration file can be used for specifying various settings which are useful while making request calls to Miyabi nodes. This file can be used with a Miyabi client created using Miyabi SDK as well as with miyabi-cli tool. It is a JSON format configuration file. An example is shown below:

{
  "blockchainConfigCacheExpiryInterval": "00:30:00",
  "extensions": [
    {
      "name": "Miyabi.BLS"
    },
    {
      "name": "Miyabi.Binary"
    },
    {
      "name": "Miyabi.Asset"
    },
    {
      "name": "Miyabi.Entity"
    },
    {
      "name": "Miyabi.Contract"
    },
    {
      "name": "Miyabi.NFT"
    },
    {
      "name": "Miyabi.PrivateData"
    }
  ],
  "fallback": true,
  "hosts": [
    "https://127.0.0.1:9010/",
    "https://127.0.0.1:9011/",
    "https://127.0.0.1:9012/",
    "https://127.0.0.1:9013/",
    "https://127.0.0.1:9014/"
  ],
  "loadBalancerHostIndexes": [0, 1],
  "members": [
    "026beca06739461a20249fd4b24cf27542013624d18710bc418e8de10d6ef68568",
    "02fce59e2dd0015bbb34da445f6c3a4ac2254a1b90ffa9c66fbd8621bf0c1a6deb"
  ],
  "privateChannel": {
    "pdoMembers": [
      {
        "admin": "026beca06739461a20249fd4b24cf27542013624d18710bc418e8de10d6ef68568",
        "host": "https://127.0.0.1:7000/"
      },
      {
        "admin": "02fce59e2dd0015bbb34da445f6c3a4ac2254a1b90ffa9c66fbd8621bf0c1a6deb",
        "host": "https://127.0.0.1:7001/"
      }
    ]
  },
  "retryPerHost": 3,
  "timeoutPerHost": "00:00:10"
} 

The following table describes each configuration field:

Field Description
blockchainConfigCacheExpiryInterval Config MetaData Expiry Interval (default=30 minutes). This interval determines the time interval after which the Cli will try to refresh the metadata cache stored locally.
clientCert A path to a client certificate file to authenticate http requests.
clientCertPwd A path to a file containing the password for the client certificate clientCert if the certificate file is password protected.
extensions List of extension modules to load.
fallback Flag indicating whether to fallback to the next host in the list when an error occurs or timeout per host is elapsed.
hosts List of hosts to communicate with.
loadBalancerHostIndexes Indexes of the hosts to allow load balancing of requests in a round-robin manner
members The credentials of the nodes taking part in the consensus process
privateChannel Host and credential details of the pdo members present in the private channel.
retryperhost Retry per host (default=3). Maximum number of retries a host can have before TimeoutPerHost is elapsed. In case of fallback=true, retries are done in "round-robin" way until total retries limit [RetryPerHost * n(hosts)] is reached or global timeout [TimeoutPerHost * n(hosts)] is elapsed.
timeoutperhost Timeout per host (default=10 seconds). Maximum time for a request to wait from the host, after which the request will be timed-out. In case of fallback=true, once host is timed-out, the request will be forwarded to next host(s) until global timeout [TimeoutPerHost * n(hosts)] is elapsed or total retries limit [RetryPerHost * n(hosts)] is reached.