11---
22name : soda-cli
3- description : How to use the Soda CLI for data quality management — authentication, datasources, datasets, contracts, monitors, results, permissions, and CI/CD integration. Use when working with Soda, data quality, or the sodacli command.
3+ description : How to use the Soda CLI for data quality management — authentication, datasources, datasets, contracts, monitors, results, secrets, permissions, and CI/CD integration. Use when working with Soda, data quality, or the sodacli command.
44allowed-tools : Read, Bash(sodacli *), Bash(cat *), Glob, Grep
55---
66
@@ -16,22 +16,21 @@ When calling `sodacli` from an agent, **always pass `--output json`** to get str
1616
1717** Fully working (tested against live API):**
1818- ` auth ` — login, logout, status, switch profiles
19- - ` datasource ` — list, get, create, delete, onboard (full wizard)
20- - ` dataset ` — list (with filters), update, profiling, diagnostics, permissions, onboard
19+ - ` datasource ` — list, get, create, update, delete, onboard (full wizard), test-connection, diagnostics
20+ - ` dataset ` — list (with filters), get, update, profiling, diagnostics, permissions, onboard
2121- ` contract ` — list, push, pull, diff, lint (JSON schema validation), create (skeleton/copilot), verify (cloud or local via soda-core)
2222- ` monitor ` — list, config, add (column/custom), update, delete
2323- ` results ` — list (with all filters, sorting, date ranges)
24- - ` job ` — logs
25- - ` runner ` — list, create (returns API keys for Kubernetes deployment)
26- - ` iam ` — user list, group CRUD, role list
24+ - ` job ` — status, logs
25+ - ` runner ` — list, get, create (returns API keys for Kubernetes deployment), delete
26+ - ` iam ` — user list, user invite, group CRUD, role list
27+ - ` secret ` — list, get, create, update, delete (client-side encrypted with AES-256-GCM + RSA-OAEP)
2728
2829** Not yet available (API blocked):**
29- - ` incident ` — list, get, update (API returns HTML)
30+ - ` incident ` — list, get, update (documented in OpenAPI spec but still returns HTML on dev)
31+ - ` dataset attributes ` — (documented in OpenAPI spec but still returns HTML on dev)
3032- ` notification ` — rules and integrations
31- - ` secret ` — CRUD
3233- ` job list ` , ` job cancel `
33- - ` dataset get ` (API returns HTML instead of JSON)
34- - ` datasource update ` , ` datasource test-connection `
3534- ` contract proposal ` — list, pull, push, close
3635- ` monitor add --type dataset ` (dataset monitors exist by default, no write endpoint)
3736
@@ -69,18 +68,21 @@ Credentials stored in `~/.soda/credentials`. Generate API keys at https://docs.s
6968# List datasources
7069sodacli datasource list --output json
7170
71+ # Get datasource details
72+ sodacli datasource get < id> --output json
73+
7274# List datasets (default limit: 10)
7375sodacli dataset list --output json
7476sodacli dataset list --datasource < name> --status onboarded --limit 50 --output json
7577
7678# Filter datasets by name, date range, tag
7779sodacli dataset list --filter " orders" --from 2026-01-01 --until 2026-12-31 --output json
7880
81+ # Get dataset details
82+ sodacli dataset get < dataset-id> --output json
83+
7984# View profiling data (column stats, row count, missing %)
8085sodacli dataset profiling < dataset-id> --output json
81-
82- # NOTE: `sodacli dataset get <id>` is NOT available yet (API returns HTML).
83- # Use `dataset list` with filters to find dataset details instead.
8486```
8587
8688### Onboard a datasource (end-to-end)
@@ -232,14 +234,64 @@ sodacli iam group update <id> --remove-member bob@co.com
232234sodacli iam group delete < id>
233235```
234236
235- ### Job logs
237+ ### Jobs (scan status & logs)
236238
237239``` bash
240+ # Check scan/job status (shows state, timing, check summary)
241+ sodacli job status < scan-id> --output json
242+
243+ # View logs
238244sodacli job logs < scan-id>
239245sodacli job logs < scan-id> --follow # stream live
240246```
241247
242- ### Profiling and diagnostics
248+ ### Secrets (encrypted credentials)
249+
250+ ``` bash
251+ # List secrets
252+ sodacli secret list --output json
253+
254+ # Create — value is encrypted client-side (AES-256-GCM + RSA-OAEP) before sending
255+ sodacli secret create --name DB_PASSWORD # masked interactive prompt
256+ sodacli secret create --name DB_PASSWORD --value " s3cret" # via flag
257+ echo " s3cret" | sodacli secret create --name DB_PASSWORD # via stdin pipe
258+
259+ # Update value
260+ sodacli secret update < id> # masked prompt
261+ sodacli secret update < id> --value " new-value" # via flag
262+
263+ # Delete
264+ sodacli secret delete < id>
265+
266+ # Reference in datasource configs: ${secret.DB_PASSWORD}
267+ ```
268+
269+ ### User invite
270+
271+ ``` bash
272+ sodacli iam user invite --email alice@co.com --email bob@co.com # up to 10 per call
273+ ```
274+
275+ ### Datasource connection & diagnostics
276+
277+ ``` bash
278+ # Test a datasource connection (async via Runner)
279+ sodacli datasource test-connection config.yml
280+
281+ # Update datasource label, runner, or connection
282+ sodacli datasource update < id> --label " Production DW"
283+
284+ # View diagnostics warehouse config
285+ sodacli datasource diagnostics < id>
286+
287+ # Configure diagnostics warehouse
288+ sodacli datasource diagnostics < id> --enable --warehouse same --collect-results --collect-failed-rows
289+ sodacli datasource diagnostics < id> --max-failed-rows 5000 --expose-failed-rows-query
290+ sodacli datasource diagnostics < id> --table-template " soda_{dataset_name}"
291+ sodacli datasource diagnostics < id> --failed-rows-cta --failed-rows-cta-title " View in Snowflake" --failed-rows-cta-url " https://app.snowflake.com"
292+ ```
293+
294+ ### Profiling and dataset diagnostics
243295
244296``` bash
245297# Enable profiling
@@ -251,7 +303,7 @@ sodacli dataset profiling <dataset-id> --output json
251303# Set time-partition column
252304sodacli dataset time-partition < dataset-id> --column created_at
253305
254- # Configure diagnostics
306+ # Configure dataset-level diagnostics overrides
255307sodacli dataset diagnostics < dataset-id> --collect-results --collect-failed-rows
256308```
257309
0 commit comments