@@ -30,15 +30,7 @@ samples try to use the file `.chronicle_credentials.json` in the user's home
30
30
directory. If this file is not found, you need to specify it explicitly by
31
31
adding the following argument to the sample's command-line:
32
32
33
- ``` shell
34
- -c < file_path>
35
- ```
36
-
37
- or
38
-
39
- ``` shell
40
- --credentials_file < file_path>
41
- ```
33
+ ` shell -c <file_path> ` or ` shell --credentials_file <file_path> `
42
34
43
35
## Usage
44
36
@@ -60,8 +52,166 @@ python3 -m lists.<sample_name> -h
60
52
61
53
### Lists API v1alpha
62
54
63
- ```
55
+ ``` shell
64
56
python -m lists.v1alpha.create_list -h
65
57
python -m lists.v1alpha.get_list -h
66
58
python -m lists.v1alpha.patch_list -h
67
59
```
60
+
61
+ ## Installing the Chronicle REST API SDK
62
+
63
+ Install the SDK from source
64
+ ```
65
+ python setup.py install
66
+ ```
67
+
68
+ Alternatively, install the SDK from source using make
69
+ ```
70
+ make install
71
+ ```
72
+
73
+ Build the wheel file
74
+ ```
75
+ make dist
76
+ ```
77
+
78
+ ## Using the Chronicle REST API SDK
79
+
80
+ The SDK provides a unified command-line interface for Chronicle APIs.
81
+ The CLI follows this pattern:
82
+ ```
83
+ chronicle [common options] COMMAND_GROUP COMMAND [command options]
84
+ ```
85
+
86
+ ### Common Options
87
+
88
+ Common options can be provided either via command-line arguments or environment
89
+ variables:
90
+
91
+ | CLI Option | Environment Variable | Description |
92
+ | --------------------| ----------------------------| --------------------------------|
93
+ | --credentials-file | CHRONICLE_CREDENTIALS_FILE | Path to service account file |
94
+ | --project-id | CHRONICLE_PROJECT_ID | GCP project id or number |
95
+ | --project-instance | CHRONICLE_INSTANCE | Chronicle instance ID (uuid) |
96
+ | --region | CHRONICLE_REGION | Region where project is located|
97
+
98
+ You can set these options in a ` .env ` file in your project root:
99
+
100
+ ``` bash
101
+ # .env file
102
+ CHRONICLE_CREDENTIALS_FILE=path/to/credentials.json
103
+ CHRONICLE_PROJECT_ID=your-project-id
104
+ CHRONICLE_INSTANCE=your-instance-id
105
+ CHRONICLE_REGION=your-region
106
+ ```
107
+
108
+ The SDK will use values from the ` .env ` file or a file provided with the
109
+ ` --env-file ` parameter. Command-line options take precedence over environment
110
+ variables.
111
+
112
+ ### Command Groups
113
+
114
+ #### Detection API
115
+ ``` bash
116
+ chronicle detect < command-group> < command> [options]
117
+ ```
118
+
119
+ Available command groups:
120
+
121
+ - ` alerts `
122
+ - ` get <alert-id> ` : Get alert by ID
123
+ - ` update <alert-id> ` : Update an alert
124
+ - ` bulk-update ` : Bulk update alerts matching a filter
125
+
126
+ - ` detections `
127
+ - ` get <detection-id> ` : Get detection by ID
128
+ - ` list [--filter <filter>] ` : List detections
129
+
130
+ - ` rules `
131
+ - ` create ` : Create a new rule
132
+ - ` get <rule-id> ` : Get rule by ID
133
+ - ` delete <rule-id> ` : Delete a rule
134
+ - ` enable <rule-id> ` : Enable a rule
135
+ - ` list [--filter <filter>] ` : List rules
136
+
137
+ - ` retrohunts `
138
+ - ` create ` : Create a new retrohunt
139
+ - ` get <retrohunt-id> ` : Get retrohunt by ID
140
+
141
+ - ` errors `
142
+ - ` list [--filter <filter>] ` : List errors
143
+
144
+ - ` rulesets `
145
+ - ` batch-update ` : Batch update rule set deployments
146
+
147
+ #### Ingestion API
148
+ ``` bash
149
+ chronicle ingestion < command> [options]
150
+ ```
151
+
152
+ Available commands:
153
+
154
+ - ` import-events ` : Import events into Chronicle
155
+ - ` get-event <event-id> ` : Get event details
156
+ - ` batch-get-events ` : Batch retrieve events
157
+
158
+ #### Search API
159
+ ``` bash
160
+ chronicle search < command> [options]
161
+ ```
162
+
163
+ Available commands:
164
+
165
+ - ` find-asset-events [--filter <filter>] ` : Find events for an asset
166
+ - ` find-raw-logs [--filter <filter>] ` : Search raw logs
167
+ - ` find-udm-events [--filter <filter>] ` : Find UDM events
168
+
169
+ #### Lists API
170
+ ``` bash
171
+ chronicle lists < command> [options]
172
+ ```
173
+
174
+ Available commands:
175
+
176
+ - ` create <name> [--description <desc>] --lines <json-array> ` : Create a new list
177
+ - ` get <list-id> ` : Get list by ID
178
+ - `patch <list-id > [ --description <desc >]
179
+ [ --lines-to-add <json-array >] \
180
+ [ --lines-to-remove <json-array >] `: Update an existing list
181
+
182
+ ### Examples
183
+
184
+ Using environment variables (after setting up .env):
185
+ ``` bash
186
+ # Get an alert
187
+ chronicle detect alerts get --alert-id ABC123 --env-file=.env
188
+
189
+ # Create a list
190
+ chronicle lists create --name " blocklist" --description " Blocked IPs" \
191
+ --lines ' ["1.1.1.1", "2.2.2.2"]' \
192
+ --env-file=.env
193
+
194
+ # Search for events
195
+ chronicle search find-raw-logs --filter " timestamp.seconds > 1600000000" \
196
+ --env-file=.env
197
+
198
+ # Override a specific environment variable
199
+ chronicle --region us-central1 detect alerts get --alert-id ABC123 \
200
+ --env-file=.env
201
+ ```
202
+
203
+ ## Running Individual Scripts
204
+
205
+ You can also run individual API sample scripts directly.
206
+ Each script supports the ` -h ` flag to show available options:
207
+
208
+ ``` bash
209
+ # Get help for a specific script
210
+ python -m detect.v1alpha.get_alert -h
211
+ python -m search.v1alpha.find_asset_events -h
212
+ python -m lists.v1alpha.patch_list -h
213
+ ```
214
+
215
+ ## License
216
+
217
+ Apache 2.0 - See [ LICENSE] ( LICENSE ) for more information.
0 commit comments