catocli 3.0.14__py3-none-any.whl → 3.0.22__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of catocli might be problematic. Click here for more details.

Files changed (192) hide show
  1. catocli/Utils/clidriver.py +16 -8
  2. catocli/Utils/formatter_account_metrics.py +544 -0
  3. catocli/Utils/formatter_app_stats.py +184 -0
  4. catocli/Utils/formatter_app_stats_timeseries.py +377 -0
  5. catocli/Utils/formatter_events_timeseries.py +459 -0
  6. catocli/Utils/formatter_socket_port_metrics.py +189 -0
  7. catocli/Utils/formatter_socket_port_metrics_timeseries.py +339 -0
  8. catocli/Utils/formatter_utils.py +251 -0
  9. catocli/Utils/help_formatter.py +1 -1
  10. catocli/__init__.py +1 -1
  11. catocli/clisettings.json +37 -5
  12. catocli/parsers/custom/query_eventsFeed/README.md +94 -0
  13. catocli/parsers/custom/scim/README.md +346 -0
  14. catocli/parsers/custom/scim/scim_client.py +132 -26
  15. catocli/parsers/custom/scim/scim_commands.py +14 -56
  16. catocli/parsers/customParserApiClient.py +213 -65
  17. catocli/parsers/mutation_policy/__init__.py +405 -405
  18. catocli/parsers/mutation_site/__init__.py +15 -15
  19. catocli/parsers/mutation_sites/__init__.py +15 -15
  20. catocli/parsers/query_accountMetrics/README.md +99 -9
  21. catocli/parsers/query_accountMetrics/__init__.py +6 -0
  22. catocli/parsers/query_appStats/README.md +11 -11
  23. catocli/parsers/query_appStats/__init__.py +4 -2
  24. catocli/parsers/query_appStatsTimeSeries/README.md +10 -10
  25. catocli/parsers/query_appStatsTimeSeries/__init__.py +4 -2
  26. catocli/parsers/query_auditFeed/README.md +9 -9
  27. catocli/parsers/query_events/README.md +9 -9
  28. catocli/parsers/query_eventsTimeSeries/README.md +289 -9
  29. catocli/parsers/query_eventsTimeSeries/__init__.py +6 -0
  30. catocli/parsers/query_policy/__init__.py +42 -42
  31. catocli/parsers/query_socketPortMetrics/README.md +53 -9
  32. catocli/parsers/query_socketPortMetrics/__init__.py +6 -0
  33. catocli/parsers/query_socketPortMetricsTimeSeries/README.md +92 -9
  34. catocli/parsers/query_socketPortMetricsTimeSeries/__init__.py +4 -2
  35. {catocli-3.0.14.dist-info → catocli-3.0.22.dist-info}/METADATA +1 -1
  36. {catocli-3.0.14.dist-info → catocli-3.0.22.dist-info}/RECORD +187 -183
  37. {catocli-3.0.14.dist-info → catocli-3.0.22.dist-info}/top_level.txt +0 -1
  38. models/mutation.policy.antiMalwareFileHash.addRule.json +20 -0
  39. models/mutation.policy.antiMalwareFileHash.addSection.json +103 -0
  40. models/mutation.policy.antiMalwareFileHash.createPolicyRevision.json +123 -0
  41. models/mutation.policy.antiMalwareFileHash.discardPolicyRevision.json +123 -0
  42. models/mutation.policy.antiMalwareFileHash.moveRule.json +20 -0
  43. models/mutation.policy.antiMalwareFileHash.moveSection.json +103 -0
  44. models/mutation.policy.antiMalwareFileHash.publishPolicyRevision.json +123 -0
  45. models/mutation.policy.antiMalwareFileHash.removeRule.json +20 -0
  46. models/mutation.policy.antiMalwareFileHash.removeSection.json +103 -0
  47. models/mutation.policy.antiMalwareFileHash.updatePolicy.json +123 -0
  48. models/mutation.policy.antiMalwareFileHash.updateRule.json +20 -0
  49. models/mutation.policy.antiMalwareFileHash.updateSection.json +103 -0
  50. models/mutation.policy.appTenantRestriction.addRule.json +20 -0
  51. models/mutation.policy.appTenantRestriction.addSection.json +103 -0
  52. models/mutation.policy.appTenantRestriction.createPolicyRevision.json +123 -0
  53. models/mutation.policy.appTenantRestriction.discardPolicyRevision.json +123 -0
  54. models/mutation.policy.appTenantRestriction.moveRule.json +20 -0
  55. models/mutation.policy.appTenantRestriction.moveSection.json +103 -0
  56. models/mutation.policy.appTenantRestriction.publishPolicyRevision.json +123 -0
  57. models/mutation.policy.appTenantRestriction.removeRule.json +20 -0
  58. models/mutation.policy.appTenantRestriction.removeSection.json +103 -0
  59. models/mutation.policy.appTenantRestriction.updatePolicy.json +123 -0
  60. models/mutation.policy.appTenantRestriction.updateRule.json +20 -0
  61. models/mutation.policy.appTenantRestriction.updateSection.json +103 -0
  62. models/mutation.policy.applicationControl.addRule.json +20 -0
  63. models/mutation.policy.applicationControl.addSection.json +103 -0
  64. models/mutation.policy.applicationControl.createPolicyRevision.json +123 -0
  65. models/mutation.policy.applicationControl.discardPolicyRevision.json +123 -0
  66. models/mutation.policy.applicationControl.moveRule.json +20 -0
  67. models/mutation.policy.applicationControl.moveSection.json +103 -0
  68. models/mutation.policy.applicationControl.publishPolicyRevision.json +123 -0
  69. models/mutation.policy.applicationControl.removeRule.json +20 -0
  70. models/mutation.policy.applicationControl.removeSection.json +103 -0
  71. models/mutation.policy.applicationControl.updatePolicy.json +123 -0
  72. models/mutation.policy.applicationControl.updateRule.json +20 -0
  73. models/mutation.policy.applicationControl.updateSection.json +103 -0
  74. models/mutation.policy.dynamicIpAllocation.addRule.json +20 -0
  75. models/mutation.policy.dynamicIpAllocation.addSection.json +103 -0
  76. models/mutation.policy.dynamicIpAllocation.createPolicyRevision.json +123 -0
  77. models/mutation.policy.dynamicIpAllocation.discardPolicyRevision.json +123 -0
  78. models/mutation.policy.dynamicIpAllocation.moveRule.json +20 -0
  79. models/mutation.policy.dynamicIpAllocation.moveSection.json +103 -0
  80. models/mutation.policy.dynamicIpAllocation.publishPolicyRevision.json +123 -0
  81. models/mutation.policy.dynamicIpAllocation.removeRule.json +20 -0
  82. models/mutation.policy.dynamicIpAllocation.removeSection.json +103 -0
  83. models/mutation.policy.dynamicIpAllocation.updatePolicy.json +123 -0
  84. models/mutation.policy.dynamicIpAllocation.updateRule.json +20 -0
  85. models/mutation.policy.dynamicIpAllocation.updateSection.json +103 -0
  86. models/mutation.policy.internetFirewall.addRule.json +20 -0
  87. models/mutation.policy.internetFirewall.addSection.json +103 -0
  88. models/mutation.policy.internetFirewall.createPolicyRevision.json +123 -0
  89. models/mutation.policy.internetFirewall.discardPolicyRevision.json +123 -0
  90. models/mutation.policy.internetFirewall.moveRule.json +20 -0
  91. models/mutation.policy.internetFirewall.moveSection.json +103 -0
  92. models/mutation.policy.internetFirewall.publishPolicyRevision.json +123 -0
  93. models/mutation.policy.internetFirewall.removeRule.json +20 -0
  94. models/mutation.policy.internetFirewall.removeSection.json +103 -0
  95. models/mutation.policy.internetFirewall.updatePolicy.json +123 -0
  96. models/mutation.policy.internetFirewall.updateRule.json +20 -0
  97. models/mutation.policy.internetFirewall.updateSection.json +103 -0
  98. models/mutation.policy.remotePortFwd.addRule.json +20 -0
  99. models/mutation.policy.remotePortFwd.addSection.json +103 -0
  100. models/mutation.policy.remotePortFwd.createPolicyRevision.json +123 -0
  101. models/mutation.policy.remotePortFwd.discardPolicyRevision.json +123 -0
  102. models/mutation.policy.remotePortFwd.moveRule.json +20 -0
  103. models/mutation.policy.remotePortFwd.moveSection.json +103 -0
  104. models/mutation.policy.remotePortFwd.publishPolicyRevision.json +123 -0
  105. models/mutation.policy.remotePortFwd.removeRule.json +20 -0
  106. models/mutation.policy.remotePortFwd.removeSection.json +103 -0
  107. models/mutation.policy.remotePortFwd.updatePolicy.json +123 -0
  108. models/mutation.policy.remotePortFwd.updateRule.json +20 -0
  109. models/mutation.policy.remotePortFwd.updateSection.json +103 -0
  110. models/mutation.policy.socketLan.addRule.json +40 -0
  111. models/mutation.policy.socketLan.addSection.json +103 -0
  112. models/mutation.policy.socketLan.createPolicyRevision.json +143 -0
  113. models/mutation.policy.socketLan.discardPolicyRevision.json +143 -0
  114. models/mutation.policy.socketLan.moveRule.json +40 -0
  115. models/mutation.policy.socketLan.moveSection.json +103 -0
  116. models/mutation.policy.socketLan.publishPolicyRevision.json +143 -0
  117. models/mutation.policy.socketLan.removeRule.json +40 -0
  118. models/mutation.policy.socketLan.removeSection.json +103 -0
  119. models/mutation.policy.socketLan.updatePolicy.json +143 -0
  120. models/mutation.policy.socketLan.updateRule.json +40 -0
  121. models/mutation.policy.socketLan.updateSection.json +103 -0
  122. models/mutation.policy.terminalServer.addRule.json +20 -0
  123. models/mutation.policy.terminalServer.addSection.json +103 -0
  124. models/mutation.policy.terminalServer.createPolicyRevision.json +123 -0
  125. models/mutation.policy.terminalServer.discardPolicyRevision.json +123 -0
  126. models/mutation.policy.terminalServer.moveRule.json +20 -0
  127. models/mutation.policy.terminalServer.moveSection.json +103 -0
  128. models/mutation.policy.terminalServer.publishPolicyRevision.json +123 -0
  129. models/mutation.policy.terminalServer.removeRule.json +20 -0
  130. models/mutation.policy.terminalServer.removeSection.json +103 -0
  131. models/mutation.policy.terminalServer.updatePolicy.json +123 -0
  132. models/mutation.policy.terminalServer.updateRule.json +20 -0
  133. models/mutation.policy.terminalServer.updateSection.json +103 -0
  134. models/mutation.policy.tlsInspect.addRule.json +20 -0
  135. models/mutation.policy.tlsInspect.addSection.json +103 -0
  136. models/mutation.policy.tlsInspect.createPolicyRevision.json +123 -0
  137. models/mutation.policy.tlsInspect.discardPolicyRevision.json +123 -0
  138. models/mutation.policy.tlsInspect.moveRule.json +20 -0
  139. models/mutation.policy.tlsInspect.moveSection.json +103 -0
  140. models/mutation.policy.tlsInspect.publishPolicyRevision.json +123 -0
  141. models/mutation.policy.tlsInspect.removeRule.json +20 -0
  142. models/mutation.policy.tlsInspect.removeSection.json +103 -0
  143. models/mutation.policy.tlsInspect.updatePolicy.json +123 -0
  144. models/mutation.policy.tlsInspect.updateRule.json +20 -0
  145. models/mutation.policy.tlsInspect.updateSection.json +103 -0
  146. models/mutation.policy.wanFirewall.addRule.json +20 -0
  147. models/mutation.policy.wanFirewall.addSection.json +103 -0
  148. models/mutation.policy.wanFirewall.createPolicyRevision.json +123 -0
  149. models/mutation.policy.wanFirewall.discardPolicyRevision.json +123 -0
  150. models/mutation.policy.wanFirewall.moveRule.json +20 -0
  151. models/mutation.policy.wanFirewall.moveSection.json +103 -0
  152. models/mutation.policy.wanFirewall.publishPolicyRevision.json +123 -0
  153. models/mutation.policy.wanFirewall.removeRule.json +20 -0
  154. models/mutation.policy.wanFirewall.removeSection.json +103 -0
  155. models/mutation.policy.wanFirewall.updatePolicy.json +123 -0
  156. models/mutation.policy.wanFirewall.updateRule.json +20 -0
  157. models/mutation.policy.wanFirewall.updateSection.json +103 -0
  158. models/mutation.policy.wanNetwork.addRule.json +20 -0
  159. models/mutation.policy.wanNetwork.addSection.json +103 -0
  160. models/mutation.policy.wanNetwork.createPolicyRevision.json +123 -0
  161. models/mutation.policy.wanNetwork.discardPolicyRevision.json +123 -0
  162. models/mutation.policy.wanNetwork.moveRule.json +20 -0
  163. models/mutation.policy.wanNetwork.moveSection.json +103 -0
  164. models/mutation.policy.wanNetwork.publishPolicyRevision.json +123 -0
  165. models/mutation.policy.wanNetwork.removeRule.json +20 -0
  166. models/mutation.policy.wanNetwork.removeSection.json +103 -0
  167. models/mutation.policy.wanNetwork.updatePolicy.json +123 -0
  168. models/mutation.policy.wanNetwork.updateRule.json +20 -0
  169. models/mutation.policy.wanNetwork.updateSection.json +103 -0
  170. models/mutation.xdr.analystFeedback.json +822 -87
  171. models/query.policy.antiMalwareFileHash.policy.json +123 -0
  172. models/query.policy.appTenantRestriction.policy.json +123 -0
  173. models/query.policy.applicationControl.policy.json +123 -0
  174. models/query.policy.dynamicIpAllocation.policy.json +123 -0
  175. models/query.policy.internetFirewall.policy.json +123 -0
  176. models/query.policy.remotePortFwd.policy.json +123 -0
  177. models/query.policy.socketLan.policy.json +143 -0
  178. models/query.policy.terminalServer.policy.json +123 -0
  179. models/query.policy.tlsInspect.policy.json +123 -0
  180. models/query.policy.wanFirewall.policy.json +123 -0
  181. models/query.policy.wanNetwork.policy.json +123 -0
  182. models/query.xdr.stories.json +822 -87
  183. models/query.xdr.story.json +822 -87
  184. schema/catolib.py +34 -17
  185. catocli/Utils/csv_formatter.py +0 -663
  186. scripts/catolib.py +0 -62
  187. scripts/export_if_rules_to_json.py +0 -188
  188. scripts/export_wf_rules_to_json.py +0 -111
  189. scripts/import_wf_rules_to_tfstate.py +0 -331
  190. {catocli-3.0.14.dist-info → catocli-3.0.22.dist-info}/WHEEL +0 -0
  191. {catocli-3.0.14.dist-info → catocli-3.0.22.dist-info}/entry_points.txt +0 -0
  192. {catocli-3.0.14.dist-info → catocli-3.0.22.dist-info}/licenses/LICENSE +0 -0
