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}