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// 	"http_skip_tls_verify": false,							// if enabled HttpClient will accept any TLS certificate
 14// 	"rounding_decimals": 5,									// system level precision for floats
 15// 	"dbdata_encoding": "*msgpack",							// encoding used to store object data in strings: <*msgpack|*json>
 16// 	"tpexport_dir": "/var/spool/cgrates/tpe",				// path towards export folder for offline TariffPlans
 17// 	"poster_attempts": 3,									// number of attempts before considering post request failed (eg: *http_post, CDR exports)
 18// 	"failed_posts_dir": "/var/spool/cgrates/failed_posts",	// directory path where we store failed requests
 19// 	"failed_posts_ttl": "5s",								// time to wait before writing the failed posts in a single file
 20// 	"default_request_type": "*rated",						// default request type to consider when missing from requests: <""|*prepaid|*postpaid|*pseudoprepaid|*rated>
 21// 	"default_category": "call",								// default category to consider when missing from requests
 22// 	"default_tenant": "cgrates.org",						// default tenant to consider when missing from requests
 23// 	"default_timezone": "Local",							// default timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
 24// 	"default_caching":"*reload",							// default actions to do when caching items
 25// 	"connect_attempts": 5,									// initial server connect attempts
 26// 	"reconnects": -1,										// number of retries in case of connection lost
 27// 	"connect_timeout": "1s",								// consider connection unsuccessful on timeout, 0 to disable the feature
 28// 	"reply_timeout": "2s",									// consider connection down for replies taking longer than this value
 29// 	"locking_timeout": "0",									// timeout internal locks to avoid deadlocks
 30// 	"digest_separator": ",",								// separator to use in replies containing data digests
 31// 	"digest_equal": ":",									// equal symbol used in case of digests
 32// 	"rsr_separator": ";",									// separator used within RSR fields
 33// 	"max_parallel_conns": 100,								// the maximum number of connection used by the *parallel strategy
 34// 	"concurrent_requests": 0,								// number of active concurrent requests 
 35// 	"concurrent_strategy": "*busy",							// strategy for limit active concurrent requests
 36// },
 37
 38
 39// "rpc_conns": {
 40// 	"*localhost": {
 41// 		"conns": [{"address": "127.0.0.1:2012", "transport":"*json"}],
 42// 	},
 43// },							// rpc connections definitions
 44
 45
 46// "data_db": {								// database used to store runtime data (eg: accounts)
 47// 	"db_type": "*redis",					// data_db type: <*redis|*mongo>
 48// 	"db_host": "127.0.0.1",					// data_db host address
 49// 	"db_port": 6379, 						// data_db port to reach the database
 50// 	"db_name": "10", 						// data_db database name to connect to
 51// 	"db_user": "cgrates", 					// username to use when connecting to data_db
 52// 	"db_password": "", 						// password to use when connecting to data_db
 53// 	"redis_sentinel":"",					// the name of sentinel when used
 54// 	"query_timeout":"10s",
 55// 	"remote_conns":[],
 56// 	"replication_conns":[],
 57// 	"items":{
 58// 		"*accounts":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 					
 59// 		"*reverse_destinations": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false},
 60// 		"*destinations": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 61// 		"*rating_plans": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 62// 		"*rating_profiles":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 63// 		"*actions":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 64// 		"*action_plans": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 65// 		"*account_action_plans":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 66// 		"*action_triggers":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 67// 		"*shared_groups":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 68// 		"*timings": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 69// 		"*resource_profiles":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 70// 		"*resources":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 71// 		"*statqueue_profiles": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 72// 		"*statqueues": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 73// 		"*threshold_profiles": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 74// 		"*thresholds": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 75// 		"*filters": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 76// 		"*supplier_profiles":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 77// 		"*attribute_profiles":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 78// 		"*charger_profiles": {"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 79// 		"*dispatcher_profiles":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 80// 		"*dispatcher_hosts":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 81// 		"*filter_indexes" :{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 82// 		"*load_ids":{"remote":false, "replicate":false, "limit": -1, "ttl": "", "static_ttl": false}, 
 83// 	},
 84// },
 85
 86
 87// "stor_db": {								// database used to store offline tariff plans and CDRs
 88// 	"db_type": "*mysql",					// stor database type to use: <*mongo|*mysql|*postgres|*internal>
 89// 	"db_host": "127.0.0.1",					// the host to connect to
 90// 	"db_port": 3306,						// the port to reach the stor_db
 91// 	"db_name": "cgrates",					// stor database name
 92// 	"db_user": "cgrates",					// username to use when connecting to stor_db
 93// 	"db_password": "",						// password to use when connecting to stor_db
 94// 	"max_open_conns": 100,					// maximum database connections opened, not applying for mongo
 95// 	"max_idle_conns": 10,					// maximum database connections idle, not applying for mongo
 96// 	"conn_max_lifetime": 0, 				// maximum amount of time in seconds a connection may be reused (0 for unlimited), not applying for mongo
 97// 	"string_indexed_fields": [],			// indexes on cdrs table to speed up queries, used in case of *mongo and *internal
 98// 	"prefix_indexed_fields":[],				// prefix indexes on cdrs table to speed up queries, used in case of *internal
 99// 	"query_timeout":"10s",