@@ -38,25 +38,305 @@ catocli query eventsTimeSeries '{
38
38
  }'
39
39
  ```
40
40
 
41
+ ## Advanced Usage
42
+ ### Additional Examples
43
+ - Weekly break down by hour of Internet Firewall events by rule_name
44
+ - Weekly hourly breakdown by hour of sum of site events
45
+ - 1 hour in 5 min increments of sum of site events used for detecting throttling
46
+ - Basic Event Count Query with enhanced formatting
47
+ - Basic Event Count Query - Returns formatted JSON with granularity-adjusted values
48
+ - Security Events Analysis
49
+ - Security Events Analysis - Daily breakdown of security events
50
+ - Connectivity Events by Country
51
+ - Connectivity Events by Country - Weekly breakdown with country dimensions
52
+ - Threat Analysis with Trend
53
+ - Threat Analysis with Trend - Monthly threat score analysis
54
+ - Socket Connectivity Analysis
55
+ - Socket Connectivity Analysis - Connection events by socket interface
56
+
57
+ # Weekly break down by hour of Internet Firewall events by rule_name
58
+
59
+ ```bash
60
+ # Weekly break down by hour of Internet Firewall events by rule_name
61
+ catocli query eventsTimeSeries '{
62
+ "buckets": 168,
63
+ "eventsDimension": [
64
+ {
65
+ "fieldName": "rule_name"
66
+ }
67
+ ],
68
+ "eventsFilter": [
69
+ {
70
+ "fieldName": "event_sub_type",
71
+ "operator": "is",
72
+ "values": [
73
+ "Internet Firewall"
74
+ ]
75
+ }
76
+ ],
77
+ "eventsMeasure": [
78
+ {
79
+ "aggType": "sum",
80
+ "fieldName": "event_count"
81
+ }
82
+ ],
83
+ "timeFrame": "last.P7D"
84
+ }'
85
+ ```
86
+
87
+ # Weekly hourly breakdown by hour of sum of site events
88
+
89
+ ```bash
90
+ # Weekly hourly breakdown by hour of sum of site events
91
+ catocli query eventsTimeSeries -accountID=15412 '{
92
+ "buckets": 168,
93
+ "eventsDimension": [],
94
+ "eventsFilter": [
95
+ {
96
+ "fieldName": "src_is_site_or_vpn",
97
+ "operator": "is",
98
+ "values": [
99
+ "Site"
100
+ ]
101
+ }
102
+ ],
103
+ "eventsMeasure": [
104
+ {
105
+ "aggType": "sum",
106
+ "fieldName": "event_count"
107
+ }
108
+ ],
109
+ "timeFrame": "last.P7D"
110
+ }'
111
+ ```
112
+
113
+
114
+ # 1 hour in 5 min increments of sum of site events used for detecting throttling
115
+
116
+ ```bash
117
+ # 1 hour in 5 min increments of sum of site events used for detecting throttling
118
+ catocli query eventsTimeSeries -accountID=15412 '{
119
+ "buckets": 12,
120
+ "eventsDimension": [],
121
+ "eventsFilter": [
122
+ {
123
+ "fieldName": "src_is_site_or_vpn",
124
+ "operator": "is",
125
+ "values": [
126
+ "Site"
127
+ ]
128
+ }
129
+ ],
130
+ "eventsMeasure": [
131
+ {
132
+ "aggType": "sum",
133
+ "fieldName": "event_count"
134
+ }
135
+ ],
136
+ "timeFrame": "last.P1D"
137
+ }'
138
+ ```
139
+
140
+
141
+
142
+
143
+ # Basic Event Count Query with enhanced formatting
144
+
145
+ ```bash
146
+ # Basic Event Count Query - Returns formatted JSON with granularity-adjusted values
147
+ catocli query eventsTimeSeries '{
148
+ "buckets": 4,
149
+ "eventsDimension": [],
150
+ "eventsFilter": [],
151
+ "eventsMeasure": [
152
+ {
153
+ "aggType": "sum",
154
+ "fieldName": "event_count"
155
+ }
156
+ ],
157
+ "timeFrame": "utc.2023-02-{28/00:00:00--28/23:59:59}"
158
+ }'
159
+ ```
160
+
161
+ # Security Events Analysis
162
+
163
+ ```bash
164
+ # Security Events Analysis - Daily breakdown of security events
165
+ catocli query eventsTimeSeries '{
166
+ "buckets": 24,
167
+ "eventsDimension": [],
168
+ "eventsFilter": [
169
+ {
170
+ "fieldName": "event_type",
171
+ "operator": "is",
172
+ "values": ["Security"]
173
+ }
174
+ ],
175
+ "eventsMeasure": [
176
+ {
177
+ "aggType": "sum",
178
+ "fieldName": "event_count"
179
+ }
180
+ ],
181
+ "timeFrame": "utc.2023-02-{28/00:00:00--28/23:59:59}"
182
+ }'
183
+ ```
184
+
185
+ # Connectivity Events by Country
186
+
187
+ ```bash
188
+ # Connectivity Events by Country - Weekly breakdown with country dimensions
189
+ catocli query eventsTimeSeries '{
190
+ "buckets": 7,
191
+ "eventsDimension": [
192
+ {
193
+ "fieldName": "src_country"
194
+ }
195
+ ],
196
+ "eventsFilter": [
197
+ {
198
+ "fieldName": "event_type",
199
+ "operator": "is",
200
+ "values": ["Connectivity"]
201
+ }
202
+ ],
203
+ "eventsMeasure": [
204
+ {
205
+ "aggType": "sum",
206
+ "fieldName": "event_count"
207
+ }
208
+ ],
209
+ "timeFrame": "utc.2023-03-{01/00:00:00--07/23:59:59}"
210
+ }'
211
+ ```
212
+
213
+ # Threat Analysis with Trend
214
+
215
+ ```bash
216
+ # Threat Analysis with Trend - Monthly threat score analysis
217
+ catocli query eventsTimeSeries '{
218
+ "buckets": 31,
219
+ "eventsDimension": [],
220
+ "eventsFilter": [
221
+ {
222
+ "fieldName": "event_type",
223
+ "operator": "is",
224
+ "values": ["Security"]
225
+ },
226
+ {
227
+ "fieldName": "threat_score",
228
+ "operator": "gt",
229
+ "values": ["50"]
230
+ }
231
+ ],
232
+ "eventsMeasure": [
233
+ {
234
+ "aggType": "avg",
235
+ "fieldName": "threat_score"
236
+ }
237
+ ],
238
+ "timeFrame": "utc.2023-01-{01/00:00:00--31/23:59:59}"
239
+ }'
240
+ ```
241
+
242
+ # Socket Connectivity Analysis
243
+
244
+ ```bash
245
+ # Socket Connectivity Analysis - Connection events by socket interface
246
+ catocli query eventsTimeSeries '{
247
+ "buckets": 28,
248
+ "eventsDimension": [
249
+ {
250
+ "fieldName": "socket_interface"
251
+ }
252
+ ],
253
+ "eventsFilter": [
254
+ {
255
+ "fieldName": "event_type",
256
+ "operator": "is",
257
+ "values": ["Connectivity"]
258
+ },
259
+ {
260
+ "fieldName": "event_sub_type",
261
+ "operator": "in",
262
+ "values": ["Connected", "Disconnected"]
263
+ }
264
+ ],
265
+ "eventsMeasure": [
266
+ {
267
+ "aggType": "sum",
268
+ "fieldName": "event_count"
269
+ }
270
+ ],
271
+ "timeFrame": "utc.2023-02-{01/00:00:00--28/23:59:59}"
272
+ }'
273
+ ```
274
+
275
+ ## Output Format Options
276
+
277
+ The eventsTimeSeries query supports multiple output formats:
278
+
279
+ ### Enhanced JSON Format (default)
280
+ Returns formatted JSON with granularity multiplication applied to sum aggregations when appropriate:
281
+ ```bash
282
+ catocli query eventsTimeSeries '{...}'
283
+ ```
284
+
285
+ ### Raw JSON Format
286
+ Returns the original API response without formatting:
287
+ ```bash
288
+ catocli query eventsTimeSeries '{...}' -raw
289
+ ```
290
+
291
+ ### CSV Format
292
+ Exports data to CSV file with granularity-adjusted values:
293
+ ```bash
294
+ catocli query eventsTimeSeries '{...}' -f csv
295
+ ```
296
+
297
+ ### Custom CSV filename with timestamp
298
+ ```bash
299
+ catocli query eventsTimeSeries '{...}' -f csv --csv-filename "my_events" --append-timestamp
300
+ ```
301
+
302
+ ## Granularity Multiplication
303
+
304
+ When using sum aggregations on count fields like `event_count`, the formatter automatically multiplies fractional values by the granularity period to provide meaningful totals. This is especially useful for time-series data where the API returns normalized values that need to be scaled to the actual time period.
305
+
306
+ **Example:**
307
+ - Original API value: 0.096 events per period
308
+ - Granularity: 3600 seconds (1 hour)
309
+ - Computed value: 0.096 × 3600 = 345.6 total events
310
+
311
+ Use the `-raw` flag to see the original unprocessed values if needed.
312
+
313
+ ## Additional Resources
314
+
315
+ - [Cato API Documentation](https://api.catonetworks.com/documentation/#query-eventsTimeSeries)
316
+
317
+
318
+
319
+
320
+
41
321
 
42
322
  #### TimeFrame Parameter Examples
43
323
 
44
324
  The `timeFrame` parameter supports both relative time ranges and absolute date ranges:
45
325
 
46
326
  **Relative Time Ranges:**
47
- - `"last.PT5M"` = Previous 5 minutes
48
- - `"last.PT1H"` = Previous 1 hour
49
- - `"last.P1D"` = Previous 1 day
50
- - `"last.P14D"` = Previous 14 days
51
- - `"last.P1M"` = Previous 1 month
327
+ - "last.PT5M" = Previous 5 minutes
328
+ - "last.PT1H" = Previous 1 hour
329
+ - "last.P1D" = Previous 1 day
330
+ - "last.P14D" = Previous 14 days
331
+ - "last.P1M" = Previous 1 month
52
332
 
53
333
  **Absolute Date Ranges:**
54
334
  Format: `"utc.YYYY-MM-{DD/HH:MM:SS--DD/HH:MM:SS}"`
55
335
 
56
- - Single day: `"utc.2023-02-{28/00:00:00--28/23:59:59}"`
57
- - Multiple days: `"utc.2023-02-{25/00:00:00--28/23:59:59}"`
58
- - Specific hours: `"utc.2023-02-{28/09:00:00--28/17:00:00}"`
59
- - Across months: `"utc.2023-{01-28/00:00:00--02-03/23:59:59}"`
336
+ - Single day: "utc.2023-02-{28/00:00:00--28/23:59:59}"
337
+ - Multiple days: "utc.2023-02-{25/00:00:00--28/23:59:59}"
338
+ - Specific hours: "utc.2023-02-{28/09:00:00--28/17:00:00}"
339
+ - Across months: "utc.2023-{01-28/00:00:00--02-03/23:59:59}"
60
340
 
61
341
 
62
342
  #### Operation Arguments for query.eventsTimeSeries ####
@@ -16,4 +16,10 @@ def query_eventsTimeSeries_parse(query_subparsers):
16
16
  query_eventsTimeSeries_parser.add_argument('-z', '--sentinel', dest='sentinel', help='Send events to Sentinel customerid:sharedkey')
17
17
  query_eventsTimeSeries_parser.add_argument('-H', '--header', action='append', dest='headers', help='Add custom headers in "Key: Value" format. Can be used multiple times.')
18
18
  query_eventsTimeSeries_parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
19
+
20
+
21
+ query_eventsTimeSeries_parser.add_argument('-f', '--format', choices=['json', 'csv'], help='Output format (default: formatted json, use -raw for original json)')
22
+ query_eventsTimeSeries_parser.add_argument('-raw', '--raw', dest='raw_output', action='store_true', help='Return raw/original JSON format (bypasses default formatting)')
23
+ query_eventsTimeSeries_parser.add_argument('--csv-filename', dest='csv_filename', help='Override CSV file name (default: eventstimeseries.csv)')
24
+ query_eventsTimeSeries_parser.add_argument('--append-timestamp', dest='append_timestamp', action='store_true', help='Append timestamp to the CSV file name')
19
25
  query_eventsTimeSeries_parser.set_defaults(func=createRequest,operation_name='query.eventsTimeSeries')
@@ -30,27 +30,6 @@ def query_policy_parse(query_subparsers):
30
30
  query_policy_antiMalwareFileHash_policy_parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
31
31
  query_policy_antiMalwareFileHash_policy_parser.set_defaults(func=createRequest,operation_name='query.policy.antiMalwareFileHash.policy')
32
32
 
33
- query_policy_dynamicIpAllocation_parser = query_policy_subparsers.add_parser('dynamicIpAllocation',
34
- help='dynamicIpAllocation() policy operation',
35
- usage=get_help("query_policy_dynamicIpAllocation"))
36
-
37
- query_policy_dynamicIpAllocation_subparsers = query_policy_dynamicIpAllocation_parser.add_subparsers()
38
-
39
- query_policy_dynamicIpAllocation_policy_parser = query_policy_dynamicIpAllocation_subparsers.add_parser('policy',
40
- help='policy() dynamicIpAllocation operation',
41
- usage=get_help("query_policy_dynamicIpAllocation_policy"))
42
-
43
- query_policy_dynamicIpAllocation_policy_parser.add_argument('json', nargs='?', default='{}', help='Variables in JSON format (defaults to empty object if not provided).')
44
- query_policy_dynamicIpAllocation_policy_parser.add_argument('-accountID', help='The cato account ID to use for this operation. Overrides the account_id value in the profile setting. This is use for reseller and MSP accounts to run queries against cato sub accounts from the parent account.')
45
- query_policy_dynamicIpAllocation_policy_parser.add_argument('-t', const=True, default=False, nargs='?', help='Print GraphQL query without sending API call')
46
- query_policy_dynamicIpAllocation_policy_parser.add_argument('-v', const=True, default=False, nargs='?', help='Verbose output')
47
- query_policy_dynamicIpAllocation_policy_parser.add_argument('-p', const=True, default=False, nargs='?', help='Pretty print')
48
- query_policy_dynamicIpAllocation_policy_parser.add_argument('-n', '--stream-events', dest='stream_events', help='Send events over network to host:port TCP')
49
- query_policy_dynamicIpAllocation_policy_parser.add_argument('-z', '--sentinel', dest='sentinel', help='Send events to Sentinel customerid:sharedkey')
50
- query_policy_dynamicIpAllocation_policy_parser.add_argument('-H', '--header', action='append', dest='headers', help='Add custom headers in "Key: Value" format. Can be used multiple times.')
51
- query_policy_dynamicIpAllocation_policy_parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
52
- query_policy_dynamicIpAllocation_policy_parser.set_defaults(func=createRequest,operation_name='query.policy.dynamicIpAllocation.policy')
53
-
54
33
  query_policy_socketLan_parser = query_policy_subparsers.add_parser('socketLan',
55
34
  help='socketLan() policy operation',
56
35
  usage=get_help("query_policy_socketLan"))
@@ -72,27 +51,6 @@ def query_policy_parse(query_subparsers):
72
51
  query_policy_socketLan_policy_parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
73
52
  query_policy_socketLan_policy_parser.set_defaults(func=createRequest,operation_name='query.policy.socketLan.policy')
74
53
 
75
- query_policy_terminalServer_parser = query_policy_subparsers.add_parser('terminalServer',
76
- help='terminalServer() policy operation',
77
- usage=get_help("query_policy_terminalServer"))
78
-
79
- query_policy_terminalServer_subparsers = query_policy_terminalServer_parser.add_subparsers()
80
-
81
- query_policy_terminalServer_policy_parser = query_policy_terminalServer_subparsers.add_parser('policy',
82
- help='policy() terminalServer operation',
83
- usage=get_help("query_policy_terminalServer_policy"))
84
-
85
- query_policy_terminalServer_policy_parser.add_argument('json', nargs='?', default='{}', help='Variables in JSON format (defaults to empty object if not provided).')
86
- query_policy_terminalServer_policy_parser.add_argument('-accountID', help='The cato account ID to use for this operation. Overrides the account_id value in the profile setting. This is use for reseller and MSP accounts to run queries against cato sub accounts from the parent account.')
87
- query_policy_terminalServer_policy_parser.add_argument('-t', const=True, default=False, nargs='?', help='Print GraphQL query without sending API call')
88
- query_policy_terminalServer_policy_parser.add_argument('-v', const=True, default=False, nargs='?', help='Verbose output')
89
- query_policy_terminalServer_policy_parser.add_argument('-p', const=True, default=False, nargs='?', help='Pretty print')
90
- query_policy_terminalServer_policy_parser.add_argument('-n', '--stream-events', dest='stream_events', help='Send events over network to host:port TCP')
91
- query_policy_terminalServer_policy_parser.add_argument('-z', '--sentinel', dest='sentinel', help='Send events to Sentinel customerid:sharedkey')
92
- query_policy_terminalServer_policy_parser.add_argument('-H', '--header', action='append', dest='headers', help='Add custom headers in "Key: Value" format. Can be used multiple times.')
93
- query_policy_terminalServer_policy_parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
94
- query_policy_terminalServer_policy_parser.set_defaults(func=createRequest,operation_name='query.policy.terminalServer.policy')
95
-
96
54
  query_policy_wanNetwork_parser = query_policy_subparsers.add_parser('wanNetwork',
97
55
  help='wanNetwork() policy operation',
98
56
  usage=get_help("query_policy_wanNetwork"))
@@ -239,3 +197,45 @@ def query_policy_parse(query_subparsers):
239
197
  query_policy_tlsInspect_policy_parser.add_argument('-H', '--header', action='append', dest='headers', help='Add custom headers in "Key: Value" format. Can be used multiple times.')
240
198
  query_policy_tlsInspect_policy_parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
241
199
  query_policy_tlsInspect_policy_parser.set_defaults(func=createRequest,operation_name='query.policy.tlsInspect.policy')
200
+
201
+ query_policy_dynamicIpAllocation_parser = query_policy_subparsers.add_parser('dynamicIpAllocation',
202
+ help='dynamicIpAllocation() policy operation',
203
+ usage=get_help("query_policy_dynamicIpAllocation"))
204
+
205
+ query_policy_dynamicIpAllocation_subparsers = query_policy_dynamicIpAllocation_parser.add_subparsers()
206
+
207
+ query_policy_dynamicIpAllocation_policy_parser = query_policy_dynamicIpAllocation_subparsers.add_parser('policy',
208
+ help='policy() dynamicIpAllocation operation',
209
+ usage=get_help("query_policy_dynamicIpAllocation_policy"))
210
+
211
+ query_policy_dynamicIpAllocation_policy_parser.add_argument('json', nargs='?', default='{}', help='Variables in JSON format (defaults to empty object if not provided).')
212
+ query_policy_dynamicIpAllocation_policy_parser.add_argument('-accountID', help='The cato account ID to use for this operation. Overrides the account_id value in the profile setting. This is use for reseller and MSP accounts to run queries against cato sub accounts from the parent account.')
213
+ query_policy_dynamicIpAllocation_policy_parser.add_argument('-t', const=True, default=False, nargs='?', help='Print GraphQL query without sending API call')
214
+ query_policy_dynamicIpAllocation_policy_parser.add_argument('-v', const=True, default=False, nargs='?', help='Verbose output')
215
+ query_policy_dynamicIpAllocation_policy_parser.add_argument('-p', const=True, default=False, nargs='?', help='Pretty print')
216
+ query_policy_dynamicIpAllocation_policy_parser.add_argument('-n', '--stream-events', dest='stream_events', help='Send events over network to host:port TCP')
217
+ query_policy_dynamicIpAllocation_policy_parser.add_argument('-z', '--sentinel', dest='sentinel', help='Send events to Sentinel customerid:sharedkey')
218
+ query_policy_dynamicIpAllocation_policy_parser.add_argument('-H', '--header', action='append', dest='headers', help='Add custom headers in "Key: Value" format. Can be used multiple times.')
219
+ query_policy_dynamicIpAllocation_policy_parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
220
+ query_policy_dynamicIpAllocation_policy_parser.set_defaults(func=createRequest,operation_name='query.policy.dynamicIpAllocation.policy')
221
+
222
+ query_policy_terminalServer_parser = query_policy_subparsers.add_parser('terminalServer',
223
+ help='terminalServer() policy operation',
224
+ usage=get_help("query_policy_terminalServer"))
225
+
226
+ query_policy_terminalServer_subparsers = query_policy_terminalServer_parser.add_subparsers()
227
+
228
+ query_policy_terminalServer_policy_parser = query_policy_terminalServer_subparsers.add_parser('policy',
229
+ help='policy() terminalServer operation',
230
+ usage=get_help("query_policy_terminalServer_policy"))
231
+
232
+ query_policy_terminalServer_policy_parser.add_argument('json', nargs='?', default='{}', help='Variables in JSON format (defaults to empty object if not provided).')
233
+ query_policy_terminalServer_policy_parser.add_argument('-accountID', help='The cato account ID to use for this operation. Overrides the account_id value in the profile setting. This is use for reseller and MSP accounts to run queries against cato sub accounts from the parent account.')
234
+ query_policy_terminalServer_policy_parser.add_argument('-t', const=True, default=False, nargs='?', help='Print GraphQL query without sending API call')
235
+ query_policy_terminalServer_policy_parser.add_argument('-v', const=True, default=False, nargs='?', help='Verbose output')
236
+ query_policy_terminalServer_policy_parser.add_argument('-p', const=True, default=False, nargs='?', help='Pretty print')
237
+ query_policy_terminalServer_policy_parser.add_argument('-n', '--stream-events', dest='stream_events', help='Send events over network to host:port TCP')
238
+ query_policy_terminalServer_policy_parser.add_argument('-z', '--sentinel', dest='sentinel', help='Send events to Sentinel customerid:sharedkey')
239
+ query_policy_terminalServer_policy_parser.add_argument('-H', '--header', action='append', dest='headers', help='Add custom headers in "Key: Value" format. Can be used multiple times.')
240
+ query_policy_terminalServer_policy_parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
241
+ query_policy_terminalServer_policy_parser.set_defaults(func=createRequest,operation_name='query.policy.terminalServer.policy')
@@ -40,25 +40,69 @@ catocli query socketPortMetrics '{
40
40
  }'
41
41
  ```
