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// "nodeID": "", // identifier of this instance in the cluster, if empty it will be autogenerated
11// "roundingDecimals": 5, // system level precision for floats
12// "dbDataEncoding": "*msgpack", // encoding used to store object data in strings: <*msgpack|*json>
13// "tpExportDir": "/var/spool/cgrates/tpe", // path towards export folder for offline TariffPlans
14// "defaultRequestType": "*rated", // default request type to consider when missing from requests: <""|*prepaid|*postpaid|*pseudoprepaid|*rated>
15// "defaultCategory": "call", // default category to consider when missing from requests
16// "defaultTenant": "cgrates.org", // default tenant to consider when missing from requests
17// "defaultTimezone": "Local", // default timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
18// "defaultCaching": "*reload", // default actions to do when caching items
19// "cachingDelay": "0s", // add delay before cache reload
20// "minCallDuration": "0s", // only authorize calls with allowed duration higher than this
21// "maxCallDuration": "3h", // maximum call duration a prepaid call can last
22// "connectAttempts": 5, // initial server connect attempts
23// "reconnects": -1, // number of retries in case of connection lost
24// "maxReconnectInterval": "", // time to wait in between reconnect attempts
25// "connectTimeout": "1s", // consider connection unsuccessful on timeout, 0 to disable the feature
26// "replyTimeout": "2s", // consider connection down for replies taking longer than this value
27// "lockingTimeout": "0", // timeout internal locks to avoid deadlocks
28// "digestSeparator": ",", // separator to use in replies containing data digests
29// "digestEqual": ":", // equal symbol used in case of digests
30// "maxParallelConns": 100, // the maximum number of connection used by the *parallel strategy
31// "decimalMaxScale": 0, // the maximum scale for decimal numbers
32// "decimalMinScale": 0, // the minimum scale for decimal numbers
33// "decimalPrecision": 0, // the precision of the decimal operations
34// "decimalRoundingMode": "*toNearestEven", // the rounding mode <*toNearestEven|*toNearestAway|*toZero|*awayFromZero|*toNegativeInf|*toPositiveInf|*toNearestTowardZero>
35// "opts":{
36// // "*exporterIDs": [
37// // {
38// // "tenant": "*any",
39// // "filterIDs": [],
40// // "values": []
41// // }
42// // ]
43// }
44// },
45
46// "logger": {
47// "type": "*syslog", // controls the destination of logs <*syslog|*stdout|*kafkaLog>
48// "level": 6, // system level precision for floats
49// "efsConns": ["*internal"], // connID to efs service
50// "opts": {
51// "failedPostsDir": "/var/spool/cgrates/failed_posts", // path where fail logs are exported
52// "kafkaAttempts": 1, // number of attempts of connecting
53// "kafkaConn": "", // the connection trough kafka
54// "kafkaTopic": "" // the topic from where the events are exported
55// }
56// },
57
58// "cores": {
59// "caps": 0, // maximum concurrent request allowed ( 0 to disabled )
60// "capsStrategy": "*busy", // strategy in case of concurrent requests reached
61// "capsStatsInterval": "0", // the interval duration we sample for caps stats ( 0 to disabled )
62// "conns": {
63// // "*ees": [ // connections to EventExporter
64// // {
65// // "tenant": "",
66// // "filterIDs": [],
67// // "connIDs": ["*internal"]
68// // }
69// },
70// "shutdownTimeout": "1s" // the duration to wait until all services are stopped
71// },
72
73// "rpcConns": { // rpc connections definitions
74// // "*localhost": {
75// // "strategy": "*first", // Controls connection selection within the pool. <*first|*next|*random|*first_positive|*first_positive_async|*broadcast|*broadcast_sync|*broadcast_async|*parallel>
76// // "poolSize": 0, //Sets the connection limit for *parallel strategy (0 means unlimited)
77// // "replyTimeout": "2s",
78// // "conns": [{
79// // "address": "127.0.0.1:2012",
80// // "caCertificate": "",
81// // "clientCertificate": "",
82// // "clientKey": "",
83// // "connectAttempts": 5,
84// // "connectTimeout": "1s",
85// // "maxReconnectInterval": "",
86// // "reconnects": -1,
87// // "replyTimeout": "2s",
88// // "tls": false,
89// // "transport": "*json"
90// // }]
91// // }
92// },
93
94// "db": { // database used to store data (eg: accounts)
95// "dbConns": {
96// "*default": { // The id of the DB connection
97// "dbType": "*internal", // db type: <*internal|*redis|*mysql|*mongo|*postgres>
98// "dbHost": "", // db host address
99// "dbPort": 0, // db port to reach the database
100// "dbName": "", // db database name to connect to
101// "dbUser": "", // username to use when connecting to db
102// "dbPassword": "", // password to use when connecting to db
103// "remoteConns": [], // the conns that are queried when the items are not found in local DB
104// "remoteConnID": "", // the ID to be sent to remoteConns to identify the connection
105// "replicationConns": [], // the conns the items are replicated
106// "replicationFiltered": false, // if this is enabled the replication will be made only to the conns that received a get
107// "replicationCache": "", // the caching action that is executed on the replicationConns when the items are replicated
108// "replicationFailedDir": "", // directory for failed batch replications (used when interval > 0)
109// "replicationInterval": "", // interval between batched replications (0 for immediate)
110// "opts":{
111// "internalDBBackupPath": "/var/lib/cgrates/internal_db/backup/db", // default path taken by AdminSv1.BackupDB, AdminSv1.RestoreDB and AdminSv1.SnapshotDB when "BackupFolderPath" is not provided in params of the API
112// "internalDBDumpInterval": "1m", // dump db regularly to a file: "0" - disables it; "-1" - dump on each set/remove; <""|$dur>
113// "internalDBDumpPath": "/var/lib/cgrates/internal_db/db", // the path where db will be dumped
114// "internalDBFileSizeLimit": "1GB", // maximum size that can be written in a singular dump file
115// "internalDBRewriteInterval": "1h", // rewrite dump files regularly: "0" - disables it; "-1" - rewrite on engine start; "-2" - rewrite on engine shutdown; <""|$dur>
116// "internalDBStartTimeout": "5m", // the amount of wait time until timeout for DB startup
117// "mongoConnScheme": "mongodb", // scheme for MongoDB connection <mongodb|mongodb+srv>
118// "mongoQueryTimeout": "10s", // timeout for query when mongo is used
119// "mysqlDSNParams":{}, // DSN params for opening db
120// "mysqlLocation": "Local", // the location the time from mysql is retrived
121// //"pgSSLCert": "", // file name of the client SSL certificate, replacing the default ~/.postgresql/postgresql.crt
122// //"pgSSLCertMode": "allow", // determines whether a client certificate may be sent to the server, and whether the server is required to request one
123// //"pgSSLKey": "", // location for the secret key used for the client certificate
124// "pgSSLMode": "disable", // determines whether or with what priority a secure SSL TCP/IP connection will be negotiated with the server
125// //"pgSSLPassword": "", // specifies the password for the secret key specified in pgSSLKey
126// //"pgSSLRootCert": "", // name of a file containing SSL certificate authority (CA) certificate(s)
127// "redisBatchSize": 1000, // COUNT size used in redis SCAN queries
128// "redisCACertificate": "", // path to CA certificate (populate for self-signed certificate otherwise let it empty)
129// "redisClientCertificate": "", // path to client certificate
130// "redisClientKey": "", // path to client key
131// "redisCluster": false, // if enabled the db will try to connect to the redis cluster
132// "redisClusterOndownDelay": "0", // the delay before executing the commands if the redis cluster is in the CLUSTERDOWN state
133// "redisClusterSync": "5s", // the sync interval for the redis cluster
134// "redisConnectAttempts": 20, // the maximum amount of dial attempts
135// "redisConnectTimeout": "0", // the amount of wait time until timeout for a connection attempt
136// "redisMaxConns": 10, // the connection pool size
137// "redisPoolPipelineLimit": 0, // maximum number of commands that can be pipelined before flushing (0 means no limit)
138// "redisPoolPipelineWindow": "150µs", // duration after which internal pipelines are flushed (0 disables implicit pipelining)
139// "redisReadTimeout": "0", // the amount of wait time until timeout for reading operations
140// "redisSentinel": "", // the name of sentinel when used
141// "redisTLS": false, // if true it will use a tls connection and use the redisClientCertificate, redisClientKey and redisCACertificate for tls connection
142// "redisWriteTimeout": "0", // the amount of wait time until timeout for writing operations
143// "sqlConnMaxLifetime": "0", // maximum amount of time a connection may be reused (0 for unlimited), not applying for mongo
144// "sqlLogLevel": 3, // sql logger verbosity: 1=Silent, 2=Error, 3=Warn, 4=Info
145// "sqlMaxIdleConns": 10, // maximum database connections idle, not applying for mongo
146// "sqlMaxOpenConns": 100 // maximum database connections opened, not applying for mongo
147// }
148// },
149// },
150// "items":{
151// "*accountFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
152// "*accounts": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
153// "*actionProfileFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
154// "*actionProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
155// "*attributeFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
156// "*attributeProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
157// "*chargerFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
158// "*chargerProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
159// "*filters": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
160// "*ipAllocations": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
161// "*ipFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
162// "*ipProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
163// "*loadIDs": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
164// "*rankingProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
165// "*rankings": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
166// "*rateFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
167// "*rateProfileFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
168// "*rateProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
169// "*resourceFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
170// "*resourceProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
171// "*resources": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
172// "*reverseFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
173// "*routeFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
174// "*routeProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
175// "*statFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
176// "*statQueueProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
177// "*statQueues": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
178// "*thresholdFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false, "dbConn": "*default"},
179// "*thresholdProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
180// "*thresholds": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
181// "*trendProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
182// "*trends": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"},
183// "*versions": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate":false, "dbConn": "*default"}
184// },
185// },
186
187// "listen": {
188// "rpcJSON": "127.0.0.1:2012", // RPC JSON listening address
189// "rpcGOB": "127.0.0.1:2013", // RPC GOB listening address
190// "http": "127.0.0.1:2080", // HTTP listening address
191// "rpcJSONtls" : "127.0.0.1:2022", // RPC JSON TLS listening address
192// "rpcGOBtls": "127.0.0.1:2023", // RPC GOB TLS listening address
193// "httpTLS": "127.0.0.1:2280" // HTTP TLS listening address
194// },
195
196// "tls": {
197// "serverCertificate" : "", // path to server certificate
198// "serverKey":"", // path to server key
199// "clientCertificate" : "", // path to client certificate
200// "clientKey":"", // path to client key
201// "caCertificate":"", // path to CA certificate (populate for self-signed certificate otherwise let it empty)
202// "serverPolicy":4, // serverPolicy determines the TLS Client Authentication (0-NoClientCert, 1-RequestClientCert, 2-RequireAnyClientCert, 3-VerifyClientCertIfGiven, 4-RequireAndVerifyClientCert)
203// "serverName":""
204// },
205
206
207// "http": { // HTTP server configuration
208// "jsonRPCurl": "/jsonrpc", // JSON RPC relative URL ("" to disable)
209// "registrarsURL": "/registrar", // registrar service relative URL
210// "wsURL": "/ws", // WebSockets relative URL ("" to disable)
211// "freeswitchCDRsURL": "/freeswitch_json", // Freeswitch CDRS relative URL ("" to disable)
212// "httpCDRs": "/cdr_http", // CDRS relative URL ("" to disable)
213// "pprofPath": "/debug/pprof/", // endpoint for serving runtime profiling data for pprof visualization
214// "useBasicAuth": false, // use basic authentication
215// "authUsers": {}, // basic authentication usernames and base64-encoded passwords (eg: { "username1": "cGFzc3dvcmQ=", "username2": "cGFzc3dvcmQy "})
216// "clientOpts":{
217// // the optins to configure the net.Dialer
218// "dialFallbackDelay": "300ms",
219// "dialKeepAlive": "30s",
220// "dialTimeout": "30s",
221// // the options to configure the http.Transport
222// "disableCompression": false,
223// "disableKeepAlives": false,
224// "expectContinueTimeout": "0",
225// "forceAttemptHttp2": true,
226// "idleConnTimeout": "90s",
227// "maxConnsPerHost": 0,
228// "maxIdleConns": 100,
229// "maxIdleConnsPerHost": 2,
230// "responseHeaderTimeout": "0",
231// "skipTLSVerification": false, // if enabled Http Client will accept any TLS certificate
232// "tlsHandshakeTimeout": "10s"
233// }
234// },
235
236// "caches":{
237// "partitions": {
238// "*accountFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control coount profile filter indexes caching
239// "*accounts": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control account profile caching
240// "*actionProfileFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control action profile filter indexes caching
241// "*actionProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control action profile caching
242// "*apiban":{"limit": -1, "ttl": "2m", "staticTTL": false, "remote":false, "replicate": false},
243// "*attributeFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control attribute filter indexes caching
244// "*attributeProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control attribute profile caching
245// "*capsEvents": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // caps cached samples
246// "*urIDs": {"limit": -1, "ttl": "10m", "staticTTL": false, "remote":false, "replicate": false}, // protects URs against double-charging
247// "*chargerFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control charger filter indexes caching
248// "*chargerProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control charger profile caching
249// "*closedSessions": {"limit": -1, "ttl": "10s", "staticTTL": false, "remote":false, "replicate": false}, // closed sessions cached for URs
250// "*diameterMessages": {"limit": -1, "ttl": "3h", "staticTTL": false, "remote":false, "replicate": false}, // diameter messages caching
251// "*eventCharges": {"limit": 0, "ttl": "10s", "staticTTL": false, "remote":false, "replicate": false}, // events proccessed by ChargerS
252// "*eventIPs": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // matching ip allocations to events
253// "*eventResources": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // matching resources to events
254// "*filters": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control filters caching
255// "*ipAllocations": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control ip allocations caching
256// "*ipFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control ip filter indexes caching
257// "*ipProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control ip profiles caching
258// "*loadIDs": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control the loadIDs for items
259// "*radiusPackets": {"limit": -1, "ttl": "3h", "staticTTL": false, "remote":false, "replicate": false}, // radius packets caching
260// "*rankingProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control ranking profile caching
261// "*rankings": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control rankings caching
262// "*rateFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control rate filter indexes caching
263// "*rateProfileFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control rate profile filter indexes caching
264// "*rateProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control rate profile caching
265// "*replicationHosts": {"limit": 0, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // the replication hosts cache(used when replicationFiltered is enbled)
266// "*resourceFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control resource filter indexes caching
267// "*resourceProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control resource profiles caching
268// "*resources": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control resources caching
269// "*reverseFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control reverse filter indexes caching used only for set and remove filters
270// "*routeFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control route filter indexes caching
271// "*routeProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control route profile caching
272// "*rpcConnections": {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // RPC connections caching
273// "*rpcResponses": {"limit": 0, "ttl": "2s", "staticTTL": false, "remote":false, "replicate": false}, // RPC responses caching
274// "*sentrypeer":{"limit": -1, "ttl": "24h", "staticTTL": true, "remote":false, "replicate": false},
275// "*statFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control stat filter indexes caching
276// "*statQueueProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // statqueue profiles
277// "*statQueues": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // statQueues with metrics
278// "*stir": {"limit": -1, "ttl": "3h", "staticTTL": false, "remote":false, "replicate": false}, // stirShaken cache keys
279// "*thresholdFilterIndexes" : {"limit": -1, "ttl": "", "staticTTL": false, "remote":false, "replicate": false}, // control threshold filter indexes caching
280// "*thresholdProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control threshold profiles caching
281// "*thresholds": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control thresholds caching
282// "*trendProfiles": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control threshold profiles caching
283// "*trends": {"limit": -1, "ttl": "", "staticTTL": false, "precache": false, "remote":false, "replicate": false}, // control thresholds caching
284// "*uch": {"limit": -1, "ttl": "3h", "staticTTL": false, "remote":false, "replicate": false}, // User cache
285// },
286// "replicationConns": [],
287// "remoteConns": [] // the conns that are queried when the items are not found in cache
288// },
289
290
291// "filters": {
292// "conns": {
293// // "*accounts": [
294// // {
295// // "tenant": "",
296// // "filterIDs": [],
297// // "connIDs": ["*internal"]
298// // }
299// // ],
300// // "*rankings": [
301// // {
302// // "tenant": "",
303// // "filterIDs": [],
304// // "connIDs": ["*internal"]
305// // }
306// // ],
307// // "*resources": [
308// // {
309// // "tenant": "",
310// // "filterIDs": [],
311// // "connIDs": ["*internal"]
312// // }
313// // ],
314// // "*stats": [
315// // {
316// // "tenant": "",
317// // "filterIDs": [],
318// // "connIDs": ["*internal"]
319// // }
320// // ],
321// // "*trends": [
322// // {
323// // "tenant": "",
324// // "filterIDs": [],
325// // "connIDs": ["*internal"]
326// // }
327// // ]
328// }
329// },
330
331
332// "ers": { // EventReaderService
333// "enabled": false, // starts the EventReader service: <true|false>
334// "conns": {
335// // "*ees": [ // connection for routing processed and invalid messages through EEs
336// // {
337// // "tenant": "",
338// // "filterIDs": [],
339// // "connIDs": ["*internal"]
340// // }
341// // ],
342// // "*sessions": [ // RPC Connections IDs
343// // {
344// // "tenant": "",
345// // "filterIDs": [],
346// // "connIDs": ["*internal"]
347// // }
348// // ],
349// // "*stats": [ // connections to StatS, empty to disable: <""|*internal|$rpc_conns_id>
350// // {
351// // "tenant": "",
352// // "filterIDs": [],
353// // "connIDs": ["*internal"]
354// // }
355// // "*thresholds": [ // connections to ThresholdS, empty to disable: <""|*internal|$rpc_conns_id>
356// // {
357// // "tenant": "",
358// // "filterIDs": [],
359// // "connIDs": ["*internal"]
360// // }
361// // ],
362// },
363// "partialCacheTTL": "1s", // the duration to cache partial records when not pairing
364// "readers": [
365// {
366// "id": "*default", // identifier of the EventReader profile
367// "type": "*none", // reader type <*fileCSV>
368// "runDelay": "0", // sleep interval in seconds between consecutive runs, "-1" to use automation via inotify; "0" to disable running all together; <""|$dur>
369// "startDelay": "0", // time to wait before an reader starts to run
370// "concurrentRequests": 1024, // maximum simultaneous requests/files to process, 0 for unlimited
371// "sourcePath": "/var/spool/cgrates/ers/in", // read data from this path
372// "processedPath": "/var/spool/cgrates/ers/out", // move processed data here
373// "tenant": "", // tenant used by import
374// "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
375// "eesSuccessIDs": [], // ids of exporters used for moving the raw event to EEs
376// "eesFailedIDs": [], // ids of exporters used for moving the failed raw event to EEs
377// "filters": [], // limit parsing based on the filters
378// "flags": [], // flags to influence the event processing
379// "reconnects": -1, // number of retries in case of connection lost
380// "maxReconnectInterval": "5m", // time to wait in between reconnect attempts
381// "opts": {
382// // AMQP and AMQPv1
383// // "amqpConsumerTag": "cgrates", // unique tag for the consumer, useful for message tracking and consumer management (0.9.1)
384// // "amqpExchange": "", // name of the primary exchange where messages will be published (0.9.1)
385// // "amqpExchangeType": "", // type of the primary exchange (direct, topic, fanout, headers) (0.9.1)
386// // "amqpPassword": "", // password for authentication, exclusive to AMQP 1.0
387// // "amqpQueueID": "cgratesURs", // identifier for the primary queue where messages are consumed (0.9.1/1.0)
388// // "amqpRoutingKey": "", // key used for routing messages to the primary queue (0.9.1)
389// // "amqpUsername": "", // username for SASL PLAIN auth, exclusive to AMQP 1.0, often representing the policy name
390
391// // SQS and S3
392// // "awsKey": "",
393// // "awsRegion": "",
394// // "awsSecret": "",
395// // "awsToken": "",
396
397// // FileCSV
398// "csvFieldSeparator": ",", // separator used when reading the fields
399// "csvHeaderDefineChar": ":", // the starting character for header definition used in case of CSV files
400// // "csvLazyQuotes": false, // if a quote may appear in an unquoted field and a non-doubled quote may appear in a quoted field
401// "csvRowLength": 0, // Number of fields from csv file
402
403// // "ignoreErroredItems": false, // skip items that fail processing instead of aborting the reader
404
405// // Kafka
406// // "kafkaCAPath": "",
407// // "kafkaGroupID": "cgrates", // the group that reads the events
408// // "kafkaMaxWait": "1ms", // the maximum amount of time to wait for new data to come
409// // "kafkaSkipTLSVerify": false,
410// // "kafkaTLS": false, // if set to true it will try to authenticate the server
411// // "kafkaTopic": "cgrates", // the topic from were the events are read
412
413// // nats
414// // "natsCertificateAuthority": "", // the path to a custom certificate authority file( used by tls)
415// // "natsClientCertificate": "", // the path to a client certificate( used by tls)
416// // "natsClientKey": "", // the path to a client key( used by tls)
417// // "natsConsumerName": "cgrates", // in case of JetStream the name of the consumer
418// // "natsJetStream": false, // controls if the nats reader uses the JetStream
419// // "natsJetStreamMaxWait": "5s" // the maximum amount of time to wait for a response
420// // "natsJWTFile": "", // the path to the JWT file( can be the chained file or the user file)
421// // "natsQueueID": "", // the queue id the consumer listen to
422// // "natsSeedFile": "", // the path to the seed files( if the JWT file is mention this is used as seedFile for the JWT user mentioned above)
423// // "natsStreamName": "urs", // the name of the NATS JetStream stream from which the consumer will read messages
424// "natsSubject": "cgratesURs", // the subject from were the events are read
425
426// // Partial
427// // "partialPath": "/", // the path were the partial events will be sent
428// "partialCacheAction": "*none", // the action that will be executed for the partial CSVs that are not matched<*none|*postCDR|*dumpToFile>
429// "partialOrderField": "~*req.AnswerTime",// the field after what the events are order when merged
430// // "partialcsvFieldSeparator": "," // separator used when dumping the fields
431
432// // SQL
433// // "pgSSLMode": "disable", // the ssl mode for postgres db
434// // "sqlBatchSize: 0, // number of SQL rows that can be selected at a time. 0 or lower for unlimited
435// // "sqlDBName": "cgrates", // the name of the database from were the events are read
436// // "sqlDeleteIndexedFields": [], // list of fields to DELETE from the table
437// // "sqlTableName": "urs", // the name of the table from were the events are read
438
439// // SQS
440// // "sqsForcePathStyle": false, // when true, force the request to use path-style addressing, i.e., http://s3.amazonaws.com/BUCKET/KEY. If false, (http://BUCKET.s3.amazonaws.com/KEY)
441// // "sqsQueueID": "cgratesURs", // the queue id for SQS readers from were the events are read
442// // "sqsSkipTlsVerify": false, // if enabled Http Client will accept any TLS certificate
443
444// // S3
445// // "s3BucketID": "cgratesURs", // the bucket id for S3 readers from were the events are read
446// // "s3ForcePathStyle": false, // when true, force the request to use path-style addressing, i.e., http://s3.amazonaws.com/BUCKET/KEY. If false, (http://BUCKET.s3.amazonaws.com/KEY)
447// // "s3SkipTlsVerify": false, // if enabled Http Client will accept any TLS certificate
448
449// // FileXML
450// // "xmlRootPath": "", // path towards one event in case of XML URs
451// },
452// "fields":[ // import fields template, tag will match internally UR field, in case of .csv value will be represented by index of the field value
453// {"tag": "ToR", "path": "*cgreq.ToR", "type": "*variable", "value": "~*req.2", "mandatory": true},
454// {"tag": "OriginID", "path": "*cgreq.OriginID", "type": "*variable", "value": "~*req.3", "mandatory": true},
455// {"tag": "RequestType", "path": "*cgreq.RequestType", "type": "*variable", "value": "~*req.4", "mandatory": true},
456// {"tag": "Tenant", "path": "*cgreq.Tenant", "type": "*variable", "value": "~*req.6", "mandatory": true},
457// {"tag": "Category", "path": "*cgreq.Category", "type": "*variable", "value": "~*req.7", "mandatory": true},
458// {"tag": "Account", "path": "*cgreq.Account", "type": "*variable", "value": "~*req.8", "mandatory": true},
459// {"tag": "Subject", "path": "*cgreq.Subject", "type": "*variable", "value": "~*req.9", "mandatory": true},
460// {"tag": "Destination", "path": "*cgreq.Destination", "type": "*variable", "value": "~*req.10", "mandatory": true},
461// {"tag": "SetupTime", "path": "*cgreq.SetupTime", "type": "*variable", "value": "~*req.11", "mandatory": true},
462// {"tag": "AnswerTime", "path": "*cgreq.AnswerTime", "type": "*variable", "value": "~*req.12", "mandatory": true},
463// {"tag": "Usage", "path": "*cgreq.Usage", "type": "*variable", "value": "~*req.13", "mandatory": true}
464// ],
465// "partialCommitFields": [],
466// "cacheDumpFields": []
467// }
468// ]
469// },
470
471// "efs": {
472// "enabled": false, // starts the EventReader service: <true|false>
473// "posterAttempts": 3, // number of attempts before considering post request failed (eg: *httpPost, UR exports)
474// "failedPostsDir": "/var/spool/cgrates/failed_posts", // directory where failed export requests are stored
475// "failedPostsTTL": "5s", // cache ttl for batching failed posts before writing to disk
476// "failedPostsStaticTTL": true // if false, ttl resets on every cache access
477// },
478
479// "ees": {
480// "enabled": false, // starts the EventReader service: <true|false>
481// "conns": {
482// // "*attributes": [ // RPC Connections IDs
483// // {
484// // "tenant": "",
485// // "filterIDs": [],
486// // "connIDs": ["*internal"]
487// // }
488// // ],
489// },
490// "cache": {
491// "*fileCSV": {"limit": -1, "ttl": "5s", "staticTTL": false}
492// },
493// "exporters": [
494// {
495// "id": "*default", // identifier of the EventReader profile
496// "type": "*none", // exporter type
497// "exportPath": "/var/spool/cgrates/ees", // path where the exported events will be placed
498// "failedPostsDir": "/var/spool/cgrates/failed_posts", // directory path where we store failed requests
499// "concurrentRequests": 0, // maximum simultaneous requests to process, 0 for unlimited
500// "timezone": "", // timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>
501// "conns": {
502// "*efs": [{"connIDs": ["*internal"]}] // connID to efs service
503// },
504// "filters": [], // limit parsing based on the filters
505// "flags": [], // flags to influence the event processing
506// "attributeIDs": [], // select Attribute profiles instead of discovering them
507// "attributeContext": "", // context used to discover matching Attribute profiles
508// "synchronous": false, // block processing until export has a result
509// "blocker": false, // stops the processing of the following exporters
510// "attempts": 1, // export attempts
511// "metricsResetSchedule": "", // cron schedule for resetting exporter metrics (empty disables automatic reset)
512// "opts": { // extra options for exporter
513// // AMQP
514// // "amqpExchange": "", // Exchange, amqp 0.9.1 exclusive
515// // "amqpExchangeType": "", // ExchangeType, amqp 0.9.1 exclusive
516// // "amqpPassword": "", // amqp 1.0 exclusive, used for SASL PLAIN auth, populated with one of its policy's keys
517// // "amqpQueueID": "cgratesURs", // the queue id for AMQP exporters from were the events are exported
518// // "amqpRoutingKey": "", // RoutingKey, amqp 0.9.1 exclusive
519// // "amqpUsername": "", // amqp 1.0 exclusive, used for SASL PLAIN auth, usually represents the policy name
520
521// // SQS and S3
522// // "awsKey": "", // AWSKey
523// // "awsRegion": "", // AWSRegion
524// // "awsSecret": "", // AWSSecret
525// // "awsToken": "", // AWSToken
526
527// // CSV
528// // "csvFieldSeparator": ",", // separator used when reading the fields
529
530// // Elasticsearch options
531// // "elsApiKey": "", // base64-encoded token for auth; overrides username/password and service token
532// // "elsCAPath": "", // path to CA certificate
533// // "elsCertificateFingerPrint": "", // SHA256 hex fingerprint given by Elasticsearch on first launch
534// // "elsCloud": true, // if true, use cloud ID deployment
535// // "elsCompressRequestBody": false, // enable compression on requests
536// // "elsCompressRequestBodyLevel": 0, // compression level <0(gzip)|9(best compression)|-2(HuffmanOnly)|1(best speed)>
537// // "elsDisableRetry": false, // disable retry mechanism
538// // "elsDiscoverNodesInterval": "10s", // discover nodes periodically
539// // "elsDiscoverNodesOnStart": false, // discover nodes when initializing the client
540// // "elsEnableDebugLogger": "false", // enable the debug logging
541// // "elsIndex": "", // target elasticsearch index
542// // "elsLogger": "", // logger type <elsJson|elsColor|elsText>
543// // "elsMaxRetries": 3, // maximum number of retries
544// // "elsOpType": "index", // operation type <index|create>
545// // "elsPassword": "", // password for HTTP Basic Authentication
546// // "elsPipeline": "", // name of the ingest pipeline to use
547// // "elsRefresh": "false", // controls when changes become searchable <true|false|wait_for>
548// // "elsRetryOnStatus": [502,503,504], // status codes for retry
549// // "elsRouting": "", // custom routing value for document storage
550// // "elsServiceToken": "", // service token for auth; if set, overrides username/password
551// // "elsTimeout": "1m", // maximum time to wait for operation
552// // "elsUsername": "", // username for HTTP Basic Authentication
553// // "elsWaitForActiveShards": "1", // number of shard copies required before indexing (default: 1)
554
555// // Kafka
556// // "kafkaCAPath": "", // path to certificate authority pem file
557// // "kafkaDeliveryTimeout": "30s", // max time to wait for a message to be delivered
558// // "kafkaLinger": "10ms", // how long to wait for more records before sending a batch
559// // "kafkaTopic": "cgrates", // the topic from where the events are exported
560// // "kafkaTLS": false, // if set to true it will try to authenticate the server
561// // "kafkaSkipTLSVerify": false, // if set to true it will skip certificate verification
562
563// // Nats
564// // "natsCertificateAuthority": "", // the path to a custom certificate authority file( used by tls)
565// // "natsClientCertificate": "", // the path to a client certificate( used by tls)
566// // "natsClientKey": "", // the path to a client key( used by tls)
567// // "natsJetStream": false, // controls if the nats poster uses the JetStream
568// // "natsJetStreamMaxWait": "5s", // the maximum amount of time to wait for a response
569// // "natsJWTFile": "", // the path to the JWT file( can be the chained file or the user file)
570// // "natsSeedFile": "", // the path to the seed files( if the JWT file is mention this is used as seedFile for the JWT user mentioned above)
571// // "natsSubject": "cgratesURs", // the subject were the events are exported
572
573// //RPC
574// // "caPath": "", // path to CA certificate
575// // "certPath": "", // path to client certificate
576// // "connIDs": [], // connections for connManager to this exporter
577// // "keyPath": "" , // path to server key
578// // "rpcAPIOpts": {} // opts that will be passed within APIOpts
579// // "rpcCodec": "", // for compression, encoding and decoding <internalRPC | BIRPC | JSON/HTTP/GOB>
580// // "rpcConnTimeout" : "1s", // connection unsuccesfull on timeout
581// // "rpcReplyTimeout":"2s", // connection down at replies if taking longer that this value
582// // "serviceMethod": "", // the method that should be called trough RPC
583// // "tls": false,
584
585// // SQL
586// // "mysqlDSNParams": {}, // DSN params
587// // "pgSSLMode": "disable", // the postgresSSLMode for postgres
588// // "sqlConnMaxLifetime": "0", // SQLConnMaxLifetime
589// // "sqlDBName": "cgrates", // the name of the database from where the events are exported
590// // "sqlMaxIdleConns": 0, // SQLMaxIdleConns
591// // "sqlMaxOpenConns": 0, // SQLMaxOpenConns
592// // "sqlUpdateIndexedFields": [], // list of field names used for indexing UPDATE queries from the table
593// // "sqlTableName":"urs", // the name of the table from where the events are exported
594
595// //SQS
596// // "sqsQueueID": "cgratesURs", // the queue id for SQS exporters from were the events are exported
597
598// // S3
599// // "s3BucketID": "cgratesURs", // the bucket id for S3 readers from where the events that are exported
600// // "s3FolderPath": "", // S3FolderPath
601// },
602// "fields":[] // import fields template, tag will match internally UR field, in case of .csv value will be represented by index of the field value
603// }
604// ]
605// },
606
607
608// "sessions": {
609// "enabled": false, // starts the session service: <true|false>
610// "listenBiJSON": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests
611// "listenBiGob": "", // address where to listen for bidirectional GOB-RPC requests
612// "debitInterval": "0s", // interval to perform debits on.
613// "defaultUsage":{ // the usage if the event is missing the usage field
614// "*any": "3h",
615// "*voice": "3h",
616// "*data": "1048576",
617// "*sms": "1"
618// },
619// "sessionTTL": "0s", // time after a session with no updates is terminated, not defined by default
620// //"sessionTTLMaxDelay": "", // activates sessionTTL randomization and limits the maximum possible delay
621// //"sessionTTLLastUsed": "", // tweak LastUsed for sessions timing-out, not defined by default
622// //"sessionTTLUsage": "", // tweak Usage for sessions timing-out, not defined by default
623// //"sessionLastUsage": "", // tweak LastUsage for session timing-out, not defined by default
624// "sessionIndexes": [], // index sessions based on these fields for GetActiveSessions API
625// "clientProtocol": 1.0, // version of protocol to use when acting as JSON-PRC client <"0","1.0">
626// "channelSyncInterval": "0", // sync channels to detect stale sessions (0 to disable)
627// "terminateAttempts": 5, // attempts to get the session before terminating it
628// "alterableFields": [], // the session fields that can be updated
629// //"minDurLowBalance": "5s", // threshold which will trigger low balance warnings for prepaid calls (needs to be lower than debitInterval)
630// "stir": {
631// "allowedAttest": ["*any"], // the default attest for stir/shaken authentication <*any|A|B|C>
632// "payloadMaxduration": "-1", // the duration that stir header is valid after it was created
633// "defaultAttest": "A", // the default attest level if not mentioned in API
634// "publicKeyPath": "", // the path to the public key
635// "privateKeyPath": "", // the path to the private key
636// },
637// "opts": {
638// // "*accounts": [
639// // {
640// // "tenant": "*any",
641// // "filterIDs": [],
642// // "value": false
643// // }
644// // ],
645// // "*accountsDebit": [
646// // {
647// // "tenant": "*any",
648// // "filterIDs": [],
649// // "value": false
650// // }
651// // ],
652// // "*accountsForceUsage": [
653// // {
654// // "tenant": "*any",
655// // "filterIDs": [],
656// // "value": ""
657// // }
658// // ],
659// // "*debit": [
660// // {
661// // "tenant": "*any",
662// // "filterIDs": [],
663// // "value": false
664// // }
665// // ],
666// // "*refund": [
667// // {
668// // "tenant": "*any",
669// // "filterIDs": [],
670// // "value": "false"
671// // }
672// // ],
673// // "*attributes": [
674// // {
675// // "tenant": "*any",
676// // "filterIDs": [],
677// // "value": false
678// // }
679// // ],
680// // "*attributesDerivedReply": [
681// // {
682// // "tenant": "*any",
683// // "filterIDs": [],
684// // "value": false
685// // }
686// // ],
687// // "*blockerError": [
688// // {
689// // "tenant": "*any",
690// // "filterIDs": [],
691// // "value": false
692// // }
693// // ],
694// // "*ur": [
695// // {
696// // "tenant": "*any",
697// // "filterIDs": [],
698// // "value": false
699// // }
700// // ],
701// // "*chargeable": [
702// // {
703// // "tenant": "*any",
704// // "filterIDs": [],
705// // "value": false
706// // }
707// // ],
708// // "*chargers": [
709// // {
710// // "tenant": "*any",
711// // "filterIDs": [],
712// // "value": false
713// // }
714// // ],
715// // "*debitInterval": [
716// // {
717// // "tenant": "*any",
718// // "filterIDs": [],
719// // "value": ""
720// // }
721// // ],
722// // "*ees": [
723// // {
724// // "tenant": "*any",
725// // "filterIDs": [],
726// // "value": false
727// // }
728// // ],
729// // "*eesIDs": [
730// // {
731// // "tenant": "*any",
732// // "filterIDs": [],
733// // "value": ""
734// // }
735// // ],
736// // "*forceDuration": [
737// // {
738// // "tenant": "*any",
739// // "filterIDs": [],
740// // "value": false
741// // }
742// // ],
743// // "*initiate": [
744// // {
745// // "tenant": "*any",
746// // "filterIDs": [],
747// // "value": false
748// // }
749// // ],
750// // "*ips": [
751// // {
752// // "tenant": "*any",
753// // "filterIDs": [],
754// // "value": false
755// // }
756// // ],
757// // "*ipsAllocate": [
758// // {
759// // "tenant": "*any",
760// // "filterIDs": [],
761// // "value": false
762// // }
763// // ],
764// // "*ipsAuthorize": [
765// // {
766// // "tenant": "*any",
767// // "filterIDs": [],
768// // "value": false
769// // }
770// // ],
771// // "*ipsRelease": [
772// // {
773// // "tenant": "*any",
774// // "filterIDs": [],
775// // "value": false
776// // }
777// // ],
778// // "*maxUsage": [
779// // {
780// // "tenant": "*any",
781// // "filterIDs": [],
782// // "value": false
783// // }
784// // ],
785// // "*message": [
786// // {
787// // "tenant": "*any",
788// // "filterIDs": [],
789// // "value": false
790// // }
791// // ],
792// // "*originID": [
793// // {
794// // "tenant": "*any",
795// // "filterIDs": [],
796// // "value": ""
797// // }
798// // ],
799// // "*rates": [
800// // {
801// // "tenant": "*any",
802// // "filterIDs": [],
803// // "value": false
804// // }
805// // ],
806// // "*resources": [
807// // {
808// // "tenant": "*any",
809// // "filterIDs": [],
810// // "value": false
811// // }
812// // ],
813// // "*resourcesAllocate": [
814// // {
815// // "tenant": "*any",
816// // "filterIDs": [],
817// // "value": false
818// // }
819// // ],
820// // "*resourcesAuthorize": [
821// // {
822// // "tenant": "*any",
823// // "filterIDs": [],
824// // "value": false
825// // }
826// // ],
827// // "*resourcesDerivedReply": [
828// // {
829// // "tenant": "*any",
830// // "filterIDs": [],
831// // "value": false
832// // }
833// // ],
834// // "*resourcesRelease": [
835// // {
836// // "tenant": "*any",
837// // "filterIDs": [],
838// // "value": false
839// // }
840// // ],
841// // "*routes": [
842// // {
843// // "tenant": "*any",
844// // "filterIDs": [],
845// // "value": false
846// // }
847// // ],
848// // "*routesDerivedReply": [
849// // {
850// // "tenant": "*any",
851// // "filterIDs": [],
852// // "value": false
853// // }
854// // ],
855// // "*stats": [
856// // {
857// // "tenant": "*any",
858// // "filterIDs": [],
859// // "value": false
860// // }
861// // ],
862// // "*statsDerivedReply": [
863// // {
864// // "tenant": "*any",
865// // "filterIDs": [],
866// // "value": false
867// // }
868// // ],
869// // "*terminate": [
870// // {
871// // "tenant": "*any",
872// // "filterIDs": [],
873// // "value": false
874// // }
875// // ],
876// // "*thresholds": [
877// // {
878// // "tenant": "*any",
879// // "filterIDs": [],
880// // "value": false
881// // }
882// // ],
883// // "*thresholdsDerivedReply": [
884// // {
885// // "tenant": "*any",
886// // "filterIDs": [],
887// // "value": false
888// // }
889// // ],
890// // "*ttl": [
891// // {
892// // "tenant": "*any",
893// // "filterIDs": [],
894// // "value": ""
895// // }
896// // ],
897// // "*ttlLastUsage": [
898// // {
899// // "tenant": "*any",
900// // "filterIDs": [],
901// // "value": ""
902// // }
903// // ],
904// // "*ttlLastUsed": [
905// // {
906// // "tenant": "*any",
907// // "filterIDs": [],
908// // "value": ""
909// // }
910// // ],
911// // "*ttlMaxDelay": [
912// // {
913// // "tenant": "*any",
914// // "filterIDs": [],
915// // "value": ""
916// // }
917// // ],
918// // "*ttlUsage": [
919// // {
920// // "tenant": "*any",
921// // "filterIDs": [],
922// // "value": ""
923// // }
924// // ],
925// // "*update": [
926// // {
927// // "tenant": "*any",
928// // "filterIDs": [],
929// // "value": false
930// // }
931// // ]
932// },
933// "conns": {
934// // "*accounts": [ // connections to AccountS
935// // {
936// // "tenant": "",
937// // "filterIDs": [],
938// // "connIDs": []
939// // }
940// // ],
941// // "*actions": [ // connections to SchedulerS in case of *dynaprepaid request
942// // {
943// // "tenant": "",
944// // "filterIDs": [],
945// // "connIDs": []
946// // }
947// // ],
948// // "*attributes": [ // connections to AttributeS for altering event fields <""|*internal|$rpc_conns_id>
949// // {
950// // "tenant": "",
951// // "filterIDs": [],
952// // "connIDs": []
953// // }
954// // ],
955// // "*chargers": [ // connections to ChargerS for session forking <""|*internal|$rpc_conns_id>
956// // {
957// // "tenant": "",
958// // "filterIDs": [],
959// // "connIDs": []
960// // }
961// // ],
962// // "*ees": [ // connections to EEs for exporting session events <""|*internal|$rpc_conns_id>
963// // {
964// // "tenant": "",
965// // "filterIDs": [],
966// // "connIDs": []
967// // }
968// // ],
969// // "*ips": [ // connections to IPs for monitoring ip usage <""|*internal|$rpc_conns_id>
970// // {
971// // "tenant": "",
972// // "filterIDs": [],
973// // "connIDs": []
974// // }
975// // ],
976// // "*rates": [ // connections to RateS
977// // {
978// // "tenant": "",
979// // "filterIDs": [],
980// // "connIDs": []
981// // }
982// // ],
983// // "*replication": [ // replicate sessions towards these session services
984// // {
985// // "tenant": "",
986// // "filterIDs": [],
987// // "connIDs": []
988// // }
989// // ],
990// // "*routes": [ // connections to RouteS for querying routes for event <""|*internal|$rpc_conns_id>
991// // {
992// // "tenant": "",
993// // "filterIDs": [],
994// // "connIDs": []
995// // }
996// // ],
997// // "*stats": [ // connections to StatS for reporting session events <""|*internal|$rpc_conns_id>
998// // {
999// // "tenant": "",
1000// // "filterIDs": [],
1001// // "connIDs": []
1002// // }
1003// // ],
1004// // "*thresholds": [ // connections to ThresholdS for reporting session events <""|*internal|$rpc_conns_id>
1005// // {
1006// // "tenant": "",
1007// // "filterIDs": [],
1008// // "connIDs": []
1009// // }
1010// // ],
1011// }
1012// },
1013
1014
1015// "asteriskAgent": {
1016// "enabled": false, // starts the Asterisk agent: <true|false>
1017// "conns": {
1018// "*sessions":[{"connIDs":["*birpc_internal"]}]
1019// },
1020// "asteriskConns":[ // instantiate connections to multiple Asterisk servers
1021// {
1022// "address": "127.0.0.1:8088",
1023// "ariWebsocket": false,
1024// "connectAttempts": 3,
1025// "maxReconnectInterval": "",
1026// "password": "CGRateS.org",
1027// "reconnects": 5,
1028// "user": "cgrates"
1029// }
1030// ],
1031// "requestProcessors": [] // list of processors to be applied to Asterisk events
1032// },
1033
1034
1035// "freeswitchAgent": {
1036// "enabled": false, // starts the FreeSWITCH agent: <true|false>
1037// "conns": {
1038// "*sessions":[{"connIDs":["*birpc_internal"]}]
1039// },
1040// "subscribePark": true, // subscribe via fsock to receive park events
1041// "lowBalanceAnnFile": "", // file to be played when low balance is reached for prepaid calls
1042// "emptyBalanceContext": "", // if defined, prepaid calls will be transferred to this context on empty balance
1043// "emptyBalanceAnnFile": "", // file to be played before disconnecting prepaid calls on empty balance (applies only if no context defined)
1044// "maxWaitConnection": "2s", // maximum duration to wait for a connection to be retrieved from the pool
1045// "activeSessionDelimiter": ",", // delimiter for 'show channels' responses and requests
1046// "eventSocketConns":[ // instantiate connections to multiple FreeSWITCH servers
1047// {
1048// "address": "127.0.0.1:8021", // FreeSWITCH server address and port
1049// "alias": "",
1050// "maxReconnectInterval": "", // max time between reconnects ("0" for no limit)
1051// "password": "ClueCon", // authentication password for FreeSWITCH
1052// "reconnects": 5, // max reconnect attempts before giving up ("-1" for no limit)
1053// "replyTimeout": "1m" // max wait time for FreeSWITCH replies
1054// }
1055// ],
1056// "requestProcessors": [] // list of processors to be applied to FReeSWITCH events
1057// },
1058
1059
1060// "kamailioAgent": {
1061// "enabled": false, // starts Kamailio agent: <true|false>
1062// "conns": {
1063// "*sessions":[{"connIDs":["*birpc_internal"]}]
1064// },
1065// "timezone": "", // timezone of the Kamailio server
1066// "evapiConns":[ // instantiate connections to multiple Kamailio servers
1067// {
1068// "address": "127.0.0.1:8448",
1069// "maxReconnectInterval": "",
1070// "reconnects": 5
1071// }
1072// ],
1073// "requestProcessors": [], // list of processors to be applied to Kamailio events
1074// },
1075
1076
1077// "diameterAgent": {
1078// "enabled": false, // enables the diameter agent: <true|false>
1079// "listeners": [
1080// {
1081// "address": "127.0.0.1:3868", // address where to listen for diameter requests <x.y.z.y:1234>
1082// "network": "tcp" // transport type for diameter <tcp|sctp>
1083// }
1084// ],
1085// "dictionariesPath": "/usr/share/cgrates/diameter/dict/", // path towards directory holding additional dictionaries to load
1086// "dictionariesAppendDefaults": true, // if true, dictionaries from the provided path will be appended to the default dictionaries from the go-diameter library
1087// // "ceApplications": [], // list of applications in dictionaries wanted to be included in Capability-Exchange. Needed either "app name", "app ID", or "vendor name.app name/ID"
1088// "conns": {
1089// "*sessions":[{"connIDs":["*birpc_internal"]}]
1090// // "*stats": [ // connections to StatS for reporting session events <""|*internal|$rpc_conns_id>
1091// // {
1092// // "tenant": "",
1093// // "filterIDs": [],
1094// // "connIDs": []
1095// // }
1096// // ],
1097// // "*thresholds": [ // connections to ThresholdS for reporting session events <""|*internal|$rpc_conns_id>
1098// // {
1099// // "tenant": "",
1100// // "filterIDs": [],
1101// // "connIDs": []
1102// // }
1103// // ],
1104// },
1105// "originHost": "CGR-DA", // diameter Origin-Host AVP used in replies
1106// "originRealm": "cgrates.org", // diameter Origin-Realm AVP used in replies
1107// "vendorID": 0, // diameter Vendor-Id AVP used in replies
1108// "productName": "CGRateS", // diameter Product-Name AVP used in replies
1109// "syncedConnRequests": false, // process one request at the time per connection
1110// "asrTemplate": "", // enable AbortSession message being sent to client on DisconnectSession
1111// "rarTemplate": "", // template used to build the Re-Auth-Request
1112// "forcedDisconnect": "*none", // the request to send to diameter on DisconnectSession <*none|*asr|*rar>
1113// "connStatusStatQueueIDs": [], // StatQueue IDs for connection status events
1114// "connStatusThresholdIDs": [], // Threshold IDs for connection status events
1115// "connHealthCheckInterval": "0", // peer connection health check interval (0 to disable)
1116// "requestProcessors": [] // list of processors to be applied to diameter messages
1117// },
1118
1119
1120// "radiusAgent": {
1121// "enabled": false, // enables the radius agent: <true|false>
1122// "listeners":[
1123// {
1124// "network": "udp", // network to listen on <udp|tcp>
1125// "authAddress": "127.0.0.1:1812", // address where to listen for radius authentication requests <x.y.z.y:1234>
1126// "acctAddress": "127.0.0.1:1813" // address where to listen for radius accounting requests <x.y.z.y:1234>
1127// }
1128// ],
1129// "clientSecrets": { // hash containing secrets for clients connecting here <*default|$client_ip>
1130// "*default": "CGRateS.org"
1131// },
1132// "clientDictionaries": { // per client path towards directory holding additional dictionaries to load (extra to RFC)
1133// "*default": [ // key represents the client IP or catch-all <*default|$client_ip>
1134// "/usr/share/cgrates/radius/dict/"
1135// ]
1136// },
1137// "clientDaAddresses": { // configuration for clients capable of handling Dynamic Authorization (CoA/DM) requests.
1138// // "nasIdentifier": { // identifier for the NAS, typically the host from the initial RADIUS packet.
1139// // "transport": "udp", // transport protocol for Dynamic Authorization requests, defaults to UDP.
1140// // "host": "", // optionally specify an alternative host for DA requests. Defaults to the NAS identifier if empty.
1141// // "port": 3799, // port for Dynamic Authorization requests, default is 3799.
1142// // "flags": [] // additional options, currently supports *log for logging DA requests before sending.
1143// // }
1144// },
1145// "requestsCacheKey": "", // used to choose the cache key of a RADIUS packet <RSRParsers>
1146// "conns": {
1147// "*sessions":[{"connIDs":["*internal"]}]
1148// // "*stats": [ // connections to StatS for reporting session events <""|*internal|$rpc_conns_id>
1149// // {
1150// // "tenant": "",
1151// // "filterIDs": [],
1152// // "connIDs": []
1153// // }
1154// // ],
1155// // "*thresholds": [ // connections to ThresholdS for reporting session events <""|*internal|$rpc_conns_id>
1156// // {
1157// // "tenant": "",
1158// // "filterIDs": [],
1159// // "connIDs": []
1160// // }
1161// // ],
1162// },
1163// "dmrTemplate": "*dmr", // template used to build the Disconnect-Request packet
1164// "coaTemplate": "*coa", // template used to build the CoA-Request packet
1165// "requestProcessors": [] // request processors to be applied to Radius messages
1166// },
1167
1168
1169// "httpAgent": [], // HTTP Agents, ie towards cnc.to MVNE platform
1170
1171
1172// "dnsAgent": {
1173// "enabled": false, // enables the DNS agent: <true|false>
1174// "listeners":[
1175// {
1176// "address": "127.0.0.1:53", // address where to listen for DNS requests <x.y.z.y:1234>
1177// "network": "udp" // network to listen on <udp|tcp|tcp-tls>
1178// }
1179// ],
1180// "conns": {
1181// "*sessions":[{"connIDs":["*birpc_internal"]}]
1182// // "*stats": [ // connections to StatS for reporting session events <""|*internal|$rpc_conns_id>
1183// // {
1184// // "tenant": "",
1185// // "filterIDs": [],
1186// // "connIDs": []
1187// // }
1188// // ],
1189// // "*thresholds": [ // connections to ThresholdS for reporting session events <""|*internal|$rpc_conns_id>
1190// // {
1191// // "tenant": "",
1192// // "filterIDs": [],
1193// // "connIDs": []
1194// // }
1195// // ],
1196// },
1197// "timezone": "", // timezone of the events if not specified <UTC|Local|$IANA_TZ_DB>
1198// "requestProcessors": [] // request processors to be applied to DNS messages
1199// },
1200
1201
1202// "prometheusAgent": {
1203// "enabled": false, // enables the prometheus agent: <true|false>
1204// "path": "/prometheus", // endpoint for prometheus metrics
1205// "conns": {
1206// // "*admins": [ // connections to AdminS, empty to disable: <""|*internal|$rpc_conns_id>
1207// // {
1208// // "tenant": "",
1209// // "filterIDs": [],
1210// // "connIDs": []
1211// // }
1212// // ],
1213// // "*caches": [ // connections to CacheS, empty to disable: <""|*internal|$rpc_conns_id>
1214// // {
1215// // "tenant": "",
1216// // "filterIDs": [],
1217// // "connIDs": []
1218// // }
1219// // ],
1220// // "*cores": [ // connections to CoreS, empty to disable: <""|*internal|$rpc_conns_id>
1221// // {
1222// // "tenant": "",
1223// // "filterIDs": [],
1224// // "connIDs": []
1225// // }
1226// // ],
1227// // "*stats": [ // connections to StatS, empty to disable: <""|*internal|$rpc_conns_id>
1228// // {
1229// // "tenant": "",
1230// // "filterIDs": [],
1231// // "connIDs": []
1232// // }
1233// // ],
1234// },
1235// "cacheIDs": [], // cache partition IDs to collect statistics for, empty for all partitions
1236// "statQueueIDs": [] // StatQueue IDs to collect metrics from <[tenant]:ID>
1237// },
1238
1239
1240// "attributes": {
1241// "enabled": false, // starts attribute service: <true|false>
1242// "conns": {
1243// // "*accounts": [ // connections to AccountS, empty to disable: <""|*internal|$rpc_conns_id>
1244// // {
1245// // "tenant": "",
1246// // "filterIDs": [],
1247// // "connIDs": ["*internal"]
1248// // }
1249// // ],
1250// // "*resources": [ // connections to ResourceS, empty to disable: <""|*internal|$rpc_conns_id>
1251// // {
1252// // "tenant": "",
1253// // "filterIDs": [],
1254// // "connIDs": ["*internal"]
1255// // }
1256// // ],
1257// // "*stats": [ // connections to StatS, empty to disable: <""|*internal|$rpc_conns_id>
1258// // {
1259// // "tenant": "",
1260// // "filterIDs": [],
1261// // "connIDs": ["*internal"]
1262// // }
1263// // ],
1264// },
1265// "indexedSelects": true, // enable profile matching exclusively on indexes
1266// //"stringIndexedFields": [], // query indexes based on these fields for faster processing
1267// "prefixIndexedFields": [], // query indexes based on these fields for faster processing
1268// "suffixIndexedFields": [], // query indexes based on these fields for faster processing
1269// "existsIndexedFields": [], // query indexes based on these fields for faster processing
1270// "notExistsIndexedFields": [], // query indexes based on these fields for faster processing
1271// "nestedFields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
1272// "opts":{
1273// // "*processRuns": [ // number of run loops when processing event
1274// // {
1275// // "tenant": "*any",
1276// // "filterIDs": [],
1277// // "value": "1"
1278// // }
1279// // ],
1280// // "*profileIDs": [
1281// // {
1282// // "tenant": "*any",
1283// // "filterIDs": [],
1284// // "values": []
1285// // }
1286// // ],
1287// // "*profileIgnoreFilters": [ // ignore the filters for attributeIDs
1288// // {
1289// // "tenant": "*any",
1290// // "filterIDs": [],
1291// // "value": false
1292// // }
1293// // ]
1294// // "*profileRuns": [ // number of runs a profile will process during the event
1295// // {
1296// // "tenant": "*any",
1297// // "filterIDs": [],
1298// // "value": 0
1299// // }
1300// // ],
1301// }
1302// },
1303
1304
1305// "chargers": {
1306// "enabled": false, // starts charger service: <true|false>
1307// "conns": {
1308// // "*attributes": [ // connections to AttributeS for event fields altering <""|127.0.0.1:2013>
1309// // {
1310// // "tenant": "",
1311// // "filterIDs": [],
1312// // "connIDs": ["*internal"]
1313// // }
1314// // ],
1315// },
1316// "indexedSelects": true, // enable profile matching exclusively on indexes
1317// //"stringIndexedFields": [], // query indexes based on these fields for faster processing
1318// "prefixIndexedFields": [], // query indexes based on these fields for faster processing
1319// "suffixIndexedFields": [], // query indexes based on these fields for faster processing
1320// "existsIndexedFields": [], // query indexes based on these fields for faster processing
1321// "notExistsIndexedFields": [], // query indexes based on these fields for faster processing
1322// "nestedFields": false // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
1323// },
1324
1325
1326// "resources": {
1327// "enabled": false, // starts ResourceLimiter service: <true|false>
1328// "storeInterval": "", // dump cache regularly to db, 0 - dump at start/shutdown: <""|$dur>
1329// "conns": {
1330// // "*thresholds": [ // connections to ThresholdS for resource reporting, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
1331// // {
1332// // "tenant": "",
1333// // "filterIDs": [],
1334// // "connIDs": ["*internal"]
1335// // }
1336// // ],
1337// },
1338// "indexedSelects": true, // enable profile matching exclusively on indexes
1339// //"stringIndexedFields": [], // query indexes based on these fields for faster processing
1340// "prefixIndexedFields": [], // query indexes based on these fields for faster processing
1341// "suffixIndexedFields": [], // query indexes based on these fields for faster processing
1342// "existsIndexedFields": [], // query indexes based on these fields for faster processing
1343// "notExistsIndexedFields": [], // query indexes based on these fields for faster processing
1344// "nestedFields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
1345// "opts":{
1346// // "*units": [
1347// // {
1348// // "tenant": "*any",
1349// // "filterIDs": [],
1350// // "value": 1
1351// // }
1352// // ]
1353// // "*usageID": [
1354// // {
1355// // "tenant": "*any",
1356// // "filterIDs": [],
1357// // "value": ""
1358// // }
1359// // ],
1360// // "*usageTTL": [
1361// // {
1362// // "tenant": "*any",
1363// // "filterIDs": [],
1364// // "value": "72h"
1365// // }
1366// // ],
1367// }
1368// },
1369
1370// "ips": {
1371// "enabled": false, // enables the IPs service: <true|false>
1372// "storeInterval": "", // dump cache regularly to db, 0 - dump at start/shutdown: <""|$dur>
1373// "indexedSelects": true, // enable profile matching exclusively on indexes
1374// //"stringIndexedFields": [], // query indexes based on these fields for faster processing
1375// "prefixIndexedFields": [], // query indexes based on these fields for faster processing
1376// "suffixIndexedFields": [], // query indexes based on these fields for faster processing
1377// "existsIndexedFields": [], // query indexes based on these fields for faster processing
1378// "notExistsIndexedFields": [], // query indexes based on these fields for faster processing
1379// "nestedFields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
1380// "opts":{
1381// // "*allocationID": [
1382// // {
1383// // "tenant": "*any",
1384// // "filterIDs": [],
1385// // "value": ""
1386// // }
1387// // ],
1388// // "*ttl": [
1389// // {
1390// // "tenant": "*any",
1391// // "filterIDs": [],
1392// // "value": "72h"
1393// // }
1394// // ],
1395// // "*units": [
1396// // {
1397// // "tenant": "*any",
1398// // "filterIDs": [],
1399// // "value": 1
1400// // }
1401// // ]
1402// }
1403// },
1404
1405
1406// "stats": {
1407// "enabled": false, // starts Stat service: <true|false>
1408// "storeInterval": "", // dump cache regularly to db, 0 - dump at start/shutdown: <""|$dur>
1409// "storeUncompressedLimit": 0, // used to compress data
1410// "conns": {
1411// // "*ees": [ // connections to EEs for StatUpdates, empty to disable export functionality: <""|*internal|$rpc_conns_id>
1412// // {
1413// // "tenant": "",
1414// // "filterIDs": [],
1415// // "connIDs": ["*internal"]
1416// // }
1417// // ],
1418// // "*thresholds": [ // connections to ThresholdS for StatUpdates, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
1419// // {
1420// // "tenant": "",
1421// // "filterIDs": [],
1422// // "connIDs": ["*internal"]
1423// // }
1424// // ],
1425// },
1426// "eesExporterIDs": [], // list of EventExporter profiles to use for real-time StatUpdate exports
1427// "indexedSelects": true, // enable profile matching exclusively on indexes
1428// //"stringIndexedFields": [], // query indexes based on these fields for faster processing
1429// "prefixIndexedFields": [], // query indexes based on these fields for faster processing
1430// "suffixIndexedFields": [], // query indexes based on these fields for faster processing
1431// "existsIndexedFields": [], // query indexes based on these fields for faster processing
1432// "notExistsIndexedFields": [], // query indexes based on these fields for faster processing
1433// "nestedFields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
1434// "opts": {
1435// // "*profileIDs": [
1436// // {
1437// // "tenant": "*any",
1438// // "filterIDs": [],
1439// // "values": []
1440// // }
1441// // ],
1442// // "*profileIgnoreFilters": [ // ignore the filters for statIDs
1443// // {
1444// // "tenant": "*any",
1445// // "filterIDs": [],
1446// // "value": false
1447// // }
1448// // ],
1449// // "*roundingDecimals": [ // ignore the filters for statIDs
1450// // {
1451// // "tenant": "*any",
1452// // "filterIDs": [],
1453// // "value": 5
1454// // }
1455// // ]
1456// }
1457// },
1458
1459
1460// "thresholds": {
1461// "enabled": false, // starts ThresholdS service: <true|false>
1462// "storeInterval": "", // dump cache regularly to db, 0 - dump at start/shutdown: <""|$dur>
1463// "indexedSelects": true, // enable profile matching exclusively on indexes
1464// //"stringIndexedFields": [], // query indexes based on these fields for faster processing
1465// "prefixIndexedFields": [], // query indexes based on these fields for faster processing
1466// "suffixIndexedFields": [], // query indexes based on these fields for faster processing
1467// "existsIndexedFields": [], // query indexes based on these fields for faster processing
1468// "notExistsIndexedFields": [], // query indexes based on these fields for faster processing
1469// "nestedFields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
1470// "conns": {
1471// // "*actions": [ // connections to ActionS to execute the actions
1472// // {
1473// // "tenant": "",
1474// // "filterIDs": [],
1475// // "connIDs": ["*internal"]
1476// // }
1477// // ],
1478// // "*attributes": [ // connections to AttributeS to sent threshold events, empty to disable: <""|*internal|$rpc_conns_id>
1479// // {
1480// // "tenant": "",
1481// // "filterIDs": [],
1482// // "connIDs": ["*internal"]
1483// // }
1484// // ],
1485// // "*ees": [ // connections to EEs to sent threshold events, empty to disable export functionality: <""|*internal|$rpc_conns_id>
1486// // {
1487// // "tenant": "",
1488// // "filterIDs": [],
1489// // "connIDs": ["*internal"]
1490// // }
1491// // ],
1492// },
1493// "eesExporterIDs": [], // list of EventExporter profiles to use for real-time threshold exports
1494// "opts":{
1495// // "*profileIgnoreFilters": [ // ignore the filters for thresholdIDs
1496// // {
1497// // "tenant": "*any",
1498// // "filterIDs": [],
1499// // "value": false
1500// // }
1501// // ],
1502// // "*thresholdsIDs": [
1503// // {
1504// // "tenant": "*any",
1505// // "filterIDs": [],
1506// // "values": []
1507// // }
1508// // ]
1509// }
1510// },
1511
1512
1513// "trends":{
1514// "enabled": false, // starts TrendS service: <true|false>.
1515// "storeInterval": "", // dump cache regularly to db, 0 - dump at start/shutdown: <""|$dur>
1516// "storeUncompressedLimit": 0, // used to compress metrics
1517// "conns": {
1518// // "*ees": [ // connections to EEs for trendSummary, empty to disable export functionality: <""|*internal|$rpc_conns_id>
1519// // {
1520// // "tenant": "",
1521// // "filterIDs": [],
1522// // "connIDs": ["*internal"]
1523// // }
1524// // ],
1525// // "*stats": [ // connections to StatS ,empty to disable stats functionality: <""|*internal|$rpc_conns_id>
1526// // {
1527// // "tenant": "",
1528// // "filterIDs": [],
1529// // "connIDs": ["*internal"]
1530// // }
1531// // ],
1532// // "*thresholds": [ // connections to ThresholdS ,empty to disable stats functionality: <""|*internal|$rpc_conns_id>
1533// // {
1534// // "tenant": "",
1535// // "filterIDs": [],
1536// // "connIDs": ["*internal"]
1537// // }
1538// // ],
1539// },
1540// "scheduledIDs": {}, // autoload these trend ids on start
1541// "eesExporterIDs": [] // list of EventExporter profiles to use for real-time trendSummary exports
1542// },
1543
1544
1545// "rankings":{
1546// "enabled": false, // starts RankingS service: <true|false>.
1547// "storeInterval": "", // dump cache regularly to db, 0 - dump at start/shutdown: <""|$dur>
1548// "conns": {
1549// // "*ees": [ // connections to EEs for rankingSummary events, empty to disable export functionality: <""|*internal|$rpc_conns_id>
1550// // {
1551// // "tenant": "",
1552// // "filterIDs": [],
1553// // "connIDs": ["*internal"]
1554// // }
1555// // ],
1556// // "*stats": [ // connections to StatS ,empty to disable stats functionality: <""|*internal|$rpc_conns_id>
1557// // {
1558// // "tenant": "",
1559// // "filterIDs": [],
1560// // "connIDs": ["*internal"]
1561// // }
1562// // ],
1563// // "*thresholds": [ // connections to ThresholdS for rankingSummary reporting, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
1564// // {
1565// // "tenant": "",
1566// // "filterIDs": [],
1567// // "connIDs": ["*internal"]
1568// // }
1569// // ],
1570// },
1571// "scheduledIDs": {}, // autoload these ranking ids on start
1572// "eesExporterIDs": [] // list of EventExporter profiles to use for real-time rankingSummary exports
1573// },
1574
1575
1576// "routes": {
1577// "enabled": false, // starts RouteS service: <true|false>.
1578// "indexedSelects": true, // enable profile matching exclusively on indexes
1579// //"stringIndexedFields": [], // query indexes based on these fields for faster processing
1580// "prefixIndexedFields": [], // query indexes based on these fields for faster processing
1581// "suffixIndexedFields": [], // query indexes based on these fields for faster processing
1582// "existsIndexedFields": [], // query indexes based on these fields for faster processing
1583// "notExistsIndexedFields": [], // query indexes based on these fields for faster processing
1584// "nestedFields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
1585// "conns": {
1586// // "*accounts": [ // connections to AccountS
1587// // {
1588// // "tenant": "",
1589// // "filterIDs": [],
1590// // "connIDs": ["*internal"]
1591// // }
1592// // ],
1593// // "*attributes": [ // connections to AttributeS for altering events before route queries: <""|*internal|$rpc_conns_id>
1594// // {
1595// // "tenant": "",
1596// // "filterIDs": [],
1597// // "connIDs": ["*internal"]
1598// // }
1599// // ],
1600// // "*rates": [ // connections to RateS
1601// // {
1602// // "tenant": "",
1603// // "filterIDs": [],
1604// // "connIDs": ["*internal"]
1605// // }
1606// // ],
1607// // "*resources": [ // connections to ResourceS for *res sorting, empty to disable functionality: <""|*internal|$rpc_conns_id>
1608// // {
1609// // "tenant": "",
1610// // "filterIDs": [],
1611// // "connIDs": ["*internal"]
1612// // }
1613// // ],
1614// // "*stats": [ // connections to StatS for *stats sorting, empty to disable stats functionality: <""|*internal|$rpc_conns_id>
1615// // {
1616// // "tenant": "",
1617// // "filterIDs": [],
1618// // "connIDs": ["*internal"]
1619// // }
1620// // ],
1621// },
1622// "defaultRatio":1, // default ratio used in case of *load strategy
1623// "opts":{
1624// // "*context": [
1625// // {
1626// // "tenant": "*any",
1627// // "filterIDs": [],
1628// // "value": "*routes"
1629// // }
1630// // ],
1631// // "*ignoreErrors": [
1632// // {
1633// // "tenant": "*any",
1634// // "filterIDs": [],
1635// // "value": "false"
1636// // }
1637// // ],
1638// // "*limit": [
1639// // {
1640// // "tenant": "*any",
1641// // "filterIDs": [],
1642// // "value": 1
1643// // }
1644// // ],
1645// // "*maxCost": [
1646// // {
1647// // "tenant": "*any",
1648// // "filterIDs": [],
1649// // "value": ""
1650// // }
1651// // ],
1652// // "*maxItems": [
1653// // {
1654// // "tenant": "*any",
1655// // "filterIDs": [],
1656// // "value": 1
1657// // }
1658// // ],
1659// // "*offset": [
1660// // {
1661// // "tenant": "*any",
1662// // "filterIDs": [],
1663// // "value": 1
1664// // }
1665// // ],
1666// // "*profileCount": [
1667// // {
1668// // "tenant": "*any",
1669// // "filterIDs": [],
1670// // "value": "1"
1671// // }
1672// // ],
1673// // "*usage": [
1674// // {
1675// // "tenant": "*any",
1676// // "filterIDs": [],
1677// // "value": "1m"
1678// // }
1679// // ]
1680// }
1681// },
1682
1683
1684// "loaders": [
1685// {
1686// "id": "*default", // identifier of the Loader
1687// "enabled": false, // starts as service: <true|false>.
1688// "tenant": "", // tenant used in filterS.Pass
1689// "runDelay": "0", // sleep interval in seconds between consecutive runs, -1 to use automation via inotify or 0 to disable running all together
1690// "lockfilePath": ".cgr.lck", // Filename containing concurrency lock in case of delayed processing
1691// "conns": {
1692// "*caches": [{"connIDs": ["*internal"]}]
1693// },
1694// "fieldSeparator": ",", // separator used in case of csv files
1695// "tpInPath": "/var/spool/cgrates/loader/in", // absolute path towards the directory where the TPs are stored
1696// "tpOutPath": "", // absolute path towards the directory where processed TPs will be moved
1697// "action": "*store", // what should the loader do<*store|*parse|*remove|*dryRun>
1698// "opts": {
1699// // "*cache": "*reload",
1700// // "*forceLock": false,
1701// // "*stopOnError": false,
1702// "*withIndex": true
1703// },
1704// "cache":{
1705// "*accounts":{"limit": -1, "ttl": "5s", "staticTTL": false},
1706// "*actionProfiles":{"limit": -1, "ttl": "5s", "staticTTL": false},
1707// "*attributes":{"limit": -1, "ttl": "5s", "staticTTL": false},
1708// "*chargers":{"limit": -1, "ttl": "5s", "staticTTL": false},
1709// "*filters":{"limit": -1, "ttl": "5s", "staticTTL": false},
1710// "*ips":{"limit": -1, "ttl": "5s", "staticTTL": false},
1711// "*rankings":{"limit": -1, "ttl": "5s", "staticTTL": false},
1712// "*rateProfiles":{"limit": -1, "ttl": "5s", "staticTTL": false},
1713// "*resources":{"limit": -1, "ttl": "5s", "staticTTL": false},
1714// "*routes":{"limit": -1, "ttl": "5s", "staticTTL": false},
1715// "*stats":{"limit": -1, "ttl": "5s", "staticTTL": false},
1716// "*thresholds":{"limit": -1, "ttl": "5s", "staticTTL": false},
1717// "*trends":{"limit": -1, "ttl": "5s", "staticTTL": false}
1718// },
1719// "data":[ // data profiles to load
1720// {
1721// "type": "*filters", // data source type
1722// "fileName": "Filters.csv", // file name in the tpInPath
1723// "fields": [
1724// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1725// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1726// {"tag": "Type", "path": "Rules.Type", "type": "*variable", "value": "~*req.2", "newBranch":true},
1727// {"tag": "Element", "path": "Rules.Element", "type": "*variable", "value": "~*req.3"},
1728// {"tag": "Values", "path": "Rules.Values", "type": "*variable", "value": "~*req.4"}
1729// ]
1730// },
1731// {
1732// "type": "*attributes", // data source type
1733// "fileName": "Attributes.csv", // file name in the tpInPath
1734// "fields": [
1735// {"tag": "TenantID", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1736// {"tag": "ProfileID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1737// {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
1738// {"tag": "Weights", "path": "Weights", "type": "*variable", "value": "~*req.3"},
1739// {"tag": "Blockers", "path": "Blockers", "type": "*variable", "value": "~*req.4"},
1740// {"tag": "AttributeFilterIDs", "path": "Attributes.FilterIDs", "type": "*variable", "value": "~*req.5","newBranch":true},
1741// {"tag": "AttributeBlockers", "path": "Attributes.Blockers", "type": "*variable", "value": "~*req.6"},
1742// {"tag": "Path", "path": "Attributes.Path", "type": "*variable", "value": "~*req.7"},
1743// {"tag": "Type", "path": "Attributes.Type", "type": "*variable", "value": "~*req.8"},
1744// {"tag": "Value", "path": "Attributes.Value", "type": "*variable", "value": "~*req.9"}
1745// ]
1746// },
1747// {
1748// "type": "*resources", // data source type
1749// "fileName": "Resources.csv", // file name in the tpInPath
1750// "fields": [
1751// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1752// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1753// {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
1754// {"tag": "Weights", "path": "Weights", "type": "*variable", "value": "~*req.3"},
1755// {"tag": "TTL", "path": "UsageTTL", "type": "*variable", "value": "~*req.4"},
1756// {"tag": "Limit", "path": "Limit", "type": "*variable", "value": "~*req.5"},
1757// {"tag": "AllocationMessage", "path": "AllocationMessage", "type": "*variable", "value": "~*req.6"},
1758// {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.7"},
1759// {"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~*req.8"},
1760// {"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~*req.9"}
1761// ]
1762// },
1763// {
1764// "type": "*ips", // data source type
1765// "fileName": "IPs.csv", // file name in the tpInPath
1766// "fields": [
1767// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1768// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1769// {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
1770// {"tag": "Weights", "path": "Weights", "type": "*variable", "value": "~*req.3"},
1771// {"tag": "TTL", "path": "TTL", "type": "*variable", "value": "~*req.4"},
1772// {"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~*req.5"},
1773// {"tag": "PoolID", "path": "Pools.ID", "type": "*variable", "value": "~*req.6","newBranch":true},
1774// {"tag": "PoolFilterIDs", "path": "Pools.FilterIDs", "type": "*variable", "value": "~*req.7"},
1775// {"tag": "PoolType", "path": "Pools.Type", "type": "*variable", "value": "~*req.8"},
1776// {"tag": "PoolRange", "path": "Pools.Range", "type": "*variable", "value": "~*req.9"},
1777// {"tag": "PoolStrategy", "path": "Pools.Strategy", "type": "*variable", "value": "~*req.10"},
1778// {"tag": "PoolMessage", "path": "Pools.Message", "type": "*variable", "value": "~*req.11"},
1779// {"tag": "PoolWeights", "path": "Pools.Weights", "type": "*variable", "value": "~*req.12"},
1780// {"tag": "PoolBlockers", "path": "Pools.Blockers", "type": "*variable", "value": "~*req.13"}
1781// ]
1782// },
1783// {
1784// "type": "*stats", // data source type
1785// "fileName": "Stats.csv", // file name in the tpInPath
1786// "fields": [
1787// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1788// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1789// {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
1790// {"tag": "Weights", "path": "Weights", "type": "*variable", "value": "~*req.3"},
1791// {"tag": "Blockers", "path": "Blockers", "type": "*variable", "value": "~*req.4"},
1792// {"tag": "QueueLength", "path": "QueueLength", "type": "*variable", "value": "~*req.5"},
1793// {"tag": "TTL", "path": "TTL", "type": "*variable", "value": "~*req.6"},
1794// {"tag": "MinItems", "path": "MinItems", "type": "*variable", "value": "~*req.7"},
1795// {"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~*req.8"},
1796// {"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~*req.9"},
1797// {"tag": "MetricIDs", "path": "Metrics.MetricID", "type": "*variable", "value": "~*req.10","newBranch":true},
1798// {"tag": "MetricFilterIDs", "path": "Metrics.FilterIDs", "type": "*variable", "value": "~*req.11"},
1799// {"tag": "MetricBlockers", "path": "Metrics.Blockers", "type": "*variable", "value": "~*req.12"}
1800// ]
1801// },
1802// {
1803// "type": "*thresholds", // data source type
1804// "fileName": "Thresholds.csv", // file name in the tpInPath
1805// "fields": [
1806// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1807// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1808// {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
1809// {"tag": "Weights", "path": "Weights", "type": "*variable", "value": "~*req.3"},
1810// {"tag": "MaxHits", "path": "MaxHits", "type": "*variable", "value": "~*req.4"},
1811// {"tag": "MinHits", "path": "MinHits", "type": "*variable", "value": "~*req.5"},
1812// {"tag": "MinSleep", "path": "MinSleep", "type": "*variable", "value": "~*req.6"},
1813// {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.7"},
1814// {"tag": "AttributeIDs", "path": "AttributeIDs", "type": "*variable", "value": "~*req.8"},
1815// {"tag": "ActionProfileIDs", "path": "ActionProfileIDs", "type": "*variable", "value": "~*req.9"},
1816// {"tag": "Async", "path": "Async", "type": "*variable", "value": "~*req.10"} ,
1817// {"tag": "EeIDs", "path": "EeIDs", "type": "*variable", "value": "~*req.11"}
1818// ]
1819// },
1820// {
1821// "type": "*trends", // data source type
1822// "fileName": "Trends.csv", // file name in the tpInPath
1823// "fields": [
1824// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1825// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1826// {"tag": "Schedule", "path": "Schedule", "type": "*variable", "value": "~*req.2"},
1827// {"tag": "StatID", "path": "StatID", "type": "*variable", "value": "~*req.3"},
1828// {"tag": "Metrics", "path": "Metrics", "type": "*variable", "value": "~*req.4"},
1829// {"tag": "TTL", "path": "TTL", "type": "*variable", "value": "~*req.5"},
1830// {"tag": "QueueLength", "path": "QueueLength", "type": "*variable", "value": "~*req.6"},
1831// {"tag": "MinItems", "path": "MinItems", "type": "*variable", "value": "~*req.7"},
1832// {"tag": "CorrelationType", "path": "CorrelationType", "type": "*variable", "value": "~*req.8"},
1833// {"tag": "Tolerance", "path": "Tolerance", "type": "*variable", "value": "~*req.9"},
1834// {"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~*req.10"},
1835// {"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~*req.11"}
1836// ]
1837// },
1838// {
1839// "type": "*rankings", // data source type
1840// "fileName": "Rankings.csv", // file name in the tpInPath
1841// "fields": [
1842// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1843// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1844// {"tag": "Schedule", "path": "Schedule", "type": "*variable", "value": "~*req.2"},
1845// {"tag": "StatIDs", "path": "StatIDs", "type": "*variable", "value": "~*req.3"},
1846// {"tag": "MetricIDs", "path": "MetricIDs", "type": "*variable", "value": "~*req.4"},
1847// {"tag": "Sorting", "path": "Sorting", "type": "*variable", "value": "~*req.5"},
1848// {"tag": "SortingParameters", "path": "SortingParameters", "type": "*variable", "value": "~*req.6"},
1849// {"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~*req.7"},
1850// {"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~*req.8"}
1851// ]
1852// },
1853// {
1854// "type": "*routes", // data source type
1855// "fileName": "Routes.csv", // file name in the tpInPath
1856// "fields": [
1857// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1858// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1859// {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
1860// {"tag": "Weights", "path": "Weights", "type": "*variable", "value": "~*req.3"},
1861// {"tag": "Blockers", "path": "Blockers", "type": "*variable", "value": "~*req.4"},
1862// {"tag": "Sorting", "path": "Sorting", "type": "*variable", "value": "~*req.5"},
1863// {"tag": "SortingParameters", "path": "SortingParameters", "type": "*variable", "value": "~*req.6"},
1864// {"tag": "RouteID", "path": "Routes.ID", "type": "*variable", "value": "~*req.7","newBranch":true},
1865// {"tag": "RouteFilterIDs", "path": "Routes.FilterIDs", "type": "*variable", "value": "~*req.8"},
1866// {"tag": "RouteAccountIDs", "path": "Routes.AccountIDs", "type": "*variable", "value": "~*req.9"},
1867// {"tag": "RouteRateProfileIDs", "path": "Routes.RateProfileIDs", "type": "*variable", "value": "~*req.10"},
1868// {"tag": "RouteResourceIDs", "path": "Routes.ResourceIDs", "type": "*variable", "value": "~*req.11"},
1869// {"tag": "RouteStatIDs", "path": "Routes.StatIDs", "type": "*variable", "value": "~*req.12"},
1870// {"tag": "RouteWeights", "path": "Routes.Weights", "type": "*variable", "value": "~*req.13"},
1871// {"tag": "RouteBlockers", "path": "Routes.Blockers", "type": "*variable", "value": "~*req.14"},
1872// {"tag": "RouteParameters", "path": "Routes.RouteParameters", "type": "*variable", "value": "~*req.15"}
1873// ]
1874// },
1875// {
1876// "type": "*chargers", // data source type
1877// "fileName": "Chargers.csv", // file name in the tpInPath
1878// "fields": [
1879// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1880// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1881// {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
1882// {"tag": "Weights", "path": "Weights", "type": "*variable", "value": "~*req.3"},
1883// {"tag": "Blockers", "path": "Blockers", "type": "*variable", "value": "~*req.4"},
1884// {"tag": "RunID", "path": "RunID", "type": "*variable", "value": "~*req.5"},
1885// {"tag": "AttributeIDs", "path": "AttributeIDs", "type": "*variable", "value": "~*req.6"}
1886// ]
1887// },
1888// {
1889// "type": "*rateProfiles", // data source type
1890// "fileName": "Rates.csv", // file name in the tpInPath
1891// "fields": [
1892// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1893// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1894// {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
1895// {"tag": "Weights", "path": "Weights", "type": "*variable", "value": "~*req.3"},
1896// {"tag": "MinCost", "path": "MinCost", "type": "*variable", "value": "~*req.4"},
1897// {"tag": "MaxCost", "path": "MaxCost", "type": "*variable", "value": "~*req.5"},
1898// {"tag": "MaxCostStrategy", "path": "MaxCostStrategy", "type": "*variable", "value": "~*req.6"},
1899// // {"tag": "RateID", "path": "RateID", "type": "*variable", "value": "~*req.7"},
1900// {"tag": "RateFilterIDs", "path": "Rates[<~*req.7>].FilterIDs", "type": "*variable", "value": "~*req.8", "filters": ["*notempty:~*req.7:"]},
1901// {"tag": "RateActivationTimes", "path": "Rates[<~*req.7>].ActivationTimes", "type": "*variable", "value": "~*req.9", "filters": ["*notempty:~*req.7:"]},
1902// {"tag": "RateWeights", "path": "Rates[<~*req.7>].Weights", "type": "*variable", "value": "~*req.10", "filters": ["*notempty:~*req.7:"]},
1903// {"tag": "RateBlocker", "path": "Rates[<~*req.7>].Blocker", "type": "*variable", "value": "~*req.11", "filters": ["*notempty:~*req.7:"]},
1904// {"tag": "RateIntervalStart", "path": "Rates[<~*req.7>].IntervalRates.IntervalStart", "type": "*variable", "value": "~*req.12","newBranch":true, "filters": ["*notempty:~*req.7:"]},
1905// {"tag": "RateFixedFee", "path": "Rates[<~*req.7>].IntervalRates.FixedFee", "type": "*variable", "value": "~*req.13", "filters": ["*notempty:~*req.7:"]},
1906// {"tag": "RateRecurrentFee", "path": "Rates[<~*req.7>].IntervalRates.RecurrentFee", "type": "*variable", "value": "~*req.14", "filters": ["*notempty:~*req.7:"]},
1907// {"tag": "RateUnit", "path": "Rates[<~*req.7>].IntervalRates.Unit", "type": "*variable", "value": "~*req.15", "filters": ["*notempty:~*req.7:"]},
1908// {"tag": "RateIncrement", "path": "Rates[<~*req.7>].IntervalRates.Increment", "type": "*variable", "value": "~*req.16", "filters": ["*notempty:~*req.7:"]}
1909// ]
1910// },
1911// {
1912// "type": "*actionProfiles", // data source type
1913// "fileName": "Actions.csv", // file name in the tpInPath
1914// "fields": [
1915// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1916// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1917// {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
1918// {"tag": "Weights", "path": "Weights", "type": "*variable", "value": "~*req.3"},
1919// {"tag": "Blockers", "path": "Blockers", "type": "*variable", "value": "~*req.4"},
1920// {"tag": "Schedule", "path": "Schedule", "type": "*variable", "value": "~*req.5"},
1921// // {"tag": "TargetType", "path": "TargetType", "type": "*variable", "value": "~*req.6"},
1922// {"tag": "TargetIDs", "path": "Targets[<~*req.6>]", "type": "*variable", "value": "~*req.7"},
1923// // {"tag": "ActionID", "path": "Actions.ID", "type": "*variable", "value": "~*req.8","newBranch":true},
1924// {"tag": "ActionFilterIDs", "path": "Actions[<~*req.8>].FilterIDs", "type": "*variable", "value": "~*req.9", "filters": ["*notempty:~*req.8:"]},
1925// {"tag": "ActionTTL", "path": "Actions[<~*req.8>].TTL", "type": "*variable", "value": "~*req.10", "filters": ["*notempty:~*req.8:"]},
1926// {"tag": "ActionType", "path": "Actions[<~*req.8>].Type", "type": "*variable", "value": "~*req.11", "filters": ["*notempty:~*req.8:"]},
1927// {"tag": "ActionOpts", "path": "Actions[<~*req.8>].Opts", "type": "*variable", "value": "~*req.12", "filters": ["*notempty:~*req.8:"]},
1928// {"tag": "ActionWeights", "path": "Actions[<~*req.8>].Weights", "type": "*variable", "value": "~*req.13", "filters": ["*notempty:~*req.8:"]},
1929// {"tag": "ActionBlockers", "path": "Actions[<~*req.8>].Blockers", "type": "*variable", "value": "~*req.14", "filters": ["*notempty:~*req.8:"]},
1930// {"tag": "ActionDiktatsID", "path": "Actions[<~*req.8>].Diktats.ID", "type": "*variable", "value": "~*req.15","newBranch":true, "filters": ["*notempty:~*req.8:"]},
1931// {"tag": "ActionDiktatsFilterIDs", "path": "Actions[<~*req.8>].Diktats.FilterIDs", "type": "*variable", "value": "~*req.16", "filters": ["*notempty:~*req.8:"]},
1932// {"tag": "ActionDiktatsOpts", "path": "Actions[<~*req.8>].Diktats.Opts", "type": "*variable", "value": "~*req.17", "filters": ["*notempty:~*req.8:"]},
1933// {"tag": "ActionDiktatsWeights", "path": "Actions[<~*req.8>].Diktats.Weights", "type": "*variable", "value": "~*req.18", "filters": ["*notempty:~*req.8:"]},
1934// {"tag": "ActionDiktatsBlockers", "path": "Actions[<~*req.8>].Diktats.Blockers", "type": "*variable", "value": "~*req.19", "filters": ["*notempty:~*req.8:"]},
1935// ]
1936// },
1937// {
1938// "type": "*accounts", // data source type
1939// "fileName": "Accounts.csv", // file name in the tpInPath
1940// "fields": [
1941// {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true},
1942// {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true},
1943// {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"},
1944// {"tag": "Weights", "path": "Weights", "type": "*variable", "value": "~*req.3"},
1945// {"tag": "Blockers", "path": "Blockers", "type": "*variable", "value": "~*req.4"},
1946// {"tag": "Opts", "path": "Opts", "type": "*variable", "value": "~*req.5"},
1947// // {"tag": "BalanceID", "path": "Balances.ID", "type": "*variable", "value": "~*req.6"},
1948// {"tag": "BalanceFilterIDs", "path": "Balances[<~*req.6>].FilterIDs", "type": "*variable", "value": "~*req.7","filters": ["*notempty:~*req.6:"]},
1949// {"tag": "BalanceWeights", "path": "Balances[<~*req.6>].Weights", "type": "*variable", "value": "~*req.8","filters": ["*notempty:~*req.6:"]},
1950// {"tag": "BalanceBlockers", "path": "Balances[<~*req.6>].Blockers", "type": "*variable", "value": "~*req.9","filters": ["*notempty:~*req.6:"]},
1951// {"tag": "BalanceType", "path": "Balances[<~*req.6>].Type", "type": "*variable", "value": "~*req.10","filters": ["*notempty:~*req.6:"]},
1952// {"tag": "BalanceUnits", "path": "Balances[<~*req.6>].Units", "type": "*variable", "value": "~*req.11","filters": ["*notempty:~*req.6:"]},
1953// {"tag": "BalanceUnitFactors", "path": "Balances[<~*req.6>].UnitFactors", "type": "*variable", "value": "~*req.12","filters": ["*notempty:~*req.6:"]},
1954// {"tag": "BalanceOpts", "path": "Balances[<~*req.6>].Opts", "type": "*variable", "value": "~*req.13","filters": ["*notempty:~*req.6:"]},
1955// {"tag": "BalanceCostIncrements", "path": "Balances[<~*req.6>].CostIncrements", "type": "*variable", "value": "~*req.14","filters": ["*notempty:~*req.6:"]},
1956// {"tag": "BalanceAttributeIDs", "path": "Balances[<~*req.6>].AttributeIDs", "type": "*variable", "value": "~*req.15","filters": ["*notempty:~*req.6:"]},
1957// {"tag": "BalanceRateProfileIDs", "path": "Balances[<~*req.6>].RateProfileIDs", "type": "*variable", "value": "~*req.16","filters": ["*notempty:~*req.6:"]},
1958// {"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~*req.17"}
1959// ]
1960// }
1961// ]
1962// }
1963// ],
1964
1965
1966// "loader": { // loader for tariff plans out of .csv files
1967// "tpid": "", // tariff plan identificator
1968// "dataPath": "./", // path towards tariff plan files
1969// "disableReverse": false, // disable reverse computing
1970// "fieldSeparator": ",", // separator used in case of csv files
1971// "cachesConns":["*localhost"],
1972// "actionsConns": ["*localhost"],
1973// "gapiCredentials": ".gapi/credentials.json", // the path to the credentials for google API or the credentials.json file content
1974// "gapiToken": ".gapi/token.json" // the path to the token for google API or the token.json file content
1975// },
1976
1977
1978// "migrator": {
1979// "usersFilters":[],
1980// "fromItems":{
1981// "*accounts": {"dbConn": "*default"},
1982// "*chargerProfiles": {"dbConn": "*default"},
1983// "*filters": {"dbConn": "*default"},
1984// "*loadIDs": {"dbConn": "*default"},
1985// "*statQueueProfiles": {"dbConn": "*default"},
1986// "*versions": {"dbConn": "*default"}
1987// },
1988// "outDBOpts":{
1989// "mongoConnScheme": "mongodb", // scheme for MongoDB connection <mongodb|mongodb+srv>
1990// "mongoQueryTimeout":"10s", // timeout for query when mongo is used
1991// "redisCACertificate":"", // path to CA certificate (populate for self-signed certificate otherwise let it empty)
1992// "redisClientCertificate":"", // path to client certificate
1993// "redisClientKey":"", // path to client key
1994// "redisCluster": false,
1995// "redisClusterOndownDelay": "0",
1996// "redisClusterSync": "5s",
1997// "redisConnectAttempts": 20, // the maximum amount of dial attempts
1998// "redisConnectTimeout": "0", // the amount of wait time until timeout for a connection attempt
1999// "redisMaxConns": 10, // the connection pool size
2000// "redisPoolPipelineLimit": 0, // maximum number of commands that can be pipelined before flushing (0 means no limit)
2001// "redisPoolPipelineWindow": "150µs", // duration after which internal pipelines are flushed (0 disables implicit pipelining)
2002// "redisReadTimeout": "0", // the amount of wait time until timeout for reading operations
2003// "redisSentinel": "",
2004// "redisTLS": false, // enable TLS when connecting to Redis and use the redisClientCertificate, redisClientKey and redisCACertificate for TLS connection
2005// "redisWriteTimeout": "0" // the amount of wait time until timeout for writing operations
2006// },
2007// },
2008
2009
2010// "registrarc":{
2011// "rpc":{
2012// "enabled": false,
2013// "registrarsConns": [],
2014// "hosts": [],
2015// "refreshInterval": "5m"
2016// }
2017// },
2018
2019
2020// "analyzers":{
2021// "enabled": false, // starts AnalyzerS service: <true|false>.
2022// "dbPath": "/var/spool/cgrates/analyzers", // path to the folder where to store the information
2023// "indexType": "*scorch", // the type of index for the storage: <*internal|*scorch|*boltdb|*leveldb|*mossdb>
2024// "ttl": "24h", // time to wait before removing the API capture
2025// "conns": {
2026// // "*ees": [ // connections to EEs
2027// // {
2028// // "tenant": "",
2029// // "filterIDs": [],
2030// // "connIDs": ["*internal"]
2031// // }
2032// // ],
2033// },
2034// "cleanupInterval": "1h", // the interval we clean the db
2035// "opts":{
2036// // "*exporterIDs": [
2037// // {
2038// // "tenant": "*any",
2039// // "filterIDs": [],
2040// // "values": []
2041// // }
2042// // ]
2043// }
2044// },
2045
2046
2047// "admins": {
2048// "enabled": false,
2049// "conns": {
2050// // "*actions": [ // connections to ActionS for reloads
2051// // {
2052// // "tenant": "",
2053// // "filterIDs": [],
2054// // "connIDs": ["*internal"]
2055// // }
2056// // ],
2057// // "*attributes": [ // connections to AttributeS for URExporter
2058// // {
2059// // "tenant": "",
2060// // "filterIDs": [],
2061// // "connIDs": ["*internal"]
2062// // }
2063// // ],
2064// "*caches": [{"connIDs": ["*internal"]}],
2065// // "*ees": [ // connections to EEs
2066// // {
2067// // "tenant": "",
2068// // "filterIDs": [],
2069// // "connIDs": ["*internal"]
2070// // }
2071// // ],
2072// }
2073// },
2074
2075
2076// "rates": {
2077// "enabled": false,
2078// "indexedSelects": true, // enable profile matching exclusively on indexes
2079// //"stringIndexedFields": [], // query indexes based on these fields for faster processing
2080// "prefixIndexedFields": [], // query indexes based on these fields for faster processing
2081// "suffixIndexedFields": [], // query indexes based on these fields for faster processing
2082// "existsIndexedFields": [], // query indexes based on these fields for faster processing
2083// "notExistsIndexedFields": [], // query indexes based on these fields for faster processing
2084// "nestedFields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
2085// "rateIndexedSelects": true, // enable profile matching exclusively on indexes
2086// //"rateStringIndexedFields": [], // query indexes based on these fields for faster processing
2087// "ratePrefixIndexedFields": [], // query indexes based on these fields for faster processing
2088// "rateSuffixIndexedFields": [], // query indexes based on these fields for faster processing
2089// "rateExistsIndexedFields": [], // query indexes based on these fields for faster processing
2090// "rateNotExistsIndexedFields": [], // query indexes based on these fields for faster processing
2091// "rateNestedFields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
2092// "verbosity": 1000, // number of increment iterations allowed
2093// "opts":{
2094// // "*intervalStart": [ // event interval start
2095// // {
2096// // "tenant": "*any",
2097// // "filterIDs": [],
2098// // "value": "0"
2099// // }
2100// // ],
2101// // "*profileIDs": [ // select the rate profiles used for cost calculation
2102// // {
2103// // "tenant": "*any",
2104// // "filterIDs": [],
2105// // "values": []
2106// // }
2107// // ],
2108// // "*profileIgnoreFilters": [ // ignore the filters for rateProfileIDs
2109// // {
2110// // "tenant": "*any",
2111// // "filterIDs": [],
2112// // "value": false
2113// // }
2114// // ],
2115// // "*startTime": [ // start time used for cost calculation
2116// // {
2117// // "tenant": "*any",
2118// // "filterIDs": [],
2119// // "value": "*now"
2120// // }
2121// // ],
2122// // "*usage": [ // usage used for cost calculation
2123// // {
2124// // "tenant": "*any",
2125// // "filterIDs": [],
2126// // "value": "1m"
2127// // }
2128// // ]
2129// }
2130// },
2131
2132
2133// "sipAgent": { // SIP Agents, only used for redirections
2134// "enabled": false, // enables the SIP agent: <true|false>
2135// "listen": "127.0.0.1:5060", // address where to listen for SIP requests <x.y.z.y:1234>
2136// "listenNet": "udp", // network to listen on <udp|tcp|tcp-tls>
2137// "conns": {
2138// "*sessions":[{"connIDs":["*internal"]}]
2139// // "*stats": [ // connections to StatS for reporting session events <""|*internal|$rpc_conns_id>
2140// // {
2141// // "tenant": "",
2142// // "filterIDs": [],
2143// // "connIDs": []
2144// // }
2145// // ],
2146// // "*thresholds": [ // connections to ThresholdS for reporting session events <""|*internal|$rpc_conns_id>
2147// // {
2148// // "tenant": "",
2149// // "filterIDs": [],
2150// // "connIDs": []
2151// // }
2152// // ],
2153// },
2154// "timezone": "", // timezone of the events if not specified <UTC|Local|$IANA_TZ_DB>
2155// "retransmissionTimer": "1s", // the duration to wait to receive an ACK before resending the reply
2156// "requestProcessors": [] // request processors to be applied to SIP messages
2157// },
2158
2159// "janusAgent": {
2160// "enabled": false, // enables the Janus agent: <true|false>
2161// "url": "/janus",
2162// "conns": {"*sessions": [{"connIDs": ["*internal"]}]},
2163// "janusConns": [{ // instantiate connections to multiple Janus Servers
2164// "address": "127.0.0.1:8088", // janus API address
2165// "adminAddress": "localhost:7188", // janus admin address used to retrive more information for sessions and handles
2166// "adminPassword": "", // secret to pass restriction to communicate to the endpoint
2167// "type": "*ws" // type of the transport to interact via janus API
2168// }],
2169// "requestProcessors": [] // request processors to be applied to Janus messages
2170// },
2171
2172// "templates": {
2173// "*asr": [
2174// {"tag": "SessionId", "path": "*diamreq.Session-Id", "type": "*variable",
2175// "value": "~*req.Session-Id", "mandatory": true},
2176// {"tag": "OriginHost", "path": "*diamreq.Origin-Host", "type": "*variable",
2177// "value": "~*req.Destination-Host", "mandatory": true},
2178// {"tag": "OriginRealm", "path": "*diamreq.Origin-Realm", "type": "*variable",
2179// "value": "~*req.Destination-Realm", "mandatory": true},
2180// {"tag": "DestinationRealm", "path": "*diamreq.Destination-Realm", "type": "*variable",
2181// "value": "~*req.Origin-Realm", "mandatory": true},
2182// {"tag": "DestinationHost", "path": "*diamreq.Destination-Host", "type": "*variable",
2183// "value": "~*req.Origin-Host", "mandatory": true},
2184// {"tag": "AuthApplicationId", "path": "*diamreq.Auth-Application-Id", "type": "*variable",
2185// "value": "~*vars.*appid", "mandatory": true}
2186// ],
2187// "*cca": [
2188// {"tag": "SessionId", "path": "*rep.Session-Id", "type": "*variable",
2189// "value": "~*req.Session-Id", "mandatory": true},
2190// {"tag": "ResultCode", "path": "*rep.Result-Code", "type": "*constant",
2191// "value": "2001"},
2192// {"tag": "OriginHost", "path": "*rep.Origin-Host", "type": "*variable",
2193// "value": "~*vars.OriginHost", "mandatory": true},
2194// {"tag": "OriginRealm", "path": "*rep.Origin-Realm", "type": "*variable",
2195// "value": "~*vars.OriginRealm", "mandatory": true},
2196// {"tag": "AuthApplicationId", "path": "*rep.Auth-Application-Id", "type": "*variable",
2197// "value": "~*vars.*appid", "mandatory": true},
2198// {"tag": "CCRequestType", "path": "*rep.CC-Request-Type", "type": "*variable",
2199// "value": "~*req.CC-Request-Type", "mandatory": true},
2200// {"tag": "CCRequestNumber", "path": "*rep.CC-Request-Number", "type": "*variable",
2201// "value": "~*req.CC-Request-Number", "mandatory": true}
2202// ],
2203// "*urLog": [ // urLog template is used in ActionS to build the event that is send to URs in case of *urLog actionType
2204// {"tag": "ToR", "path": "*ur.ToR", "type": "*variable",
2205// "value": "~*req.BalanceType", "mandatory": true},
2206// {"tag": "OriginHost", "path": "*ur.OriginHost", "type": "*constant",
2207// "value": "127.0.0.1", "mandatory": true},
2208// {"tag": "RequestType", "path": "*ur.RequestType", "type": "*constant",
2209// "value": "*none", "mandatory": true},
2210// {"tag": "Tenant", "path": "*ur.Tenant", "type": "*variable",
2211// "value": "~*req.Tenant", "mandatory": true},
2212// {"tag": "Account", "path": "*ur.Account", "type": "*variable",
2213// "value": "~*req.Account", "mandatory": true},
2214// {"tag": "Subject", "path": "*ur.Subject", "type": "*variable",
2215// "value": "~*req.Account", "mandatory": true},
2216// {"tag": "Cost", "path": "*ur.Cost", "type": "*variable",
2217// "value": "~*req.Cost", "mandatory": true},
2218// {"tag": "Source", "path": "*ur.Source", "type": "*constant",
2219// "value": "*urLog", "mandatory": true},
2220// {"tag": "Usage", "path": "*ur.Usage", "type": "*constant",
2221// "value": "1", "mandatory": true},
2222// {"tag": "RunID", "path": "*ur.RunID", "type": "*variable",
2223// "value": "~*req.ActionType", "mandatory": true},
2224// {"tag": "SetupTime", "path": "*ur.SetupTime", "type": "*constant",
2225// "value": "*now", "mandatory": true},
2226// {"tag": "AnswerTime", "path": "*ur.AnswerTime", "type": "*constant",
2227// "value": "*now", "mandatory": true},
2228// {"tag": "PreRated", "path": "*ur.PreRated", "type": "*constant",
2229// "value": "true", "mandatory": true}
2230// ],
2231// "*coa": [ // used by RadiusAgent when sending ChangeOfAuthorization message towards the client
2232// {"tag": "User-Name", "path": "*radDAReq.User-Name", "type": "*variable",
2233// "value": "~*oreq.User-Name"},
2234// {"tag": "NAS-IP-Address", "path": "*radDAReq.NAS-IP-Address", "type": "*variable",
2235// "value": "~*oreq.NAS-IP-Address"},
2236// {"tag": "Acct-Session-Id", "path": "*radDAReq.Acct-Session-Id", "type": "*variable",
2237// "value": "~*oreq.Acct-Session-Id"},
2238// {"tag": "Filter-Id", "path": "*radDAReq.Filter-Id", "type": "*variable",
2239// "value": "~*req.CustomFilter"}
2240// ],
2241// "*dmr": [ // used by RadiusAgent when sending Disconnect message towards the client
2242// {"tag": "User-Name", "path": "*radDAReq.User-Name", "type": "*variable",
2243// "value": "~*oreq.User-Name"},
2244// {"tag": "NAS-IP-Address", "path": "*radDAReq.NAS-IP-Address", "type": "*variable",
2245// "value": "~*oreq.NAS-IP-Address"},
2246// {"tag": "Acct-Session-Id", "path": "*radDAReq.Acct-Session-Id", "type": "*variable",
2247// "value": "~*oreq.Acct-Session-Id"},
2248// {"tag": "Reply-Message", "path": "*radDAReq.Reply-Message", "type": "*variable",
2249// "value": "~*req.DisconnectCause"}
2250// ],
2251// "*err": [
2252// {"tag": "SessionId", "path": "*rep.Session-Id", "type": "*variable",
2253// "value": "~*req.Session-Id", "mandatory": true},
2254// {"tag": "OriginHost", "path": "*rep.Origin-Host", "type": "*variable",
2255// "value": "~*vars.OriginHost", "mandatory": true},
2256// {"tag": "OriginRealm", "path": "*rep.Origin-Realm", "type": "*variable",
2257// "value": "~*vars.OriginRealm", "mandatory": true}
2258// ],
2259// "*errSip": [
2260// {"tag": "Request", "path": "*rep.Request", "type": "*constant",
2261// "value": "SIP/2.0 500 Internal Server Error", "mandatory": true}
2262// ],
2263// "*astr": [
2264// {"tag": "ToR", "path": "*cgreq.ToR", "type": "*constant",
2265// "value": "*voice"},
2266// {"tag": "OriginID", "path": "*cgreq.OriginID", "type": "*variable",
2267// "value": "~*req.channel.id"},
2268// {"tag": "originID", "path": "*opts.*originID", "type": "*variable",
2269// "value": "~*req.channel.id"},
2270// {"tag": "OriginHost", "path": "*cgreq.OriginHost", "type": "*variable",
2271// "value": "~*vars.OriginHost"},
2272// {"tag": "RequestType", "path": "*cgreq.RequestType", "type": "*constant",
2273// "value": "*prepaid"},
2274// {"tag": "Tenant", "path": "*cgreq.Tenant", "type": "*constant",
2275// "value": "cgrates.org"},
2276// {"tag": "Account", "path": "*cgreq.Account", "type": "*variable",
2277// "value": "~*req.channel.caller.number"},
2278// {"tag": "Subject", "path": "*cgreq.Subject", "type": "*variable",
2279// "value": "~*req.channel.caller.number"},
2280// {"tag": "Destination", "path": "*cgreq.Destination", "type": "*variable",
2281// "value": "~*req.channel.dialplan.exten"},
2282// {"tag": "SetupTime", "path": "*cgreq.SetupTime", "type": "*variable",
2283// "value": "~*req.channel.creationtime"},
2284// {"tag":"Cost","path":"*cgreq.Cost","type":"*constant",
2285// "value":"-1.0"},
2286// ],
2287// "*fsr": [
2288// { "tag": "ToR", "path": "*cgreq.ToR","type": "*constant",
2289// "value": "*voice"},
2290// {"tag":"PDD","path":"*cgreq.PDD","type":"*composed",
2291// "value":"~*req.variable_progress_mediamsec;ms"},
2292// {"tag":"ACD","path":"*cgreq.ACD","type":"*composed",
2293// "value":"~*req.variable_cgrAcd;s"},
2294// {"tag": "OriginID","path": "*cgreq.OriginID","type": "*variable",
2295// "value": "~*req.Unique-ID"},
2296// {"tag": "*originID","path": "*opts.*originID","type": "*variable",
2297// "value": "~*req.Unique-ID"},
2298// {"tag": "OriginHost","path": "*cgreq.OriginHost","type": "*variable",
2299// "value": "~*vars.Originhost"},
2300// {"tag": "Account","path": "*cgreq.Account","type": "*variable",
2301// "value": "~*req.Caller-Username"},
2302// {"tag":"Source","path":"*cgreq.Source", "type":"*composed",
2303// "value":"FS_;~*req.Event-Name"},
2304// {"tag":"RequestType","path":"*cgreq.RequestType","type":"*constant",
2305// "value":"*none","filters":["*string:*req.variable_process_ur:false"]},
2306// {"tag":"RequestType","path":"*cgreq.RequestType","type":"*constant",
2307// "value":"*none","filters":["*string:*req.Caller-Dialplan:inline"]},
2308// {"tag":"RequestType","path": "*cgreq.RequestType","type": "*constant",
2309// "filters":["*exists:*cgreq.RequestType:"],"value": "*prepaid"},
2310// {"tag":"Tenant","path":"*cgreq.Tenant","type":"*constant",
2311// "value":"cgrates.org"},
2312// {"tag":"Category","path":"*cgreq.Category","type":"*constant",
2313// "value":"call"},
2314// {"tag":"Subject","path":"*cgreq.Subject","type":"*variable",
2315// "value":"~*req.Caller-Username"},
2316// {"tag":"Destination","path":"*cgreq.Destination","type":"*variable",
2317// "value":"~*req.Caller-Destination-Number"},
2318// {"tag":"SetupTime","path":"*cgreq.SetupTime","type":"*variable",
2319// "value":"~*req.Caller-Channel-Created-Time"},
2320// {"tag":"AnswerTime","path":"*cgreq.AnswerTime","type":"*variable",
2321// "value":"~*req.Caller-Channel-Answered-Time"},
2322// {"tag":"Usage","path":"*cgreq.Usage","type":"*composed",
2323// "value":"~*req.variable_billsec;s"},
2324// {"tag":"Route","path":"*cgreq.Route","type":"*variable",
2325// "value":"~*req.variable_cgrRoute"},
2326// {"tag":"Cost","path":"*cgreq.Cost","type":"*constant",
2327// "value":"-1.0"},
2328// {"tag":"DisconnectCause","path":"*cgreq.DisconnectCause",
2329// "filters":["*notempty:*req.Hangup-Cause:"],"type":"*variable","value":"~*req.Hangup-Cause"},
2330// ],
2331// "*kamr": [
2332// {"tag": "originID", "path": "*opts.*originID", "type": "*variable",
2333// "value": "~*req.OriginID"},
2334// {"tag": "OriginHost", "path": "*cgreq.OriginHost", "type": "*variable",
2335// "value": "~*vars.OriginHost"},
2336// {"tag": "Source", "path": "*cgreq.Source", "type": "*constant",
2337// "value": "KamailioAgent"},
2338// {"tag": "EvapiConnID", "path": "*cgreq.evapiConnID", "type": "*variable",
2339// "value": "~*vars.evapiConnID"},
2340// {"tag": "HashEntry", "path": "*cgreq.hEntry", "type": "*variable",
2341// "filters": ["*notempty:*req.hEntry:"], "value": "~*req.hEntry"},
2342// {"tag": "HashID", "path": "*cgreq.hID", "type": "*variable",
2343// "filters": ["*notempty:*req.hID:"], "value": "~*req.hID"},
2344// {"tag": "Tenant", "path": "*cgreq.Tenant", "type": "*variable",
2345// "filters": ["*notempty:*req.Tenant:"], "value": "~*req.Tenant"},
2346// {"tag": "Account", "path": "*cgreq.Account", "type": "*variable",
2347// "value": "~*req.Account"},
2348// {"tag": "Subject", "path": "*cgreq.Subject", "type": "*variable",
2349// "value": "~*req.Account"},
2350// {"tag": "Destination", "path": "*cgreq.Destination", "type": "*variable",
2351// "value": "~*req.Destination"},
2352// {"tag": "SetupTime", "path": "*cgreq.SetupTime", "type": "*variable",
2353// "filters": ["*notempty:*req.SetupTime:"], "value": "~*req.SetupTime"},
2354// {"tag": "AnswerTime", "path": "*cgreq.AnswerTime", "type": "*variable",
2355// "filters": ["*notempty:*req.AnswerTime:"], "value": "~*req.AnswerTime"},
2356// {"tag": "Usage", "path": "*cgreq.Usage", "type": "*composed",
2357// "filters": ["*notempty:*req.Usage:"], "value": "~*req.Usage;s"},
2358// ],
2359// "*rar": [
2360// {"tag": "SessionId", "path": "*diamreq.Session-Id", "type": "*variable",
2361// "value": "~*req.Session-Id", "mandatory": true},
2362// {"tag": "OriginHost", "path": "*diamreq.Origin-Host", "type": "*variable",
2363// "value": "~*req.Destination-Host", "mandatory": true},
2364// {"tag": "OriginRealm", "path": "*diamreq.Origin-Realm", "type": "*variable",
2365// "value": "~*req.Destination-Realm", "mandatory": true},
2366// {"tag": "DestinationRealm", "path": "*diamreq.Destination-Realm", "type": "*variable",
2367// "value": "~*req.Origin-Realm", "mandatory": true},
2368// {"tag": "DestinationHost", "path": "*diamreq.Destination-Host", "type": "*variable",
2369// "value": "~*req.Origin-Host", "mandatory": true},
2370// {"tag": "AuthApplicationId", "path": "*diamreq.Auth-Application-Id", "type": "*variable",
2371// "value": "~*vars.*appid", "mandatory": true},
2372// {"tag": "ReAuthRequestType", "path": "*diamreq.Re-Auth-Request-Type", "type": "*constant",
2373// "value": "0"}
2374// ]
2375// },
2376
2377
2378// "configs": {
2379// "enabled": false,
2380// "url": "/configs/", // configs url
2381// "rootDir": "/var/spool/cgrates/configs" // root directory in case of calling /configs request
2382// },
2383
2384
2385// "apiban": {
2386// "enabled": false,
2387// "keys": []
2388// },
2389
2390// "sentrypeer": {
2391// "clientID":"",
2392// "clientSecret":"",
2393// "tokenUrl":"https://authz.sentrypeer.com/oauth/token",
2394// "ipsUrl":"https://sentrypeer.com/api/ip-addresses",
2395// "numbersUrl":"https://sentrypeer.com/api/phone-numbers",
2396// "audience":"https://sentrypeer.com/api",
2397// "grantType":"clientCredentials"
2398// },
2399
2400
2401// "actions": {
2402// "enabled": false, // starts attribute service: <true|false>
2403// "conns": {
2404// // "*accounts": [ // connections to AccountS for *topup/*topUpReset action: <""|*internal|$rpc_conns_id>
2405// // {
2406// // "tenant": "",
2407// // "filterIDs": [],
2408// // "connIDs": ["*internal"]
2409// // }
2410// // ],
2411// // "*admins": [ // connections to AdminS for *dynamic actions: <""|*internal|$rpc_conns_id>
2412// // {
2413// // "tenant": "",
2414// // "filterIDs": [],
2415// // "connIDs": ["*internal"]
2416// // }
2417// // ],
2418// // "*ees": [ // connections to Ees for exporting event <""|*internal|$rpc_conns_id>
2419// // {
2420// // "tenant": "",
2421// // "filterIDs": [],
2422// // "connIDs": ["*internal"]
2423// // }
2424// // ],
2425// // "*stats": [ // connections to StatS for *resetStatQueue action: <""|*internal|$rpc_conns_id>
2426// // {
2427// // "tenant": "",
2428// // "filterIDs": [],
2429// // "connIDs": ["*internal"]
2430// // }
2431// // ],
2432// // "*thresholds": [ // connections to ThresholdS for *resetThreshold action <""|*internal|$rpc_conns_id>
2433// // {
2434// // "tenant": "",
2435// // "filterIDs": [],
2436// // "connIDs": ["*internal"]
2437// // }
2438// // ],
2439// },
2440// "tenants":[], // List of tenants to operate on
2441// "indexedSelects": true, // enable profile matching exclusively on indexes
2442// //"stringIndexedFields": [], // query indexes based on these fields for faster processing
2443// "prefixIndexedFields": [], // query indexes based on these fields for faster processing
2444// "suffixIndexedFields": [], // query indexes based on these fields for faster processing
2445// "existsIndexedFields": [], // query indexes based on these fields for faster processing
2446// "notExistsIndexedFields": [], // query indexes based on these fields for faster processing
2447// "nestedFields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
2448// "dynaprepaidActionProfile": [],
2449// "opts":{
2450// // "*posterAttempts": [ // poster attempts for HTTPPost action type
2451// // {
2452// // "tenant": "*any",
2453// // "filterIDs": [],
2454// // "value": 1
2455// // }
2456// // ],
2457// // "*profileIDs": [
2458// // {
2459// // "tenant": "*any",
2460// // "filterIDs": [],
2461// // "values": [],
2462// // }
2463// // ],
2464// // "*profileIgnoreFilters": [ // ignore the filters for actionProfileIDs
2465// // {
2466// // "tenant": "*any",
2467// // "filterIDs": [],
2468// // "value": false
2469// // }
2470// // ]
2471// }
2472// },
2473
2474
2475// "accounts": {
2476// "enabled": false, // starts service: <true|false>
2477// "indexedSelects": true, // enable profile matching exclusively on indexes
2478// "conns": {
2479// // "*attributes": [ // connections to AttributeS for account/balance updates, empty to disable attributes functionality: <""|*internal|$rpc_conns_id>
2480// // {
2481// // "tenant": "",
2482// // "filterIDs": [],
2483// // "connIDs": ["*internal"]
2484// // }
2485// // ],
2486// // "*rates": [ // connections to RatesS for account/balance updates, empty to disable rates functionality: <""|*internal|$rpc_conns_id>
2487// // {
2488// // "tenant": "",
2489// // "filterIDs": [],
2490// // "connIDs": ["*internal"]
2491// // }
2492// // ],
2493// // "*thresholds": [ // connections to ThresholdS for account/balance updates, empty to disable thresholds functionality: <""|*internal|$rpc_conns_id>
2494// // {
2495// // "tenant": "",
2496// // "filterIDs": [],
2497// // "connIDs": ["*internal"]
2498// // }
2499// // ],
2500// },
2501// //"stringIndexedFields": [], // query indexes based on these fields for faster processing
2502// "prefixIndexedFields": [], // query indexes based on these fields for faster processing
2503// "suffixIndexedFields": [], // query indexes based on these fields for faster processing
2504// "existsIndexedFields": [], // query indexes based on these fields for faster processing
2505// "notExistsIndexedFields": [], // query indexes based on these fields for faster processing
2506// "nestedFields": false, // determines which field is checked when matching indexed filters(true: all; false: only the one on the first level)
2507// "maxIterations": 1000, // maximum number of iterations
2508// "maxUsage": "72h", // maximum time of usage
2509// "opts":{
2510// // "*profileIDs": [
2511// // {
2512// // "tenant": "*any",
2513// // "filterIDs": [],
2514// // "values": []
2515// // }
2516// // ],
2517// // "*profileIgnoreFilters": [ // ignore the filters for accountIDs
2518// // {
2519// // "tenant": "*any",
2520// // "filterIDs": [],
2521// // "value": "false"
2522// // }
2523// // ],
2524// // "*usage": [
2525// // {
2526// // "tenant": "*any",
2527// // "filterIDs": [],
2528// // "value": "72h"
2529// // }
2530// // ]
2531// }
2532// },
2533
2534
2535// "configDB": { // database used to store runtime data (eg: accounts)
2536// "dbType": "*internal", // db type: <*internal|*redis|*mongo>
2537// "dbHost": "", // db host address
2538// "dbPort": 0, // db port to reach the database
2539// "dbName": "", // db database name to connect to
2540// "dbUser": "", // username to use when connecting to db
2541// "dbPassword": "", // password to use when connecting to db
2542// "opts":{
2543// "internalDBBackupPath": "/var/lib/cgrates/internal_db/backup/configdb", // default path taken by ConfigSv1.BackupConfigDB when "BackupFolderPath" is not provided
2544// "internalDBDumpInterval": "0s", // dump configdb regularly to a file: "0" - disables it; "-1" - dump on each set/remove; <""|$dur>
2545// "internalDBDumpPath": "/var/lib/cgrates/internal_db/configdb", // the path where configdb will be dumped
2546// "internalDBFileSizeLimit": "1GB", // maximum size that can be written in a singular dump file
2547// "internalDBRewriteInterval": "0s", // rewrite dump files regularly: "0" - disables it; "-1" - rewrite on engine start; "-2" - rewrite on engine shutdown; <""|$dur>
2548// "internalDBStartTimeout": "5m", // the amount of wait time until timeout for DB startup
2549// "mongoConnScheme": "mongodb", // scheme for MongoDB connection <mongodb|mongodb+srv>
2550// "mongoQueryTimeout":"10s", // timeout for query when mongo is used
2551// "redisBatchSize": 1000, // COUNT size used in redis SCAN queries
2552// "redisCACertificate":"", // path to CA certificate (populate for self-signed certificate otherwise let it empty)
2553// "redisClientCertificate":"", // path to client certificate
2554// "redisClientKey":"", // path to client key
2555// "redisCluster": false, // if enabled the configdb will try to connect to the redis cluster
2556// "redisClusterOndownDelay": "0", // the delay before executing the commands if the redis cluster is in the CLUSTERDOWN state
2557// "redisClusterSync": "5s", // the sync interval for the redis cluster
2558// "redisConnectAttempts": 20, // the maximum amount of dial attempts
2559// "redisConnectTimeout": "0", // the amount of wait time until timeout for a connection attempt
2560// "redisPoolPipelineLimit": 0, // maximum number of commands that can be pipelined before flushing (0 means no limit)
2561// "redisPoolPipelineWindow": "150µs", // duration after which internal pipelines are flushed (0 disables implicit pipelining)
2562// "redisReadTimeout": "0", // the amount of wait time until timeout for reading operations
2563// "redisSentinel": "", // the name of sentinel when used
2564// "redisTLS": false, // if true it will use a tls connection and use the redisClientCertificate, redisClientKey and redisCACertificate for tls connection
2565// "redisMaxConns": 10, // the connection pool size
2566// "redisWriteTimeout": "0" // the amount of wait time until timeout for writing operations
2567// }
2568// },
2569
2570// "tpes": {
2571// "enabled": false
2572// }
2573
2574}