resend-cli 1.4.1 → 1.5.0
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.
- package/README.md +1 -1
- package/dist/cli.cjs +280 -227
- package/package.json +23 -27
- package/skills/resend-cli/SKILL.md +141 -0
- package/skills/resend-cli/references/api-keys.md +33 -0
- package/skills/resend-cli/references/auth.md +67 -0
- package/skills/resend-cli/references/broadcasts.md +81 -0
- package/skills/resend-cli/references/contact-properties.md +56 -0
- package/skills/resend-cli/references/contacts.md +100 -0
- package/skills/resend-cli/references/domains.md +79 -0
- package/skills/resend-cli/references/emails.md +177 -0
- package/skills/resend-cli/references/error-codes.md +54 -0
- package/skills/resend-cli/references/segments.md +39 -0
- package/skills/resend-cli/references/templates.md +67 -0
- package/skills/resend-cli/references/topics.md +50 -0
- package/skills/resend-cli/references/webhooks.md +79 -0
- package/skills/resend-cli/references/workflows.md +329 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "resend-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "The official CLI for Resend",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -12,51 +12,47 @@
|
|
|
12
12
|
"cli",
|
|
13
13
|
"resend",
|
|
14
14
|
"email",
|
|
15
|
-
"api"
|
|
15
|
+
"api",
|
|
16
|
+
"tanstack-intent"
|
|
16
17
|
],
|
|
17
18
|
"engines": {
|
|
18
19
|
"node": ">=20"
|
|
19
20
|
},
|
|
20
|
-
"packageManager": "pnpm@10.32.1",
|
|
21
21
|
"files": [
|
|
22
|
-
"dist/cli.cjs"
|
|
22
|
+
"dist/cli.cjs",
|
|
23
|
+
"skills/"
|
|
23
24
|
],
|
|
24
25
|
"type": "module",
|
|
25
26
|
"bin": {
|
|
26
27
|
"resend": "./dist/cli.cjs"
|
|
27
28
|
},
|
|
28
|
-
"scripts": {
|
|
29
|
-
"dev": "tsx src/cli.ts",
|
|
30
|
-
"dev:watch": "tsx --watch src/cli.ts",
|
|
31
|
-
"build": "esbuild src/cli.ts --bundle --platform=node --format=cjs --minify --outfile=dist/cli.cjs",
|
|
32
|
-
"build:bin": "pnpm build && pkg dist/cli.cjs --compress Brotli --target node24 --output dist/resend",
|
|
33
|
-
"lint": "biome check .",
|
|
34
|
-
"lint:fix": "biome check --write .",
|
|
35
|
-
"typecheck": "tsc --noEmit",
|
|
36
|
-
"test": "vitest run",
|
|
37
|
-
"test:e2e": "vitest run --config vitest.config.e2e.ts",
|
|
38
|
-
"prepack": "pnpm build"
|
|
39
|
-
},
|
|
40
29
|
"dependencies": {
|
|
41
30
|
"@clack/prompts": "1.1.0",
|
|
42
31
|
"@commander-js/extra-typings": "14.0.0",
|
|
43
32
|
"commander": "14.0.3",
|
|
44
|
-
"picocolors": "
|
|
45
|
-
"resend": "6.9.
|
|
46
|
-
},
|
|
47
|
-
"pnpm": {
|
|
48
|
-
"onlyBuiltDependencies": [
|
|
49
|
-
"esbuild",
|
|
50
|
-
"@biomejs/biome"
|
|
51
|
-
]
|
|
33
|
+
"picocolors": "1.1.1",
|
|
34
|
+
"resend": "6.9.4"
|
|
52
35
|
},
|
|
53
36
|
"devDependencies": {
|
|
54
|
-
"@biomejs/biome": "2.4.
|
|
37
|
+
"@biomejs/biome": "2.4.7",
|
|
55
38
|
"@types/node": "24.12.0",
|
|
56
39
|
"esbuild": "0.27.4",
|
|
57
40
|
"tsx": "4.21.0",
|
|
58
41
|
"typescript": "5.9.3",
|
|
59
|
-
"vitest": "
|
|
42
|
+
"vitest": "4.1.0",
|
|
60
43
|
"@yao-pkg/pkg": "6.14.1"
|
|
44
|
+
},
|
|
45
|
+
"scripts": {
|
|
46
|
+
"dev": "tsx src/cli.ts",
|
|
47
|
+
"dev:watch": "tsx --watch src/cli.ts",
|
|
48
|
+
"build": "esbuild src/cli.ts --bundle --platform=node --format=cjs --minify --outfile=dist/cli.cjs",
|
|
49
|
+
"build:bin": "pnpm build && pkg dist/cli.cjs --compress Brotli --target node24 --output dist/resend",
|
|
50
|
+
"lint": "biome check .",
|
|
51
|
+
"lint:fix": "biome check --write .",
|
|
52
|
+
"typecheck": "tsc --noEmit",
|
|
53
|
+
"test": "vitest run",
|
|
54
|
+
"test:e2e": "vitest run --config vitest.config.e2e.ts",
|
|
55
|
+
"sync-skill-version": "node scripts/sync-skill-version.mjs",
|
|
56
|
+
"version": "pnpm run sync-skill-version && git add skills/resend-cli/SKILL.md"
|
|
61
57
|
}
|
|
62
|
-
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: resend-cli
|
|
3
|
+
description: >
|
|
4
|
+
Operate the Resend platform from the terminal — send emails, manage domains,
|
|
5
|
+
contacts, broadcasts, templates, webhooks, and API keys via the `resend` CLI.
|
|
6
|
+
Use when the user wants to run Resend commands in the shell, scripts, or CI/CD
|
|
7
|
+
pipelines. Always load this skill before running `resend` commands — it contains
|
|
8
|
+
the non-interactive flag contract and gotchas that prevent silent failures.
|
|
9
|
+
license: MIT
|
|
10
|
+
metadata:
|
|
11
|
+
author: resend
|
|
12
|
+
version: "1.5.0"
|
|
13
|
+
homepage: https://resend.com
|
|
14
|
+
source: https://github.com/resend/resend-cli
|
|
15
|
+
inputs:
|
|
16
|
+
- name: RESEND_API_KEY
|
|
17
|
+
description: Resend API key for authenticating CLI commands. Get yours at https://resend.com/api-keys
|
|
18
|
+
required: true
|
|
19
|
+
references:
|
|
20
|
+
- references/emails.md
|
|
21
|
+
- references/domains.md
|
|
22
|
+
- references/api-keys.md
|
|
23
|
+
- references/broadcasts.md
|
|
24
|
+
- references/contacts.md
|
|
25
|
+
- references/contact-properties.md
|
|
26
|
+
- references/segments.md
|
|
27
|
+
- references/templates.md
|
|
28
|
+
- references/topics.md
|
|
29
|
+
- references/webhooks.md
|
|
30
|
+
- references/auth.md
|
|
31
|
+
- references/workflows.md
|
|
32
|
+
- references/error-codes.md
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
# Resend CLI
|
|
36
|
+
|
|
37
|
+
## Agent Protocol
|
|
38
|
+
|
|
39
|
+
The CLI auto-detects non-TTY environments and outputs JSON — no `--json` flag needed.
|
|
40
|
+
|
|
41
|
+
**Rules for agents:**
|
|
42
|
+
- Supply ALL required flags. The CLI will NOT prompt when stdin is not a TTY.
|
|
43
|
+
- Pass `--quiet` (or `-q`) to suppress spinners and status messages.
|
|
44
|
+
- Exit `0` = success, `1` = error.
|
|
45
|
+
- Error JSON goes to stderr, success JSON goes to stdout:
|
|
46
|
+
```json
|
|
47
|
+
{"error":{"message":"...","code":"..."}}
|
|
48
|
+
```
|
|
49
|
+
- Use `--api-key` or `RESEND_API_KEY` env var. Never rely on interactive login.
|
|
50
|
+
- All `delete`/`rm` commands require `--yes` in non-interactive mode.
|
|
51
|
+
|
|
52
|
+
## Authentication
|
|
53
|
+
|
|
54
|
+
Auth resolves: `--api-key` flag > `RESEND_API_KEY` env > config file (`resend login --key`). Use `--profile` or `RESEND_PROFILE` for multi-profile.
|
|
55
|
+
|
|
56
|
+
## Global Flags
|
|
57
|
+
|
|
58
|
+
| Flag | Description |
|
|
59
|
+
|------|-------------|
|
|
60
|
+
| `--api-key <key>` | Override API key for this invocation |
|
|
61
|
+
| `-p, --profile <name>` | Select stored profile |
|
|
62
|
+
| `--json` | Force JSON output (auto in non-TTY) |
|
|
63
|
+
| `-q, --quiet` | Suppress spinners/status (implies `--json`) |
|
|
64
|
+
|
|
65
|
+
## Available Commands
|
|
66
|
+
|
|
67
|
+
| Command Group | What it does |
|
|
68
|
+
|--------------|-------------|
|
|
69
|
+
| `emails` | send, get, list, batch, cancel, update |
|
|
70
|
+
| `emails receiving` | list, get, attachments, forward, listen |
|
|
71
|
+
| `domains` | create, verify, update, delete, list |
|
|
72
|
+
| `api-keys` | create, list, delete |
|
|
73
|
+
| `broadcasts` | create, send, update, delete, list |
|
|
74
|
+
| `contacts` | create, update, delete, segments, topics |
|
|
75
|
+
| `contact-properties` | create, update, delete, list |
|
|
76
|
+
| `segments` | create, get, list, delete |
|
|
77
|
+
| `templates` | create, publish, duplicate, delete, list |
|
|
78
|
+
| `topics` | create, update, delete, list |
|
|
79
|
+
| `webhooks` | create, update, listen, delete, list |
|
|
80
|
+
| `auth` | login, logout, switch, rename, remove |
|
|
81
|
+
| `whoami` / `doctor` / `update` / `open` | Utility commands |
|
|
82
|
+
|
|
83
|
+
Read the matching reference file for detailed flags and output shapes.
|
|
84
|
+
|
|
85
|
+
## Common Mistakes
|
|
86
|
+
|
|
87
|
+
| # | Mistake | Fix |
|
|
88
|
+
|---|---------|-----|
|
|
89
|
+
| 1 | **Forgetting `--yes` on delete commands** | All `delete`/`rm` subcommands require `--yes` in non-interactive mode — otherwise the CLI exits with an error |
|
|
90
|
+
| 2 | **Not saving webhook `signing_secret`** | `webhooks create` shows the secret once only — it cannot be retrieved later. Capture it from command output immediately |
|
|
91
|
+
| 3 | **Omitting `--quiet` in CI** | Without `-q`, spinners and status text leak into stdout. Use `-q` to get clean JSON only |
|
|
92
|
+
| 4 | **Using `--scheduled-at` with batch** | Batch sending does not support `scheduled_at` — use single `emails send` instead |
|
|
93
|
+
| 5 | **Expecting `domains list` to include DNS records** | List returns summaries only — use `domains get <id>` for the full `records[]` array |
|
|
94
|
+
| 6 | **Sending a dashboard-created broadcast via CLI** | Only API-created broadcasts can be sent with `broadcasts send` — dashboard broadcasts must be sent from the dashboard |
|
|
95
|
+
| 7 | **Passing `--events` to `webhooks update` expecting additive behavior** | `--events` replaces the entire subscription list — always pass the complete set |
|
|
96
|
+
|
|
97
|
+
## Common Patterns
|
|
98
|
+
|
|
99
|
+
**Send an email:**
|
|
100
|
+
```bash
|
|
101
|
+
resend emails send --from "you@domain.com" --to user@example.com --subject "Hello" --text "Body"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Domain setup flow:**
|
|
105
|
+
```bash
|
|
106
|
+
resend domains create --name example.com --region us-east-1
|
|
107
|
+
# Configure DNS records from output, then:
|
|
108
|
+
resend domains verify <domain-id>
|
|
109
|
+
resend domains get <domain-id> # check status
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Create and send a broadcast:**
|
|
113
|
+
```bash
|
|
114
|
+
resend broadcasts create --from "news@domain.com" --subject "Update" --segment-id <id> --html "<h1>Hi</h1>" --send
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**CI/CD (no login needed):**
|
|
118
|
+
```bash
|
|
119
|
+
RESEND_API_KEY=re_xxx resend emails send --from ... --to ... --subject ... --text ...
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Check environment health:**
|
|
123
|
+
```bash
|
|
124
|
+
resend doctor -q
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## When to Load References
|
|
128
|
+
|
|
129
|
+
- **Sending or reading emails** → [references/emails.md](references/emails.md)
|
|
130
|
+
- **Setting up or verifying a domain** → [references/domains.md](references/domains.md)
|
|
131
|
+
- **Managing API keys** → [references/api-keys.md](references/api-keys.md)
|
|
132
|
+
- **Creating or sending broadcasts** → [references/broadcasts.md](references/broadcasts.md)
|
|
133
|
+
- **Managing contacts, segments, or topics** → [references/contacts.md](references/contacts.md), [references/segments.md](references/segments.md), [references/topics.md](references/topics.md)
|
|
134
|
+
- **Defining contact properties** → [references/contact-properties.md](references/contact-properties.md)
|
|
135
|
+
- **Working with templates** → [references/templates.md](references/templates.md)
|
|
136
|
+
- **Setting up webhooks or listening for events** → [references/webhooks.md](references/webhooks.md)
|
|
137
|
+
- **Auth, profiles, or health checks** → [references/auth.md](references/auth.md)
|
|
138
|
+
- **Multi-step recipes** (setup, CI/CD, broadcast workflow) → [references/workflows.md](references/workflows.md)
|
|
139
|
+
- **Command failed with an error** → [references/error-codes.md](references/error-codes.md)
|
|
140
|
+
- **Resend SDK integration** (Node.js, Python, Go, etc.) → Install the [`resend`](https://github.com/resend/resend-skills) skill
|
|
141
|
+
- **AI agent email inbox** → Install the [`agent-email-inbox`](https://github.com/resend/resend-skills) skill
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# api-keys
|
|
2
|
+
|
|
3
|
+
Detailed flag specifications for `resend api-keys` commands.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## api-keys list
|
|
8
|
+
|
|
9
|
+
List all API keys (IDs, names, and `created_at` only — tokens never included).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## api-keys create
|
|
14
|
+
|
|
15
|
+
| Flag | Type | Required | Description |
|
|
16
|
+
|------|------|----------|-------------|
|
|
17
|
+
| `--name <name>` | string | Yes (non-interactive) | Key name (max 50 chars) |
|
|
18
|
+
| `--permission <perm>` | string | No | `full_access` (default) \| `sending_access` |
|
|
19
|
+
| `--domain-id <id>` | string | No | Restrict `sending_access` to one domain |
|
|
20
|
+
|
|
21
|
+
**Output:** `{"id":"...","token":"re_..."}` — token shown once only.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## api-keys delete
|
|
26
|
+
|
|
27
|
+
**Argument:** `<id>` — API key ID
|
|
28
|
+
|
|
29
|
+
| Flag | Type | Required | Description |
|
|
30
|
+
|------|------|----------|-------------|
|
|
31
|
+
| `--yes` | boolean | Yes (non-interactive) | Skip confirmation |
|
|
32
|
+
|
|
33
|
+
**Alias:** `rm`
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# auth & utility
|
|
2
|
+
|
|
3
|
+
Detailed flag specifications for `resend auth` and utility commands.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## auth login
|
|
8
|
+
|
|
9
|
+
| Flag | Type | Required | Description |
|
|
10
|
+
|------|------|----------|-------------|
|
|
11
|
+
| `--key <key>` | string | Yes (non-interactive) | API key (must start with `re_`) |
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## auth logout
|
|
16
|
+
|
|
17
|
+
Removes the active profile's credentials (or all profiles if no `--profile`).
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## auth list
|
|
22
|
+
|
|
23
|
+
Lists all profiles with active marker.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## auth switch
|
|
28
|
+
|
|
29
|
+
**Argument:** `[name]` — Profile name (prompts in interactive if omitted)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## auth rename
|
|
34
|
+
|
|
35
|
+
**Arguments:** `[old-name]` `[new-name]` — Prompts in interactive if omitted
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## auth remove
|
|
40
|
+
|
|
41
|
+
**Argument:** `[name]` — Profile name (prompts in interactive if omitted)
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## whoami
|
|
46
|
+
|
|
47
|
+
No flags. Shows authentication status (local only, no network calls).
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## doctor
|
|
52
|
+
|
|
53
|
+
Checks: CLI Version, API Key, Domains, AI Agents.
|
|
54
|
+
|
|
55
|
+
Exits `0` if all pass/warn, `1` if any fail.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## update
|
|
60
|
+
|
|
61
|
+
Checks GitHub releases for newer version. Shows upgrade command.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## open
|
|
66
|
+
|
|
67
|
+
Opens `https://resend.com/emails` in the default browser.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# broadcasts
|
|
2
|
+
|
|
3
|
+
Detailed flag specifications for `resend broadcasts` commands.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## broadcasts list
|
|
8
|
+
|
|
9
|
+
| Flag | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `--limit <n>` | number | 10 | Max results (1-100) |
|
|
12
|
+
| `--after <cursor>` | string | — | Forward pagination |
|
|
13
|
+
| `--before <cursor>` | string | — | Backward pagination |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## broadcasts create
|
|
18
|
+
|
|
19
|
+
| Flag | Type | Required | Description |
|
|
20
|
+
|------|------|----------|-------------|
|
|
21
|
+
| `--from <address>` | string | Yes | Sender address |
|
|
22
|
+
| `--subject <subject>` | string | Yes | Email subject |
|
|
23
|
+
| `--segment-id <id>` | string | Yes | Target segment |
|
|
24
|
+
| `--html <html>` | string | At least one body flag | HTML body (supports `{{{PROPERTY\|fallback}}}`) |
|
|
25
|
+
| `--html-file <path>` | string | At least one body flag | Path to HTML file |
|
|
26
|
+
| `--text <text>` | string | At least one body flag | Plain-text body |
|
|
27
|
+
| `--name <name>` | string | No | Internal label |
|
|
28
|
+
| `--reply-to <address>` | string | No | Reply-to address |
|
|
29
|
+
| `--preview-text <text>` | string | No | Preview text |
|
|
30
|
+
| `--topic-id <id>` | string | No | Topic for subscription filtering |
|
|
31
|
+
| `--send` | boolean | No | Send immediately (default: save as draft) |
|
|
32
|
+
| `--scheduled-at <datetime>` | string | No | Schedule delivery (only with `--send`) |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## broadcasts get
|
|
37
|
+
|
|
38
|
+
**Argument:** `<id>` — Broadcast ID
|
|
39
|
+
|
|
40
|
+
Returns full object with html/text, from, subject, status (`draft`|`queued`|`sent`), timestamps.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## broadcasts send
|
|
45
|
+
|
|
46
|
+
Send a draft broadcast.
|
|
47
|
+
|
|
48
|
+
**Argument:** `<id>` — Broadcast ID
|
|
49
|
+
|
|
50
|
+
| Flag | Type | Required | Description |
|
|
51
|
+
|------|------|----------|-------------|
|
|
52
|
+
| `--scheduled-at <datetime>` | string | No | Schedule instead of immediate send |
|
|
53
|
+
|
|
54
|
+
**Note:** Dashboard-created broadcasts cannot be sent via API.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## broadcasts update
|
|
59
|
+
|
|
60
|
+
**Argument:** `<id>` — Broadcast ID (must be draft)
|
|
61
|
+
|
|
62
|
+
| Flag | Type | Description |
|
|
63
|
+
|------|------|-------------|
|
|
64
|
+
| `--from <address>` | string | Update sender |
|
|
65
|
+
| `--subject <subject>` | string | Update subject |
|
|
66
|
+
| `--html <html>` | string | Update HTML body |
|
|
67
|
+
| `--html-file <path>` | string | Path to HTML file |
|
|
68
|
+
| `--text <text>` | string | Update plain-text body |
|
|
69
|
+
| `--name <name>` | string | Update internal label |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## broadcasts delete
|
|
74
|
+
|
|
75
|
+
**Argument:** `<id>` — Broadcast ID
|
|
76
|
+
|
|
77
|
+
| Flag | Type | Required | Description |
|
|
78
|
+
|------|------|----------|-------------|
|
|
79
|
+
| `--yes` | boolean | Yes (non-interactive) | Skip confirmation |
|
|
80
|
+
|
|
81
|
+
**Alias:** `rm`
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# contact-properties
|
|
2
|
+
|
|
3
|
+
Detailed flag specifications for `resend contact-properties` commands.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## contact-properties list
|
|
8
|
+
|
|
9
|
+
| Flag | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `--limit <n>` | number | 10 | Max results (1-100) |
|
|
12
|
+
| `--after <cursor>` | string | — | Forward pagination |
|
|
13
|
+
| `--before <cursor>` | string | — | Backward pagination |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## contact-properties create
|
|
18
|
+
|
|
19
|
+
| Flag | Type | Required | Description |
|
|
20
|
+
|------|------|----------|-------------|
|
|
21
|
+
| `--key <key>` | string | Yes (non-interactive) | Property key name |
|
|
22
|
+
| `--type <type>` | string | Yes (non-interactive) | `string` \| `number` |
|
|
23
|
+
| `--fallback-value <value>` | string \| number | No | Default in templates (parsed as number when `--type number`) |
|
|
24
|
+
|
|
25
|
+
Reserved keys: `FIRST_NAME`, `LAST_NAME`, `EMAIL`, `UNSUBSCRIBE_URL`
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## contact-properties get
|
|
30
|
+
|
|
31
|
+
**Argument:** `<id>` — Property UUID
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## contact-properties update
|
|
36
|
+
|
|
37
|
+
**Argument:** `<id>` — Property UUID
|
|
38
|
+
|
|
39
|
+
| Flag | Type | Description |
|
|
40
|
+
|------|------|-------------|
|
|
41
|
+
| `--fallback-value <value>` | string | New fallback |
|
|
42
|
+
| `--clear-fallback-value` | boolean | Remove fallback (mutually exclusive with above) |
|
|
43
|
+
|
|
44
|
+
Key and type are immutable after creation.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## contact-properties delete
|
|
49
|
+
|
|
50
|
+
**Argument:** `<id>` — Property UUID
|
|
51
|
+
|
|
52
|
+
| Flag | Type | Required | Description |
|
|
53
|
+
|------|------|----------|-------------|
|
|
54
|
+
| `--yes` | boolean | Yes (non-interactive) | Skip confirmation |
|
|
55
|
+
|
|
56
|
+
**Warning:** Removes property from ALL contacts permanently.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# contacts
|
|
2
|
+
|
|
3
|
+
Detailed flag specifications for `resend contacts` commands.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## contacts list
|
|
8
|
+
|
|
9
|
+
| Flag | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `--limit <n>` | number | 10 | Max results (1-100) |
|
|
12
|
+
| `--after <cursor>` | string | — | Forward pagination |
|
|
13
|
+
| `--before <cursor>` | string | — | Backward pagination |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## contacts create
|
|
18
|
+
|
|
19
|
+
| Flag | Type | Required | Description |
|
|
20
|
+
|------|------|----------|-------------|
|
|
21
|
+
| `--email <email>` | string | Yes | Contact email |
|
|
22
|
+
| `--first-name <name>` | string | No | First name |
|
|
23
|
+
| `--last-name <name>` | string | No | Last name |
|
|
24
|
+
| `--unsubscribed` | boolean | No | Globally unsubscribe |
|
|
25
|
+
| `--properties <json>` | string | No | Custom properties JSON |
|
|
26
|
+
| `--segment-id <id...>` | string[] | No | Add to segment(s) |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## contacts get
|
|
31
|
+
|
|
32
|
+
**Argument:** `<id|email>` — Contact UUID or email address (both accepted)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## contacts update
|
|
37
|
+
|
|
38
|
+
**Argument:** `<id|email>` — Contact UUID or email address
|
|
39
|
+
|
|
40
|
+
| Flag | Type | Description |
|
|
41
|
+
|------|------|-------------|
|
|
42
|
+
| `--unsubscribed` | boolean | Set unsubscribed |
|
|
43
|
+
| `--no-unsubscribed` | boolean | Re-subscribe |
|
|
44
|
+
| `--properties <json>` | string | Merge properties (set key to `null` to clear) |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## contacts delete
|
|
49
|
+
|
|
50
|
+
**Argument:** `<id|email>` — Contact UUID or email address
|
|
51
|
+
|
|
52
|
+
| Flag | Type | Required | Description |
|
|
53
|
+
|------|------|----------|-------------|
|
|
54
|
+
| `--yes` | boolean | Yes (non-interactive) | Skip confirmation |
|
|
55
|
+
|
|
56
|
+
**Alias:** `rm`
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## contacts segments
|
|
61
|
+
|
|
62
|
+
List segments a contact belongs to.
|
|
63
|
+
|
|
64
|
+
**Argument:** `<id|email>` — Contact UUID or email
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## contacts add-segment
|
|
69
|
+
|
|
70
|
+
**Argument:** `<contactId>` — Contact UUID or email
|
|
71
|
+
|
|
72
|
+
| Flag | Type | Required | Description |
|
|
73
|
+
|------|------|----------|-------------|
|
|
74
|
+
| `--segment-id <id>` | string | Yes (non-interactive) | Segment ID to add to |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## contacts remove-segment
|
|
79
|
+
|
|
80
|
+
**Arguments:** `<id|email>` `<segmentId>`
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## contacts topics
|
|
85
|
+
|
|
86
|
+
List contact's topic subscriptions.
|
|
87
|
+
|
|
88
|
+
**Argument:** `<id|email>` — Contact UUID or email
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## contacts update-topics
|
|
93
|
+
|
|
94
|
+
**Argument:** `<id|email>` — Contact UUID or email
|
|
95
|
+
|
|
96
|
+
| Flag | Type | Required | Description |
|
|
97
|
+
|------|------|----------|-------------|
|
|
98
|
+
| `--topics <json>` | string | Yes (non-interactive) | JSON array: `[{"id":"topic-uuid","subscription":"opt_in"}]` |
|
|
99
|
+
|
|
100
|
+
Subscription values: `opt_in` | `opt_out`
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# domains
|
|
2
|
+
|
|
3
|
+
Detailed flag specifications for `resend domains` commands.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## domains list
|
|
8
|
+
|
|
9
|
+
List all domains.
|
|
10
|
+
|
|
11
|
+
| Flag | Type | Default | Description |
|
|
12
|
+
|------|------|---------|-------------|
|
|
13
|
+
| `--limit <n>` | number | 10 | Max results (1-100) |
|
|
14
|
+
| `--after <cursor>` | string | — | Forward pagination |
|
|
15
|
+
| `--before <cursor>` | string | — | Backward pagination |
|
|
16
|
+
|
|
17
|
+
**Note:** List does NOT include DNS records. Use `domains get` for full details.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## domains create
|
|
22
|
+
|
|
23
|
+
Create a new domain and receive DNS records to configure.
|
|
24
|
+
|
|
25
|
+
| Flag | Type | Required | Description |
|
|
26
|
+
|------|------|----------|-------------|
|
|
27
|
+
| `--name <domain>` | string | Yes (non-interactive) | Domain name (e.g., `example.com`) |
|
|
28
|
+
| `--region <region>` | string | No | `us-east-1` \| `eu-west-1` \| `sa-east-1` \| `ap-northeast-1` |
|
|
29
|
+
| `--tls <mode>` | string | No | `opportunistic` (default) \| `enforced` |
|
|
30
|
+
| `--sending` | boolean | No | Enable sending (default: enabled) |
|
|
31
|
+
| `--receiving` | boolean | No | Enable receiving (default: disabled) |
|
|
32
|
+
|
|
33
|
+
**Output:** Domain object with `records[]` array of DNS records to configure.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## domains get
|
|
38
|
+
|
|
39
|
+
**Argument:** `<id>` — Domain ID
|
|
40
|
+
|
|
41
|
+
Returns full domain with `records[]`, `status` (`not_started`|`pending`|`verified`|`failed`|`temporary_failure`), `capabilities`, `region`.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## domains verify
|
|
46
|
+
|
|
47
|
+
Trigger async DNS verification.
|
|
48
|
+
|
|
49
|
+
**Argument:** `<id>` — Domain ID
|
|
50
|
+
|
|
51
|
+
**Output:** `{"object":"domain","id":"..."}`
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## domains update
|
|
56
|
+
|
|
57
|
+
**Argument:** `<id>` — Domain ID
|
|
58
|
+
|
|
59
|
+
| Flag | Type | Description |
|
|
60
|
+
|------|------|-------------|
|
|
61
|
+
| `--tls <mode>` | string | `opportunistic` \| `enforced` |
|
|
62
|
+
| `--open-tracking` | boolean | Enable open tracking |
|
|
63
|
+
| `--no-open-tracking` | boolean | Disable open tracking |
|
|
64
|
+
| `--click-tracking` | boolean | Enable click tracking |
|
|
65
|
+
| `--no-click-tracking` | boolean | Disable click tracking |
|
|
66
|
+
|
|
67
|
+
At least one option required.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## domains delete
|
|
72
|
+
|
|
73
|
+
**Argument:** `<id>` — Domain ID
|
|
74
|
+
|
|
75
|
+
| Flag | Type | Required | Description |
|
|
76
|
+
|------|------|----------|-------------|
|
|
77
|
+
| `--yes` | boolean | Yes (non-interactive) | Skip confirmation |
|
|
78
|
+
|
|
79
|
+
**Alias:** `rm`
|