42
42
 
43
+ ## Advanced Usage
44
+ ### Additional Examples
45
+ - 1 Day sum of traffic by site, socket_interface, device_id
46
+
47
+ # 1 Day sum of traffic by site, socket_interface, device_id
48
+
49
+ ```bash
50
+ # 1 Day sum of traffic by site, socket_interface, device_id
51
+ catocli query socketPortMetrics '{
52
+ "socketPortMetricsDimension": [
53
+ {
54
+ "fieldName": "socket_interface"
55
+ },
56
+ {
57
+ "fieldName": "device_id"
58
+ },
59
+ {
60
+ "fieldName": "site_id"
61
+ },
62
+ {
63
+ "fieldName": "site_name"
64
+ }
65
+ ],
66
+ "socketPortMetricsFilter": [],
67
+ "socketPortMetricsMeasure": [
68
+ {
69
+ "aggType": "sum",
70
+ "fieldName": "bytes_upstream"
71
+ },
72
+ {
73
+ "aggType": "sum",
74
+ "fieldName": "bytes_downstream"
75
+ },
76
+ {
77
+ "aggType": "sum",
78
+ "fieldName": "bytes_total"
79
+ }
80
+ ],
81
+ "socketPortMetricsSort": [],
82
+ "timeFrame": "last.P1D"
83
+ }'
84
+ ```
85
+
86
+
43
87
 
