Releases: intuizi/intuizi-cli
Releases · intuizi/intuizi-cli
Release list
v0.1.6
Install or upgrade: brew upgrade intuizi or npm install -g @intuizi/cli.
The four API reads the CLI had no command for now have one, and a frequency preview can be delivered without a --file body.
New commands
audiences estimate createsizes an audience without creating it. It takes exactly whataudiences createtakes - the same flags, name resolution,--filebody and--dry-run- and--waitfollows it to the end. An estimate runs as long as a build and counts toward the data-scan limit and the build budget. It sends anIdempotency-Key, so a create that got no response can be retried with--idempotency-keywithout scanning twice.audiences estimate show <id> [--wait]reads an estimate, withuniques,visitsand the other figures as rows. Its status is a word:pendingandprocessingkeep a wait going,completedexits 0, andblocked(with its code and reason) andfailedexit 1.activations preview --audience-id --freq-min --freq-maxcounts the devices seen on that range of distinct days, with the valid bounds, the audience totals, thefilter_hash, and the histogram as a table. Nothing is created or billed.reference common datastream-visualizations [--dataset-type]lists the data stream visualizations an audience can draw, for thedatastreamsarray of a--filebody.
New flags
audiences create --frequencyruns the frequency analysis for the dataset type (POI, Apps or WebDomain), which a preview needs and which cannot be added after the build. It requires additional permissions; without them the create gets a 403.audiences estimate createaccepts it too, but an estimate never runs an analysis.activations create --freq-min --freq-max --filter-hashdelivers only the devices seen on that range, sent underfreq_limit: true. Pass thefilter_hashthe preview printed, and the API refuses the export if the range or the audience changed since.
Also
--waiton estimates shares the polling, retry and timeout behavior of audiences and activations, and a timeout or give-up namesintuizi audiences estimate show <id> --wait.scripts/live-test.shcovers the new commands, andLIVE_FREQ_START,LIVE_FREQ_ENDandLIVE_FREQ_BRANDpick a window and brand the test console has data for.
Full changelog: v0.1.5...v0.1.6
v0.1.5
Install or upgrade: brew upgrade intuizi or npm install -g @intuizi/cli.
The Intuizi console shipped several fixes on 2026-09-27. This release makes the CLI's help and DOCS.md describe that behavior:
Changes
- Webhooks. Every failure now sends its webhook. A build or export that stops at
107Additional Info, or ends in a4xxerror, sendsaudience.failedoractivation.failed. A failed cohort import sendscohort.failed. An activation that reaches104with a datastream that failed to deliver still sendsactivation.completed: check itsdatastreams[]. - Lookalike cancel. A cancelled Lookalike Model now ends at
400Error, which is final, soaudiences show <id> --waitexits 1 on it. The only exception is a cancel that arrives while the result is already being published: that run completes. - Cohorts. A failed cohort import now ends at
5Not Available. - Schedules. The API rejects an
--end-datebefore the--startdate with a 422. The CLI already refused it for flags, and now a--filebody gets the same answer. - POI submissions.
--removeis applied once, over the whole submission. It archives the brand's POIs that no listed location matches.--key location-idmatches on each location'slocation_id, and an omitted or null key meansgps-coordinates. scripts/live-test.shnow exits 1 when any step fails, and a Ctrl-C stops it cleanly.
Full changelog: v0.1.4...v0.1.5
v0.1.4
Install or upgrade: brew upgrade intuizi or npm install -g @intuizi/cli. Documentation: the CLI section of the Intuizi developer docs.
Features
activations create --datastream <id>(repeatable). An activation with no enabled datastream delivers nothing, so creating one from flags without--datastreamnow warns on stderr.audiences create --type origin, with geography and dates only. Flags that don't apply to Origin are refused. Cohorts, Demographics and ProfileAttributes are refused on the flag path, with a pointer to--file, because flags cannot build a valid body for them.audiences lookalike create --notifyis on by default and always sent, so--notify=falseturns the completion email off. Before, the flag was a no-op.auth loginrecords the account email. It reuses a stored token only for the same account, andauth statusprints anAccount:line.auth statusrefuses a stored token that belongs to another console and exits 1, where it used to send that token to the other console with--verify.- The
reference common datastreamstable shows short string lists inline.
Fixes
--waitstatus set. The wait now keeps polling through 109 (Visualizing data streams), which the worker posts before 105/104; before, it exited 1 while the build was still running. It stops on 107 (Additional Info), which is terminal in production; before, it polled until--timeoutand then suggested resuming. The waiting set is exactly 100-103, 105, 108 and 109, and it's pinned by a test.- Failed, timed-out and given-up waits print the last record in table and
--jsonmode (the--jsonenvelope as last polled). The exit code is unchanged. - 429 handling.
- A create carrying an
upload_referenceis no longer auto-retried after a build-budget 429. The first attempt had already claimed the reference, so the retry failed with "already used". - A
Retry-Afterover 60s is returned at once, not slept on twice. - Each retry is announced on stderr.
- A create carrying an
poi submissions create --list:--update=false,--remove=falseand--keynow override the file's values. Before, atruein the body won silently, andremove: truearchives the brand's unlisted POIs.- An override that changes a value is noted on stderr.
--filenow warns that--idempotency-keyhas no effect, like every other unkeyed route.
- Local checks mirroring the API:
- schedules: an end date before the start, a name over 255 characters, and time zones outside
DateTimeZone::ALLare refused; - lookalikes: a contrast audience equal to the seed is refused;
- cohorts:
--project-idwith--audience-idis refused (the API ignores it), and so is mixing IAB kinds in--category.
- schedules: an end date before the start, a name over 255 characters, and time zones outside
- Smaller fixes:
auth loginsays where the token went (the OS credential store or the config file).INTUIZI_NO_KEYRING=0orfalseno longer disables the store.- The npm launcher forwards SIGTERM and SIGHUP, so it exits 143 like the binary.
- The lookalike create output points to
audiences show <id> --wait.
Help, README and DOCS.md
Corrected wherever they disagreed with the API:
- cohorts:
- preview does not sniff formats (it defaults to csv);
--ip-enrichmentis household enrichment;- failed imports report a code outside 1-4, never 5.
- POI:
- segments are the available list and can't be created;
--listtakes a path or-;--geometrytakes a value;--removearchives the brand's POIs the submission does not list.
- uploads:
putdoes the reserve and the PUT, and the reservation expires after 15 minutes. - Stop rules: a wrong stop-rule field is a 422, not ignored.
- Lookalikes and usage:
- Lookalike Model and usage gating, in the docs' wording;
- usage lists all six operation types;
build_budgetis shown in--jsononly.
- Completion and catalogs:
- shell completion per shell, macOS included;
- the catalog cascade (DMAs need
--countries, cities need--states, POI parents are optional).
- README: the em dashes are replaced with hyphens.
Script-visible changes
- Table-mode stdout is no longer empty after a failed wait, so branch on the exit code.
auth statusgains anAccount:line between Token and Expires.auth statusagainst another console now exits 1.--waitexits 1 on 107 without waiting out--timeout, and exits 0 through 109.
Also new since v0.1.3
--debug(global) prints every HTTP request and response on stderr, with credentials redacted (#22).auth loginkeeps the token in the OS credential store (macOS Keychain, Windows Credential Manager, Linux secret service) where one exists, and falls back to the owner-only config file otherwise.INTUIZI_NO_KEYRING=1keeps it in the file (#23).- Shell completion now completes the values of
--type,--signal,--file-format,--identifier-type,--frequencyand--purpose(#26). - A
--brandor--categoryname that matches several catalog entries takes the one labelled with exactly that name, but only when the whole result arrived on one page (#26). - An upload error no longer quotes the presigned URL (#27).
- Releases ship an SBOM (#24). CI now covers Windows (#21) and an npm install smoke test (#32).
Full changelog: v0.1.3...v0.1.4
v0.1.3
Changelog
- b4781d4: Add a temporary OIDC probe workflow (@alexlavrendev)
- 14992ff: Harden the supply chain now that the repository is public (@alexlavrendev)
- 500af00: Keep the npm token until npm can validate our OIDC tokens (@alexlavrendev)
- 615307a: Make the OIDC probe ask npm directly (@alexlavrendev)
- 24baa36: Merge pull request #17 from intuizi/harden-supply-chain (@alexlavrendev)
v0.1.2
Changelog
- eff6df6: Merge pull request #16 from intuizi/oidc-npmrc-fix (@alexlavrendev)
- 676ef93: Stop setup-node from shadowing the OIDC exchange (@alexlavrendev)
v0.1.1
Changelog
- 4edcf5a: Merge pull request #15 from intuizi/trusted-publishing (@alexlavrendev)
- 5b258e5: Publish to npm through trusted publishing, and write the README for strangers (@alexlavrendev)
v0.1.0
Changelog
- e5cefc6: Add the live end-to-end test script (@alexlavrendev)
- 35c71cb: Add the proprietary license and third-party notices (@alexlavrendev)
- dd2144e: Align DOCS with the validated flags and document the rest of poi (@alexlavrendev)
- b1d48c5: Bind the stored token to its console and stop following redirects (@alexlavrendev)
- c2a299b: Carry --update/--remove/--key on create-by-list and harden uploads (@alexlavrendev)
- be579ef: Do not publish npm packages from a 0.0.x tag (@alexlavrendev)
- d0ef23b: Drop the pre-release notices before v0.1.0 (@alexlavrendev)
- 3ab0fed: Enforce the documented cohort and schedule rules locally (@alexlavrendev)
- 432462b: Exit 2 on every bad invocation, including unknown subcommands (@alexlavrendev)
- 916296c: Merge branch 'master' of https://github.com/intuizi/intuizi-cli (@OliverkC232)
- 5769f1b: Merge pull request #10 from intuizi/license-entity (@alexlavrendev)
- 80afe89: Merge pull request #11 from intuizi/brand-all-empty-check (@alexlavrendev)
- 35b5a8f: Merge pull request #12 from intuizi/npm-publish-guard (@alexlavrendev)
- 521f033: Merge pull request #13 from intuizi/scrub-internal-refs (@alexlavrendev)
- 549e215: Merge pull request #14 from intuizi/readme-for-launch (@alexlavrendev)
- dc8e51d: Merge pull request #5 from intuizi/review-fixes (@alexlavrendev)
- fcd37a1: Merge pull request #6 from intuizi/brand-all (@alexlavrendev)
- b7a3e4a: Merge pull request #7 from intuizi/fix-preview-samples (@alexlavrendev)
- 36318e1: Merge pull request #8 from intuizi/live-test-script (@alexlavrendev)
- 54d0e77: Merge pull request #9 from intuizi/proprietary-license (@alexlavrendev)
- a9029b5: Name Intuizi Inc as the copyright holder (@alexlavrendev)
- c55f148: Reject an empty --brand-all before it costs a catalog read (@alexlavrendev)
- 631d96c: Render cohort preview samples keyed by column name (@alexlavrendev)
- 1a2439c: Scrub an internal bucket path and guard the whole repository (@alexlavrendev)
- 394aa43: Update DOCS.md (@OliverkC232)
- acc1c61: Update README.md (@OliverkC232)
- 5a037b1: Update audiences.go (@OliverkC232)
- 2c83b96: Update audiences_build.go (@OliverkC232)
- c6c85ea: Update audiences_build_test.go (@OliverkC232)
- 86d76ec: Validate audience and lookalike flags before anything is sent (@alexlavrendev)
v0.0.2
Changelog
- ad16e0a: Create README.md (@OliverkC232)
- c8f0051: Create activation-completed.json (@OliverkC232)
- c4e34ce: Create activation-failed-datastreams.json (@OliverkC232)
- be500b1: Create audience-completed.json (@OliverkC232)
- ad32695: Create audiences_build.go (@OliverkC232)
- d3d9691: Create audiences_build_test.go (@OliverkC232)
- 952e827: Create ci.yml (@OliverkC232)
- a1279ee: Create createflags.go (@OliverkC232)
- 62b5426: Create envelope_test.go (@OliverkC232)
- 482a889: Create fixture_test.go (@OliverkC232)
- 04477c3: Merge pull request #2 from intuizi/tests-and-ci (@alexlavrendev)
- 471be80: Merge pull request #3 from intuizi/release-plumbing (@alexlavrendev)
- 9f10ab7: Merge pull request #4 from intuizi/ci-cd-homebrew-npm (@alexlavrendev)
- f4170e4: Publish to Homebrew and npm from the release workflow (@alexlavrendev)
- eff4dc1: Update DOCS.md (@OliverkC232)
- 784eaba: Update README.md (@OliverkC232)
- 474b4b1: Update README.md (@OliverkC232)
- 33d4877: Update audiences.go (@OliverkC232)
- 772ed55: Update cohorts.go (@OliverkC232)
- 67113e0: Update quiet_test.go (@OliverkC232)
- e79e367: Update reference_run.go (@OliverkC232)
- 45c975d: Update schedule.json (@OliverkC232)
- 7154323: Update schedules.go (@OliverkC232)
v0.0.1
Changelog
- 414add9: Add reference data commands (OliverkC232 oliver.cheng@intuizi.com)
- 37e4af4: Create .gitignore (OliverkC232 oliver.cheng@intuizi.com)
- bc3d3a5: Create .golangci.yml (OliverkC232 oliver.cheng@intuizi.com)
- 8a483eb: Create .goreleaser.yaml (OliverkC232 oliver.cheng@intuizi.com)
- 2bd9530: Create DOCS.md (OliverkC232 oliver.cheng@intuizi.com)
- 72a9c0a: Create Makefile (OliverkC232 oliver.cheng@intuizi.com)
- e1ab6fd: Create README.md (OliverkC232 oliver.cheng@intuizi.com)
- c89695f: Create activation.json (OliverkC232 oliver.cheng@intuizi.com)
- c2b7ead: Create activations.go (OliverkC232 oliver.cheng@intuizi.com)
- 14fe7e6: Create activations_test.go (OliverkC232 oliver.cheng@intuizi.com)
- 6737f15: Create audience-apps.json (OliverkC232 oliver.cheng@intuizi.com)
- df9b47b: Create audience-poi.json (OliverkC232 oliver.cheng@intuizi.com)
- f99d67c: Create audience-refine-crosspurchase.json (OliverkC232 oliver.cheng@intuizi.com)
- 0498972: Create audience-two-datasets.json (OliverkC232 oliver.cheng@intuizi.com)
- 48f48ef: Create audiences.go (OliverkC232 oliver.cheng@intuizi.com)
- 1c74406: Create audiences_test.go (OliverkC232 oliver.cheng@intuizi.com)
- e31438d: Create auth.go (OliverkC232 oliver.cheng@intuizi.com)
- 6d774d9: Create client.go (OliverkC232 oliver.cheng@intuizi.com)
- f455ede: Create client_test.go (OliverkC232 oliver.cheng@intuizi.com)
- b3e20d5: Create cohort-from-audience.json (OliverkC232 oliver.cheng@intuizi.com)
- 73e94cf: Create cohort.json (OliverkC232 oliver.cheng@intuizi.com)
- 2591f2d: Create cohorts.go (OliverkC232 oliver.cheng@intuizi.com)
- a48f40b: Create cohorts_test.go (OliverkC232 oliver.cheng@intuizi.com)
- 1a82831: Create config.go (OliverkC232 oliver.cheng@intuizi.com)
- b84bd6a: Create config_test.go (OliverkC232 oliver.cheng@intuizi.com)
- 436c23a: Create decode.go (OliverkC232 oliver.cheng@intuizi.com)
- 5a0d725: Create errors.go (OliverkC232 oliver.cheng@intuizi.com)
- 4b69ed9: Create exit_test.go (OliverkC232 oliver.cheng@intuizi.com)
- 891e8e9: Create go.mod (OliverkC232 oliver.cheng@intuizi.com)
- 3360810: Create go.sum (OliverkC232 oliver.cheng@intuizi.com)
- dccc825: Create idempotency.go (OliverkC232 oliver.cheng@intuizi.com)
- e5191b2: Create listflags.go (OliverkC232 oliver.cheng@intuizi.com)
- b5a6420: Create main.go (OliverkC232 oliver.cheng@intuizi.com)
- ec0d6ad: Create output_test.go (OliverkC232 oliver.cheng@intuizi.com)
- 2ad61d4: Create poi.go (OliverkC232 oliver.cheng@intuizi.com)
- da28307: Create poi_test.go (OliverkC232 oliver.cheng@intuizi.com)
- c7fd851: Create projects.go (OliverkC232 oliver.cheng@intuizi.com)
- a6dc3f5: Create quiet_test.go (OliverkC232 oliver.cheng@intuizi.com)
- b2efb07: Create reference.go (OliverkC232 oliver.cheng@intuizi.com)
- 07ce454: Create reference_test.go (OliverkC232 oliver.cheng@intuizi.com)
- 37f3d62: Create release.yml (OliverkC232 oliver.cheng@intuizi.com)
- b1ca0cc: Create root.go (OliverkC232 oliver.cheng@intuizi.com)
- 7d26b72: Create runner.go (OliverkC232 oliver.cheng@intuizi.com)
- 9746bc0: Create runner_test.go (OliverkC232 oliver.cheng@intuizi.com)
- cddf6a2: Create schedule.json (OliverkC232 oliver.cheng@intuizi.com)
- 951429d: Create schedules.go (OliverkC232 oliver.cheng@intuizi.com)
- f0ec31f: Create upload.go (OliverkC232 oliver.cheng@intuizi.com)
- adcdd9e: Create upload_test.go (OliverkC232 oliver.cheng@intuizi.com)
- e162547: Create uploads.go (OliverkC232 oliver.cheng@intuizi.com)
- 4066c2e: Create usage.go (OliverkC232 oliver.cheng@intuizi.com)
- 6088431: Create wait.go (OliverkC232 oliver.cheng@intuizi.com)
- 4251e29: Create webhooks.go (OliverkC232 oliver.cheng@intuizi.com)
- 16b5b90: Do not point at --page on the last page (OliverkC232 oliver.cheng@intuizi.com)
- f4be991: Merge pull request #1 from intuizi/Reference-Data-Commands (OliverkC232 oliver.cheng@intuizi.com)
- 0cf0ca6: Update .gitignore (OliverkC232 oliver.cheng@intuizi.com)
- a780b96: Update .golangci.yml (OliverkC232 oliver.cheng@intuizi.com)
- 10a67a2: Update DOCS.md (OliverkC232 oliver.cheng@intuizi.com)
- addade4: Update README.md (OliverkC232 oliver.cheng@intuizi.com)
- 9713896: Update README.md (OliverkC232 oliver.cheng@intuizi.com)
- 83e9ca1: Update README.md (OliverkC232 oliver.cheng@intuizi.com)
- f520811: Update README.md (OliverkC232 oliver.cheng@intuizi.com)
- 633534c: Update README.md (OliverkC232 oliver.cheng@intuizi.com)
- ece6347: Update README.md (OliverkC232 oliver.cheng@intuizi.com)
- df18ae9: Update README.md (OliverkC232 oliver.cheng@intuizi.com)
- 55d7439: Update README.md (OliverkC232 oliver.cheng@intuizi.com)
- 825fdd1: Update README.md (OliverkC232 oliver.cheng@intuizi.com)
- 6ff591e: Update activations.go (OliverkC232 oliver.cheng@intuizi.com)
- cfe6696: Update activations.go (OliverkC232 oliver.cheng@intuizi.com)
- c4c69e5: Update activations.go (OliverkC232 oliver.cheng@intuizi.com)
- cd52c82: Update activations.go (OliverkC232 oliver.cheng@intuizi.com)
- b176c59: Update audience-apps.json (OliverkC232 oliver.cheng@intuizi.com)
- 03db42e: Update audience-poi.json (OliverkC232 oliver.cheng@intuizi.com)
- d99d1c0: Update audience-refine-crosspurchase.json (OliverkC232 oliver.cheng@intuizi.com)
- 4410786: Update audience-two-datasets.json (OliverkC232 oliver.cheng@intuizi.com)
- 868e9ef: Update audiences.go (OliverkC232 oliver.cheng@intuizi.com)
- 2958999: Update audiences.go (OliverkC232 oliver.cheng@intuizi.com)
- 40b18c8: Update audiences.go (OliverkC232 oliver.cheng@intuizi.com)
- b7b09c8: Update auth.go (OliverkC232 oliver.cheng@intuizi.com)
- 74c05aa: Update auth.go (OliverkC232 oliver.cheng@intuizi.com)
- 1d3f356: Update auth.go (OliverkC232 oliver.cheng@intuizi.com)
- 813066f: Update auth.go (OliverkC232 oliver.cheng@intuizi.com)
- 6f934fd: Update client.go (OliverkC232 oliver.cheng@intuizi.com)
- a6c1e39: Update client.go (OliverkC232 oliver.cheng@intuizi.com)
- 1fc3e62: Update client.go (OliverkC232 oliver.cheng@intuizi.com)
- e53904a: Update client_test.go (OliverkC232 oliver.cheng@intuizi.com)
- cdd152e: Update client_test.go (OliverkC232 oliver.cheng@intuizi.com)
- 5c19d16: Update client_test.go (OliverkC232 oliver.cheng@intuizi.com)
- d6893d4: Update cohorts.go (OliverkC232 oliver.cheng@intuizi.com)
- 62aee58: Update cohorts.go (OliverkC232 oliver.cheng@intuizi.com)
- 727b2da: Update cohorts.go (OliverkC232 oliver.cheng@intuizi.com)
- 6fab61b: Update cohorts.go (OliverkC232 oliver.cheng@intuizi.com)
- 8923c85: Update config.go (OliverkC232 oliver.cheng@intuizi.com)
- 6ae2d46: Update decode.go (OliverkC232 oliver.cheng@intuizi.com)
- 55c5d72: Update decode.go (OliverkC232 oliver.cheng@intuizi.com)
- 1d6601f: ...