100// 	"sslmode":"disable",					// sslmode in case of *postgres
101// 	"items":{
102// 		"session_costs": {"limit": -1, "ttl": "", "static_ttl": false}, 
103// 		"cdrs": {"limit": -1, "ttl": "", "static_ttl": false}, 		
104// 		"tp_timings":{"limit": -1, "ttl": "", "static_ttl": false}, 					
105// 		"tp_destinations": {"limit": -1, "ttl": "", "static_ttl": false},
106// 		"tp_rates": {"limit": -1, "ttl": "", "static_ttl": false}, 
107// 		"tp_destination_rates": {"limit": -1, "ttl": "", "static_ttl": false}, 
108// 		"tp_rating_plans":{"limit": -1, "ttl": "", "static_ttl": false}, 
109// 		"tp_rating_profiles":{"limit": -1, "ttl": "", "static_ttl": false}, 
110// 		"tp_shared_groups": {"limit": -1, "ttl": "", "static_ttl": false}, 
111// 		"tp_actions":{"limit": -1, "ttl": "", "static_ttl": false}, 
112// 		"tp_action_plans":{"limit": -1, "ttl": "", "static_ttl": false}, 
113// 		"tp_action_triggers":{"limit": -1, "ttl": "", "static_ttl": false}, 
114// 		"tp_account_actions": {"limit": -1, "ttl": "", "static_ttl": false}, 
115// 		"tp_resources":{"limit": -1, "ttl": "", "static_ttl": false}, 
116// 		"tp_stats":{"limit": -1, "ttl": "", "static_ttl": false}, 
117// 		"tp_thresholds": {"limit": -1, "ttl": "", "static_ttl": false}, 
118// 		"tp_filters": {"limit": -1, "ttl": "", "static_ttl": false},
119// 		"tp_suppliers": {"limit": -1, "ttl": "", "static_ttl": false}, 
120// 		"tp_attributes":{"limit": -1, "ttl": "", "static_ttl": false}, 
121// 		"tp_chargers":{"limit": -1, "ttl": "", "static_ttl": false}, 
122// 		"versions": {"limit": -1, "ttl": "", "static_ttl": false}, 
123// 		"tp_dispatcher_profiles":{"limit": -1, "ttl": "", "static_ttl": false}, 
124// 		"tp_dispatcher_hosts":{"limit": -1, "ttl": "", "static_ttl": false}, 
125// 	},
126// },
127
128
129// "listen": {
130// 	"rpc_json": "127.0.0.1:2012",			// RPC JSON listening address
131// 	"rpc_gob": "127.0.0.1:2013",			// RPC GOB listening address
132// 	"http": "127.0.0.1:2080",				// HTTP listening address
133// 	"rpc_json_tls" : "127.0.0.1:2022",		// RPC JSON TLS listening address
134// 	"rpc_gob_tls": "127.0.0.1:2023",		// RPC GOB TLS listening address
135// 	"http_tls": "127.0.0.1:2280",			// HTTP TLS listening address
136// },
137
138
139// "tls": {
140// 	"server_certificate" : "",			// path to server certificate
141// 	"server_key":"",					// path to server key
142// 	"client_certificate" : "",			// path to client certificate
143// 	"client_key":"",					// path to client key
144// 	"ca_certificate":"",				// path to CA certificate (populate for self-signed certificate otherwise let it empty)
145// 	"server_policy":4,					// server_policy determines the TLS Client Authentication (0-NoClientCert, 1-RequestClientCert, 2-RequireAnyClientCert, 3-VerifyClientCertIfGiven, 4-RequireAndVerifyClientCert)
146// 	"server_name":"",
147// },
148
149
150// "http": {										// HTTP server configuration
151// 	"json_rpc_url": "/jsonrpc",					// JSON RPC relative URL ("" to disable)
152// 	"ws_url": "/ws",							// WebSockets relative URL ("" to disable)
153// 	"freeswitch_cdrs_url": "/freeswitch_json",	// Freeswitch CDRS relative URL ("" to disable)
154// 	"http_cdrs": "/cdr_http",					// CDRS relative URL ("" to disable)
155// 	"use_basic_auth": false,					// use basic authentication
156// 	"auth_users": {},							// basic authentication usernames and base64-encoded passwords (eg: { "username1": "cGFzc3dvcmQ=", "username2": "cGFzc3dvcmQy "})
157// },
158
159
160// "schedulers": {
161// 	"enabled": false,				// start Scheduler service: <true|false>
162// 	"cdrs_conns": [],				// connections to CDRs for *cdrlog actions <""|*internal|$rpc_conns_id>
163// 	"filters": [],					// only execute actions matching these filters
164// },
165
166
167// "caches":{
168// 	"*destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},			// destination caching
169// 	"*reverse_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},	// reverse destinations index caching
170// 	"*rating_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},			// rating plans caching
171// 	"*rating_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},		// rating profiles caching
172// 	"*actions": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},				// actions caching
173// 	"*action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},			// action plans caching
174// 	"*account_action_plans": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},	// account action plans index caching
175// 	"*action_triggers": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},		// action triggers caching
176// 	"*shared_groups": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},			// shared groups caching
177// 	"*timings": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},				// timings caching
178// 	"*resource_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},		// control resource profiles caching
179// 	"*resources": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},				// control resources caching
180// 	"*event_resources": {"limit": -1, "ttl": "", "static_ttl": false},							// matching resources to events
181// 	"*statqueue_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},	// statqueue profiles
182// 	"*statqueues": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},			// statqueues with metrics
183// 	"*threshold_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},	// control threshold profiles caching
184// 	"*thresholds": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},			// control thresholds caching
185// 	"*filters": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},				// control filters caching
186// 	"*supplier_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},		// control supplier profile caching
187// 	"*attribute_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},	// control attribute profile caching
188// 	"*charger_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},		// control charger profile caching
189// 	"*dispatcher_profiles": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},	// control dispatcher profile caching
190// 	"*dispatcher_hosts": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},		// control dispatcher hosts caching
191// 	"*resource_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, 				// control resource filter indexes caching
192// 	"*stat_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, 					// control stat filter indexes caching
193// 	"*threshold_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, 				// control threshold filter indexes caching
194// 	"*supplier_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, 				// control supplier filter indexes caching
195// 	"*attribute_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, 				// control attribute filter indexes caching
196// 	"*charger_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, 					// control charger filter indexes caching
197// 	"*dispatcher_filter_indexes" : {"limit": -1, "ttl": "", "static_ttl": false}, 				// control dispatcher filter indexes caching
198// 	"*dispatcher_routes": {"limit": -1, "ttl": "", "static_ttl": false}, 						// control dispatcher routes caching
199// 	"*diameter_messages": {"limit": -1, "ttl": "3h", "static_ttl": false},						// diameter messages caching
200// 	"*rpc_responses": {"limit": 0, "ttl": "2s", "static_ttl": false},							// RPC responses caching
201// 	"*closed_sessions": {"limit": -1, "ttl": "10s", "static_ttl": false},						// closed sessions cached for CDRs
202// 	"*cdr_ids": {"limit": -1, "ttl": "10m", "static_ttl": false},									// protects CDRs against double-charging
203// 	"*load_ids": {"limit": -1, "ttl": "", "static_ttl": false, "precache": false},				// control the load_ids for items
204// 	"*rpc_connections": {"limit": -1, "ttl": "", "static_ttl": false},							// RPC connections caching
205// },
206
207
208// "filters": {								// Filters configuration (*new)
209// 	"stats_conns": [],						// connections to StatS for <*stats> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
210// 	"resources_conns": [],					// connections to ResourceS for <*resources> filters, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
211// },
212
213
214// "rals": {
215// 	"enabled": false,						// enable Rating/Accounting service: <true|false>
216// 	"thresholds_conns": [],					// connections to ThresholdS for account/balance updates, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
217// 	"stats_conns": [],						// connections to StatS for account/balance updates, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
218// 	"rp_subject_prefix_matching": false,	// enables prefix matching for the rating profile subject
219// 	"remove_expired":true,					// enables automatic removal of expired balances
220// 	"max_computed_usage": {					// do not compute usage higher than this, prevents memory overload
221// 		"*any": "189h",
222// 		"*voice": "72h",
223// 		"*data": "107374182400",
224// 		"*sms": "10000",
225// 		"*mms": "10000"
226// 	},
227// 	"max_increments": 1000000,
228// 	"balance_rating_subject":{				// default rating subject in case that balance rating subject is empty
229// 		"*any": "*zero1ns",
230// 		"*voice": "*zero1s"
231// 	},
232// },
233
234
235// "cdrs": {									// CDRs config
236// 	"enabled": false,						// start the CDR Server:  <true|false>
237// 	"extra_fields": [],						// extra fields to store in CDRs for non-generic CDRs (ie: FreeSWITCH JSON)
238// 	"store_cdrs": true,						// store cdrs in StorDB
239// 	"session_cost_retries": 5,				// number of queries to session_costs before recalculating CDR
240// 	"chargers_conns": [],					// connection to ChargerS for CDR forking, empty to disable billing for CDRs: <""|*internal|$rpc_conns_id>
241// 	"rals_conns": [],						// connections to RALs for cost calculation: <""|*internal|$rpc_conns_id>
242// 	"attributes_conns": [],					// connection to AttributeS for altering *raw CDRs, empty to disable attributes functionality: <""|*internal|$rpc_conns_id>
243// 	"thresholds_conns": [],					// connection to ThresholdS for CDR reporting, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
244// 	"stats_conns": [],						// connections to StatS for CDR reporting, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
245// 	"online_cdr_exports":[],				// list of CDRE profiles to use for real-time CDR exports
246// },
247
248
249// "cdre": {												// CDRe config
250// 	"*default": {
251// 		"export_format": "*file_csv",					// exported CDRs format <*file_csv|*file_fwv|*http_post|*http_json_cdr|*http_json_map|*amqp_json_cdr|*amqp_json_map|*sqs_json_map>
252// 		"export_path": "/var/spool/cgrates/cdre",		// path where the exported CDRs will be placed
253// 		"filters" :[],									// filters for this export
254// 		"tenant": "",									// tenant used in filterS.Pass
255// 		"synchronous": false,							// block processing until export has a result
256// 		"attempts": 1,									// export attempts
257// 		"field_separator": ",",							// used field separator in some export formats, eg: *file_csv
258// 		"attributes_context": "",						// attributes context - empty disables attributes processing
259// 		"fields": [										// template of the exported content fields
260// 			{"path": "*exp.CGRID", "type": "*composed", "value": "~*req.CGRID"},
261// 			{"path": "*exp.RunID", "type": "*composed", "value": "~*req.RunID"},
262// 			{"path": "*exp.ToR", "type": "*composed", "value": "~*req.ToR"},
263// 			{"path": "*exp.OriginID", "type": "*composed", "value": "~*req.OriginID"},
264// 			{"path": "*exp.RequestType", "type": "*composed", "value": "~*req.RequestType"},
265// 			{"path": "*exp.Tenant", "type": "*composed", "value": "~*req.Tenant"},
266// 			{"path": "*exp.Category", "type": "*composed", "value": "~*req.Category"},
267// 			{"path": "*exp.Account", "type": "*composed", "value": "~*req.Account"},
268// 			{"path": "*exp.Subject", "type": "*composed", "value": "~*req.Subject"},
269// 			{"path": "*exp.Destination", "type": "*composed", "value": "~*req.Destination"},
270// 			{"path": "*exp.SetupTime", "type": "*composed", "value": "~*req.SetupTime", "layout": "2006-01-02T15:04:05Z07:00"},
271// 			{"path": "*exp.AnswerTime", "type": "*composed", "value": "~*req.AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"},
272// 			{"path": "*exp.Usage", "type": "*composed", "value": "~*req.Usage"},
273// 			{"path": "*exp.Cost", "type": "*composed", "value": "~*req.Cost", "rounding_decimals": 4},
274// 		],
275// 	},
276// },
277
278
279// "ers": {									// EventReaderService
280// 	"enabled": false,						// starts the EventReader service: <true|false>
281// 	"sessions_conns":["*internal"],			// RPC Connections IDs
282// 	"readers": [
283// 		{
284// 			"id": "*default",									// identifier of the EventReader profile
285// 			"type": "*none",									// reader type <*file_csv>
286// 			"row_length" : 0, 									// Number of fields from csv file
287// 			"field_separator": ",",								// separator used in case of csv files
288// 			"run_delay": "0",									// sleep interval in seconds between consecutive runs, -1 to use automation via inotify or 0 to disable running all together
289// 			"concurrent_requests": 1024,						// maximum simultaneous requests/files to process, 0 for unlimited
290// 			"source_path": "/var/spool/cgrates/ers/in",			// read data from this path
291// 			"processed_path": "/var/spool/cgrates/ers/out",		// move processed data here
292// 			"xml_root_path": "",								// path towards one event in case of XML CDRs
293// 			"tenant": "",										// tenant used by import
294// 			"timezone": "",										// timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
295// 			"filters": [],										// limit parsing based on the filters
296// 			"flags": [],										// flags to influence the event processing
297// 			"fields":[											// import fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value
298// 				{"tag": "ToR", "path": "*cgreq.ToR", "type": "*variable", "value": "~*req.2", "mandatory": true},
299// 				{"tag": "OriginID", "path": "*cgreq.OriginID", "type": "*variable", "value": "~*req.3", "mandatory": true},
300// 				{"tag": "RequestType", "path": "*cgreq.RequestType", "type": "*variable", "value": "~*req.4", "mandatory": true},
301// 				{"tag": "Tenant", "path": "*cgreq.Tenant", "type": "*variable", "value": "~*req.6", "mandatory": true},
302// 				{"tag": "Category", "path": "*cgreq.Category", "type": "*variable", "value": "~*req.7", "mandatory": true},
303// 				{"tag": "Account", "path": "*cgreq.Account", "type": "*variable", "value": "~*req.8", "mandatory": true},
304// 				{"tag": "Subject", "path": "*cgreq.Subject", "type": "*variable", "value": "~*req.9", "mandatory": true},
305// 				{"tag": "Destination", "path": "*cgreq.Destination", "type": "*variable", "value": "~*req.10", "mandatory": true},
306// 				{"tag": "SetupTime", "path": "*cgreq.SetupTime", "type": "*variable", "value": "~*req.11", "mandatory": true},
307// 				{"tag": "AnswerTime", "path": "*cgreq.AnswerTime", "type": "*variable", "value": "~*req.12", "mandatory": true},
308// 				{"tag": "Usage", "path": "*cgreq.Usage", "type": "*variable", "value": "~*req.13", "mandatory": true},
309// 			],
310// 			"cache_dump_fields": [],
311// 		},
312// 	],
313// },
314
315
316// "sessions": {
317// 	"enabled": false,						// starts the session service: <true|false>
318// 	"listen_bijson": "127.0.0.1:2014",		// address where to listen for bidirectional JSON-RPC requests
319// 	"chargers_conns": [],					// connections to ChargerS for session forking <""|*internal|$rpc_conns_id>
320// 	"rals_conns": [],						// connections to RALs for rating/accounting <""|*internal|$rpc_conns_id>
321// 	"cdrs_conns": [],						// connections to CDRs for CDR posting <""|*internal|$rpc_conns_id>
322// 	"resources_conns": [],					// connections to ResourceS for resources monitoring <""|*internal|$rpc_conns_id>
323// 	"thresholds_conns": [],					// connections to ThresholdS for reporting session events <""|*internal|$rpc_conns_id>
324// 	"stats_conns": [],						// connections to StatS for reporting session events <""|*internal|$rpc_conns_id>
325// 	"suppliers_conns": [],					// connections to SupplierS for querying suppliers for event <""|*internal|$rpc_conns_id>
326// 	"attributes_conns": [],					// connections to AttributeS for altering event fields <""|*internal|$rpc_conns_id>
327// 	"replication_conns": [],				// replicate sessions towards these session services
328// 	"debit_interval": "0s",					// interval to perform debits on.
329// 	"store_session_costs": false,			// enable storing of the session costs within CDRs
330// 	"default_usage":{						// the usage if the event is missing the usage field
331// 			"*any": "3h",
332// 			"*voice": "3h",
333// 			"*data": "1048576",
334// 			"*sms": "1",
335// 	},
336// 	"session_ttl": "0s",					// time after a session with no updates is terminated, not defined by default
337// 	//"session_ttl_max_delay": "",			// activates session_ttl randomization and limits the maximum possible delay
338// 	//"session_ttl_last_used": "",			// tweak LastUsed for sessions timing-out, not defined by default
339// 	//"session_ttl_usage": "",				// tweak Usage for sessions timing-out, not defined by default
340// 	//"session_last_usage": "",				// tweak LastUsage for session timing-out, not defined by default
341// 	"session_indexes": [],					// index sessions based on these fields for GetActiveSessions API
342// 	"client_protocol": 1.0,					// version of protocol to use when acting as JSON-PRC client <"0","1.0">
343// 	"channel_sync_interval": "0",			// sync channels to detect stale sessions (0 to disable)
344// 	"terminate_attempts": 5,				// attempts to get the session before terminating it
345// 	"alterable_fields": [],					// the session fields that can be updated
346// },
347
348
349// "asterisk_agent": {
350// 	"enabled": false,						// starts the Asterisk agent: <true|false>
351// 	"sessions_conns": ["*internal"],
352// 	"create_cdr": false,					// create CDR out of events and sends it to CDRS component
353// 	"asterisk_conns":[						// instantiate connections to multiple Asterisk servers
354// 		{"address": "127.0.0.1:8088", "user": "cgrates", "password": "CGRateS.org", "connect_attempts": 3,"reconnects": 5}
355// 	],
356// },
357
358
359// "freeswitch_agent": {
360// 	"enabled": false,						// starts the FreeSWITCH agent: <true|false>
361// 	"sessions_conns": ["*internal"],
362// 	"subscribe_park": true,					// subscribe via fsock to receive park events
363// 	"create_cdr": false,					// creates CDR out of events and sends them to CDRS component
364// 	"extra_fields": [],						// extra fields to store in auth/CDRs when creating them
365// 	//"min_dur_low_balance": "5s",			// threshold which will trigger low balance warnings for prepaid calls (needs to be lower than debit_interval)
366// 	//"low_balance_ann_file": "",			// file to be played when low balance is reached for prepaid calls
367// 	"empty_balance_context": "",			// if defined, prepaid calls will be transferred to this context on empty balance
368// 	"empty_balance_ann_file": "",			// file to be played before disconnecting prepaid calls on empty balance (applies only if no context defined)
369// 	"max_wait_connection": "2s",			// maximum duration to wait for a connection to be retrieved from the pool
370// 	"event_socket_conns":[					// instantiate connections to multiple FreeSWITCH servers
371// 		{"address": "127.0.0.1:8021", "password": "ClueCon", "reconnects": 5,"alias":""}
372// 	],
373// },
374
375
376// "kamailio_agent": {
377// 	"enabled": false,						// starts Kamailio agent: <true|false>
378// 	"sessions_conns": ["*internal"],
379// 	"create_cdr": false,					// create CDR out of events and sends them to CDRS component
380// 	"timezone": "",							// timezone of the Kamailio server
381// 	"evapi_conns":[							// instantiate connections to multiple Kamailio servers
382// 		{"address": "127.0.0.1:8448", "reconnects": 5}
383// 	],
384// },
385
386
387// "diameter_agent": {
388// 	"enabled": false,											// enables the diameter agent: <true|false>
389// 	"listen": "127.0.0.1:3868",									// address where to listen for diameter requests <x.y.z.y/x1.y1.z1.y1:1234>
390// 	"listen_net": "tcp",										// transport type for diameter <tcp|sctp>
391// 	"dictionaries_path": "/usr/share/cgrates/diameter/dict/",	// path towards directory holding additional dictionaries to load
392// 	"sessions_conns": ["*internal"],
393// 	"origin_host": "CGR-DA",									// diameter Origin-Host AVP used in replies
394// 	"origin_realm": "cgrates.org",								// diameter Origin-Realm AVP used in replies
395// 	"vendor_id": 0,												// diameter Vendor-Id AVP used in replies
396// 	"product_name": "CGRateS",									// diameter Product-Name AVP used in replies
397// 	"concurrent_requests": -1,									// limit the number of active requests processed by the server <-1|0-n>
398// 	"synced_conn_requests": false,								// process one request at the time per connection
399// 	"asr_template": "",											// enable AbortSession message being sent to client on DisconnectSession
400// 	"templates":{												// default message templates
401// 		"*err": [
402// 				{"tag": "SessionId", "path": "*rep.Session-Id", "type": "*variable",
403// 					"value": "~*req.Session-Id", "mandatory": true},
404// 				{"tag": "OriginHost", "path": "*rep.Origin-Host", "type": "*variable",
405// 					"value": "~*vars.OriginHost", "mandatory": true},
406// 				{"tag": "OriginRealm", "path": "*rep.Origin-Realm", "type": "*variable",
407// 					"value": "~*vars.OriginRealm", "mandatory": true},
408// 		],
409// 		"*cca": [
410// 				{"tag": "SessionId", "path": "*rep.Session-Id", "type": "*variable",
411// 					"value": "~*req.Session-Id", "mandatory": true},
412// 				{"tag": "ResultCode", "path": "*rep.Result-Code", "type": "*constant",
413// 					"value": "2001"},
414// 				{"tag": "OriginHost", "path": "*rep.Origin-Host", "type": "*variable",
415// 					"value": "~*vars.OriginHost", "mandatory": true},
416// 				{"tag": "OriginRealm", "path": "*rep.Origin-Realm", "type": "*variable",
417// 					"value": "~*vars.OriginRealm", "mandatory": true},
418// 				{"tag": "AuthApplicationId", "path": "*rep.Auth-Application-Id", "type": "*variable",
419// 					 "value": "~*vars.*appid", "mandatory": true},
420// 				{"tag": "CCRequestType", "path": "*rep.CC-Request-Type", "type": "*variable",
421// 					"value": "~*req.CC-Request-Type", "mandatory": true},
422// 				{"tag": "CCRequestNumber", "path": "*rep.CC-Request-Number", "type": "*variable",
423// 					"value": "~*req.CC-Request-Number", "mandatory": true},
424// 		],
425// 		"*asr": [
426// 				{"tag": "SessionId", "path": "*diamreq.Session-Id", "type": "*variable",
427// 					"value": "~*req.Session-Id", "mandatory": true},
428// 				{"tag": "OriginHost", "path": "*diamreq.Origin-Host", "type": "*variable",
429// 					"value": "~*req.Destination-Host", "mandatory": true},
430// 				{"tag": "OriginRealm", "path": "*diamreq.Origin-Realm", "type": "*variable",
431// 					"value": "~*req.Destination-Realm", "mandatory": true},
432// 				{"tag": "DestinationRealm", "path": "*diamreq.Destination-Realm", "type": "*variable",
433// 					"value": "~*req.Origin-Realm", "mandatory": true},
434// 				{"tag": "DestinationHost", "path": "*diamreq.Destination-Host", "type": "*variable",
435// 					"value": "~*req.Origin-Host", "mandatory": true},
436// 				{"tag": "AuthApplicationId", "path": "*diamreq.Auth-Application-Id", "type": "*variable",
437// 					 "value": "~*vars.*appid", "mandatory": true},
438// 				{"tag": "UserName", "path": "*diamreq.User-Name", "type": "*variable",
439// 					"value": "~*req.User-Name", "mandatory": true},
440// 				{"tag": "OriginStateID", "path": "*diamreq.Origin-State-Id", "type": "*constant",
441// 					"value": "1"},
442// 		]
443// 	},
444// 	"request_processors": [				// list of processors to be applied to diameter messages
445// 	],
446// },
447
448
449// "radius_agent": {
450// 	"enabled": false,											// enables the radius agent: <true|false>
451// 	"listen_net": "udp",										// network to listen on <udp|tcp>
452// 	"listen_auth": "127.0.0.1:1812",							// address where to listen for radius authentication requests <x.y.z.y:1234>
453// 	"listen_acct": "127.0.0.1:1813",							// address where to listen for radius accounting requests <x.y.z.y:1234>
454// 	"client_secrets": {											// hash containing secrets for clients connecting here <*default|$client_ip>
455// 		"*default": "CGRateS.org"
456// 	},
457// 	"client_dictionaries": {									// per client path towards directory holding additional dictionaries to load (extra to RFC)
458// 		"*default": "/usr/share/cgrates/radius/dict/",			// key represents the client IP or catch-all <*default|$client_ip>
459// 	},
460// 	"sessions_conns": ["*internal"],
461// 	"request_processors": [										// request processors to be applied to Radius messages
462// 	],
463// },
464
465
466// "http_agent": [						// HTTP Agents, ie towards cnc.to MVNE platform
467// ],
468
469
470// "dns_agent": {
471// 	"enabled": false,											// enables the DNS agent: <true|false>
472// 	"listen": "127.0.0.1:2053",									// address where to listen for DNS requests <x.y.z.y:1234>
473// 	"listen_net": "udp",										// network to listen on <udp|tcp|tcp-tls>
474// 	"sessions_conns": ["*internal"],
475// 	"timezone": "",												// timezone of the events if not specified  <UTC|Local|$IANA_TZ_DB>
476// 	"request_processors": [										// request processors to be applied to DNS messages
477// 	],
478// },
479
480
481// "attributes": {								// AttributeS config
482// 	"enabled": false,						// starts attribute service: <true|false>.
483// 	"indexed_selects":true,					// enable profile matching exclusively on indexes
484// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
485// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
486// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
487// 	"process_runs": 1,						// number of run loops when processing event
488// },
489
490
491// "chargers": {								// ChargerS config
492// 	"enabled": false,						// starts charger service: <true|false>.
493// 	"attributes_conns": [],					// connections to AttributeS for event fields altering <""|127.0.0.1:2013>
494// 	"indexed_selects":true,					// enable profile matching exclusively on indexes
495// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
496// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
497// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
498// },
499
500
501// "resources": {								// ResourceS config
502// 	"enabled": false,						// starts ResourceLimiter service: <true|false>.
503// 	"store_interval": "",					// dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
504// 	"thresholds_conns": [],					// connections to ThresholdS for resource reporting, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
505// 	"indexed_selects":true,					// enable profile matching exclusively on indexes
506// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
507// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
508// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
509// },
510
511
512// "stats": {									// StatS config
513// 	"enabled": false,						// starts Stat service: <true|false>.
514// 	"store_interval": "",					// dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
515// 	"store_uncompressed_limit": 0,					// used to compress data
516// 	"thresholds_conns": [],					// connections to ThresholdS for StatUpdates, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
517// 	"indexed_selects":true,					// enable profile matching exclusively on indexes
518// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
519// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
520// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
521// },
522
523
524// "thresholds": {								// ThresholdS
525// 	"enabled": false,						// starts ThresholdS service: <true|false>.
526// 	"store_interval": "",					// dump cache regularly to dataDB, 0 - dump at start/shutdown: <""|$dur>
527// 	"indexed_selects":true,					// enable profile matching exclusively on indexes
528// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
529// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
530// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
531// },
532
533
534// "suppliers": {								// SupplierS config
535// 	"enabled": false,						// starts SupplierS service: <true|false>.
536// 	"indexed_selects":true,					// enable profile matching exclusively on indexes
537// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
538// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
539// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
540// 	"attributes_conns": [],					// connections to AttributeS for altering events before supplier queries: <""|*internal|$rpc_conns_id>
541// 	"resources_conns": [],					// connections to ResourceS for *res sorting, empty to disable functionality: <""|*internal|$rpc_conns_id>
542// 	"stats_conns": [],						// connections to StatS for *stats sorting, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
543// 	"rals_conns": [],						// connections to Rater for calculating cost, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
544// 	"default_ratio":1						// default ratio used in case of *load strategy
545// },
546
547
548// "loaders": [												// LoaderS config
549// 	{
550// 		"id": "*default",									// identifier of the Loader
551// 		"enabled": false,									// starts as service: <true|false>.
552// 		"tenant": "",										// tenant used in filterS.Pass
553// 		"dry_run": false,									// do not send the CDRs to CDRS, just parse them
554// 		"run_delay": 0,										// sleep interval in seconds between consecutive runs, 0 to use automation via inotify
555// 		"lock_filename": ".cgr.lck",						// Filename containing concurrency lock in case of delayed processing
556// 		"caches_conns": ["*internal"],
557// 		"field_separator": ",",								// separator used in case of csv files
558// 		"tp_in_dir": "/var/spool/cgrates/loader/in",		// absolute path towards the directory where the TPs are stored
559// 		"tp_out_dir": "/var/spool/cgrates/loader/out",		// absolute path towards the directory where processed TPs will be moved
560// 		"data":[											// data profiles to load
561// 			{
562// 				"type": "*attributes",						// data source type
563// 				"file_name": "Attributes.csv",				// file name in the tp_in_dir
564// 				"fields": [
565// 					{"tag": "TenantID", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true},
566// 					{"tag": "ProfileID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true},
567// 					{"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~2"},
568// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~3"},
569// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~4"},
570// 					{"tag": "AttributeFilterIDs", "path": "AttributeFilterIDs", "type": "*variable", "value": "~5"},
571// 					{"tag": "Path", "path": "Path", "type": "*variable", "value": "~6"},
572// 					{"tag": "Type", "path": "Type", "type": "*variable", "value": "~7"},
573// 					{"tag": "Value", "path": "Value", "type": "*variable", "value": "~8"},
574// 					{"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~9"},
575// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~10"},
576// 				],
577// 			},
578// 			{
579// 				"type": "*filters",						// data source type
580// 				"file_name": "Filters.csv",				// file name in the tp_in_dir
581// 				"fields": [
582// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true},
583// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true},
584// 					{"tag": "Type", "path": "Type", "type": "*variable", "value": "~2"},
585// 					{"tag": "Element", "path": "Element", "type": "*variable", "value": "~3"},
586// 					{"tag": "Values", "path": "Values", "type": "*variable", "value": "~4"},
587// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~5"},
588// 				],
589// 			},
590// 			{
591// 				"type": "*resources",						// data source type
592// 				"file_name": "Resources.csv",				// file name in the tp_in_dir
593// 				"fields": [
594// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true},
595// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true},
596// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"},
597// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"},
598// 					{"tag": "TTL", "path": "UsageTTL", "type": "*variable", "value": "~4"},
599// 					{"tag": "Limit", "path": "Limit", "type": "*variable", "value": "~5"},
600// 					{"tag": "AllocationMessage", "path": "AllocationMessage", "type": "*variable", "value": "~6"},
601// 					{"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~7"},
602// 					{"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~8"},
603// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~9"},
604// 					{"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~10"},
605// 				],
606// 			},
607// 			{
608// 				"type": "*stats",						// data source type
609// 				"file_name": "Stats.csv",				// file name in the tp_in_dir
610// 				"fields": [
611// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true},
612// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true},
613// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"},
614// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"},
615// 					{"tag": "QueueLength", "path": "QueueLength", "type": "*variable", "value": "~4"},
616// 					{"tag": "TTL", "path": "TTL", "type": "*variable", "value": "~5"},
617// 					{"tag": "MinItems", "path": "MinItems", "type": "*variable", "value": "~6"},
618// 					{"tag": "MetricIDs", "path": "MetricIDs", "type": "*variable", "value": "~7"},
619// 					{"tag": "MetricFilterIDs", "path": "MetricFilterIDs", "type": "*variable", "value": "~8"},
620// 					{"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~9"},
621// 					{"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~10"},
622// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~11"},
623// 					{"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~12"},
624// 				],
625// 			},
626// 			{
627// 				"type": "*thresholds",						// data source type
628// 				"file_name": "Thresholds.csv",				// file name in the tp_in_dir
629// 				"fields": [
630// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true},
631// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true},
632// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"},
633// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"},
634// 					{"tag": "MaxHits", "path": "MaxHits", "type": "*variable", "value": "~4"},
635// 					{"tag": "MinHits", "path": "MinHits", "type": "*variable", "value": "~5"},
636// 					{"tag": "MinSleep", "path": "MinSleep", "type": "*variable", "value": "~6"},
637// 					{"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~7"},
638// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~8"},
639// 					{"tag": "ActionIDs", "path": "ActionIDs", "type": "*variable", "value": "~9"},
640// 					{"tag": "Async", "path": "Async", "type": "*variable", "value": "~10"},
641// 				],
642// 			},
643// 			{
644// 				"type": "*suppliers",						// data source type
645// 				"file_name": "Suppliers.csv",				// file name in the tp_in_dir
646// 				"fields": [
647// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true},
648// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true},
649// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"},
650// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"},
651// 					{"tag": "Sorting", "path": "Sorting", "type": "*variable", "value": "~4"},
652// 					{"tag": "SortingParamameters", "path": "SortingParamameters", "type": "*variable", "value": "~5"},
653// 					{"tag": "SupplierID", "path": "SupplierID", "type": "*variable", "value": "~6"},
654// 					{"tag": "SupplierFilterIDs", "path": "SupplierFilterIDs", "type": "*variable", "value": "~7"},
655// 					{"tag": "SupplierAccountIDs", "path": "SupplierAccountIDs", "type": "*variable", "value": "~8"},
656// 					{"tag": "SupplierRatingPlanIDs", "path": "SupplierRatingPlanIDs", "type": "*variable", "value": "~9"},
657// 					{"tag": "SupplierResourceIDs", "path": "SupplierResourceIDs", "type": "*variable", "value": "~10"},
658// 					{"tag": "SupplierStatIDs", "path": "SupplierStatIDs", "type": "*variable", "value": "~11"},
659// 					{"tag": "SupplierWeight", "path": "SupplierWeight", "type": "*variable", "value": "~12"},
660// 					{"tag": "SupplierBlocker", "path": "SupplierBlocker", "type": "*variable", "value": "~13"},
661// 					{"tag": "SupplierParameters", "path": "SupplierParameters", "type": "*variable", "value": "~14"},
662// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~15"},
663// 				],
664// 			},
665// 			{
666// 				"type": "*chargers",						// data source type
667// 				"file_name": "Chargers.csv",				// file name in the tp_in_dir
668// 				"fields": [
669// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true},
670// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true},
671// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"},
672// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"},
673// 					{"tag": "RunID", "path": "RunID", "type": "*variable", "value": "~4"},
674// 					{"tag": "AttributeIDs", "path": "AttributeIDs", "type": "*variable", "value": "~5"},
675// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~6"},
676// 				],
677// 			},
678// 			{
679// 				"type": "*dispatchers",						// data source type
680// 				"file_name": "DispatcherProfiles.csv",		// file name in the tp_in_dir
681// 				"fields": [
682// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true},
683// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true},
684// 					{"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~2"},
685// 					{"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~3"},
686// 					{"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~4"},
687// 					{"tag": "Strategy", "path": "Strategy", "type": "*variable", "value": "~5"},
688// 					{"tag": "StrategyParameters", "path": "StrategyParameters", "type": "*variable", "value": "~6"},
689// 					{"tag": "ConnID", "path": "ConnID", "type": "*variable", "value": "~7"},
690// 					{"tag": "ConnFilterIDs", "path": "ConnFilterIDs", "type": "*variable", "value": "~8"},
691// 					{"tag": "ConnWeight", "path": "ConnWeight", "type": "*variable", "value": "~9"},
692// 					{"tag": "ConnBlocker", "path": "ConnBlocker", "type": "*variable", "value": "~10"},
693// 					{"tag": "ConnParameters", "path": "ConnParameters", "type": "*variable", "value": "~11"},
694// 					{"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~12"},
695// 				],
696// 			},
697// 			{
698// 				"type": "*dispatcher_hosts",						// data source type
699// 				"file_name": "DispatcherHosts.csv",					// file name in the tp_in_dir
700// 				"fields": [
701// 					{"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true},
702// 					{"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true},
703// 					{"tag": "Address", "path": "Address", "type": "*variable", "value": "~2"},
704// 					{"tag": "Transport", "path": "Transport", "type": "*variable", "value": "~3"},
705// 					{"tag": "TLS", "path": "TLS", "type": "*variable", "value": "~4"},
706// 				],
707// 			},
708// 		],
709// 	},
710// ],
711
712
713// "mailer": {
714// 	"server": "localhost",								// the server to use when sending emails out
715// 	"auth_user": "cgrates",								// authenticate to email server using this user
716// 	"auth_password": "CGRateS.org",						// authenticate to email server with this password
717// 	"from_address": "cgr-mailer@localhost.localdomain"	// from address used when sending emails out
718// },
719
720
721// "suretax": {
722// 	"url": "",								// API url
723// 	"client_number": "",					// client number, provided by SureTax
724// 	"validation_key": "",					// validation key provided by SureTax
725// 	"business_unit": "",					// client’s Business Unit
726// 	"timezone": "Local",					// convert the time of the events to this timezone before sending request out <UTC|Local|$IANA_TZ_DB>
727// 	"include_local_cost": false,			// sum local calculated cost with tax one in final cost
728// 	"return_file_code": "0",				// default or Quote purposes <0|Q>
729// 	"response_group": "03",					// determines how taxes are grouped for the response <03|13>
730// 	"response_type": "D4",					// determines the granularity of taxes and (optionally) the decimal precision for the tax calculations and amounts in the response
731// 	"regulatory_code": "03",				// provider type
732// 	"client_tracking": "~*req.CGRID",		// template extracting client information out of StoredCdr; <RSRParsers>
733// 	"customer_number": "~*req.Subject",		// template extracting customer number out of StoredCdr; <RSRParsers>
734// 	"orig_number":  "~*req.Subject", 		// template extracting origination number out of StoredCdr; <RSRParsers>
735// 	"term_number": "~*req.Destination",		// template extracting termination number out of StoredCdr; <RSRParsers>
736// 	"bill_to_number": "",					// template extracting billed to number out of StoredCdr; <RSRParsers>
737// 	"zipcode": "",							// template extracting billing zip code out of StoredCdr; <RSRParsers>
738// 	"plus4": "",							// template extracting billing zip code extension out of StoredCdr; <RSRParsers>
739// 	"p2pzipcode": "",						// template extracting secondary zip code out of StoredCdr; <RSRParsers>
740// 	"p2pplus4": "",							// template extracting secondary zip code extension out of StoredCdr; <RSRParsers>
741// 	"units": "1",							// template extracting number of “lines” or unique charges contained within the revenue out of StoredCdr; <RSRParsers>
742// 	"unit_type": "00",						// template extracting number of unique access lines out of StoredCdr; <RSRParsers>
743// 	"tax_included": "0",					// template extracting tax included in revenue out of StoredCdr; <RSRParsers>
744// 	"tax_situs_rule": "04",					// template extracting tax situs rule out of StoredCdr; <RSRParsers>
745// 	"trans_type_code": "010101",			// template extracting transaction type indicator out of StoredCdr; <RSRParsers>
746// 	"sales_type_code": "R",					// template extracting sales type code out of StoredCdr; <RSRParsers>
747// 	"tax_exemption_code_list": "",			// template extracting tax exemption code list out of StoredCdr; <RSRParsers>
748// },
749
750
751// "loader": {									// loader for tariff plans out of .csv files
752// 	"tpid": "",								// tariff plan identificator
753// 	"data_path": "./",						// path towards tariff plan files
754// 	"disable_reverse": false,				// disable reverse computing
755// 	"field_separator": ",",					// separator used in case of csv files
756// 	"caches_conns":["*localhost"],
757// 	"scheduler_conns": ["*localhost"],
758// },
759
760
761// "migrator": {
762// 	"out_datadb_type": "redis",
763// 	"out_datadb_host": "127.0.0.1",
764// 	"out_datadb_port": "6379",
765// 	"out_datadb_name": "10",
766// 	"out_datadb_user": "cgrates",
767// 	"out_datadb_password": "",
768// 	"out_datadb_encoding" : "msgpack",
769// 	"out_stordb_type": "mysql",
770// 	"out_stordb_host": "127.0.0.1",
771// 	"out_stordb_port": "3306",
772// 	"out_stordb_name": "cgrates",
773// 	"out_stordb_user": "cgrates",
774// 	"out_stordb_password": "",
775// 	"users_filters":[],
776// },
777
778
779// "dispatchers":{								// DispatcherS config
780// 	"enabled": false,						// starts DispatcherS service: <true|false>.
781// 	"indexed_selects":true,					// enable profile matching exclusively on indexes
782// 	//"string_indexed_fields": [],			// query indexes based on these fields for faster processing
783// 	"prefix_indexed_fields": [],			// query indexes based on these fields for faster processing
784// 	"nested_fields": false,					// determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
785// 	"attributes_conns": [],					// connections to AttributeS for API authorization, empty to disable auth functionality: <""|*internal|$rpc_conns_id>
786// },
787
788
789// "analyzers":{								// AnalyzerS config
790// 	"enabled":false							// starts AnalyzerS service: <true|false>.
791// },
792
793
794// "apiers": {
795// 	"enabled": false,
796// 	"caches_conns":["*internal"],
797// 	"scheduler_conns": [],					// connections to SchedulerS for reloads
798// 	"attributes_conns": [],					// connections to AttributeS for CDRExporter
799// },
800
801}