44
88
  #### TimeFrame Parameter Examples
45
89
 
46
90
  The `timeFrame` parameter supports both relative time ranges and absolute date ranges:
47
91
 
48
92
  **Relative Time Ranges:**
49
- - `"last.PT5M"` = Previous 5 minutes
50
- - `"last.PT1H"` = Previous 1 hour
51
- - `"last.P1D"` = Previous 1 day
52
- - `"last.P14D"` = Previous 14 days
53
- - `"last.P1M"` = Previous 1 month
93
+ - "last.PT5M" = Previous 5 minutes
94
+ - "last.PT1H" = Previous 1 hour
95
+ - "last.P1D" = Previous 1 day
96
+ - "last.P14D" = Previous 14 days
97
+ - "last.P1M" = Previous 1 month
54
98
 
55
99
  **Absolute Date Ranges:**
56
100
  Format: `"utc.YYYY-MM-{DD/HH:MM:SS--DD/HH:MM:SS}"`
57
101
 
58
- - Single day: `"utc.2023-02-{28/00:00:00--28/23:59:59}"`
59
- - Multiple days: `"utc.2023-02-{25/00:00:00--28/23:59:59}"`
60
- - Specific hours: `"utc.2023-02-{28/09:00:00--28/17:00:00}"`
61
- - Across months: `"utc.2023-{01-28/00:00:00--02-03/23:59:59}"`
102
+ - Single day: "utc.2023-02-{28/00:00:00--28/23:59:59}"
103
+ - Multiple days: "utc.2023-02-{25/00:00:00--28/23:59:59}"
104
+ - Specific hours: "utc.2023-02-{28/09:00:00--28/17:00:00}"
105
+ - Across months: "utc.2023-{01-28/00:00:00--02-03/23:59:59}"
62
106
 
