@getbrevo/cli 1.0.1 → 1.1.1

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.
Files changed (111) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +16 -4
  3. package/agent-context/AGENTS.md +23 -5
  4. package/agent-context/SKILL.md +23 -3
  5. package/dist/api/client.d.ts +2 -0
  6. package/dist/api/client.d.ts.map +1 -1
  7. package/dist/api/client.js +50 -36
  8. package/dist/api/client.js.map +1 -1
  9. package/dist/bin/index.js +9 -5
  10. package/dist/bin/index.js.map +1 -1
  11. package/dist/commands/app/create.d.ts +1 -0
  12. package/dist/commands/app/create.d.ts.map +1 -1
  13. package/dist/commands/app/create.js +257 -201
  14. package/dist/commands/app/create.js.map +1 -1
  15. package/dist/commands/app/delete.d.ts.map +1 -1
  16. package/dist/commands/app/delete.js +81 -62
  17. package/dist/commands/app/delete.js.map +1 -1
  18. package/dist/commands/app/list.d.ts.map +1 -1
  19. package/dist/commands/app/list.js +10 -2
  20. package/dist/commands/app/list.js.map +1 -1
  21. package/dist/commands/app/scaffold.d.ts.map +1 -1
  22. package/dist/commands/app/scaffold.js +14 -3
  23. package/dist/commands/app/scaffold.js.map +1 -1
  24. package/dist/commands/app/scopes.d.ts +2 -0
  25. package/dist/commands/app/scopes.d.ts.map +1 -0
  26. package/dist/commands/app/scopes.js +81 -0
  27. package/dist/commands/app/scopes.js.map +1 -0
  28. package/dist/commands/app/start.d.ts.map +1 -1
  29. package/dist/commands/app/start.js +7 -0
  30. package/dist/commands/app/start.js.map +1 -1
  31. package/dist/commands/app/update.d.ts.map +1 -1
  32. package/dist/commands/app/update.js +305 -189
  33. package/dist/commands/app/update.js.map +1 -1
  34. package/dist/commands/definitions.d.ts.map +1 -1
  35. package/dist/commands/definitions.js +44 -1
  36. package/dist/commands/definitions.js.map +1 -1
  37. package/dist/commands/init.d.ts.map +1 -1
  38. package/dist/commands/init.js +15 -2
  39. package/dist/commands/init.js.map +1 -1
  40. package/dist/commands/login.d.ts.map +1 -1
  41. package/dist/commands/login.js +154 -138
  42. package/dist/commands/login.js.map +1 -1
  43. package/dist/commands/whoami.d.ts.map +1 -1
  44. package/dist/commands/whoami.js +27 -20
  45. package/dist/commands/whoami.js.map +1 -1
  46. package/dist/lang/en.d.ts +43 -3
  47. package/dist/lang/en.d.ts.map +1 -1
  48. package/dist/lang/en.js +44 -3
  49. package/dist/lang/en.js.map +1 -1
  50. package/dist/lib/auth-guard.d.ts.map +1 -1
  51. package/dist/lib/auth-guard.js +10 -1
  52. package/dist/lib/auth-guard.js.map +1 -1
  53. package/dist/lib/cli-version.d.ts +2 -0
  54. package/dist/lib/cli-version.d.ts.map +1 -0
  55. package/dist/lib/cli-version.js +59 -0
  56. package/dist/lib/cli-version.js.map +1 -0
  57. package/dist/lib/config.d.ts +1 -1
  58. package/dist/lib/config.d.ts.map +1 -1
  59. package/dist/lib/config.js +15 -1
  60. package/dist/lib/config.js.map +1 -1
  61. package/dist/lib/constants.d.ts +12 -1
  62. package/dist/lib/constants.d.ts.map +1 -1
  63. package/dist/lib/constants.js +26 -2
  64. package/dist/lib/constants.js.map +1 -1
  65. package/dist/lib/logger.d.ts.map +1 -1
  66. package/dist/lib/logger.js +16 -3
  67. package/dist/lib/logger.js.map +1 -1
  68. package/dist/lib/telemetry.d.ts +9 -0
  69. package/dist/lib/telemetry.d.ts.map +1 -0
  70. package/dist/lib/telemetry.js +57 -0
  71. package/dist/lib/telemetry.js.map +1 -0
  72. package/dist/lib/update-notifier.d.ts.map +1 -1
  73. package/dist/lib/update-notifier.js +24 -20
  74. package/dist/lib/update-notifier.js.map +1 -1
  75. package/dist/lib/validators.d.ts +23 -0
  76. package/dist/lib/validators.d.ts.map +1 -1
  77. package/dist/lib/validators.js +75 -0
  78. package/dist/lib/validators.js.map +1 -1
  79. package/dist/services/app.d.ts +3 -0
  80. package/dist/services/app.d.ts.map +1 -1
  81. package/dist/services/app.js +6 -1
  82. package/dist/services/app.js.map +1 -1
  83. package/dist/services/oauth-metadata.d.ts +7 -0
  84. package/dist/services/oauth-metadata.d.ts.map +1 -0
  85. package/dist/services/oauth-metadata.js +43 -0
  86. package/dist/services/oauth-metadata.js.map +1 -0
  87. package/dist/services/scopes-html.d.ts +3 -0
  88. package/dist/services/scopes-html.d.ts.map +1 -0
  89. package/dist/services/scopes-html.js +516 -0
  90. package/dist/services/scopes-html.js.map +1 -0
  91. package/dist/services/scopes-web.d.ts +12 -0
  92. package/dist/services/scopes-web.d.ts.map +1 -0
  93. package/dist/services/scopes-web.js +95 -0
  94. package/dist/services/scopes-web.js.map +1 -0
  95. package/dist/services/skill.js +1 -1
  96. package/dist/services/skill.js.map +1 -1
  97. package/dist/skills/index.d.ts +2 -1
  98. package/dist/skills/index.d.ts.map +1 -1
  99. package/dist/skills/index.js +3 -22
  100. package/dist/skills/index.js.map +1 -1
  101. package/dist/templates/files/AGENTS.md.tmpl +1 -1
  102. package/dist/templates/files/CLAUDE.md.tmpl +1 -1
  103. package/dist/templates/files/README.md.tmpl +2 -1
  104. package/dist/templates/files/app-config.json.tmpl +1 -1
  105. package/dist/types.d.ts +2 -0
  106. package/dist/types.d.ts.map +1 -1
  107. package/package.json +1 -2
  108. package/dist/lib/min-version-check.d.ts +0 -15
  109. package/dist/lib/min-version-check.d.ts.map +0 -1
  110. package/dist/lib/min-version-check.js +0 -33
  111. package/dist/lib/min-version-check.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # @getbrevo/cli
