Skip to main content
Every Bronto resource (datasets, monitors, API keys, and the rest) has a command, and they all take the same verbs.

Listing, inspecting, and changing resources

The pattern

For example:
At a terminal, list prints a table of the main columns and get prints the whole object as JSON. Exceptions: no get for parsers, api-keys, forward-configs, webhooks, slack, monitors downtimes; no update for metrics, exports. collections, log-views, and permissions are list-only, and metrics is read-only (list and get, plus top-keys). The generated command reference lists the exact verbs for each resource.

Names work wherever ids do

Every command that takes an id also takes a unique name:
  • Datasets resolve by name, or by collection/name when the name exists in more than one collection.
  • Users resolve by email.
  • Roles resolve by id or display_name. System roles have readable ids such as Admin and ReadOnly.
  • Monitors, dashboards, and the rest resolve by name. Quote names with spaces.
If a name matches more than one resource, the command fails with exit code 2 and lists the matching ids.

Creating and updating

create and update build the request body from repeated -f key=value flags. A value that parses as JSON keeps its type (number, boolean, array, or object). Anything else is sent as a string:
For larger bodies, pass a JSON file with --input, or --input - to read stdin. -f and --input can’t be combined.
The CLI sends the body unchanged, so use the fields the Bronto API expects for that resource. Updates to monitors, widgets, datasets, and roles use HTTP PUT. For widgets and roles that replaces the whole object, so send every field you want to keep.

Deleting

delete asks for confirmation at a terminal. Without a terminal it can’t ask, so it fails with usage_confirmation_required (exit code 2) unless you pass --yes:

Preview changes with —dry-run

--dry-run works on every command that changes something. It changes nothing, but reads still run, so names resolve and an unknown name fails the same way it would without --dry-run. Every command that changes something prints the request it would send as a JSON plan on stdout: method, path, and body. That includes delete and action verbs such as groups add-members, monitors mute, and users deactivate. A name you pass shows up as the id it resolved to in the plan’s path. delete also skips its confirmation prompt, because nothing is deleted.

Commands beyond CRUD

A few resources have extra verbs:

Assign a parser to a dataset

bronto datasets parser shows or changes which parser a dataset uses:

Metric attribute keys

bronto metrics top-keys <metric> lists the attribute keys seen on a metric, the metrics counterpart of bronto fields:

API keys

bronto api-keys list masks key values in every output format, JSON included, so keys don’t leak into CI logs. Pass --reveal to see them in full.

Usage

bronto usage shows ingestion, search, and export volume over a period (default 7d):
For per-dataset numbers, call the API directly with bronto api GET /usage/organizations/logs (see the api command).