63
107
 
64
108
  #### Operation Arguments for query.socketPortMetrics ####
@@ -16,4 +16,10 @@ def query_socketPortMetrics_parse(query_subparsers):
16
16
  query_socketPortMetrics_parser.add_argument('-z', '--sentinel', dest='sentinel', help='Send events to Sentinel customerid:sharedkey')
17
17
  query_socketPortMetrics_parser.add_argument('-H', '--header', action='append', dest='headers', help='Add custom headers in "Key: Value" format. Can be used multiple times.')
18
18
  query_socketPortMetrics_parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
19
+
20
+
21
+ query_socketPortMetrics_parser.add_argument('-f', '--format', choices=['json', 'csv'], help='Output format (default: formatted json, use -raw for original json)')
22
+ query_socketPortMetrics_parser.add_argument('-raw', '--raw', dest='raw_output', action='store_true', help='Return raw/original JSON format (bypasses default formatting)')
23
+ query_socketPortMetrics_parser.add_argument('--csv-filename', dest='csv_filename', help='Override CSV file name (default: socketportmetrics.csv)')
24
+ query_socketPortMetrics_parser.add_argument('--append-timestamp', dest='append_timestamp', action='store_true', help='Append timestamp to the CSV file name')
19
25
  query_socketPortMetrics_parser.set_defaults(func=createRequest,operation_name='query.socketPortMetrics')