2
2
 
3
+ ## 1.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - e7ffaa6: Deprecate the legacy `'all'` OAuth scope and improve scope tooling:
8
+ - `brevo app update` and `brevo app start oauth` now block when scopes contain `'all'`. Pass `--scope` on `brevo app update` to migrate (drops `'all'`, applies the new granular scopes). `brevo app list` flags legacy apps (text tag + `legacy_all_scope: true` in `--json`); `brevo app scaffold` drops `'all'` when scaffolding from a legacy app, keeping its granular scopes (or the default scopes when `'all'` was the only one).
9
+ - `brevo app available-scopes` no longer requires authentication — it only reads the public IdP scope catalog, so it now works before `brevo login` (previously exited with "Not authenticated").
10
+ - `brevo app available-scopes --web` page improvements: per-category "Copy" CTA, per-scope checkboxes that build a copyable selection list, a `deprecated` badge on the legacy `'all'` scope (excluded from copy/selection), a hero CTA linking the scope catalog docs (https://developers.brevo.com/docs/oauth-scopes#scope-catalog), and a footer link to the CLI reference docs. The terminal output also prints the scope catalog docs URL. Copied scope lists are double-quoted and comma-separated (`"contacts:read","contacts:write"`) — ready to paste into `app-config.json`'s `auth.scopes` array or `brevo app update --scope`.
11
+ - added user-agent for cli-version, os and auth type
12
+
13
+ - ab05546: Add Homebrew as an install channel: `brew install getbrevo/tap/brevo`. The
14
+ formula in `getbrevo/homebrew-tap` is auto-bumped on every npm release. No CLI
15
+ behavior, command, flag, or env var changed.
16
+
17
+ - a4533d9: The CLI now identifies itself to the Brevo API on every request via a single `User-Agent` header: `brevo-cli/<version> (<os>)`, extended with `; auth=api_key` or `; auth=oauth` when the request carries credentials. No personal data is sent — only the CLI version, operating system family, and authentication method already in use.
18
+
19
+ ## 1.1.0
20
+
21
+ ### Minor Changes
22
+
23
+ - 0896225: Granular OAuth scopes (BEX-197) and `logo_uri` support (BEX-194):
24
+ - `brevo app create` now creates apps with `contacts:read`, `contacts:write`, `crm:read`, `crm:write` instead of the legacy `all`. The CLI prints a one-line notice listing the defaults and how to change them.
25
+ - `brevo app update --scope <scope>` (new, repeatable) appends scopes to an app's existing set, de-duped, order-preserving. Writes back to `app-config.json` when applicable. A single flag value may contain multiple comma- or whitespace-separated tokens (`--scope "crm:read, crm:write"` is equivalent to two `--scope` flags); the same normalization heals comma-embedded entries when reading `auth.scopes` from `app-config.json`. Each resulting token is validated locally against `[A-Za-z0-9][A-Za-z0-9:_.-]*` to catch typos before the API call.
26
+ - `brevo app available-scopes [--json] [--web]` (new) prints the IdP's supported-scopes catalog. Text output groups scopes by category (`account`, `data_crm`, `messaging`); `--json` returns a flat array of names. OIDC-reserved scopes and magic wildcards are excluded. Sourced from `/realms/partner/scopes`.
27
+ - Passing `--web` to `brevo app available-scopes` additionally starts a short-lived loopback HTTP server on `127.0.0.1` and opens the user's browser to a self-contained HTML page listing every supported scope grouped by category, with a search filter. Each scope is expandable to reveal its API endpoints (chip list). A "Refresh" button on the page re-fetches scopes from the IdP without restarting the command. The server runs in the foreground until Ctrl+C (SIGINT or SIGTERM closes it cleanly). Without `--web` the command exits after printing the list — TTY detection no longer triggers the browser. `--json` always suppresses the browser.
28
+ - Add `logo_uri` support to `brevo app create` (`--logo-uri`), `brevo app update` (`--logo-uri`), and the `logoUri` top-level field in `app-config.json`. Flagless `brevo app update` pushes `logoUri` from the config file when present. The interactive `brevo app create` flow (also reached via `brevo app init`) now prompts for an optional logo URL; the prompt is skipped under `--json` or when `--logo-uri` is passed. The interactive prompt and its invalid-format hint now advertise the expected `https://` form.
29
+
30
+ Other changes:
31
+ - `brevo app create` and `brevo app update` now send the CLI's own version as `cli_version` in the request body, so the backend can track which CLI release performed each write.
32
+ - Removed the dormant `minCliVersion` mechanism. `brevo app scaffold` no longer writes `minCliVersion` into `app-config.json` (the constant had been `0.0.0` since introduction, so the runtime check never fired). The npm-registry update-notifier already covers the "you should upgrade" nudge. Existing `app-config.json` files keep their `minCliVersion` field harmlessly — it is now ignored. `cliVersion` (informational provenance) is unchanged.
33
+
3
34
  ## 1.0.1
4
35
 
5
36
  ### Patch Changes
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Command-line tool to create, manage, and test [Brevo](https://www.brevo.com/) OAuth integrations from your terminal.
4
4
 
5
+ > 📖 Full command and option documentation: **[Brevo CLI reference](https://developers.brevo.com/docs/cli-reference)**
6
+
5
7
  ## Requirements
6
8
 
7
9
  - **Node.js** 20.15.0 or newer (required to run the CLI)
@@ -9,7 +11,17 @@ Command-line tool to create, manage, and test [Brevo](https://www.brevo.com/) OA
9
11
 
10
12
  ## Installation
11
13
 
12
- Install globally from the public npm registry:
14
+ ### Homebrew (macOS/Linux)
15
+
16
+ ```bash
17
+ brew tap getbrevo/tap
18
+ brew install getbrevo/tap/brevo
19
+ brevo --version
20
+ ```
21
+
22
+ (`brew install getbrevo/tap/brevo` adds the tap automatically if you skip the first command — the formula lives in [`getbrevo/homebrew-tap`](https://github.com/getbrevo/homebrew-tap).)
23
+
24
+ ### npm
13
25
 
14
26
  ```bash
15
27
  npm install -g @getbrevo/cli
@@ -23,7 +35,7 @@ This puts the `brevo` binary on your PATH. Verify:
23
35
  brevo --version
24
36
  ```
25
37
 
26
- To upgrade later: `npm install -g @getbrevo/cli@latest`.
38
+ To upgrade later: `brew update && brew upgrade brevo` (Homebrew) or `npm install -g @getbrevo/cli@latest` (npm).
27
39
 
28
40
  > Building from source? See [Development](#development) below.
29
41
 
@@ -76,10 +88,10 @@ Run `brevo --help` or `brevo <command> --help` for full command and option lists
76
88
  | `brevo logout` | Clear stored credentials (`--force` to skip confirmation) |
77
89
  | `brevo whoami` | Show the authenticated user |
78
90
  | `brevo app init` | Guided setup — login, create app, and scaffold in one go |
79
- | `brevo app create` | Create an OAuth app (`--name`, `--distribution private\|public`, repeatable `--redirect-uri`) |
91
+ | `brevo app create` | Create an OAuth app (`--name`, `--distribution private\|public`, repeatable `--redirect-uri`, `--logo-uri`) |
80
92
  | `brevo app list` | List OAuth apps in your account |
81
93
  | `brevo app credentials` | Show client ID and secret (`--app-id`, `--reveal-secret`) |
82
- | `brevo app update` | Update app name or redirect URLs (`--app-id`, `--name`, repeatable `--redirect-uri`, `--yes`) |
94
+ | `brevo app update` | Update app name, redirect URLs, or logo (`--app-id`, `--name`, repeatable `--redirect-uri`, `--logo-uri`, `--yes`) |
83
95
  | `brevo app delete` | Delete an app (`--app-id`, `--force`) |
84
96
  | `brevo app scaffold` | Generate starter code for an app (`--app-id`) |
85
97
  | `brevo app start` | Run a scaffolded feature locally (e.g. `brevo app start oauth --port 3000`) |
@@ -7,13 +7,13 @@ This project uses the [Brevo Developer CLI](https://www.npmjs.com/package/@getbr
7
7
 
8
8
  Pick the path that matches your tooling:
9
9
 
10
- - **You are Claude** (Claude Code, Claude Desktop, or any agent that reads `~/.claude/skills/`) — install the brevo-cli skill before doing other work, if it isn't already at `~/.claude/skills/brevo-cli/`:
10
+ - **You are Claude Code** (CLI or desktop app any agent that reads `~/.claude/skills/`) — install the brevo-cli skill before doing other work, if it isn't already at `~/.claude/skills/brevo-cli/`:
11
11
 
12
12
  ```bash
13
13
  brevo skill:cli install
14
14
  ```
15
15
 
16
- The skill loads the canonical decision tree, hard rules, and exit codes in the format Claude consumes directly. Once installed it auto-refreshes on every `brevo` invocation so it stays in sync with the running CLI version (opt out with `BREVO_NO_SKILL_AUTOREFRESH=1`).
16
+ The skill loads the canonical decision tree, hard rules, and exit codes in the format Claude consumes directly. Once installed it auto-refreshes on every `brevo` invocation so it stays in sync with the running CLI version (opt out with `BREVO_NO_SKILL_AUTOREFRESH=1`). Note: the install targets `~/.claude/skills/`, which only Claude Code surfaces read — the Claude Desktop **chat** app does not load skills from this directory.
17
17
 
18
18
  - **You are any other AI agent** (Cursor, Copilot CLI, Gemini CLI, Codex, etc.) — **do not run `brevo skill:cli install`**. The skill format is Claude-specific and the install would land in a directory your tooling doesn't read. Use this `AGENTS.md` as your reference instead — it covers the same surface in less depth.
19
19
 
@@ -64,12 +64,13 @@ Don't fall back to raw HTTP against `api.brevo.com` — the `brevo` binary is th
64
64
  | `brevo whoami` | Show the authenticated account (`--json`) |
65
65
  | `brevo app init` | Guided setup (login, create, scaffold) |
66
66
  | `brevo app list` | List OAuth apps (`--json`) |
67
- | `brevo app create` | Create an app (`--name`, `--distribution`, `--redirect-uri`, `--json`) |
68
- | `brevo app update` | Update name / redirect URLs (`--app-id`, `--name`, `--redirect-uri`, `--yes`, `--json`) |
67
+ | `brevo app create` | Create an app (`--name`, `--distribution`, `--redirect-uri`, `--logo-uri`, `--json`). Only `--distribution private` is available today — `public` is rejected with a "coming soon" error. Defaults to scopes `contacts:read`, `contacts:write`, `crm:read`, `crm:write`. |
68
+ | `brevo app update` | Update name / redirect URLs / scopes / logo (`--app-id`, `--name`, `--redirect-uri`, `--scope` repeatable appends, `--logo-uri`, `--yes`, `--json`) |
69
69
  | `brevo app credentials` | Show client ID / secret (`--app-id`, `--reveal-secret`, `--json`) |
70
70
  | `brevo app delete` | Delete an app (`--app-id`, `--force`, `--json`) |
71
71
  | `brevo app scaffold` | Generate starter OAuth code (`--app-id`, `--json`) |
72
72
  | `brevo app start oauth` | Run the scaffolded OAuth test server (`--port`) |
73
+ | `brevo app available-scopes` | List OAuth scopes supported by the IdP (`--json`, `--web`) |
73
74
  | `brevo skill:cli install` | Install the brevo-cli Claude Code skill (Claude-only; auto-refreshes on every `brevo` run) |
74
75
  | `brevo skill:cli uninstall` | Remove the brevo-cli skill from `~/.claude/skills/` (Claude-only) |
75
76
 
@@ -78,12 +79,29 @@ Run `brevo --help` or `brevo <command> --help` for the full set.
78
79
  ## Conventions
79
80
 
80
81
  - **Every command supports `--json`** — prefer this when parsing output programmatically.
81
- - **`app-config.json`** in the working directory pins the linked app — `brevo app update` and `brevo app start` read from it.
82
+ - **`app-config.json`** in the working directory pins the linked app — `brevo app update` and `brevo app start` read from it. The optional top-level `logoUri` string is pushed as `logo_uri` by a flagless `brevo app update`; leave it empty to keep the API value untouched.
82
83
  - **Credentials** live at `~/.brevo/credentials.json`. Never commit this file or any `.env.local`.
83
84
  - **Non-interactive auth:** `BREVO_API_KEY=xkeysib-... brevo login`. The legacy `--api-key` flag was removed because it leaks into shell history.
84
85
  - **Skip prompts:** `--force` for delete/logout; `--yes` for `app update`.
85
86
  - **Exit codes:** `0` success · `1` general error · `2` aborted · `3` auth · `4` network · `5` not found.
86
87
 
88
+ ## Scopes
89
+
90
+ - New apps created via `brevo app create` default to `contacts:read`, `contacts:write`, `crm:read`, `crm:write`. The CLI prints these on success.
91
+ - `brevo app update --scope <scope>` is repeatable and appends, mirroring `--redirect-uri`. De-duped, order-preserving. Writes back to `app-config.json` when that file describes the target app. A single flag value may contain multiple comma- or whitespace-separated tokens (`--scope "crm:read, crm:write"` is equivalent to `--scope crm:read --scope crm:write`). Same normalization is applied to `auth.scopes` when read from `app-config.json`.
92
+ - `brevo app available-scopes [--json] [--web]` lists the OAuth scopes the IdP currently supports. It reads a **public** catalog and works **without `brevo login`** (no API key needed). Text output groups names by category (e.g. `account`, `data_crm`, `messaging`); `--json` returns a flat `{ scopes: string[] }` of names. OIDC-reserved scopes (`openid`, `profile`, `email`, `offline_access`) and magic wildcards are excluded. The CLI validates scope **format** locally (must match `[A-Za-z0-9][A-Za-z0-9:_.-]*`) but does **not** validate that a scope is recognized by the IdP — server returns 400 on unknown scopes.
93
+ - Passing `--web` to `brevo app available-scopes` additionally starts a short-lived loopback HTTP server on `127.0.0.1:<ephemeral>` rendering the same catalog as a styled HTML page and opens the user's browser. It stays in the foreground until Ctrl+C. Without `--web` the command exits after printing the list — TTY detection no longer triggers the browser. `--json` always suppresses the browser (`--json` returns before `--web` is evaluated).
94
+
95
+ ### Legacy `'all'` scope deprecation
96
+
97
+ The legacy catch-all `'all'` OAuth scope is deprecated. The CLI **blocks** `brevo app update` and `brevo app start oauth` when scopes still contain `'all'` (no escape hatch, no silent rewrite); the only mutating path that proceeds is an explicit `--scope` migration. To handle a legacy app:
98
+
99
+ 1. **Detect** `'all'` in `auth.scopes` of a local `app-config.json`, or on a remote app via `brevo app list --json` — affected apps carry `"legacy_all_scope": true` (text output appends `(legacy 'all' — deprecated)` to the scopes line).
100
+ 2. **Prompt the user to pick granular scopes** — use `brevo app available-scopes --json` for the catalog, or fall back to the four defaults (`contacts:read`, `contacts:write`, `crm:read`, `crm:write`).
101
+ 3. **Migrate** with `brevo app update --scope <scope> --scope <scope> ...` — passing `--scope` drops `'all'` from the outgoing scope set and applies the new granular scopes (the summary shows a "Migrating from legacy 'all' scope" line and `all (removed)`).
102
+
103
+ `brevo app scaffold` against an app whose remote scopes contain `'all'` never propagates it: the new `app-config.json` keeps the app's remaining granular scopes (or the four default scopes when `'all'` was the only scope), with a one-line substitution notice (suppressed under `--json`). Note the substitution is local-only — the remote app still needs the `--scope` migration above.
104
+
87
105
  ## Environment variables
88
106
 
89
107
  | Variable | Purpose |
@@ -9,7 +9,7 @@ This project uses the Brevo Developer CLI to create and manage Brevo OAuth appli
9
9
 
10
10
  > **Reading this from the repo rather than `~/.claude/skills/brevo-cli/`?**
11
11
  >
12
- > - **If you're Claude** (Claude Code, Claude Desktop, or any agent that reads `~/.claude/skills/`): install it as a skill with `brevo skill:cli install` so your tooling loads it natively and keeps it auto-refreshed. The repo copy is bundled with the npm package; the installed copy is what Claude actually consumes.
12
+ > - **If you're Claude Code** (CLI or desktop app any agent that reads `~/.claude/skills/`): install it as a skill with `brevo skill:cli install` so your tooling loads it natively and keeps it auto-refreshed. The repo copy is bundled with the npm package; the installed copy is what Claude actually consumes. Note: the Claude Desktop **chat** app does not read `~/.claude/skills/`, so the installed skill won't load there — only Claude Code surfaces pick it up.
13
13
  > - **If you're any other AI agent** (Cursor, Copilot CLI, Gemini, Codex, etc.): **don't run `brevo skill:cli install`** — the skill format is Claude-specific and would land in a directory your tooling doesn't read. Use `agent-context/AGENTS.md` as your reference instead; it covers the same surface in less depth.
14
14
 
15
15
  ## Before starting a new session
@@ -40,12 +40,13 @@ Don't fall back to raw HTTP against `api.brevo.com` — the `brevo` binary is th
40
40
  - "Authenticate" → `brevo login` (or `BREVO_API_KEY=xkeysib-... brevo login` for CI)
41
41
  - "Who am I logged in as?" → `brevo whoami --json`
42
42
  - "Show / pick an app" → `brevo app list --json`
43
- - "Create an app" → `brevo app create --name "<name>" --distribution private --redirect-uri <url> --json`
44
- - "Update app metadata" → `brevo app update --app-id <id> --name "<name>"` and/or `--redirect-uri <url>` (repeatable)
43
+ - "Create an app" → `brevo app create --name "<name>" --distribution private --redirect-uri <url> --json` (add `--logo-uri <https://…>` to set the app logo at creation time; new apps default to scopes `contacts:read`, `contacts:write`, `crm:read`, `crm:write`). Only `private` distribution is available today — the CLI rejects `--distribution public` with a "coming soon" error, so never suggest it.
44
+ - "Update app metadata" → `brevo app update --app-id <id> --name "<name>"` and/or `--redirect-uri <url>` (repeatable) and/or `--scope <scope>` (repeatable, appends) and/or `--logo-uri <https://…>`
45
45
  - "Get client credentials" → `brevo app credentials --app-id <id> --json` (add `--reveal-secret` to print the secret)
46
46
  - "Generate starter OAuth code" → `brevo app scaffold --app-id <id>`
47
47
  - "Run the OAuth test server" → `brevo app start oauth --port 3009` (must be inside the scaffolded directory)
48
48
  - "Delete an app" → `brevo app delete --app-id <id> --force`
49
+ - "List supported OAuth scopes" → `brevo app available-scopes --json`
49
50
  - "Sign out" → `brevo logout --force`
50
51
 
51
52
  ## Hard rules
@@ -60,6 +61,25 @@ Don't fall back to raw HTTP against `api.brevo.com` — the `brevo` binary is th
60
61
 
61
62
  If `app-config.json` exists in the working directory, it pins the app — `brevo app update` and `brevo app start` use it automatically. To target a different app, pass `--app-id`.
62
63
 
64
+ `app-config.json` carries an optional top-level `logoUri` string. When set, a flagless `brevo app update` pushes it as `logo_uri` in the PUT body; when empty / absent, the field is left untouched on the API.
65
+
66
+ ## Scopes
67
+
68
+ - New apps created via `brevo app create` default to `contacts:read`, `contacts:write`, `crm:read`, `crm:write`. The CLI prints the default set on success and points to `brevo app update --scope` for changes.
69
+ - `brevo app update --scope <scope>` is **repeatable and appends** — passing `--scope X --scope Y` adds both to the app's existing scope set, de-duped, order-preserving. A single flag value may also contain multiple comma- or whitespace-separated tokens (`--scope "crm:read, crm:write"` ≡ `--scope crm:read --scope crm:write`); the same normalization is applied to `auth.scopes` when read from `app-config.json`, so a malformed entry like `"crm:write, campaigns:read"` is split into two scopes on read. To see what's currently set, run `brevo app credentials --app-id <id> --json`. To remove a scope, edit `app-config.json` and run `brevo app update` without `--scope`.
70
+ - `brevo app available-scopes [--json] [--web]` lists the OAuth scopes the IdP currently supports. It reads a **public** catalog and works **without `brevo login`** (no API key needed). Text output groups names by category (e.g. `account`, `data_crm`, `messaging`); `--json` returns a flat `{ scopes: string[] }` of names. OIDC-reserved scopes (`openid`, `profile`, `email`, `offline_access`) and magic wildcards are excluded. The CLI validates scope **format** locally (must match `[A-Za-z0-9][A-Za-z0-9:_.-]*`) but does **not** validate that a scope is recognized by the IdP — use `app available-scopes` to confirm spelling before passing an unfamiliar scope.
71
+ - Passing `--web` to `brevo app available-scopes` **also opens a browser** to a styled local page (loopback `http://127.0.0.1:<port>/`) and stays running until Ctrl+C. Without `--web` the command exits after printing the list — TTY detection no longer triggers the browser. `--json` always suppresses the browser, so agent invocations using `--json` behave the same regardless of `--web`.
72
+
73
+ ### Legacy `'all'` scope deprecation
74
+
75
+ The legacy catch-all `'all'` OAuth scope is deprecated. The CLI **blocks** `brevo app update` and `brevo app start oauth` when scopes still contain `'all'` (no escape hatch, no silent rewrite); the only mutating path that proceeds is an explicit `--scope` migration. To handle a legacy app:
76
+
77
+ 1. **Detect** `'all'` in `auth.scopes` of a local `app-config.json`, or on a remote app via `brevo app list --json` — affected apps carry `"legacy_all_scope": true` (text output appends `(legacy 'all' — deprecated)` to the scopes line).
78
+ 2. **Prompt the user to pick granular scopes** — use `brevo app available-scopes --json` for the catalog, or fall back to the four defaults (`contacts:read`, `contacts:write`, `crm:read`, `crm:write`).
79
+ 3. **Migrate** with `brevo app update --scope <scope> --scope <scope> ...` — passing `--scope` drops `'all'` from the outgoing scope set and applies the new granular scopes (the summary shows a "Migrating from legacy 'all' scope" line and `all (removed)`).
80
+
81
+ `brevo app scaffold` against an app whose remote scopes contain `'all'` never propagates it: the new `app-config.json` keeps the app's remaining granular scopes (or the four default scopes when `'all'` was the only scope), with a one-line substitution notice (suppressed under `--json`). Note the substitution is local-only — the remote app still needs the `--scope` migration above.
82
+
63
83
  ## Exit codes
64
84
 
65
85
  `0` success · `1` general error · `2` aborted · `3` auth failure · `4` network · `5` not found.
@@ -17,6 +17,8 @@ export declare class ApiClient {
17
17
  delete<T>(path: string): Promise<T>;
18
18
  getWithKey<T>(path: string, apiKey: string): Promise<T>;
19
19
  getWithBearer<T>(path: string, accessToken: string, tokenType?: string): Promise<T>;
20
+ private buildHeaders;
21
+ private performFetch;
20
22
  private request;
21
23
  }
22
24
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAaA,KAAK,kBAAkB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACzD;AAqBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAK7D;AAKD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAcxD;AAoBD,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,aAAa,CAAC,CAAqB;gBAEd,IAAI,EAAE,aAAa;IAEhD,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAInD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAInC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IASvD,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,SAAW,GAAG,OAAO,CAAC,CAAC,CAAC;YASvE,OAAO;CA+FtB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAcA,KAAK,kBAAkB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACzD;AAqBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAK7D;AAKD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAcxD;AA2DD,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,aAAa,CAAC,CAAqB;gBAEd,IAAI,EAAE,aAAa;IAEhD,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAInD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAInC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IASvD,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,SAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IASrF,OAAO,CAAC,YAAY;YAaN,YAAY;YAmBZ,OAAO;CA0CtB"}
@@ -5,6 +5,7 @@ exports.parseRetryAfter = parseRetryAfter;
5
5
  exports.sanitizeErrorMessage = sanitizeErrorMessage;
6
6
  const errors_1 = require("../lib/errors");
7
7
  const logger_1 = require("../lib/logger");
8
+ const telemetry_1 = require("../lib/telemetry");
8
9
  const en_1 = require("../lang/en");
9
10
  const MAX_RETRIES = 3;
10
11
  const DEFAULT_RETRY_AFTER_SECONDS = 5;
@@ -46,6 +47,41 @@ function sanitizeErrorMessage(msg) {
46
47
  // eslint-disable-next-line no-control-regex
47
48
  .replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, ''));
48
49
  }
50
+ // Detect HTML bodies returned by auth gateways (Cloudflare Access, SSO proxies).
51
+ // Matches case-insensitively and runs regardless of response status, since
52
+ // gateways frequently return HTML on 401/403 as well as 2xx.
53
+ function looksLikeHtml(s) {
54
+ const lower = s.toLowerCase();
55
+ return lower.includes('<!doctype html') || lower.includes('<html');
56
+ }
57
+ function parseResponseData(text, status) {
58
+ let data = {};
59
+ try {
60
+ const parsed = text ? JSON.parse(text) : {};
61
+ if (parsed !== null && typeof parsed === 'object') {
62
+ data = parsed;
63
+ }
64
+ }
65
+ catch {
66
+ if (looksLikeHtml(text)) {
67
+ throw new errors_1.ApiError(en_1.messages.ERR_AUTH_GATEWAY, status, errors_1.ErrorCode.AUTH_GATEWAY);
68
+ }
69
+ data = { message: text };
70
+ }
71
+ if (typeof data.message === 'string' && looksLikeHtml(data.message)) {
72
+ throw new errors_1.ApiError(en_1.messages.ERR_AUTH_GATEWAY, status, errors_1.ErrorCode.AUTH_GATEWAY);
73
+ }
74
+ return data;
75
+ }
76
+ function throwResponseError(data, status) {
77
+ const apiCode = typeof data.code === 'string' ? data.code : undefined;
78
+ const rawFallback = typeof data.message === 'string' && data.message
79
+ ? data.message
80
+ : `Request failed with status ${status}`;
81
+ const fallback = sanitizeErrorMessage(rawFallback);
82
+ const message = resolveErrorMessage(apiCode, fallback);
83
+ throw new errors_1.ApiError(message, status, mapErrorCode(status, apiCode), apiCode);
84
+ }
49
85
  function mapErrorCode(status, apiCode) {
50
86
  if (apiCode === 'APP_LIMIT_REACHED')
51
87
  return errors_1.ErrorCode.APP_LIMIT_REACHED;
@@ -104,20 +140,20 @@ class ApiClient {
104
140
  authHeader: { Authorization: `${tokenType} ${accessToken}` },
105
141
  });
106
142
  }
107
- async request(opts, isRetry = false, retryCount = 0) {
108
- const url = `${this.deps.baseUrl}${opts.path}`;
143
+ buildHeaders(opts) {
109
144
  const explicitAuth = opts.authHeader;
110
145
  const authHeader = explicitAuth ?? (opts.skipAuth ? undefined : this.deps.getAuthHeader());
111
- const headers = {
146
+ return {
112
147
  'Content-Type': 'application/json',
113
148
  Accept: 'application/json',
149
+ ...(0, telemetry_1.buildCliHeaders)(authHeader),
114
150
  ...opts.headers,
115
151
  ...authHeader,
116
152
  };
117
- (0, logger_1.logHttp)(opts.method, opts.path);
118
- let response;
153
+ }
154
+ async performFetch(url, opts, headers) {
119
155
  try {
120
- response = await fetch(url, {
156
+ return await fetch(url, {
121
157
  method: opts.method,
122
158
  headers,
123
159
  body: opts.body ? JSON.stringify(opts.body) : undefined,
@@ -129,6 +165,12 @@ class ApiClient {
129
165
  apiErr.cause = err;
130
166
  throw apiErr;
131
167
  }
168
+ }
169
+ async request(opts, isRetry = false, retryCount = 0) {
170
+ const url = `${this.deps.baseUrl}${opts.path}`;
171
+ const headers = this.buildHeaders(opts);
172
+ (0, logger_1.logHttp)(opts.method, opts.path);
173
+ const response = await this.performFetch(url, opts, headers);
132
174
  (0, logger_1.logHttpResponse)(response.status, opts.path);
133
175
  if (response.status === 401 && !isRetry && !opts.skipAuth) {
134
176
  if (this.onAuthFailure) {
@@ -151,38 +193,10 @@ class ApiClient {
151
193
  return this.request(opts, isRetry, retryCount + 1);
152
194
  }
153
195
  const text = await response.text();
154
- // Detect HTML bodies returned by auth gateways (Cloudflare Access, SSO proxies).
155
- // Matches case-insensitively and runs regardless of response status, since
156
- // gateways frequently return HTML on 401/403 as well as 2xx.
157
- const looksLikeHtml = (s) => {
158
- const lower = s.toLowerCase();
159
- return lower.includes('<!doctype html') || lower.includes('<html');
160
- };
161
- let data = {};
162
- try {
163
- const parsed = text ? JSON.parse(text) : {};
164
- if (parsed !== null && typeof parsed === 'object') {
165
- data = parsed;
166
- }
167
- }
168
- catch {
169
- if (looksLikeHtml(text)) {
170
- throw new errors_1.ApiError(en_1.messages.ERR_AUTH_GATEWAY, response.status, errors_1.ErrorCode.AUTH_GATEWAY);
171
- }
172
- data = { message: text };
173
- }
174
- if (typeof data.message === 'string' && looksLikeHtml(data.message)) {
175
- throw new errors_1.ApiError(en_1.messages.ERR_AUTH_GATEWAY, response.status, errors_1.ErrorCode.AUTH_GATEWAY);
176
- }
196
+ const data = parseResponseData(text, response.status);
177
197
  (0, logger_1.logDebug)(`response ${opts.path}`, data);
178
198
  if (!response.ok) {
179
- const apiCode = typeof data.code === 'string' ? data.code : undefined;
180
- const rawFallback = typeof data.message === 'string' && data.message
181
- ? data.message
182
- : `Request failed with status ${response.status}`;
183
- const fallback = sanitizeErrorMessage(rawFallback);
184
- const message = resolveErrorMessage(apiCode, fallback);
185
- throw new errors_1.ApiError(message, response.status, mapErrorCode(response.status, apiCode), apiCode);
199
+ throwResponseError(data, response.status);
186
200
  }
187
201
  return data;
188
202
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
package/dist/bin/index.js CHANGED
@@ -52,7 +52,6 @@ const command_registry_1 = require("../lib/command-registry");
52
52
  const definitions_1 = require("../commands/definitions");
53
53
  const update_notifier_1 = require("../lib/update-notifier");
54
54
  const skill_1 = require("../services/skill");
55
- const min_version_check_1 = require("../lib/min-version-check");
56
55
  const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../package.json'), 'utf-8'));
57
56
  const version = pkg.version;
58
57
  // Version update check — async, non-blocking. Cached at ~/.brevo/update-check.json (24h TTL).
@@ -65,8 +64,6 @@ const showBannerEarly = (0, update_notifier_1.shouldShowBannerBefore)(process.ar
65
64
  if (process.env.NODE_TLS_REJECT_UNAUTHORIZED === '0') {
66
65
  (0, logger_1.logWarn)(en_1.messages.TLS_VERIFICATION_DISABLED);
67
66
  }
68
- // Warn if running CLI is older than the project's declared minCliVersion.
69
- (0, min_version_check_1.warnIfCliBelowMinVersion)({ currentVersion: version, argv: process.argv });
70
67
  const program = new commander_1.Command();
71
68
  program
72
69
  .name('brevo')
@@ -92,10 +89,10 @@ program
92
89
  ``,
93
90
  `App commands:`,
94
91
  ` brevo app init Quick setup — login, create app, and scaffold`,
95
- ` brevo app create [--name] [--distribution private|public] [--json]`,
92
+ ` brevo app create [--name] [--distribution private|public] [--redirect-uri <url>...] [--logo-uri <url>] [--json]`,
96
93
  ` brevo app list [--json]`,
97
94
  ` brevo app credentials [--app-id <id>] [--reveal-secret] [--json]`,
98
- ` brevo app update [--json]`,
95
+ ` brevo app update [--app-id <id>] [--name] [--redirect-uri <url>...] [--logo-uri <url>] [--json]`,
99
96
  ` brevo app delete [--app-id <id>] [--force] [--json]`,
100
97
  ` brevo app scaffold [--app-id <id>] [--json]`,
101
98
  ` brevo app start [feature] [--port <port>]`,
@@ -104,6 +101,10 @@ program
104
101
  ` brevo skill:cli install [--json] Install the brevo-cli Claude Code skill`,
105
102
  ` brevo skill:cli uninstall [--json] Remove the brevo-cli skill`,
106
103
  ``,
104
+ `Scope commands:`,
105
+ ` brevo app available-scopes [--web] [--json] List OAuth scopes supported by the IdP`,
106
+ ` (--web opens the catalog in a local browser page)`,
107
+ ``,
107
108
  `Run \`brevo <command> --help\` for details on a specific command.`,
108
109
  ``,
109
110
  `Examples:`,
@@ -113,6 +114,9 @@ program
113
114
  ` $ brevo app list --json # list apps as JSON`,
114
115
  ` $ brevo app scaffold --app-id APPID # generate starter code`,
115
116
  ` $ brevo app start oauth --port 3000 # start OAuth test server`,
117
+ ` $ brevo app available-scopes --web # browse OAuth scope catalog`,
118
+ ``,
119
+ `Docs: ${constants_1.BREVO_CLI_REFERENCE_URL}`,
116
120
  ``,
117
121
  ].join('\n');
118
122
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ export declare const createCommand: (opts: {
2
2
  name?: string;
3
3
  distribution?: string;
4
4
  redirectUri?: string[];
5
+ logoUri?: string;
5
6
  json?: boolean;
6
7
  }) => Promise<void>;
7
8
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/app/create.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,aAAa;WAEf,MAAM;mBACE,MAAM;kBACP,MAAM,EAAE;WACf,OAAO;mBAiQjB,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/app/create.ts"],"names":[],"mappings":"AAkUA,eAAO,MAAM,aAAa;WAEf,MAAM;mBACE,MAAM;kBACP,MAAM,EAAE;cACZ,MAAM;WACT,OAAO;mBAuCjB,CAAC"}