Configuration

Has a JSON format with commented lines starting with //.

Organized into configuration sections which offers the advantage of being easily splitable.

Hint

You can split the configuration into any number of .json files/directories since the :ref:cgr-engine loads recursively the complete configuration folder, alphabetically ordered

All configuration options come with defaults and we have tried our best to choose the best ones for a minimum of efforts necessary when running.

Can be loaded from local folders or remotely using HTTP transport.

The configuration can be loaded at start and reloaded at run time using APIs designed for that. This can be done either as config pull (reload from path) or as config push (the JSON BLOB is sent via API to the engine).

Hint

You can reload from remote HTTP server as well.

Below is the default configuration file which comes hardcoded into cgr-engine:

   1{
   2
   3// Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
   4// Copyright (C) ITsysCOM GmbH
   5//
   6// This file contains the default configuration hardcoded into CGRateS.
   7// This is what you get when you load CGRateS with an empty configuration file.
   8
   9// "general": {
  10// 	"node_id": "",											// identifier of this instance in the cluster, if empty it will be autogenerated
  11// 	"logger":"*syslog",										// controls the destination of logs <*syslog|*stdout>
  12// 	"log_level": 6,											// control the level of messages logged (0-emerg to 7-debug)
  13// 	"rounding_decimals": 5,									// system level precision for floats
  14// 	"dbdata_encoding": "*msgpack",							// encoding used to store object data in strings: <*msgpack|*json>
  15// 	"tpexport_dir": "/var/spool/cgrates/tpe",				// path towards export folder for offline TariffPlans
  16// 	"poster_attempts": 3,									// number of attempts before considering post request failed (eg: *http_post, CDR exports)
  17// 	"failed_posts_dir": "/var/spool/cgrates/failed_posts",	// directory path where we store failed requests
  18// 	"failed_posts_ttl": "5s",								// time to wait before writing the failed posts in a single file
  19// 	"default_request_type": "*rated",						// default request type to consider when missing from requests: <""|*prepaid|*postpaid|*pseudoprepaid|*rated>
  20// 	"default_category": "call",								// default category to consider when missing from requests
  21// 	"default_tenant": "cgrates.org",						// default tenant to consider when missing from requests
  22// 	"default_timezone": "Local",							// default timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
  23// 	"default_caching": "*reload",							// default actions to do when caching items
  24// 	"min_call_duration": "0s",				                // only authorize calls with allowed duration higher than this
  25// 	"max_call_duration": "3h",				                // maximum call duration a prepaid call can last
  26// 	"connect_attempts": 5,									// initial server connect attempts
  27// 	"reconnects": -1,										// number of retries in case of connection lost
  28// 	"connect_timeout": "1s",								// consider connection unsuccessful on timeout, 0 to disable the feature
  29// 	"reply_timeout": "2s",									// consider connection down for replies taking longer than this value
  30// 	"locking_timeout": "0",									// timeout internal locks to avoid deadlocks
  31// 	"digest_separator": ",",								// separator to use in replies containing data digests
  32// 	"digest_equal": ":",									// equal symbol used in case of digests
  33// 	"rsr_separator": ";",									// separator used within RSR fields
  34// 	"max_parallel_conns": 100,								// the maximum number of connection used by the *parallel strategy
  35// },
  36
  37
  38// "cores": {
  39// 	"caps": 0,							// maximum concurrent request allowed ( 0 to disabled )
  40// 	"caps_strategy": "*busy",			// strategy in case in case of concurrent requests reached	
  41// 	"caps_stats_interval": "0",			// the interval we sample for caps stats ( 0 to disabled )
  42// 	"shutdown_timeout": "1s"			// the duration to wait until all services are stopped
  43// },
  44
  45
  46// "rpc_conns": {
  47// 	//"*localhost": {
  48// 		//"conns": [
  49// 			//{
  50// 				//"address": "127.0.0.1:2012", 
  51// 				//"transport":"*json",
  52// 				//"connect_attempts": 5,
  53// 				//"reconnects": -1,
  54// 				//"connect_timeout":"1s",
  55// 				//"reply_timeout":"2s",
  56// 				//"tls":false,
  57// 				//"client_key":"",
  58// 				//"client_certificate":"",
  59// 				//"ca_certificate":""
  60// 			//}
  61// 		//],
  62// 	//},
  63// },							// rpc connections definitions
  64
  65
  66// "data_db": {								// database used to store runtime data (eg: accounts)
  67// 	"db_type": "*redis",					// data_db type: <*redis|*mongo>
  68// 	"db_host": "127.0.0.1",					// data_db host address
  69// 	"db_port": 6379, 						// data_db port to reach the database
  70// 	"db_name": "10", 						// data_db database name to connect to
  71// 	"db_user": "cgrates", 					// username to use when connecting to data_db
  72// 	"db_password": "", 						// password to use when connecting to data_db
  73// 	"remote_conns":[],						// the conns that are queried when the items are not found in local DB 
  74// 	"remote_conn_id": "",					// the ID to be sent to remote_conns to identify the connection
  75// 	"replication_conns":[],					// the conns the items are replicated
  76// 	"replication_filtered": false, 			// if this is enabled the replication will be made only to the conns that received a get
  77// 	"replication_cache": "", 				// the caching action that is executed on the replication_conns when the items are replicated 
  78// 	"items":{
  79// 		"*accounts": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 					
  80// 		"*reverse_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
  81// 		"*destinations": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  82// 		"*rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  83// 		"*rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  84// 		"*actions": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  85// 		"*action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  86// 		"*account_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  87// 		"*action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  88// 		"*shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  89// 		"*timings": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  90// 		"*resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  91// 		"*resources": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  92// 		"*statqueue_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  93// 		"*statqueues": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  94// 		"*threshold_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  95// 		"*thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  96// 		"*filters": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  97// 		"*route_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  98// 		"*attribute_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
  99// 		"*charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 100// 		"*dispatcher_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 101// 		"*dispatcher_hosts": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 102// 		"*load_ids": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 103// 		"*versions": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 104// 		"*resource_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
 105// 		"*stat_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
 106// 		"*threshold_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
 107// 		"*route_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
 108// 		"*attribute_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
 109// 		"*charger_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
 110// 		"*dispatcher_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
 111// 		"*reverse_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
 112// 	},
 113// 	"opts":{
 114// 		"redisSentinel": "",					// the name of sentinel when used
 115// 		"redisCluster": false,					// if enabled the datadb will try to connect to the redis cluster
 116// 		"redisClusterSync": "5s",				// the sync interval for the redis cluster
 117// 		"redisClusterOndownDelay": "0",			// the delay before executing the commands if the redis cluster is in the CLUSTERDOWN state
 118// 		"mongoQueryTimeout":"10s",				// timeout for query when mongo is used
 119// 		"redisTLS": false,						// if true it will use a tls connection and use the redisClientCertificate, redisClientKey and redisCACertificate for tls connection
 120// 		"redisClientCertificate":"",			// path to client certificate
 121// 		"redisClientKey":"",					// path to client key
 122// 		"redisCACertificate":"",				// path to CA certificate (populate for self-signed certificate otherwise let it empty)
 123// 	}
 124// },
 125
 126
 127// "stor_db": {								// database used to store offline tariff plans and CDRs
 128// 	"db_type": "*mysql",					// stor database type to use: <*mongo|*mysql|*postgres|*internal>
 129// 	"db_host": "127.0.0.1",					// the host to connect to
 130// 	"db_port": 3306,						// the port to reach the stor_db
 131// 	"db_name": "cgrates",					// stor database name
 132// 	"db_user": "cgrates",					// username to use when connecting to stor_db
 133// 	"db_password": "CGRateS.org",			// password to use when connecting to stor_db
 134// 	"string_indexed_fields": [],			// indexes on cdrs table to speed up queries, used in case of *mongo and *internal
 135// 	"prefix_indexed_fields":[],				// prefix indexes on cdrs table to speed up queries, used in case of *internal
 136// 	"opts": {
 137// 		"sqlMaxOpenConns": 100,				// maximum database connections opened, not applying for mongo
 138// 		"sqlMaxIdleConns": 10,				// maximum database connections idle, not applying for mongo
 139// 		"sqlConnMaxLifetime": 0, 			// maximum amount of time in seconds a connection may be reused (0 for unlimited), not applying for mongo
 140// 		"mongoQueryTimeout":"10s",			// timeout for query when mongo is used
 141// 		"postgresSSLMode":"disable",		// postgresSSLMode in case of *postgres
 142// 		"mysqlLocation": "Local",			// the location the time from mysql is retrieved
 143// 	},
 144// 	"items":{
 145// 		"*session_costs": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 146// 		"*cdrs": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 		
 147// 		"*tp_timings": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 					
 148// 		"*tp_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
 149// 		"*tp_rates": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 150// 		"*tp_destination_rates": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 151// 		"*tp_rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 152// 		"*tp_rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 153// 		"*tp_shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 154// 		"*tp_actions": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 155// 		"*tp_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 156// 		"*tp_action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 157// 		"*tp_account_actions": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 158// 		"*tp_resources": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 159// 		"*tp_stats": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 160// 		"*tp_thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 161// 		"*tp_filters": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
 162// 		"*tp_routes": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 163// 		"*tp_attributes": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 164// 		"*tp_chargers": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 165// 		"*versions": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 166// 		"*tp_dispatcher_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 167// 		"*tp_dispatcher_hosts": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false}, 
 168// 	},
 169// },
 170
 171
 172// "listen": {
 173// 	"rpc_json": "127.0.0.1:2012",			// RPC JSON listening address
 174// 	"rpc_gob": "127.0.0.1:2013",			// RPC GOB listening address
 175// 	"http": "127.0.0.1:2080",				// HTTP listening address
 176// 	"rpc_json_tls" : "127.0.0.1:2022",		// RPC JSON TLS listening address
 177// 	"rpc_gob_tls": "127.0.0.1:2023",		// RPC GOB TLS listening address
 178// 	"http_tls": "127.0.0.1:2280",			// HTTP TLS listening address
 179// },
 180
 181
 182// "tls": {
 183// 	"server_certificate" : "",			// path to server certificate
 184// 	"server_key":"",					// path to server key
 185// 	"client_certificate" : "",			// path to client certificate
 186// 	"client_key":"",					// path to client key
 187// 	"ca_certificate":"",				// path to CA certificate (populate for self-signed certificate otherwise let it empty)
 188// 	"server_policy":4,					// server_policy determines the TLS Client Authentication (0-NoClientCert, 1-RequestClientCert, 2-RequireAnyClientCert, 3-VerifyClientCertIfGiven, 4-RequireAndVerifyClientCert)
 189// 	"server_name":"",
 190// },
 191
 192
 193// "http": {													// HTTP server configuration
 194// 	"json_rpc_url": "/jsonrpc",								// JSON RPC relative URL ("" to disable)
 195// 	"registrars_url": "/registrar",							// registrar service relative URL
 196// 	"ws_url": "/ws",										// WebSockets relative URL ("" to disable)
 197// 	"freeswitch_cdrs_url": "/freeswitch_json",				// Freeswitch CDRS relative URL ("" to disable)
 198// 	"http_cdrs": "/cdr_http",								// CDRS relative URL ("" to disable)
 199// 	"use_basic_auth": false,								// use basic authentication
 200// 	"auth_users": {},										// basic authentication usernames and base64-encoded passwords (eg: { "username1": "cGFzc3dvcmQ=", "username2": "cGFzc3dvcmQy "})
 201// 	"client_opts":{
 202// 		"skipTlsVerify": false, 							// if enabled Http Client will accept any TLS certificate
 203// 		// the options to configure the http.Transport
 204// 		"tlsHandshakeTimeout": "10s",
 205// 		"disableKeepAlives": false,
 206// 		"disableCompression": false,
 207// 		"maxIdleConns": 100,
 208// 		"maxIdleConnsPerHost": 2,
 209// 		"maxConnsPerHost": 0,
 210// 		"idleConnTimeout": "90s",
 211// 		"responseHeaderTimeout": "0",
 212// 		"expectContinueTimeout": "0",
 213// 		"forceAttemptHttp2": true,
 214// 		// the optins to configure the net.Dialer
 215// 		"dialTimeout": "30s",
 216// 		"dialFallbackDelay": "300ms",
 217// 		"dialKeepAlive": "30s",
 218// 	},
 219// },
 220
 221
 222// "schedulers": {
 223// 	"enabled": false,				// start Scheduler service: <true|false>
 224// 	"cdrs_conns": [],				// connections to CDRs for *cdrlog actions <""|*internal|$rpc_conns_id>
 225// 	"thresholds_conns": [],			// connections to ThresholdS for *reset_threshold action <""|*internal|$rpc_conns_id>
 226// 	"stats_conns": [],				// connections to StatS for *reset_stat_queue action: <""|*internal|$rpc_conns_id>
 227// 	"filters": [],					// only execute actions matching these filters
 228// 	"dynaprepaid_actionplans": [],			// actionPlans to be executed in case of *dynaprepaid request type
 229// },
 230
 231
 232// "caches":{
 233// 	"partitions": {
 234// 		"*destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},			// destination caching
 235// 		"*reverse_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},	// reverse destinations index caching
 236// 		"*rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},			// rating plans caching
 237// 		"*rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},		// rating profiles caching
 238// 		"*actions": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},				// actions caching
 239// 		"*action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},			// action plans caching
 240// 		"*account_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},	// account action plans index caching
 241// 		"*action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},		// action triggers caching
 242// 		"*shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},			// shared groups caching
 243// 		"*timings": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},				// timings caching
 244// 		"*resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},		// control resource profiles caching
 245// 		"*resources": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},				// control resources caching
 246// 		"*event_resources": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},							// matching resources to events
 247// 		"*statqueue_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},	// statqueue profiles
 248// 		"*statqueues": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},			// statqueues with metrics
 249// 		"*threshold_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},	// control threshold profiles caching
 250// 		"*thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},			// control thresholds caching
 251// 		"*filters": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},				// control filters caching
 252// 		"*route_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},		// control route profile caching
 253// 		"*attribute_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},	// control attribute profile caching
 254// 		"*charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},		// control charger profile caching
 255// 		"*dispatcher_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},	// control dispatcher profile caching
 256// 		"*dispatcher_hosts": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},		// control dispatcher hosts caching
 257// 		"*resource_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, 				// control resource filter indexes caching
 258// 		"*stat_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, 					// control stat filter indexes caching
 259// 		"*threshold_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, 				// control threshold filter indexes caching
 260// 		"*route_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, 					// control route filter indexes caching
 261// 		"*attribute_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, 				// control attribute filter indexes caching
 262// 		"*charger_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, 					// control charger filter indexes caching
 263// 		"*dispatcher_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, 				// control dispatcher filter indexes caching
 264// 		"*reverse_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, 					// control reverse filter indexes caching used only for set and remove filters 
 265// 		"*dispatcher_routes": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, 						// control dispatcher routes caching
 266// 		"*dispatcher_loads": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},							// control dispatcher load( in case of *ratio ConnParams is present)
 267// 		"*dispatchers": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, 								// control dispatcher interface
 268// 		"*diameter_messages": {"limit": -1, "ttl": "3h", "static_ttl": false, "replicate": false},						// diameter messages caching
 269// 		"*rpc_responses": {"limit": 0, "ttl": "2s", "static_ttl": false, "replicate": false},							// RPC responses caching
 270// 		"*closed_sessions": {"limit": -1, "ttl": "10s", "static_ttl": false, "replicate": false},						// closed sessions cached for CDRs
 271// 		"*event_charges": {"limit": 0, "ttl": "10s", "static_ttl": false, "replicate": false},							// events proccessed by ChargerS
 272// 		"*cdr_ids": {"limit": -1, "ttl": "10m", "static_ttl": false, "replicate": false},								// protects CDRs against double-charging
 273// 		"*load_ids": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false, "replicate": false},				// control the load_ids for items
 274// 		"*rpc_connections": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},							// RPC connections caching
 275// 		"*uch": {"limit": -1, "ttl": "3h", "static_ttl": false, "replicate": false},									// User cache
 276// 		"*stir": {"limit": -1, "ttl": "3h", "static_ttl": false, "replicate": false},									// stirShaken cache keys
 277// 		"*apiban":{"limit": -1, "ttl": "2m", "static_ttl": false, "replicate": false}, 
 278// 		"*caps_events": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},								// caps cached samples
 279// 		"*replication_hosts": {"limit": 0, "ttl": "", "static_ttl": false, "replicate": false},							// the replication hosts cache(used when replication_filtered is enbled)
 280// 	},
 281// 	"replication_conns": [],
 282// },
 283
 284
 285// "filters": {								// Filters configuration (*new)
 286// 	"stats_conns": [],						// connections to StatS for <*stats> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
 287// 	"resources_conns": [],					// connections to ResourceS for <*resources> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
 288// 	"apiers_conns": [],						// connections to RALs for <*accounts> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
 289// },
 290
 291
 292// "rals": {
 293// 	"enabled": false,						// enable Rating/Accounting service: <true|false>
 294// 	"thresholds_conns": [],					// connections to ThresholdS for account/balance updates, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
 295// 	"stats_conns": [],						// connections to StatS for account/balance updates, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
 296// 	"rp_subject_prefix_matching": false,	// enables prefix matching for the rating profile subject
 297// 	"remove_expired":true,					// enables automatic removal of expired balances
 298// 	"max_computed_usage": {					// do not compute usage higher than this, prevents memory overload
 299// 		"*any": "189h",
 300// 		"*voice": "72h",
 301// 		"*data": "107374182400",
 302// 		"*sms": "10000",
 303// 		"*mms": "10000"
 304// 	},
 305// 	"max_increments": 1000000,
 306// 	"balance_rating_subject":{				// default rating subject in case that balance rating subject is empty
 307// 		"*any": "*zero1ns",
 308// 		"*voice": "*zero1s"
 309// 	},
 310
 311// },
 312
 313
 314// "cdrs": {									// CDRs config
 315// 	"enabled": false,						// start the CDR Server:  <true|false>
 316// 	"extra_fields": [],						// extra fields to store in CDRs for non-generic CDRs (ie: FreeSWITCH JSON)
 317// 	"store_cdrs": true,						// store cdrs in StorDB
 318// 	"session_cost_retries": 5,				// number of queries to session_costs before recalculating CDR
 319// 	"chargers_conns": [],					// connection to ChargerS for CDR forking, empty to disable billing for CDRs: <""|*internal|$rpc_conns_id>
 320// 	"rals_conns": [],						// connections to RALs for cost calculation: <""|*internal|$rpc_conns_id>
 321// 	"attributes_conns": [],					// connection to AttributeS for altering *raw CDRs, empty to disable attributes functionality: <""|*internal|$rpc_conns_id>
 322// 	"thresholds_conns": [],					// connection to ThresholdS for CDR reporting, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
 323// 	"stats_conns": [],						// connections to StatS for CDR reporting, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
 324// 	"online_cdr_exports":[],				// list of CDRE profiles to use for real-time CDR exports
 325// 	"scheduler_conns": [],					// connections to SchedulerS in case of *dynaprepaid request
 326// 	"ees_conns": [],						// connections to EventExporter
 327// },
 328
 329
 330// "ers": {														// EventReaderService
 331// 	"enabled": false,											// starts the EventReader service: <true|false>
 332// 	"sessions_conns":["*internal"],								// RPC Connections IDs
 333// 	"partial_cache_ttl": "1s",									// the duration to cache partial records when not pairing	
 334// 	"readers": [
 335// 		{
 336// 			"id": "*default",									// identifier of the EventReader profile
 337// 			"type": "*none",									// reader type <*file_csv>
 338// 			"run_delay": "0",									// sleep interval in seconds between consecutive runs, -1 to use automation via inotify or 0 to disable running all together
 339// 			"concurrent_requests": 1024,						// maximum simultaneous requests/files to process, 0 for unlimited
 340// 			"source_path": "/var/spool/cgrates/ers/in",			// read data from this path
 341// 			"processed_path": "/var/spool/cgrates/ers/out",		// move processed data here
 342// 			"opts": {
 343// 				// Partial
 344// 				// "partialPath": "/",							// the path were the partial events will be sent
 345// 				"partialCacheAction": "*none",					// the action that will be executed for the partial CSVs that are not matched<*none|*post_cdr|*dump_to_file>
 346// 				"partialOrderField": "~*req.AnswerTime",		// the field after what the events are order when merged
 347// 				// "partialcsvFieldSeparator": ","				// separator used when dumping the fields
 348				
 349// 				// FileCSV 
 350// 				"csvRowLength": 0,								// Number of fields from csv file
 351// 				"csvFieldSeparator": ",",						// separator used when reading the fields
 352// 				"csvHeaderDefineChar": ":", 					// the starting character for header definition used in case of CSV files
 353// 				// "csvLazyQuotes": false,						// if a quote may appear in an unquoted field and a non-doubled quote may appear in a quoted field
 354
 355// 				// FileXML
 356// 				"xmlRootPath": "",								// path towards one event in case of XML CDRs
 357
 358// 				// AMQP and AMQPv1
 359// 				// "amqpQueueID": "cgrates_cdrs",				// the queue id for AMQP and AMQPv1 readers from were the events are read
 360// 				// "amqpQueueIDProcessed": "", 					// the queue id for AMQP and AMQPv1 readers were the events are sent after they are processed
 361
 362// 				// AMQP
 363// 				// "amqpConsumerTag": "cgrates",				// the ID of the consumer
 364// 				// "amqpExchange": "",									
 365// 				// "amqpExchangeType": "",
 366// 				// "amqpRoutingKey": "",
 367
 368// 				// "amqpExchangeProcessed": "",									
 369// 				// "amqpExchangeTypeProcessed": "",
 370// 				// "amqpRoutingKeyProcessed": "",
 371
 372
 373// 				// Kafka
 374// 				// "kafkaTopic": "cgrates",						// the topic from were the events are read
 375// 				// "kafkaGroupID": "cgrates",					// the group that reads the events
 376// 				// "kafkaMaxWait": "1ms",						// the maximum amount of time to wait for new data to come
 377
 378// 				// "kafkaTopicProcessed": "",					// the topic were the events are sent after they are processed
 379
 380// 				// SQL
 381// 				// "sqlDBName": "cgrates", 						// the name of the database from were the events are read
 382// 				// "sqlTableName": "cdrs",						// the name of the table from were the events are read
 383// 				// "postgresSSLMode": "disable",				// the ssl mode for postgres db
 384
 385// 				// "sqlDBNameProcessed": "", 					// the name of the database were the events are sent after they are processed
 386// 				// "sqlTableNameProcessed": "",					// the name of the table were the events are sent after they are processed
 387// 				// "postgresSSLModeProcessed": "",				// the ssl mode for postgres db
 388
 389// 				// SQS and S3
 390// 				// "awsRegion": "",
 391// 				// "awsKey": "",
 392// 				// "awsSecret": "",
 393// 				// "awsToken": "",
 394
 395// 				// "awsRegionProcessed": "",
 396// 				// "awsKeyProcessed": "",
 397// 				// "awsSecretProcessed": "",
 398// 				// "awsTokenProcessed": "",
 399
 400// 				// SQS
 401// 				// "sqsQueueID": "cgrates_cdrs", 				// the queue id for SQS readers from were the events are read
 402
 403// 				// "sqsQueueIDProcessed": "", 					// the queue id for SQS readers were the events are sent after they are processed
 404
 405// 				// S3
 406// 				// "s3BucketID": "cgrates_cdrs", 				// the bucket id for S3 readers from were the events are read
 407// 				// "s3FolderPathProcessed": "", 				// only for S3 event posting 
 408				
 409// 				// "s3BucketIDProcessed": "cgrates_cdrs", 		// the bucket id for S3 readers were the events are sent after they are processed
 410
 411// 				// nats
 412// 				// "natsJetStream": false,						// controls if the nats reader uses the JetStream
 413// 				// "natsConsumerName": "cgrates",				// the name of the NATS JetStream stream from which the consumer will read messages
 414// 				// "natsStreamName": "cgrates",				// in case of JetStream the name of the consumer
 415// 				"natsSubject": "cgrates_cdrs",					// the subject from were the events are read
 416// 				// "natsQueueID": "",							// the queue id the consumer listen to
 417// 				// "natsJWTFile": "",							// the path to the JWT file( can be the chained file or the user file)
 418// 				// "natsSeedFile": "",							// the path to the seed files( if the JWT file is mention this is used as seedFile for the JWT user mentioned above)
 419// 				// "natsCertificateAuthority": "",				// the path to a custom certificate authority file( used by tls)
 420// 				// "natsClientCertificate": "",					// the path to a client certificate( used by tls)
 421// 				// "natsClientKey": "",							// the path to a client key( used by tls)
 422// 				// "natsJetStreamMaxWait": "5s",				// the maximum amount of time to wait for a response
 423
 424// 				// "natsJetStreamProcessed": false,				// controls if the nats poster uses the JetStream
 425// 				// "natsSubjectProcessed": "cgrates_cdrs",		// the subject were the events are posted
 426// 				// "natsJWTFileProcessed": "",					// the path to the JWT file( can be the chained file or the user file)
 427// 				// "natsSeedFileProcessed": "",					// the path to the seed files( if the JWT file is mention this is used as seedFile for the JWT user mentioned above)
 428// 				// "natsCertificateAuthorityProcessed": "",		// the path to a custom certificate authority file( used by tls)
 429// 				// "natsClientCertificateProcessed": "",		// the path to a client certificate( used by tls)
 430// 				// "natsClientKeyProcessed": "",				// the path to a client key( used by tls)
 431// 				// "natsJetStreamMaxWaitProcessed": "5s	",		// the maximum amount of time to wait for a response
 432// 			},
 433// 			"tenant": "",										// tenant used by import
 434// 			"timezone": "",										// timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
 435// 			"filters": [],										// limit parsing based on the filters
 436// 			"flags": [],										// flags to influence the event processing
 437// 			"fields":[											// import fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value
 438// 				{"tag": "ToR", "path": "*cgreq.ToR", "type": "*variable", "value": "~*req.2", "mandatory": true},
 439// 				{"tag": "OriginID", "path": "*cgreq.OriginID", "type": "*variable", "value": "~*req.3", "mandatory": true},
 440// 				{"tag": "RequestType", "path": "*cgreq.RequestType", "type": "*variable", "value": "~*req.4", "mandatory": true},
 441// 				{"tag": "Tenant", "path": "*cgreq.Tenant", "type": "*variable", "value": "~*req.6", "mandatory": true},
 442// 				{"tag": "Category", "path": "*cgreq.Category", "type": "*variable", "value": "~*req.7", "mandatory": true},
 443// 				{"tag": "Account", "path": "*cgreq.Account", "type": "*variable", "value": "~*req.8", "mandatory": true},
 444// 				{"tag": "Subject", "path": "*cgreq.Subject", "type": "*variable", "value": "~*req.9", "mandatory": true},
 445// 				{"tag": "Destination", "path": "*cgreq.Destination", "type": "*variable", "value": "~*req.10", "mandatory": true},
 446// 				{"tag": "SetupTime", "path": "*cgreq.SetupTime", "type": "*variable", "value": "~*req.11", "mandatory": true},
 447// 				{"tag": "AnswerTime", "path": "*cgreq.AnswerTime", "type": "*variable", "value": "~*req.12", "mandatory": true},
 448// 				{"tag": "Usage", "path": "*cgreq.Usage", "type": "*variable", "value": "~*req.13", "mandatory": true},
 449// 			],
 450// 			"partial_commit_fields": [],
 451// 			"cache_dump_fields": [],
 452// 		},
 453// 	],
 454// },
 455
 456
 457// "ees": {									// EventExporterService
 458// 	"enabled": false,						// starts the EventReader service: <true|false>
 459// 	"attributes_conns":[],					// RPC Connections IDs
 460// 	"cache": {
 461// 		"*file_csv": {"limit": -1, "ttl": "5s", "static_ttl": false},
 462// 	},
 463// 	"exporters": [
 464// 		{
 465// 			"id": "*default",									// identifier of the EventReader profile
 466// 			"type": "*none",									// exporter type 
 467// 			"export_path": "/var/spool/cgrates/ees",			// path where the exported events will be placed
 468// 			"concurrent_requests": 0,							// maximum simultaneous requests to process, 0 for unlimited
 469// 			"opts": {
 470
 471// 				// CSV
 472// 				// "csvFieldSeparator": ",",					// separator used when reading the fields
 473
 474				
 475// 				// Elasticsearch options
 476// 				// "elsIndex": "",								// ElsIndex               	
 477// 				// "elsIfPrimaryTerm": 0,						// ElsIfPrimaryTerm
 478//  				// "elsIfSeqNo": 0,								// ElsIfSeqNo
 479// 				// "elsOpType": "",								// ElsOpType
 480// 				// "elsPipeline": "",							// ElsPipeline
 481// 				// "elsRouting": "",							// ElsRouting
 482// 				// "elsTimeout": "",							// ElsTimeout
 483// 				// "elsVersion": 0,								// ElsVersionLow
 484// 				// "elsVersionType": "",						// ElsVersionType
 485// 				// "elsWaitForActiveShards": "",				// ElsWaitForActiveShards
 486				
 487				
 488// 				// SQL
 489// 				// "sqlMaxIdleConns": 0,						// SQLMaxIdleConns    
 490// 				// "sqlMaxOpenConns": 0,						// SQLMaxOpenConns
 491// 				// "sqlConnMaxLifetime": 0,						// SQLConnMaxLifetime 
 492
 493
 494// 				// "sqlTableName":"cdrs", 						// the name of the table from where the events are exported
 495// 				// "sqlDBName": "cgrates",						// the name of the database from where the events are exported
 496// 				// "pgSSLMode": "disable",						// the SSLMode for postgres            				
 497				
 498				
 499// 				// Kafka
 500// 				// "kafkaTopic": "cgrates",						// the topic from where the events are exported
 501				
 502				
 503// 				// AMQP
 504// 				// "amqpQueueID": "cgrates_cdrs",				// the queue id for AMQP exporters from were the events are exported
 505// 				// "amqpRoutingKey": "",						// RoutingKey
 506// 				// "amqpExchange": "",							// Exchange
 507// 				// "amqpExchangeType": "",						// ExchangeType
 508				
 509
 510// 				// SQS and S3
 511// 				// "awsRegion": "",								// AWSRegion  
 512// 				// "awsKey": "",								// AWSKey        
 513// 				// "awsSecret": "",								// AWSSecret
 514// 				// "awsToken": "",								// AWSToken      
 515
 516// 				//SQS
 517// 				// "sqsQueueID": "cgrates_cdrs", 				// the queue id for SQS exporters from were the events are exported
 518
 519// 				// S3
 520// 				// "s3BucketID": "cgrates_cdrs", 				// the bucket id for S3 readers from where the events that are  exported
 521// 				// "s3FolderPath": "",							// S3FolderPath 
 522
 523// 				// Nats
 524// 				// "natsJetStream": false,						// controls if the nats poster uses the JetStream
 525// 				// "natsSubject": "cgrates_cdrs",				// the subject were the events are exported
 526// 				// "natsJWTFile": "",							// the path to the JWT file( can be the chained file or the user file)
 527// 				// "natsSeedFile": "",							// the path to the seed files( if the JWT file is mention this is used as seedFile for the JWT user mentioned above)
 528// 				// "natsCertificateAuthority": "",				// the path to a custom certificate authority file( used by tls)
 529// 				// "natsClientCertificate": "",					// the path to a client certificate( used by tls)
 530// 				// "natsClientKey": "",							// the path to a client key( used by tls)
 531// 				// "natsJetStreamMaxWait": "5s",				// the maximum amount of time to wait for a response
 532// 			},													// extra options for exporter
 533// 			"timezone": "",										// timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
 534// 			"filters": [],										// limit parsing based on the filters
 535// 			"flags": [],										// flags to influence the event processing
 536// 			"attribute_ids": [],								// select Attribute profiles instead of discovering them
 537// 			"attribute_context": "",							// context used to discover matching Attribute profiles
 538// 			"synchronous": false,								// block processing until export has a result
 539// 			"attempts": 1,										// export attempts
 540// 			"fields":[],										// import fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value
 541// 			"failed_posts_dir": "/var/spool/cgrates/failed_posts",	// directory path where we store failed requests
 542// 		},
 543// 	],
 544// },
 545
 546
 547// "sessions": {
 548// 	"enabled": false,						// starts the session service: <true|false>
 549// 	"listen_bijson": "127.0.0.1:2014",		// address where to listen for bidirectional JSON-RPC requests
 550// 	"listen_bigob": "",						// address where to listen for bidirectional GOB-RPC requests
 551// 	"chargers_conns": [],					// connections to ChargerS for session forking <""|*internal|$rpc_conns_id>
 552// 	"rals_conns": [],						// connections to RALs for rating/accounting <""|*internal|$rpc_conns_id>
 553// 	"cdrs_conns": [],						// connections to CDRs for CDR posting <""|*internal|$rpc_conns_id>
 554// 	"resources_conns": [],					// connections to ResourceS for resources monitoring <""|*internal|$rpc_conns_id>
 555// 	"thresholds_conns": [],					// connections to ThresholdS for reporting session events <""|*internal|$rpc_conns_id>
 556// 	"stats_conns": [],						// connections to StatS for reporting session events <""|*internal|$rpc_conns_id>
 557// 	"routes_conns": [],						// connections to RouteS for querying routes for event <""|*internal|$rpc_conns_id>
 558// 	"attributes_conns": [],					// connections to AttributeS for altering event fields <""|*internal|$rpc_conns_id>
 559// 	"replication_conns": [],				// replicate sessions towards these session services
 560// 	"debit_interval": "0s",					// interval to perform debits on.
 561// 	"store_session_costs": false,			// enable storing of the session costs within CDRs
 562// 	"default_usage":{						// the usage if the event is missing the usage field
 563// 			"*any": "3h",
 564// 			"*voice": "3h",
 565// 			"*data": "1048576",
 566// 			"*sms": "1",
 567// 	},
 568// 	"session_ttl": "0s",					// time after a session with no updates is terminated, not defined by default
 569// 	//"session_ttl_max_delay": "",			// activates session_ttl randomization and limits the maximum possible delay
 570// 	//"session_ttl_last_used": "",			// tweak LastUsed for sessions timing-out, not defined by default
 571// 	//"session_ttl_usage": "",				// tweak Usage for sessions timing-out, not defined by default
 572// 	//"session_last_usage": "",				// tweak LastUsage for session timing-out, not defined by default
 573// 	"session_indexes": [],					// index sessions based on these fields for GetActiveSessions API
 574// 	"client_protocol": 1.0,					// version of protocol to use when acting as JSON-PRC client <"0","1.0">
 575// 	"channel_sync_interval": "0",			// sync channels to detect stale sessions (0 to disable)
 576// 	"terminate_attempts": 5,				// attempts to get the session before terminating it
 577// 	"alterable_fields": [],					// the session fields that can be updated
 578// 	//"min_dur_low_balance": "5s",			// threshold which will trigger low balance warnings for prepaid calls (needs to be lower than debit_interval)
 579// 	"stir": {
 580// 		"allowed_attest": ["*any"],			// the default attest for stir/shaken authentication <*any|A|B|C>
 581// 		"payload_maxduration": "-1", 		// the duration that stir header is valid after it was created
 582// 		"default_attest": "A",				// the default attest level if not mentioned in API
 583// 		"publickey_path": "",				// the path to the public key 
 584// 		"privatekey_path": "",				// the path to the private key
 585// 	},
 586// 	"scheduler_conns": [],					// connections to SchedulerS in case of *dynaprepaid request
 587// },
 588
 589
 590// "asterisk_agent": {
 591// 	"enabled": false,						// starts the Asterisk agent: <true|false>
 592// 	"sessions_conns": ["*birpc_internal"],
 593// 	"create_cdr": false,					// create CDR out of events and sends it to CDRS component
 594// 	"asterisk_conns":[						// instantiate connections to multiple Asterisk servers
 595// 		{"address": "127.0.0.1:8088", "user": "cgrates", "password": "CGRateS.org", "connect_attempts": 3,"reconnects": 5}
 596// 	],
 597// },
 598
 599
 600// "freeswitch_agent": {
 601// 	"enabled": false,						// starts the FreeSWITCH agent: <true|false>
 602// 	"sessions_conns": ["*birpc_internal"],
 603// 	"subscribe_park": true,					// subscribe via fsock to receive park events
 604// 	"create_cdr": false,					// creates CDR out of events and sends them to CDRS component
 605// 	"extra_fields": [],						// extra fields to store in auth/CDRs when creating them
 606// 	"low_balance_ann_file": "",				// file to be played when low balance is reached for prepaid calls
 607// 	"empty_balance_context": "",			// if defined, prepaid calls will be transferred to this context on empty balance
 608// 	"empty_balance_ann_file": "",			// file to be played before disconnecting prepaid calls on empty balance (applies only if no context defined)
 609// 	"max_wait_connection": "2s",			// maximum duration to wait for a connection to be retrieved from the pool
 610// 	"event_socket_conns":[					// instantiate connections to multiple FreeSWITCH servers
 611// 		{"address": "127.0.0.1:8021", "password": "ClueCon", "reconnects": 5,"alias":""}
 612// 	],
 613// },
 614
 615
 616// "kamailio_agent": {
 617// 	"enabled": false,						// starts Kamailio agent: <true|false>
 618// 	"sessions_conns": ["*birpc_internal"],
 619// 	"create_cdr": false,					// create CDR out of events and sends them to CDRS component
 620// 	"timezone": "",							// timezone of the Kamailio server
 621// 	"evapi_conns":[							// instantiate connections to multiple Kamailio servers
 622// 		{"address": "127.0.0.1:8448", "reconnects": 5}
 623// 	],
 624// },
 625
 626
 627// "diameter_agent": {
 628// 	"enabled": false,											// enables the diameter agent: <true|false>
 629// 	"listen": "127.0.0.1:3868",									// address where to listen for diameter requests <x.y.z.y/x1.y1.z1.y1:1234>
 630// 	"listen_net": "tcp",										// transport type for diameter <tcp|sctp>
 631// 	"dictionaries_path": "/usr/share/cgrates/diameter/dict/",	// path towards directory holding additional dictionaries to load
 632// 	"sessions_conns": ["*birpc_internal"],
 633// 	"origin_host": "CGR-DA",									// diameter Origin-Host AVP used in replies
 634// 	"origin_realm": "cgrates.org",								// diameter Origin-Realm AVP used in replies
 635// 	"vendor_id": 0,												// diameter Vendor-Id AVP used in replies
 636// 	"product_name": "CGRateS",									// diameter Product-Name AVP used in replies
 637// 	"concurrent_requests": -1,									// limit the number of active requests processed by the server <-1|0-n>
 638// 	"synced_conn_requests": false,								// process one request at the time per connection
 639// 	"asr_template": "",											// enable AbortSession message being sent to client on DisconnectSession
 640// 	"rar_template": "",											// template used to build the Re-Auth-Request
 641// 	"forced_disconnect": "*none",								// the request to send to diameter on DisconnectSession <*none|*asr|*rar>
 642// 	"request_processors": [				// list of processors to be applied to diameter messages
 643// 	],
 644// },
 645
 646
 647// "radius_agent": {
 648// 	"enabled": false,											// enables the radius agent: <true|false>
 649//  "listeners":[
 650// 	    {
 651// 		    "network": "udp",									// network to listen on <udp|tcp>
 652// 		    "auth_address": "127.0.0.1:1812",					// address where to listen for radius authentication requests <x.y.z.y:1234>
 653// 		    "acct_address": "127.0.0.1:1813"					// address where to listen for radius accounting requests <x.y.z.y:1234>
 654// 	    }
 655//  ],	
 656// 	"client_secrets": {											// hash containing secrets for clients connecting here <*default|$client_ip>
 657// 		"*default": "CGRateS.org"
 658// 	},
 659// 	"client_dictionaries": {									// per client path towards directory holding additional dictionaries to load (extra to RFC)
 660// 		"*default": [                                           // key represents the client IP or catch-all <*default|$client_ip>
 661//     "/usr/share/cgrates/radius/dict/",
 662// ],			
 663// 	},
 664// 	"sessions_conns": ["*internal"],
 665// 	"request_processors": [										// request processors to be applied to Radius messages
 666// 	],
 667// },
 668
 669
 670// "http_agent": [						// HTTP Agents, ie towards cnc.to MVNE platform
 671// ],
 672
 673
 674// "dns_agent": {
 675// 	"enabled": false,											// enables the DNS agent: <true|false>
 676//  "listeners":[
 677//     {
 678//         "address": "127.0.0.1:53",							// address where to listen for DNS requests <x.y.z.y:1234>
 679//         "network": "udp"										// network to listen on <udp|tcp|tcp-tls>
 680//     }
 681//  ],
 682// 	"sessions_conns": ["*internal"],
 683// 	"timezone": "",												// timezone of the events if not specified  <UTC|Local|$IANA_TZ_DB>
 684// 	"request_processors": [										// request processors to be applied to DNS messages
 685// 	],
 686// },
 687
 688
 689// "attributes": {								// AttributeS config
 690// 	"enabled": false,						// starts attribute service: <true|false>
 691// 	"stats_conns": [],						// connections to StatS, empty to disable: <""|*internal|$rpc_conns_id>
 692// 	"resources_conns": [],					// connections to ResourceS, empty to disable: <""|*internal|$rpc_conns_id>
 693// 	"apiers_conns": [],						// connections to ApierS, empty to disable: <""|*internal|$rpc_conns_id>
 694// 	"indexed_selects": true,				// enable profile matching exclusively on indexes
 695// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
 696// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
 697// 	"suffix_indexed_fields": [],			// query indexes based on these fields for faster processing
 698// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
 699// 	"process_runs": 1,						// number of run loops when processing event
 700// 	"profile_runs": 0,						// number of run a profile will process thes event
 701// 	"any_context": true,					// if we match the *any context
 702// },
 703
 704
 705// "chargers": {								// ChargerS config
 706// 	"enabled": false,						// starts charger service: <true|false>.
 707// 	"attributes_conns": [],					// connections to AttributeS for event fields altering <""|127.0.0.1:2013>
 708// 	"indexed_selects": true,				// enable profile matching exclusively on indexes
 709// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
 710// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
 711// 	"suffix_indexed_fields": [],			// query indexes based on these fields for faster processing
 712// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
 713// },
 714
 715
 716// "resources": {								// ResourceS config
 717// 	"enabled": false,						// starts ResourceLimiter service: <true|false>.
 718// 	"store_interval": "",					// dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
 719// 	"thresholds_conns": [],					// connections to ThresholdS for resource reporting, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
 720// 	"indexed_selects": true,				// enable profile matching exclusively on indexes
 721// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
 722// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
 723// 	"suffix_indexed_fields": [],			// query indexes based on these fields for faster processing
 724// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
 725// },
 726
 727
 728// "stats": {									// StatS config
 729// 	"enabled": false,						// starts Stat service: <true|false>.
 730// 	"store_interval": "",					// dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
 731// 	"store_uncompressed_limit": 0,			// used to compress data
 732// 	"thresholds_conns": [],					// connections to ThresholdS for StatUpdates, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
 733// 	"indexed_selects": true,				// enable profile matching exclusively on indexes
 734// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
 735// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
 736// 	"suffix_indexed_fields": [],			// query indexes based on these fields for faster processing
 737// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
 738// },
 739
 740
 741// "thresholds": {								// ThresholdS
 742// 	"enabled": false,						// starts ThresholdS service: <true|false>.
 743// 	"store_interval": "",					// dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
 744// 	"indexed_selects": true,				// enable profile matching exclusively on indexes
 745// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
 746// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
 747// 	"suffix_indexed_fields": [],			// query indexes based on these fields for faster processing
 748// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
 749// },
 750
 751
 752// "routes": {									// RouteS config
 753// 	"enabled": false,						// starts RouteS service: <true|false>.
 754// 	"indexed_selects": true,				// enable profile matching exclusively on indexes
 755// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
 756// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
 757// 	"suffix_indexed_fields": [],			// query indexes based on these fields for faster processing
 758// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
 759// 	"attributes_conns": [],					// connections to AttributeS for altering events before route queries: <""|*internal|$rpc_conns_id>
 760// 	"resources_conns": [],					// connections to ResourceS for *res sorting, empty to disable functionality: <""|*internal|$rpc_conns_id>
 761// 	"stats_conns": [],						// connections to StatS for *stats sorting, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
 762// 	"rals_conns": [],						// connections to Rater for calculating cost, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
 763// 	"default_ratio":1						// default ratio used in case of *load strategy
 764// },
 765
 766
 767// "loaders": [												// LoaderS config
 768// 	{
 769// 		"id": "*default",									// identifier of the Loader
 770// 		"enabled": false,									// starts as service: <true|false>.
 771// 		"tenant": "",										// tenant used in filterS.Pass
 772// 		"dry_run": false,									// do not send the CDRs to CDRS, just parse them
 773// 		"run_delay": "0",									// sleep interval in seconds between consecutive runs, -1 to use automation via inotify or 0 to disable running all together
 774// 		"lockfile_path": ".cgr.lck",						// Filename containing concurrency lock in case of delayed processing
 775// 		"caches_conns": ["*internal"],
 776// 		"field_separator": ",",								// separator used in case of csv files
 777// 		"tp_in_dir": "/var/spool/cgrates/loader/in",		// absolute path towards the directory where the TPs are stored
 778// 		"tp_out_dir": "/var/spool/cgrates/loader/out",		// absolute path towards the directory where processed TPs will be moved
 779// 		"data":[											// data profiles to load
 780// 			{
 781// 				"type": "*attributes",						// data source type
 782// 				"file_name": "Attributes.csv",				// file name in the tp_in_dir
 783// 				"fields": [
 784// 					{"tag": "TenantID", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
 785// 					{"tag": "ProfileID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
 786// 					{"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~*req.2"},
 787// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.3"},
 788// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.4"},
 789// 					{"tag": "AttributeFilterIDs", "path": "AttributeFilterIDs", "type": "*variable", "value": "~*req.5"},
 790// 					{"tag": "Path", "path": "Path", "type": "*variable", "value": "~*req.6"},
 791// 					{"tag": "Type", "path": "Type", "type": "*variable", "value": "~*req.7"},
 792// 					{"tag": "Value", "path": "Value", "type": "*variable", "value": "~*req.8"},
 793// 					{"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.9"},
 794// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.10"},
 795// 				],
 796// 			},
 797// 			{
 798// 				"type": "*filters",						// data source type
 799// 				"file_name": "Filters.csv",				// file name in the tp_in_dir
 800// 				"fields": [
 801// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
 802// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
 803// 					{"tag": "Type", "path": "Type", "type": "*variable", "value": "~*req.2"},
 804// 					{"tag": "Element", "path": "Element", "type": "*variable", "value": "~*req.3"},
 805// 					{"tag": "Values", "path": "Values", "type": "*variable", "value": "~*req.4"},
 806// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.5"},
 807// 				],
 808// 			},
 809// 			{
 810// 				"type": "*resources",						// data source type
 811// 				"file_name": "Resources.csv",				// file name in the tp_in_dir
 812// 				"fields": [
 813// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
 814// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
 815// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
 816// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"},
 817// 					{"tag": "TTL", "path": "UsageTTL", "type": "*variable", "value": "~*req.4"},
 818// 					{"tag": "Limit", "path": "Limit", "type": "*variable", "value": "~*req.5"},
 819// 					{"tag": "AllocationMessage", "path": "AllocationMessage", "type": "*variable", "value": "~*req.6"},
 820// 					{"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.7"},
 821// 					{"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~*req.8"},
 822// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.9"},
 823// 					{"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~*req.10"},
 824// 				],
 825// 			},
 826// 			{
 827// 				"type": "*stats",						// data source type
 828// 				"file_name": "Stats.csv",				// file name in the tp_in_dir
 829// 				"fields": [
 830// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
 831// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
 832// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
 833// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"},
 834// 					{"tag": "QueueLength", "path": "QueueLength", "type": "*variable", "value": "~*req.4"},
 835// 					{"tag": "TTL", "path": "TTL", "type": "*variable", "value": "~*req.5"},
 836// 					{"tag": "MinItems", "path": "MinItems", "type": "*variable", "value": "~*req.6"},
 837// 					{"tag": "MetricIDs", "path": "MetricIDs", "type": "*variable", "value": "~*req.7"},
 838// 					{"tag": "MetricFilterIDs", "path": "MetricFilterIDs", "type": "*variable", "value": "~*req.8"},
 839// 					{"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.9"},
 840// 					{"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~*req.10"},
 841// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.11"},
 842// 					{"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~*req.12"},
 843// 				],
 844// 			},
 845// 			{
 846// 				"type": "*thresholds",						// data source type
 847// 				"file_name": "Thresholds.csv",				// file name in the tp_in_dir
 848// 				"fields": [
 849// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
 850// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
 851// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
 852// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"},
 853// 					{"tag": "MaxHits", "path": "MaxHits", "type": "*variable", "value": "~*req.4"},
 854// 					{"tag": "MinHits", "path": "MinHits", "type": "*variable", "value": "~*req.5"},
 855// 					{"tag": "MinSleep", "path": "MinSleep", "type": "*variable", "value": "~*req.6"},
 856// 					{"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.7"},
 857// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.8"},
 858// 					{"tag": "ActionIDs", "path": "ActionIDs", "type": "*variable", "value": "~*req.9"},
 859// 					{"tag": "Async", "path": "Async", "type": "*variable", "value": "~*req.10"},
 860// 				],
 861// 			},
 862// 			{
 863// 				"type": "*routes",						// data source type
 864// 				"file_name": "Routes.csv",				// file name in the tp_in_dir
 865// 				"fields": [
 866// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
 867// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
 868// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
 869// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"},
 870// 					{"tag": "Sorting", "path": "Sorting", "type": "*variable", "value": "~*req.4"},
 871// 					{"tag": "SortingParameters", "path": "SortingParameters", "type": "*variable", "value": "~*req.5"},
 872// 					{"tag": "RouteID", "path": "RouteID", "type": "*variable", "value": "~*req.6"},
 873// 					{"tag": "RouteFilterIDs", "path": "RouteFilterIDs", "type": "*variable", "value": "~*req.7"},
 874// 					{"tag": "RouteAccountIDs", "path": "RouteAccountIDs", "type": "*variable", "value": "~*req.8"},
 875// 					{"tag": "RouteRatingPlanIDs", "path": "RouteRatingPlanIDs", "type": "*variable", "value": "~*req.9"},
 876// 					{"tag": "RouteResourceIDs", "path": "RouteResourceIDs", "type": "*variable", "value": "~*req.10"},
 877// 					{"tag": "RouteStatIDs", "path": "RouteStatIDs", "type": "*variable", "value": "~*req.11"},
 878// 					{"tag": "RouteWeight", "path": "RouteWeight", "type": "*variable", "value": "~*req.12"},
 879// 					{"tag": "RouteBlocker", "path": "RouteBlocker", "type": "*variable", "value": "~*req.13"},
 880// 					{"tag": "RouteParameters", "path": "RouteParameters", "type": "*variable", "value": "~*req.14"},
 881// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.15"},
 882// 				],
 883// 			},
 884// 			{
 885// 				"type": "*chargers",						// data source type
 886// 				"file_name": "Chargers.csv",				// file name in the tp_in_dir
 887// 				"fields": [
 888// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
 889// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
 890// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
 891// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"},
 892// 					{"tag": "RunID", "path": "RunID", "type": "*variable", "value": "~*req.4"},
 893// 					{"tag": "AttributeIDs", "path": "AttributeIDs", "type": "*variable", "value": "~*req.5"},
 894// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.6"},
 895// 				],
 896// 			},
 897// 			{
 898// 				"type": "*dispatchers",						// data source type
 899// 				"file_name": "DispatcherProfiles.csv",		// file name in the tp_in_dir
 900// 				"fields": [
 901// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
 902// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
 903// 					{"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~*req.2"},
 904// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.3"},
 905// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.4"},
 906// 					{"tag": "Strategy", "path": "Strategy", "type": "*variable", "value": "~*req.5"},
 907// 					{"tag": "StrategyParameters", "path": "StrategyParameters", "type": "*variable", "value": "~*req.6"},
 908// 					{"tag": "ConnID", "path": "ConnID", "type": "*variable", "value": "~*req.7"},
 909// 					{"tag": "ConnFilterIDs", "path": "ConnFilterIDs", "type": "*variable", "value": "~*req.8"},
 910// 					{"tag": "ConnWeight", "path": "ConnWeight", "type": "*variable", "value": "~*req.9"},
 911// 					{"tag": "ConnBlocker", "path": "ConnBlocker", "type": "*variable", "value": "~*req.10"},
 912// 					{"tag": "ConnParameters", "path": "ConnParameters", "type": "*variable", "value": "~*req.11"},
 913// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.12"},
 914// 				],
 915// 			},
 916// 			{
 917// 				"type": "*dispatcher_hosts",						// data source type
 918// 				"file_name": "DispatcherHosts.csv",					// file name in the tp_in_dir
 919// 				"fields": [
 920// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
 921// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
 922// 					{"tag": "Address", "path": "Address", "type": "*variable", "value": "~*req.2"},
 923// 					{"tag": "Transport", "path": "Transport", "type": "*variable", "value": "~*req.3"},
 924// 					{"tag": "ConnectAttempts", "path": "ConnectAttempts", "type": "*variable", "value":"~*req.4"},
 925// 					{"tag": "Reconnects", "path": "Reconnects", "type": "*variable", "value":"~*req.5"},
 926// 					{"tag": "ConnectTimeout", "path": "ConnectTimeout", "type": "*variable", "value":"~*req.6"},
 927// 					{"tag": "ReplyTimeout", "path": "ReplyTimeout", "type": "*variable", "value":"~*req.7"},
 928// 					{"tag": "TLS", "path": "TLS", "type": "*variable", "value": "~*req.8"},
 929// 					{"tag": "ClientKey", "path": "ClientKey", "type": "*variable", "value":"~*req.9"},
 930// 					{"tag": "ClientCertificate", "path": "ClientCertificate", "type": "*variable", "value":"~*req.10"},
 931// 					{"tag": "CaCertificate", "path": "CaCertificate", "type": "*variable", "value":"~*req.11"},
 932// 				],
 933// 			},
 934// 		],
 935// 	},
 936// ],
 937
 938
 939// "mailer": {
 940// 	"server": "localhost",								// the server to use when sending emails out
 941// 	"auth_user": "cgrates",								// authenticate to email server using this user
 942// 	"auth_password": "CGRateS.org",						// authenticate to email server with this password
 943// 	"from_address": "cgr-mailer@localhost.localdomain"	// from address used when sending emails out
 944// },
 945
 946
 947// "suretax": {
 948// 	"url": "",								// API url
 949// 	"client_number": "",					// client number, provided by SureTax
 950// 	"validation_key": "",					// validation key provided by SureTax
 951// 	"business_unit": "",					// client’s Business Unit
 952// 	"timezone": "Local",					// convert the time of the events to this timezone before sending request out <UTC|Local|$IANA_TZ_DB>
 953// 	"include_local_cost": false,			// sum local calculated cost with tax one in final cost
 954// 	"return_file_code": "0",				// default or Quote purposes <0|Q>
 955// 	"response_group": "03",					// determines how taxes are grouped for the response <03|13>
 956// 	"response_type": "D4",					// determines the granularity of taxes and (optionally) the decimal precision for the tax calculations and amounts in the response
 957// 	"regulatory_code": "03",				// provider type
 958// 	"client_tracking": "~*req.CGRID",		// template extracting client information out of StoredCdr; <RSRParsers>
 959// 	"customer_number": "~*req.Subject",		// template extracting customer number out of StoredCdr; <RSRParsers>
 960// 	"orig_number":  "~*req.Subject", 		// template extracting origination number out of StoredCdr; <RSRParsers>
 961// 	"term_number": "~*req.Destination",		// template extracting termination number out of StoredCdr; <RSRParsers>
 962// 	"bill_to_number": "",					// template extracting billed to number out of StoredCdr; <RSRParsers>
 963// 	"zipcode": "",							// template extracting billing zip code out of StoredCdr; <RSRParsers>
 964// 	"plus4": "",							// template extracting billing zip code extension out of StoredCdr; <RSRParsers>
 965// 	"p2pzipcode": "",						// template extracting secondary zip code out of StoredCdr; <RSRParsers>
 966// 	"p2pplus4": "",							// template extracting secondary zip code extension out of StoredCdr; <RSRParsers>
 967// 	"units": "1",							// template extracting number of “lines” or unique charges contained within the revenue out of StoredCdr; <RSRParsers>
 968// 	"unit_type": "00",						// template extracting number of unique access lines out of StoredCdr; <RSRParsers>
 969// 	"tax_included": "0",					// template extracting tax included in revenue out of StoredCdr; <RSRParsers>
 970// 	"tax_situs_rule": "04",					// template extracting tax situs rule out of StoredCdr; <RSRParsers>
 971// 	"trans_type_code": "010101",			// template extracting transaction type indicator out of StoredCdr; <RSRParsers>
 972// 	"sales_type_code": "R",					// template extracting sales type code out of StoredCdr; <RSRParsers>
 973// 	"tax_exemption_code_list": "",			// template extracting tax exemption code list out of StoredCdr; <RSRParsers>
 974// },
 975
 976
 977// "loader": {											// loader for tariff plans out of .csv files
 978// 	"tpid": "",										// tariff plan identificator
 979// 	"data_path": "./",								// path towards tariff plan files
 980// 	"disable_reverse": false,						// disable reverse computing
 981// 	"field_separator": ",",							// separator used in case of csv files
 982// 	"caches_conns":["*localhost"],
 983// 	"scheduler_conns": ["*localhost"],
 984// 	"gapi_credentials": ".gapi/credentials.json", 	// the path to the credentials for google API or the credentials.json file content
 985// 	"gapi_token": ".gapi/token.json" 				// the path to the token for google API or the token.json file content
 986// },
 987
 988
 989// "migrator": {
 990// 	"out_datadb_type": "redis",
 991// 	"out_datadb_host": "127.0.0.1",
 992// 	"out_datadb_port": "6379",
 993// 	"out_datadb_name": "10",
 994// 	"out_datadb_user": "cgrates",
 995// 	"out_datadb_password": "",
 996// 	"out_datadb_encoding" : "msgpack",		
 997// 	"out_stordb_type": "mysql",
 998// 	"out_stordb_host": "127.0.0.1",
 999// 	"out_stordb_port": "3306",
1000// 	"out_stordb_name": "cgrates",
1001// 	"out_stordb_user": "cgrates",
1002// 	"out_stordb_password": "",
1003// 	"users_filters":[],
1004// 	"out_datadb_opts":{
1005// 		"redisSentinel": "",					
1006// 		"redisCluster": false,					
1007// 		"redisClusterSync": "5s",					
1008// 		"redisClusterOndownDelay": "0",
1009// 		"redisTLS": false,					// enable TLS when connecting to Redis and use the redisClientCertificate, redisClientKey and redisCACertificate for TLS connection
1010// 		"redisClientCertificate":"",		// path to client certificate
1011// 		"redisClientKey":"",				// path to client key
1012// 		"redisCACertificate":"",			// path to CA certificate (populate for self-signed certificate otherwise let it empty)
1013// 	},
1014// 	"out_stordb_opts":{},
1015// },
1016
1017
1018// "dispatchers":{								// DispatcherS config
1019// 	"enabled": false,						// starts DispatcherS service: <true|false>.
1020// 	"indexed_selects": true,				// enable profile matching exclusively on indexes
1021// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
1022// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
1023// 	"suffix_indexed_fields": [],			// query indexes based on these fields for faster processing
1024// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
1025// 	"attributes_conns": [],					// connections to AttributeS for API authorization, empty to disable auth functionality: <""|*internal|$rpc_conns_id>
1026// 	"any_subsystem": true,					// if we match the *any subsystem
1027// },
1028
1029
1030// "registrarc":{
1031//     "rpc":{
1032//         "enabled": false,
1033//         "registrars_conns": [],
1034//         "hosts": [],  
1035//         "refresh_interval": "5m",
1036//     },
1037//     "dispatchers":{
1038//         "enabled": false,
1039//         "registrars_conns": [],
1040//         "hosts": [],  
1041//         "refresh_interval": "5m",
1042//     },
1043// },
1044
1045
1046// "analyzers":{									// AnalyzerS config
1047// 	"enabled": false,							// starts AnalyzerS service: <true|false>.
1048//  	"db_path": "/var/spool/cgrates/analyzers",	// path to the folder where to store the information
1049// 	"index_type": "*scorch",					// the type of index for the storage: <*scorch|*boltdb|*leveldb|*mossdb>
1050// 	"ttl": "24h",								// time to wait before removing the API capture
1051// 	"cleanup_interval": "1h",					// the interval we clean the db
1052// },
1053
1054
1055// "apiers": {
1056// 	"enabled": false,
1057// 	"caches_conns":["*internal"],
1058// 	"scheduler_conns": [],					// connections to SchedulerS for reloads
1059// 	"attributes_conns": [],					// connections to AttributeS for CDRExporter
1060// 	"ees_conns": [],						// connections to EEs
1061// },
1062
1063
1064// "sip_agent": {							// SIP Agents, only used for redirections
1065// 	"enabled": false,					// enables the SIP agent: <true|false>
1066// 	"listen": "127.0.0.1:5060",			// address where to listen for SIP requests <x.y.z.y:1234>
1067// 	"listen_net": "udp",				// network to listen on <udp|tcp|tcp-tls>
1068// 	"sessions_conns": ["*internal"],
1069// 	"timezone": "",						// timezone of the events if not specified  <UTC|Local|$IANA_TZ_DB>
1070// 	"retransmission_timer": "1s",		// the duration to wait to receive an ACK before resending the reply
1071// 	"request_processors": [				// request processors to be applied to SIP messages
1072// 	],
1073// },
1074
1075
1076// "templates": {
1077// 	"*err": [
1078// 			{"tag": "SessionId", "path": "*rep.Session-Id", "type": "*variable",
1079// 				"value": "~*req.Session-Id", "mandatory": true},
1080// 			{"tag": "OriginHost", "path": "*rep.Origin-Host", "type": "*variable",
1081// 				"value": "~*vars.OriginHost", "mandatory": true},
1082// 			{"tag": "OriginRealm", "path": "*rep.Origin-Realm", "type": "*variable",
1083// 				"value": "~*vars.OriginRealm", "mandatory": true},
1084// 	],
1085// 	"*cca": [
1086// 			{"tag": "SessionId", "path": "*rep.Session-Id", "type": "*variable",
1087// 				"value": "~*req.Session-Id", "mandatory": true},
1088// 			{"tag": "ResultCode", "path": "*rep.Result-Code", "type": "*constant",
1089// 				"value": "2001"},
1090// 			{"tag": "OriginHost", "path": "*rep.Origin-Host", "type": "*variable",
1091// 				"value": "~*vars.OriginHost", "mandatory": true},
1092// 			{"tag": "OriginRealm", "path": "*rep.Origin-Realm", "type": "*variable",
1093// 				"value": "~*vars.OriginRealm", "mandatory": true},
1094// 			{"tag": "AuthApplicationId", "path": "*rep.Auth-Application-Id", "type": "*variable",
1095// 				 "value": "~*vars.*appid", "mandatory": true},
1096// 			{"tag": "CCRequestType", "path": "*rep.CC-Request-Type", "type": "*variable",
1097// 				"value": "~*req.CC-Request-Type", "mandatory": true},
1098// 			{"tag": "CCRequestNumber", "path": "*rep.CC-Request-Number", "type": "*variable",
1099// 				"value": "~*req.CC-Request-Number", "mandatory": true},
1100// 	],
1101// 	"*asr": [
1102// 			{"tag": "SessionId", "path": "*diamreq.Session-Id", "type": "*variable",
1103// 				"value": "~*req.Session-Id", "mandatory": true},
1104// 			{"tag": "OriginHost", "path": "*diamreq.Origin-Host", "type": "*variable",
1105// 				"value": "~*req.Destination-Host", "mandatory": true},
1106// 			{"tag": "OriginRealm", "path": "*diamreq.Origin-Realm", "type": "*variable",
1107// 				"value": "~*req.Destination-Realm", "mandatory": true},
1108// 			{"tag": "DestinationRealm", "path": "*diamreq.Destination-Realm", "type": "*variable",
1109// 				"value": "~*req.Origin-Realm", "mandatory": true},
1110// 			{"tag": "DestinationHost", "path": "*diamreq.Destination-Host", "type": "*variable",
1111// 				"value": "~*req.Origin-Host", "mandatory": true},
1112// 			{"tag": "AuthApplicationId", "path": "*diamreq.Auth-Application-Id", "type": "*variable",
1113// 				 "value": "~*vars.*appid", "mandatory": true},
1114// 	],
1115// 	"*rar": [
1116// 		{"tag": "SessionId", "path": "*diamreq.Session-Id", "type": "*variable",
1117// 			"value": "~*req.Session-Id", "mandatory": true},
1118// 		{"tag": "OriginHost", "path": "*diamreq.Origin-Host", "type": "*variable",
1119// 			"value": "~*req.Destination-Host", "mandatory": true},
1120// 		{"tag": "OriginRealm", "path": "*diamreq.Origin-Realm", "type": "*variable",
1121// 			"value": "~*req.Destination-Realm", "mandatory": true},
1122// 		{"tag": "DestinationRealm", "path": "*diamreq.Destination-Realm", "type": "*variable",
1123// 			"value": "~*req.Origin-Realm", "mandatory": true},
1124// 		{"tag": "DestinationHost", "path": "*diamreq.Destination-Host", "type": "*variable",
1125// 			"value": "~*req.Origin-Host", "mandatory": true},
1126// 		{"tag": "AuthApplicationId", "path": "*diamreq.Auth-Application-Id", "type": "*variable",
1127// 			 "value": "~*vars.*appid", "mandatory": true},
1128// 		{"tag": "ReAuthRequestType", "path": "*diamreq.Re-Auth-Request-Type", "type": "*constant",
1129// 			"value": "0"},
1130// 	],
1131// 	"*errSip": [
1132// 			{"tag": "Request", "path": "*rep.Request", "type": "*constant",
1133// 				"value": "SIP/2.0 500 Internal Server Error", "mandatory": true},
1134// 	],
1135// 	"*cdrLog": [ // cdrLog template is used in ActionS to build the event that is send to CDRs in case of *cdrLog actionType
1136// 		{"tag": "ToR", "path": "*cdr.ToR", "type": "*variable",
1137// 			"value": "~*req.BalanceType", "mandatory": true},
1138// 		{"tag": "OriginHost", "path": "*cdr.OriginHost", "type": "*constant",
1139// 			"value": "127.0.0.1", "mandatory": true},
1140// 		{"tag": "RequestType", "path": "*cdr.RequestType", "type": "*constant",
1141// 			"value": "*none", "mandatory": true},
1142// 		{"tag": "Tenant", "path": "*cdr.Tenant", "type": "*variable",
1143// 			"value": "~*req.Tenant", "mandatory": true},
1144// 		{"tag": "Account", "path": "*cdr.Account", "type": "*variable",
1145// 			"value": "~*req.Account", "mandatory": true},
1146// 		{"tag": "Subject", "path": "*cdr.Subject", "type": "*variable",
1147// 			"value": "~*req.Account", "mandatory": true},
1148// 		{"tag": "Cost", "path": "*cdr.Cost", "type": "*variable",
1149// 			"value": "~*req.Cost", "mandatory": true},
1150// 		{"tag": "Source", "path": "*cdr.Source", "type": "*constant",
1151// 			"value": "*cdrLog", "mandatory": true},
1152// 		{"tag": "Usage", "path": "*cdr.Usage", "type": "*constant",
1153// 			"value": "1", "mandatory": true},
1154// 		{"tag": "RunID", "path": "*cdr.RunID", "type": "*variable",
1155// 			"value": "~*req.ActionType", "mandatory": true},
1156// 		{"tag": "SetupTime", "path": "*cdr.SetupTime", "type": "*constant",
1157// 			"value": "*now", "mandatory": true},
1158// 		{"tag": "AnswerTime", "path": "*cdr.AnswerTime", "type": "*constant",
1159// 			"value": "*now", "mandatory": true},
1160// 		{"tag": "PreRated", "path": "*cdr.PreRated", "type": "*constant",
1161// 			"value": "true", "mandatory": true},
1162// 	],
1163// },
1164
1165
1166// "configs": {
1167// 	"enabled": false,
1168// 	"url": "/configs/",										// configs url 
1169// 	"root_dir": "/var/spool/cgrates/configs",				// root directory in case of calling /configs request
1170// },
1171
1172
1173// "apiban": {
1174// 	"enabled": false,
1175// 	"keys": [],
1176// },
1177
1178
1179}