@@ -38,25 +38,108 @@ catocli query socketPortMetricsTimeSeries '{
38
38
  }'
39
39
  ```
40
40
 
41
+ ## Advanced Usage
42
+ ### Additional Examples
43
+ - 1 Day sum of traffic by site, socket_interface, device_id
44
+ - 1 Day sum of traffic by site, socket_interface, device_id as csv
45
+
46
+ # 1 Day sum of traffic by site, socket_interface, device_id
47
+
48
+ ```bash
49
+ # 1 Day sum of traffic by site, socket_interface, device_id as csv
50
+ catocli query socketPortMetricsTimeSeries
51
+ "buckets": 24,
52
+ "socketPortMetricsDimension": [
53
+ {
54
+ "fieldName": "socket_interface"
55
+ },
56
+ {
57
+ "fieldName": "device_id"
58
+ },
59
+ {
60
+ "fieldName": "site_id"
61
+ },
62
+ {
63
+ "fieldName": "site_name"
64
+ }
65
+ ],
66
+ "socketPortMetricsFilter": [],
67
+ "socketPortMetricsMeasure": [
68
+ {
69
+ "aggType": "sum",
70
+ "fieldName": "bytes_downstream"
71
+ },
72
+ {
73
+ "aggType": "sum",
74
+ "fieldName": "bytes_upstream"
75
+ },
76
+ {
77
+ "aggType": "sum",
78
+ "fieldName": "bytes_total"
79
+ }
80
+ ],
81
+ "timeFrame": "last.P1D"
82
+ }' -f csv
83
+ ```
84
+
85
+ # 1 Day sum of traffic by site, socket_interface, device_id
86
+
87
+ ```bash
88
+ # 1 Day sum of traffic by site, socket_interface, device_id
89
+ catocli query socketPortMetricsTimeSeries '{
90
+ "buckets": 120,
91
+ "socketPortMetricsDimension": [
92
+ {
93
+ "fieldName": "socket_interface"
94
+ },
95
+ {
96
+ "fieldName": "device_id"
97
+ },
98
+ {
99
+ "fieldName": "site_id"
100
+ },
101
+ {
102
+ "fieldName": "site_name"
103
+ }
104
+ ],
105
+ "socketPortMetricsFilter": [],
106
+ "socketPortMetricsMeasure": [
107
+ {
108
+ "aggType": "sum",
109
+ "fieldName": "throughput_downstream"
110
+ },
111
+ {
112
+ "aggType": "sum",
113
+ "fieldName": "throughput_upstream"
114
+ }
115
+ ],
116
+ "timeFrame": "last.P2M"
117
+ }'
118
+ ```
119
+
120
+
121
+
122
+
123
+
41
124
 
42
125
  #### TimeFrame Parameter Examples
43
126
 
44
127
  The `timeFrame` parameter supports both relative time ranges and absolute date ranges:
45
128
 
46
129
  **Relative Time Ranges:**
47
- - `"last.PT5M"` = Previous 5 minutes
48
- - `"last.PT1H"` = Previous 1 hour
49
- - `"last.P1D"` = Previous 1 day
50
- - `"last.P14D"` = Previous 14 days
51
- - `"last.P1M"` = Previous 1 month
130
+ - "last.PT5M" = Previous 5 minutes
131
+ - "last.PT1H" = Previous 1 hour
132
+ - "last.P1D" = Previous 1 day
133
+ - "last.P14D" = Previous 14 days
134
+ - "last.P1M" = Previous 1 month
52
135
 
53
136
  **Absolute Date Ranges:**
54
137
  Format: `"utc.YYYY-MM-{DD/HH:MM:SS--DD/HH:MM:SS}"`
55
138
 
56
- - Single day: `"utc.2023-02-{28/00:00:00--28/23:59:59}"`
57
- - Multiple days: `"utc.2023-02-{25/00:00:00--28/23:59:59}"`
58
- - Specific hours: `"utc.2023-02-{28/09:00:00--28/17:00:00}"`
59
- - Across months: `"utc.2023-{01-28/00:00:00--02-03/23:59:59}"`
139
+ - Single day: "utc.2023-02-{28/00:00:00--28/23:59:59}"
140
+ - Multiple days: "utc.2023-02-{25/00:00:00--28/23:59:59}"
141
+ - Specific hours: "utc.2023-02-{28/09:00:00--28/17:00:00}"
142
+ - Across months: "utc.2023-{01-28/00:00:00--02-03/23:59:59}"
60
143
 
61
144
 
62
145
  #### Operation Arguments for query.socketPortMetricsTimeSeries ####
@@ -17,7 +17,9 @@ def query_socketPortMetricsTimeSeries_parse(query_subparsers):
17
17
  query_socketPortMetricsTimeSeries_parser.add_argument('-H', '--header', action='append', dest='headers', help='Add custom headers in "Key: Value" format. Can be used multiple times.')
18
18
  query_socketPortMetricsTimeSeries_parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
19
19
 
20
- query_socketPortMetricsTimeSeries_parser.add_argument('-f', '--format', choices=['json', 'csv'], default='json', help='Output format (default: json)')
21
- query_socketPortMetricsTimeSeries_parser.add_argument('--csv-filename', dest='csv_filename', help='Override CSV file name (default: accountmetrics.csv)')
20
+
21
+ query_socketPortMetricsTimeSeries_parser.add_argument('-f', '--format', choices=['json', 'csv'], help='Output format (default: formatted json, use -raw for original json)')
22
+ query_socketPortMetricsTimeSeries_parser.add_argument('-raw', '--raw', dest='raw_output', action='store_true', help='Return raw/original JSON format (bypasses default formatting)')
23
+ query_socketPortMetricsTimeSeries_parser.add_argument('--csv-filename', dest='csv_filename', help='Override CSV file name (default: socketportmetricstimeseries.csv)')
22
24
  query_socketPortMetricsTimeSeries_parser.add_argument('--append-timestamp', dest='append_timestamp', action='store_true', help='Append timestamp to the CSV file name')
23
25
  query_socketPortMetricsTimeSeries_parser.set_defaults(func=createRequest,operation_name='query.socketPortMetricsTimeSeries')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: catocli
3
- Version: 3.0.14
3
+ Version: 3.0.22
4
4
  Summary: Cato Networks cli wrapper for the GraphQL API.
5
5
  Home-page: https://github.com/Cato-Networks/cato-cli
6
6
  Author: Cato Networks