hey-axi 0.2.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/LICENSE +21 -0
- package/README.md +127 -0
- package/package.json +60 -0
- package/skills/hey-axi/SKILL.md +125 -0
- package/skills/hey-axi/references/commands.md +161 -0
- package/src/args.js +117 -0
- package/src/cli.js +345 -0
- package/src/errors.js +61 -0
- package/src/guide.js +28 -0
- package/src/hey-axi.js +10 -0
- package/src/home.js +50 -0
- package/src/hooks.js +93 -0
- package/src/manifest.json +3572 -0
- package/src/policy.js +91 -0
- package/src/router.js +82 -0
- package/src/shape.js +251 -0
- package/src/text.js +14 -0
- package/src/version.js +3 -0
|
@@ -0,0 +1,3572 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": "hey commands --json + hey <command> --help",
|
|
3
|
+
"hey_version": "1.7.0",
|
|
4
|
+
"hey_commit": "924703c5d7e8a24bb46acba0fe27bbc27f9c1de9",
|
|
5
|
+
"commands": [
|
|
6
|
+
{
|
|
7
|
+
"name": "account",
|
|
8
|
+
"path": "account",
|
|
9
|
+
"short": "List and select linked mail accounts",
|
|
10
|
+
"notes": "Linked accounts share the current login. Use list to discover IDs and use <id|all> to persist the default mail filter; --account overrides it for one invocation.",
|
|
11
|
+
"subcommands": [
|
|
12
|
+
{
|
|
13
|
+
"name": "list",
|
|
14
|
+
"path": "account list",
|
|
15
|
+
"short": "List linked mail accounts",
|
|
16
|
+
"synopsis": [
|
|
17
|
+
"hey account list [flags]"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "senders",
|
|
22
|
+
"path": "account senders",
|
|
23
|
+
"short": "List configured sender addresses",
|
|
24
|
+
"notes": "Lists sender IDs, account IDs, email addresses, and account-default flags. --account limits the list; use an email or sender ID with compose --from or draft edit --from. Does not change the default.",
|
|
25
|
+
"synopsis": [
|
|
26
|
+
"hey account senders [flags]"
|
|
27
|
+
],
|
|
28
|
+
"examples": [
|
|
29
|
+
"hey account senders",
|
|
30
|
+
"hey account senders --account 12345 --json"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "use",
|
|
35
|
+
"path": "account use",
|
|
36
|
+
"short": "Set the default linked mail account",
|
|
37
|
+
"synopsis": [
|
|
38
|
+
"hey account use <id|all> [flags]"
|
|
39
|
+
],
|
|
40
|
+
"examples": [
|
|
41
|
+
"hey account use 12345",
|
|
42
|
+
"hey account use all"
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"synopsis": [
|
|
47
|
+
"hey account <command> [flags]"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "attachment",
|
|
52
|
+
"path": "attachment",
|
|
53
|
+
"short": "List and save files from a thread",
|
|
54
|
+
"notes": "Subcommands: list, save. Lists downloadable attachments from every message in a known thread. Pass a returned ID to `hey attachment save <id>`.",
|
|
55
|
+
"subcommands": [
|
|
56
|
+
{
|
|
57
|
+
"name": "list",
|
|
58
|
+
"path": "attachment list",
|
|
59
|
+
"short": "List a thread's attachments",
|
|
60
|
+
"flags": [
|
|
61
|
+
{
|
|
62
|
+
"name": "allow-partial",
|
|
63
|
+
"desc": "List what could be read of a thread that could only be read in part, with a notice saying what is missing"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"synopsis": [
|
|
67
|
+
"hey attachment list <thread-id> [flags]"
|
|
68
|
+
],
|
|
69
|
+
"examples": [
|
|
70
|
+
"hey attachment list 12345",
|
|
71
|
+
"hey attachment list 12345 --json",
|
|
72
|
+
"hey attachment list 12345 --allow-partial"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "save",
|
|
77
|
+
"path": "attachment save",
|
|
78
|
+
"short": "Save an attachment to disk",
|
|
79
|
+
"notes": "Saves the attachment identified by an ID from `hey attachment list <thread-id>`. Existing files are preserved unless --force is set.",
|
|
80
|
+
"flags": [
|
|
81
|
+
{
|
|
82
|
+
"name": "force",
|
|
83
|
+
"desc": "Replace an existing destination file"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "output",
|
|
87
|
+
"shorthand": "o",
|
|
88
|
+
"value": true,
|
|
89
|
+
"desc": "Destination file or directory"
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"synopsis": [
|
|
93
|
+
"hey attachment save <attachment-id> [flags]"
|
|
94
|
+
],
|
|
95
|
+
"examples": [
|
|
96
|
+
"hey attachment save 67890:1",
|
|
97
|
+
"hey attachment save 67890:1 --output ./quarterly-report.pdf",
|
|
98
|
+
"hey attachment save 67890:1 --output ./downloads --force"
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"synopsis": [
|
|
103
|
+
"hey attachment <command> [flags]"
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": "auth",
|
|
108
|
+
"path": "auth",
|
|
109
|
+
"short": "Sign in, sign out, and check login status",
|
|
110
|
+
"notes": "Use status to check auth before other commands. Returns token expiry info in JSON. Use login --token for non-interactive auth.",
|
|
111
|
+
"subcommands": [
|
|
112
|
+
{
|
|
113
|
+
"name": "login",
|
|
114
|
+
"path": "auth login",
|
|
115
|
+
"short": "Authenticate with the HEY server",
|
|
116
|
+
"flags": [
|
|
117
|
+
{
|
|
118
|
+
"name": "cookie",
|
|
119
|
+
"value": true,
|
|
120
|
+
"desc": "Session cookie value from browser (session_token)"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "no-browser",
|
|
124
|
+
"desc": "Don't open browser, print URL instead"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"name": "token",
|
|
128
|
+
"value": true,
|
|
129
|
+
"desc": "Pre-generated Bearer token"
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
"synopsis": [
|
|
133
|
+
"hey auth login [flags]"
|
|
134
|
+
],
|
|
135
|
+
"examples": [
|
|
136
|
+
"hey auth login",
|
|
137
|
+
"hey auth login --token YOUR_BEARER_TOKEN",
|
|
138
|
+
"hey auth login --cookie SESSION_COOKIE_VALUE"
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "logout",
|
|
143
|
+
"path": "auth logout",
|
|
144
|
+
"short": "Clear stored credentials",
|
|
145
|
+
"synopsis": [
|
|
146
|
+
"hey auth logout [flags]"
|
|
147
|
+
],
|
|
148
|
+
"examples": [
|
|
149
|
+
"hey auth logout"
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"name": "refresh",
|
|
154
|
+
"path": "auth refresh",
|
|
155
|
+
"short": "Force token refresh",
|
|
156
|
+
"synopsis": [
|
|
157
|
+
"hey auth refresh [flags]"
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"name": "status",
|
|
162
|
+
"path": "auth status",
|
|
163
|
+
"short": "Show authentication status",
|
|
164
|
+
"synopsis": [
|
|
165
|
+
"hey auth status [flags]"
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"name": "token",
|
|
170
|
+
"path": "auth token",
|
|
171
|
+
"short": "Print access token to stdout",
|
|
172
|
+
"flags": [
|
|
173
|
+
{
|
|
174
|
+
"name": "stored",
|
|
175
|
+
"desc": "Only print stored OAuth token (ignore HEY_TOKEN env var)"
|
|
176
|
+
}
|
|
177
|
+
],
|
|
178
|
+
"synopsis": [
|
|
179
|
+
"hey auth token [flags]"
|
|
180
|
+
]
|
|
181
|
+
}
|
|
182
|
+
],
|
|
183
|
+
"synopsis": [
|
|
184
|
+
"hey auth <command> [flags]"
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "box",
|
|
189
|
+
"path": "box",
|
|
190
|
+
"short": "List HEY boxes and their email threads",
|
|
191
|
+
"usage": "box <name|id>",
|
|
192
|
+
"notes": "Accepts a box name or numeric ID. Returns email threads. Use topic_id with hey thread read, reply, and forward; use id with seen, unseen, and move. A row with kind \"bundle\" groups one sender's unseen threads and has no topic_id: list them with hey bundle view <id>, and every thread with that sender via hey contact threads <contact-id>. --page continues from the next_page cursor of an earlier listing of the same box.",
|
|
193
|
+
"flags": [
|
|
194
|
+
{
|
|
195
|
+
"name": "all",
|
|
196
|
+
"desc": "Fetch all results (override --limit)"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"name": "limit",
|
|
200
|
+
"value": true,
|
|
201
|
+
"desc": "Maximum number of threads to show"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"name": "page",
|
|
205
|
+
"value": true,
|
|
206
|
+
"desc": "Continue from a next_page cursor"
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"subcommands": [
|
|
210
|
+
{
|
|
211
|
+
"name": "list",
|
|
212
|
+
"path": "box list",
|
|
213
|
+
"short": "List your HEY boxes",
|
|
214
|
+
"notes": "Returns all mailbox types. Use --ids-only to pipe IDs to hey box view.",
|
|
215
|
+
"flags": [
|
|
216
|
+
{
|
|
217
|
+
"name": "all",
|
|
218
|
+
"desc": "Fetch all results (override --limit)"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"name": "limit",
|
|
222
|
+
"value": true,
|
|
223
|
+
"desc": "Maximum number of boxes to show"
|
|
224
|
+
}
|
|
225
|
+
],
|
|
226
|
+
"synopsis": [
|
|
227
|
+
"hey box list [flags]"
|
|
228
|
+
],
|
|
229
|
+
"examples": [
|
|
230
|
+
"hey box list",
|
|
231
|
+
"hey box list --limit 5",
|
|
232
|
+
"hey box list --json"
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"name": "view",
|
|
237
|
+
"path": "box view",
|
|
238
|
+
"short": "List email threads in a box",
|
|
239
|
+
"notes": "Accepts a box name or numeric ID. Returns email threads. Use topic_id with hey thread read, reply, and forward; use id with seen, unseen, and move. A row with kind \"bundle\" groups one sender's unseen threads and has no topic_id: list them with hey bundle view <id>, and every thread with that sender via hey contact threads <contact-id>. --page continues from the next_page cursor of an earlier listing of the same box.",
|
|
240
|
+
"flags": [
|
|
241
|
+
{
|
|
242
|
+
"name": "all",
|
|
243
|
+
"desc": "Fetch all results (override --limit)"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"name": "limit",
|
|
247
|
+
"value": true,
|
|
248
|
+
"desc": "Maximum number of threads to show"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"name": "page",
|
|
252
|
+
"value": true,
|
|
253
|
+
"desc": "Continue from a next_page cursor"
|
|
254
|
+
}
|
|
255
|
+
],
|
|
256
|
+
"synopsis": [
|
|
257
|
+
"hey box view <name|id> [flags]"
|
|
258
|
+
],
|
|
259
|
+
"examples": [
|
|
260
|
+
"hey box view imbox",
|
|
261
|
+
"hey box view imbox --limit 10",
|
|
262
|
+
"hey box view imbox --page next-cursor"
|
|
263
|
+
]
|
|
264
|
+
}
|
|
265
|
+
],
|
|
266
|
+
"synopsis": [
|
|
267
|
+
"hey box <command> [flags]"
|
|
268
|
+
],
|
|
269
|
+
"examples": [
|
|
270
|
+
"hey box list",
|
|
271
|
+
"hey box view imbox",
|
|
272
|
+
"hey box view imbox --limit 10"
|
|
273
|
+
]
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"name": "bubble",
|
|
277
|
+
"path": "bubble",
|
|
278
|
+
"short": "Bubble email threads up in the Imbox",
|
|
279
|
+
"subcommands": [
|
|
280
|
+
{
|
|
281
|
+
"name": "list",
|
|
282
|
+
"path": "bubble list",
|
|
283
|
+
"short": "List bubbled-up and scheduled email threads",
|
|
284
|
+
"notes": "Lists two buckets: bubbled_up, the threads back in the Imbox, and scheduled, the threads waiting in Bubble Up with bubble_up_schedule.bubble_up_at saying when. Use id with hey bubble pop; use topic_id with hey thread read. --limit caps each bucket.",
|
|
285
|
+
"flags": [
|
|
286
|
+
{
|
|
287
|
+
"name": "all",
|
|
288
|
+
"desc": "Fetch all results (override --limit)"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"name": "limit",
|
|
292
|
+
"value": true,
|
|
293
|
+
"desc": "Maximum number of threads to show per bucket"
|
|
294
|
+
}
|
|
295
|
+
],
|
|
296
|
+
"synopsis": [
|
|
297
|
+
"hey bubble list [flags]"
|
|
298
|
+
],
|
|
299
|
+
"examples": [
|
|
300
|
+
"hey bubble list",
|
|
301
|
+
"hey bubble list --json"
|
|
302
|
+
]
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"name": "pop",
|
|
306
|
+
"path": "bubble pop",
|
|
307
|
+
"short": "Cancel bubble-ups",
|
|
308
|
+
"notes": "Accepts one or more box item IDs from hey box view output. Cancels each thread's bubble-up.",
|
|
309
|
+
"synopsis": [
|
|
310
|
+
"hey bubble pop <box-item-id>... [flags]"
|
|
311
|
+
],
|
|
312
|
+
"examples": [
|
|
313
|
+
"hey bubble pop 12345",
|
|
314
|
+
"hey bubble pop 12345 67890"
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"name": "up",
|
|
319
|
+
"path": "bubble up",
|
|
320
|
+
"short": "Bubble email threads up",
|
|
321
|
+
"notes": "Accepts one or more box item IDs from hey box view output. Exactly one of --now, --on, --tomorrow, --weekend and --next-week is required. --on takes a YYYY-MM-DD date; HEY bubbles the threads up at its morning hour of that day, or at its evening hour (18:00) when the date is today. --tomorrow, --weekend and --next-week land at the morning hour of tomorrow, the coming Saturday, and next Monday.",
|
|
322
|
+
"flags": [
|
|
323
|
+
{
|
|
324
|
+
"name": "next-week",
|
|
325
|
+
"desc": "Bubble the threads up Monday morning"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"name": "now",
|
|
329
|
+
"desc": "Bubble the threads up right away"
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"name": "on",
|
|
333
|
+
"value": true,
|
|
334
|
+
"desc": "Bubble the threads up on a date (YYYY-MM-DD)"
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"name": "tomorrow",
|
|
338
|
+
"desc": "Bubble the threads up tomorrow morning"
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"name": "weekend",
|
|
342
|
+
"desc": "Bubble the threads up Saturday morning"
|
|
343
|
+
}
|
|
344
|
+
],
|
|
345
|
+
"synopsis": [
|
|
346
|
+
"hey bubble up <box-item-id>... (--now | --on <date> | --tomorrow | --weekend | --next-week) [flags]"
|
|
347
|
+
],
|
|
348
|
+
"examples": [
|
|
349
|
+
"hey bubble up 12345 --now",
|
|
350
|
+
"hey bubble up 12345 67890 --now",
|
|
351
|
+
"hey bubble up 12345 --on 2026-09-04"
|
|
352
|
+
]
|
|
353
|
+
}
|
|
354
|
+
],
|
|
355
|
+
"synopsis": [
|
|
356
|
+
"hey bubble <command> [flags]"
|
|
357
|
+
]
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"name": "bulk-reply",
|
|
361
|
+
"path": "bulk-reply",
|
|
362
|
+
"short": "Reply to multiple email threads",
|
|
363
|
+
"notes": "Always run `hey bulk-reply preview <box-item-id>...` before sending. Send resolves the box items again, keeps HEY's name-tag content, and returns the delivery ID and undo state.",
|
|
364
|
+
"subcommands": [
|
|
365
|
+
{
|
|
366
|
+
"name": "preview",
|
|
367
|
+
"path": "bulk-reply preview",
|
|
368
|
+
"short": "Preview threads and recipients without sending",
|
|
369
|
+
"notes": "Read-only. Box item IDs come from `hey box view` or `hey search`. The result contains the latest replyable entry and exact To, CC, and BCC recipients for each thread.",
|
|
370
|
+
"synopsis": [
|
|
371
|
+
"hey bulk-reply preview <box-item-id>... [flags]"
|
|
372
|
+
],
|
|
373
|
+
"examples": [
|
|
374
|
+
"hey bulk-reply preview 12345 67890",
|
|
375
|
+
"hey bulk-reply preview 12345 67890 --json"
|
|
376
|
+
]
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"name": "send",
|
|
380
|
+
"path": "bulk-reply send",
|
|
381
|
+
"short": "Send one reply to multiple threads",
|
|
382
|
+
"notes": "Mutating. Preview first. Accepts a message via -m, stdin, or $EDITOR and repeatable --attach files. HEY's server-provided name-tag content is preserved.",
|
|
383
|
+
"flags": [
|
|
384
|
+
{
|
|
385
|
+
"name": "attach",
|
|
386
|
+
"value": true,
|
|
387
|
+
"desc": "File to attach (repeatable)"
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"name": "message",
|
|
391
|
+
"shorthand": "m",
|
|
392
|
+
"value": true,
|
|
393
|
+
"desc": "Reply message as Markdown (or opens $EDITOR)"
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"name": "message-html",
|
|
397
|
+
"value": true,
|
|
398
|
+
"desc": "Reply message as raw HTML instead of Markdown"
|
|
399
|
+
}
|
|
400
|
+
],
|
|
401
|
+
"synopsis": [
|
|
402
|
+
"hey bulk-reply send <box-item-id>... [flags]"
|
|
403
|
+
],
|
|
404
|
+
"examples": [
|
|
405
|
+
"hey bulk-reply send 12345 67890 -m \"Thanks for the update.\"",
|
|
406
|
+
"hey bulk-reply send 12345 67890 -m \"The report is attached.\" --attach ./report.pdf"
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"name": "undo",
|
|
411
|
+
"path": "bulk-reply undo",
|
|
412
|
+
"short": "Recall a delayed bulk reply",
|
|
413
|
+
"notes": "Mutating. Works only while HEY's undo window remains open. The bulk reply ID is returned by `hey bulk-reply send`.",
|
|
414
|
+
"synopsis": [
|
|
415
|
+
"hey bulk-reply undo <bulk-reply-id> [flags]"
|
|
416
|
+
],
|
|
417
|
+
"examples": [
|
|
418
|
+
"hey bulk-reply undo 98765"
|
|
419
|
+
]
|
|
420
|
+
}
|
|
421
|
+
],
|
|
422
|
+
"synopsis": [
|
|
423
|
+
"hey bulk-reply <command> [flags]"
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"name": "bundle",
|
|
428
|
+
"path": "bundle",
|
|
429
|
+
"short": "List the unseen threads a bundle groups",
|
|
430
|
+
"usage": "bundle <box-item-id>",
|
|
431
|
+
"notes": "The ID is a bundle row's own id from hey box view — a row with kind \"bundle\" and no topic_id. Returns the unseen threads the bundle groups, each with topic_id for hey thread read. A bundle read through has no unseen threads; every thread with its sender, seen and unseen, is listed by hey contact threads <contact-id>.",
|
|
432
|
+
"flags": [
|
|
433
|
+
{
|
|
434
|
+
"name": "all",
|
|
435
|
+
"desc": "Fetch all results (override --limit)"
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"name": "limit",
|
|
439
|
+
"value": true,
|
|
440
|
+
"desc": "Maximum number of threads to show"
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"name": "page",
|
|
444
|
+
"value": true,
|
|
445
|
+
"desc": "Continue from a next_page cursor"
|
|
446
|
+
}
|
|
447
|
+
],
|
|
448
|
+
"subcommands": [
|
|
449
|
+
{
|
|
450
|
+
"name": "view",
|
|
451
|
+
"path": "bundle view",
|
|
452
|
+
"short": "List the unseen threads a bundle groups",
|
|
453
|
+
"notes": "The ID is a bundle row's own id from hey box view — a row with kind \"bundle\" and no topic_id. Returns the unseen threads the bundle groups, each with topic_id for hey thread read. A bundle read through has no unseen threads; every thread with its sender, seen and unseen, is listed by hey contact threads <contact-id>.",
|
|
454
|
+
"flags": [
|
|
455
|
+
{
|
|
456
|
+
"name": "all",
|
|
457
|
+
"desc": "Fetch all results (override --limit)"
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"name": "limit",
|
|
461
|
+
"value": true,
|
|
462
|
+
"desc": "Maximum number of threads to show"
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
"name": "page",
|
|
466
|
+
"value": true,
|
|
467
|
+
"desc": "Continue from a next_page cursor"
|
|
468
|
+
}
|
|
469
|
+
],
|
|
470
|
+
"synopsis": [
|
|
471
|
+
"hey bundle view <box-item-id> [flags]"
|
|
472
|
+
],
|
|
473
|
+
"examples": [
|
|
474
|
+
"hey bundle view 12345",
|
|
475
|
+
"hey bundle view 12345 --page next-cursor",
|
|
476
|
+
"hey bundle view 12345 --all"
|
|
477
|
+
]
|
|
478
|
+
}
|
|
479
|
+
],
|
|
480
|
+
"synopsis": [
|
|
481
|
+
"hey bundle <command> [flags]"
|
|
482
|
+
],
|
|
483
|
+
"examples": [
|
|
484
|
+
"hey bundle view 12345",
|
|
485
|
+
"hey bundle view 12345 --all",
|
|
486
|
+
"hey bundle view 12345 --json"
|
|
487
|
+
]
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"name": "calendar",
|
|
491
|
+
"path": "calendar",
|
|
492
|
+
"short": "Browse your calendars",
|
|
493
|
+
"notes": "Subcommands: list. Returns all calendars with IDs. Pipe IDs to hey event list --calendar <id>.",
|
|
494
|
+
"subcommands": [
|
|
495
|
+
{
|
|
496
|
+
"name": "list",
|
|
497
|
+
"path": "calendar list",
|
|
498
|
+
"short": "List calendars",
|
|
499
|
+
"synopsis": [
|
|
500
|
+
"hey calendar list [flags]"
|
|
501
|
+
],
|
|
502
|
+
"examples": [
|
|
503
|
+
"hey calendar list",
|
|
504
|
+
"hey calendar list --json"
|
|
505
|
+
]
|
|
506
|
+
}
|
|
507
|
+
],
|
|
508
|
+
"synopsis": [
|
|
509
|
+
"hey calendar <command> [flags]"
|
|
510
|
+
]
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
"name": "clip",
|
|
514
|
+
"path": "clip",
|
|
515
|
+
"short": "List and manage passages saved from email",
|
|
516
|
+
"notes": "List clips, create a clip from text carried by an email entry, or delete a clip. HEY assigns a created clip to the source entry's account and resolves deletion by identity-owned clip ID across linked accounts; --account selects list presentation. The CLI verifies that the passage is source-backed by the entry's message content before saving it, with a 64 KiB passage limit and a 1 MiB source-validation limit. Find clip IDs with hey clip list.",
|
|
517
|
+
"subcommands": [
|
|
518
|
+
{
|
|
519
|
+
"name": "create",
|
|
520
|
+
"path": "clip create",
|
|
521
|
+
"short": "Save text from an email entry",
|
|
522
|
+
"flags": [
|
|
523
|
+
{
|
|
524
|
+
"name": "content",
|
|
525
|
+
"value": true,
|
|
526
|
+
"desc": "Text selected from the email entry (required)"
|
|
527
|
+
}
|
|
528
|
+
],
|
|
529
|
+
"synopsis": [
|
|
530
|
+
"hey clip create <entry-id> [flags]"
|
|
531
|
+
],
|
|
532
|
+
"examples": [
|
|
533
|
+
"hey clip create 987 --content \"The launch moves to Wednesday.\""
|
|
534
|
+
]
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
"name": "delete",
|
|
538
|
+
"path": "clip delete",
|
|
539
|
+
"short": "Delete a saved clip",
|
|
540
|
+
"synopsis": [
|
|
541
|
+
"hey clip delete <clip-id> [flags]"
|
|
542
|
+
],
|
|
543
|
+
"examples": [
|
|
544
|
+
"hey clip delete 44"
|
|
545
|
+
]
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"name": "list",
|
|
549
|
+
"path": "clip list",
|
|
550
|
+
"short": "List the newest page of passages clipped from email",
|
|
551
|
+
"notes": "Returns the newest page of clip IDs, content, source entry IDs, and source thread context. The SDK does not expose the cursor for older pages. Use an ID with hey clip delete.",
|
|
552
|
+
"synopsis": [
|
|
553
|
+
"hey clip list [flags]"
|
|
554
|
+
],
|
|
555
|
+
"examples": [
|
|
556
|
+
"hey clip list",
|
|
557
|
+
"hey clip list --json",
|
|
558
|
+
"hey clip list --ids-only"
|
|
559
|
+
]
|
|
560
|
+
}
|
|
561
|
+
],
|
|
562
|
+
"synopsis": [
|
|
563
|
+
"hey clip <command> [flags]"
|
|
564
|
+
]
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"name": "collection",
|
|
568
|
+
"path": "collection",
|
|
569
|
+
"short": "List and manage email collections",
|
|
570
|
+
"usage": "collection <id>",
|
|
571
|
+
"notes": "The ID comes from hey collection list. Detail returns posting IDs for organization actions and topic_id for reading threads, and answers --json, --styled, --markdown, --ids-only and --count.",
|
|
572
|
+
"flags": [
|
|
573
|
+
{
|
|
574
|
+
"name": "all",
|
|
575
|
+
"desc": "Fetch all results (override --limit)"
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"name": "limit",
|
|
579
|
+
"value": true,
|
|
580
|
+
"desc": "Maximum number of threads to show"
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
"name": "page",
|
|
584
|
+
"value": true,
|
|
585
|
+
"desc": "Continue from a next_page cursor"
|
|
586
|
+
}
|
|
587
|
+
],
|
|
588
|
+
"subcommands": [
|
|
589
|
+
{
|
|
590
|
+
"name": "add",
|
|
591
|
+
"path": "collection add",
|
|
592
|
+
"short": "Add email threads to a collection",
|
|
593
|
+
"flags": [
|
|
594
|
+
{
|
|
595
|
+
"name": "to",
|
|
596
|
+
"value": true,
|
|
597
|
+
"desc": "Collection ID (required)"
|
|
598
|
+
}
|
|
599
|
+
],
|
|
600
|
+
"synopsis": [
|
|
601
|
+
"hey collection add <thread-id>... [flags]"
|
|
602
|
+
],
|
|
603
|
+
"examples": [
|
|
604
|
+
"hey collection add 501 --to 123",
|
|
605
|
+
"hey collection add 501 502 --to 123"
|
|
606
|
+
]
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
"name": "create",
|
|
610
|
+
"path": "collection create",
|
|
611
|
+
"short": "Create a collection",
|
|
612
|
+
"flags": [
|
|
613
|
+
{
|
|
614
|
+
"name": "summary",
|
|
615
|
+
"value": true,
|
|
616
|
+
"desc": "Description shown with the collection"
|
|
617
|
+
}
|
|
618
|
+
],
|
|
619
|
+
"synopsis": [
|
|
620
|
+
"hey collection create <name> [flags]"
|
|
621
|
+
],
|
|
622
|
+
"examples": [
|
|
623
|
+
"hey collection create \"Kitchen remodel\"",
|
|
624
|
+
"hey collection create \"Project Apollo\" --summary \"Messages and decisions for the project\""
|
|
625
|
+
]
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"name": "list",
|
|
629
|
+
"path": "collection list",
|
|
630
|
+
"short": "List your email collections",
|
|
631
|
+
"notes": "Returns collection IDs and names. Use an ID with hey collection view and hey collection add/remove/update.",
|
|
632
|
+
"flags": [
|
|
633
|
+
{
|
|
634
|
+
"name": "all",
|
|
635
|
+
"desc": "Fetch all results (override --limit)"
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"name": "limit",
|
|
639
|
+
"value": true,
|
|
640
|
+
"desc": "Maximum number of collections to show"
|
|
641
|
+
}
|
|
642
|
+
],
|
|
643
|
+
"synopsis": [
|
|
644
|
+
"hey collection list [flags]"
|
|
645
|
+
],
|
|
646
|
+
"examples": [
|
|
647
|
+
"hey collection list",
|
|
648
|
+
"hey collection list --limit 10",
|
|
649
|
+
"hey collection list --json"
|
|
650
|
+
]
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"name": "remove",
|
|
654
|
+
"path": "collection remove",
|
|
655
|
+
"short": "Remove email threads from a collection",
|
|
656
|
+
"flags": [
|
|
657
|
+
{
|
|
658
|
+
"name": "from",
|
|
659
|
+
"value": true,
|
|
660
|
+
"desc": "Collection ID (required)"
|
|
661
|
+
}
|
|
662
|
+
],
|
|
663
|
+
"synopsis": [
|
|
664
|
+
"hey collection remove <thread-id>... [flags]"
|
|
665
|
+
],
|
|
666
|
+
"examples": [
|
|
667
|
+
"hey collection remove 501 --from 123",
|
|
668
|
+
"hey collection remove 501 502 --from 123"
|
|
669
|
+
]
|
|
670
|
+
},
|
|
671
|
+
{
|
|
672
|
+
"name": "update",
|
|
673
|
+
"path": "collection update",
|
|
674
|
+
"short": "Update a collection",
|
|
675
|
+
"flags": [
|
|
676
|
+
{
|
|
677
|
+
"name": "name",
|
|
678
|
+
"value": true,
|
|
679
|
+
"desc": "New collection name"
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
"name": "summary",
|
|
683
|
+
"value": true,
|
|
684
|
+
"desc": "New collection description"
|
|
685
|
+
}
|
|
686
|
+
],
|
|
687
|
+
"synopsis": [
|
|
688
|
+
"hey collection update <id> [flags]"
|
|
689
|
+
],
|
|
690
|
+
"examples": [
|
|
691
|
+
"hey collection update 123 --name \"Kitchen renovation\"",
|
|
692
|
+
"hey collection update 123 --summary \"Invoices and contractor decisions\""
|
|
693
|
+
]
|
|
694
|
+
},
|
|
695
|
+
{
|
|
696
|
+
"name": "view",
|
|
697
|
+
"path": "collection view",
|
|
698
|
+
"short": "List email threads in a collection",
|
|
699
|
+
"notes": "The ID comes from hey collection list. Detail returns posting IDs for organization actions and topic_id for reading threads, and answers --json, --styled, --markdown, --ids-only and --count.",
|
|
700
|
+
"flags": [
|
|
701
|
+
{
|
|
702
|
+
"name": "all",
|
|
703
|
+
"desc": "Fetch all results (override --limit)"
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
"name": "limit",
|
|
707
|
+
"value": true,
|
|
708
|
+
"desc": "Maximum number of threads to show"
|
|
709
|
+
},
|
|
710
|
+
{
|
|
711
|
+
"name": "page",
|
|
712
|
+
"value": true,
|
|
713
|
+
"desc": "Continue from a next_page cursor"
|
|
714
|
+
}
|
|
715
|
+
],
|
|
716
|
+
"synopsis": [
|
|
717
|
+
"hey collection view <id> [flags]"
|
|
718
|
+
],
|
|
719
|
+
"examples": [
|
|
720
|
+
"hey collection view 123",
|
|
721
|
+
"hey collection view 123 --page next-cursor",
|
|
722
|
+
"hey collection view 123 --all"
|
|
723
|
+
]
|
|
724
|
+
}
|
|
725
|
+
],
|
|
726
|
+
"synopsis": [
|
|
727
|
+
"hey collection <command> [flags]"
|
|
728
|
+
],
|
|
729
|
+
"examples": [
|
|
730
|
+
"hey collection list",
|
|
731
|
+
"hey collection view 123",
|
|
732
|
+
"hey collection view 123 --all"
|
|
733
|
+
]
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
"name": "commands",
|
|
737
|
+
"path": "commands",
|
|
738
|
+
"short": "List all available commands",
|
|
739
|
+
"synopsis": [
|
|
740
|
+
"hey commands [flags]"
|
|
741
|
+
]
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
"name": "compose",
|
|
745
|
+
"path": "compose",
|
|
746
|
+
"short": "Write and send a new email",
|
|
747
|
+
"notes": "--from selects a configured sender email or ID from account senders; --account must agree. --from is only for new messages. Starts a new thread with --to (optionally --cc/--bcc), which requires --subject, or replies to an existing one with --thread-id, which does not. Repeatable --attach files are uploaded before sending and can be sent without body text. The body is Markdown; use --message-html to send raw HTML instead. --draft saves instead of sending — recipients become optional — and answers the draft ID for hey draft show/edit/send/delete. A new message ends with the sender's HEY name tag, as one composed in HEY does; --no-name-tag leaves it out.",
|
|
748
|
+
"flags": [
|
|
749
|
+
{
|
|
750
|
+
"name": "attach",
|
|
751
|
+
"value": true,
|
|
752
|
+
"desc": "File to attach (repeatable)"
|
|
753
|
+
},
|
|
754
|
+
{
|
|
755
|
+
"name": "bcc",
|
|
756
|
+
"value": true,
|
|
757
|
+
"desc": "BCC recipient email address(es)"
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
"name": "cc",
|
|
761
|
+
"value": true,
|
|
762
|
+
"desc": "CC recipient email address(es)"
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
"name": "draft",
|
|
766
|
+
"desc": "Save as a draft instead of sending"
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
"name": "from",
|
|
770
|
+
"value": true,
|
|
771
|
+
"desc": "Configured sender email or ID (see hey account senders)"
|
|
772
|
+
},
|
|
773
|
+
{
|
|
774
|
+
"name": "message",
|
|
775
|
+
"shorthand": "m",
|
|
776
|
+
"value": true,
|
|
777
|
+
"desc": "Message body as Markdown (or opens $EDITOR)"
|
|
778
|
+
},
|
|
779
|
+
{
|
|
780
|
+
"name": "message-html",
|
|
781
|
+
"value": true,
|
|
782
|
+
"desc": "Message body as raw HTML instead of Markdown"
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
"name": "no-name-tag",
|
|
786
|
+
"desc": "Leave the sender's HEY name tag off a new message"
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
"name": "subject",
|
|
790
|
+
"value": true,
|
|
791
|
+
"desc": "Message subject (required for a new message)"
|
|
792
|
+
},
|
|
793
|
+
{
|
|
794
|
+
"name": "thread-id",
|
|
795
|
+
"value": true,
|
|
796
|
+
"desc": "Reply to this thread instead of starting a new one"
|
|
797
|
+
},
|
|
798
|
+
{
|
|
799
|
+
"name": "to",
|
|
800
|
+
"value": true,
|
|
801
|
+
"desc": "Recipient email address(es)"
|
|
802
|
+
}
|
|
803
|
+
],
|
|
804
|
+
"synopsis": [
|
|
805
|
+
"hey compose [flags]"
|
|
806
|
+
],
|
|
807
|
+
"examples": [
|
|
808
|
+
"hey compose --to alice@example.com --subject \"Lunch plans\" -m \"Are you free Friday?\"",
|
|
809
|
+
"hey compose --to alice@example.com --cc bob@example.com --bcc carol@example.org --subject \"Kitchen remodel timeline\" -m \"Cabinets land the week of the 14th.\"",
|
|
810
|
+
"hey compose --to alice@example.com --subject \"Q3 revenue report\" -m \"The numbers are attached.\" --attach ./report.pdf"
|
|
811
|
+
]
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
"name": "config",
|
|
815
|
+
"path": "config",
|
|
816
|
+
"short": "View and change settings",
|
|
817
|
+
"subcommands": [
|
|
818
|
+
{
|
|
819
|
+
"name": "set",
|
|
820
|
+
"path": "config set",
|
|
821
|
+
"short": "Set a configuration value in the global config",
|
|
822
|
+
"synopsis": [
|
|
823
|
+
"hey config set <key> <value> [flags]"
|
|
824
|
+
],
|
|
825
|
+
"examples": [
|
|
826
|
+
"hey config set base_url http://app.hey.localhost:3003",
|
|
827
|
+
"hey config set base_url https://app.hey.com"
|
|
828
|
+
]
|
|
829
|
+
},
|
|
830
|
+
{
|
|
831
|
+
"name": "show",
|
|
832
|
+
"path": "config show",
|
|
833
|
+
"short": "Show current configuration with sources",
|
|
834
|
+
"synopsis": [
|
|
835
|
+
"hey config show [flags]"
|
|
836
|
+
]
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
"name": "trust-local",
|
|
840
|
+
"path": "config trust-local",
|
|
841
|
+
"short": "Trust this repository's local HEY settings",
|
|
842
|
+
"synopsis": [
|
|
843
|
+
"hey config trust-local [flags]"
|
|
844
|
+
]
|
|
845
|
+
},
|
|
846
|
+
{
|
|
847
|
+
"name": "trusted-locals",
|
|
848
|
+
"path": "config trusted-locals",
|
|
849
|
+
"short": "List trusted repository-local HEY settings",
|
|
850
|
+
"synopsis": [
|
|
851
|
+
"hey config trusted-locals [flags]"
|
|
852
|
+
]
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
"name": "untrust-local",
|
|
856
|
+
"path": "config untrust-local",
|
|
857
|
+
"short": "Remove trust for this repository's local HEY settings",
|
|
858
|
+
"synopsis": [
|
|
859
|
+
"hey config untrust-local [flags]"
|
|
860
|
+
]
|
|
861
|
+
}
|
|
862
|
+
],
|
|
863
|
+
"synopsis": [
|
|
864
|
+
"hey config <command> [flags]"
|
|
865
|
+
]
|
|
866
|
+
},
|
|
867
|
+
{
|
|
868
|
+
"name": "contact",
|
|
869
|
+
"path": "contact",
|
|
870
|
+
"short": "Manage contacts",
|
|
871
|
+
"notes": "Contact IDs come from `hey contact list`. Hiding and bundling are reversible. Private notes are managed under `hey contact note`.",
|
|
872
|
+
"subcommands": [
|
|
873
|
+
{
|
|
874
|
+
"name": "add",
|
|
875
|
+
"path": "contact add",
|
|
876
|
+
"short": "Add a contact",
|
|
877
|
+
"notes": "Name and email are required. Repeat --alias for alternate email addresses. --account-user-id selects an account when the HEY identity has more than one.",
|
|
878
|
+
"flags": [
|
|
879
|
+
{
|
|
880
|
+
"name": "account-user-id",
|
|
881
|
+
"value": true,
|
|
882
|
+
"desc": "Account user ID for multi-account identities"
|
|
883
|
+
},
|
|
884
|
+
{
|
|
885
|
+
"name": "alias",
|
|
886
|
+
"value": true,
|
|
887
|
+
"desc": "Alternate email address (repeatable)"
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
"name": "email",
|
|
891
|
+
"value": true,
|
|
892
|
+
"desc": "Primary email address (required)"
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
"name": "name",
|
|
896
|
+
"value": true,
|
|
897
|
+
"desc": "Contact name (required)"
|
|
898
|
+
}
|
|
899
|
+
],
|
|
900
|
+
"synopsis": [
|
|
901
|
+
"hey contact add [flags]"
|
|
902
|
+
],
|
|
903
|
+
"examples": [
|
|
904
|
+
"hey contact add --name \"Jane Doe\" --email jane@example.com",
|
|
905
|
+
"hey contact add --name \"Jane Doe\" --email jane@example.com --alias jane.doe@example.org"
|
|
906
|
+
]
|
|
907
|
+
},
|
|
908
|
+
{
|
|
909
|
+
"name": "bundle",
|
|
910
|
+
"path": "contact bundle",
|
|
911
|
+
"short": "Bundle a contact's mail",
|
|
912
|
+
"notes": "Bundling is a per-contact preference. HEY applies it when the contact's delivery setting supports bundles. Reverse it with `hey contact unbundle <id>`.",
|
|
913
|
+
"synopsis": [
|
|
914
|
+
"hey contact bundle <id> [flags]"
|
|
915
|
+
],
|
|
916
|
+
"examples": [
|
|
917
|
+
"hey contact bundle 12345"
|
|
918
|
+
]
|
|
919
|
+
},
|
|
920
|
+
{
|
|
921
|
+
"name": "hide",
|
|
922
|
+
"path": "contact hide",
|
|
923
|
+
"short": "Hide a contact",
|
|
924
|
+
"notes": "This is reversible. Use `hey contact show-again <id>` to show the contact again.",
|
|
925
|
+
"synopsis": [
|
|
926
|
+
"hey contact hide <id> [flags]"
|
|
927
|
+
],
|
|
928
|
+
"examples": [
|
|
929
|
+
"hey contact hide 12345"
|
|
930
|
+
]
|
|
931
|
+
},
|
|
932
|
+
{
|
|
933
|
+
"name": "list",
|
|
934
|
+
"path": "contact list",
|
|
935
|
+
"short": "List contacts",
|
|
936
|
+
"notes": "Returns contact IDs, names, and email addresses. Use --all to fetch up to 100 pages.",
|
|
937
|
+
"flags": [
|
|
938
|
+
{
|
|
939
|
+
"name": "all",
|
|
940
|
+
"desc": "Fetch up to 100 results pages from --page onward"
|
|
941
|
+
},
|
|
942
|
+
{
|
|
943
|
+
"name": "page",
|
|
944
|
+
"value": true,
|
|
945
|
+
"desc": "Results page",
|
|
946
|
+
"default": "1"
|
|
947
|
+
}
|
|
948
|
+
],
|
|
949
|
+
"synopsis": [
|
|
950
|
+
"hey contact list [flags]"
|
|
951
|
+
],
|
|
952
|
+
"examples": [
|
|
953
|
+
"hey contact list",
|
|
954
|
+
"hey contact list --page 2 --json",
|
|
955
|
+
"hey contact list --all --json"
|
|
956
|
+
]
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
"name": "note",
|
|
960
|
+
"path": "contact note",
|
|
961
|
+
"short": "Manage private contact notes",
|
|
962
|
+
"notes": "Private notes support show, set, and delete. Set accepts --note, positional content, stdin, or $EDITOR.",
|
|
963
|
+
"subcommands": [
|
|
964
|
+
{
|
|
965
|
+
"name": "delete",
|
|
966
|
+
"path": "contact note delete",
|
|
967
|
+
"short": "Delete a private contact note",
|
|
968
|
+
"synopsis": [
|
|
969
|
+
"hey contact note delete <id> [flags]"
|
|
970
|
+
],
|
|
971
|
+
"examples": [
|
|
972
|
+
"hey contact note delete 12345"
|
|
973
|
+
]
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
"name": "set",
|
|
977
|
+
"path": "contact note set",
|
|
978
|
+
"short": "Write or edit a private contact note",
|
|
979
|
+
"notes": "Accepts --note, positional content, stdin, or opens $EDITOR with the existing note. The note is Markdown, or raw HTML via --note-html. Use the delete subcommand to clear a note.",
|
|
980
|
+
"flags": [
|
|
981
|
+
{
|
|
982
|
+
"name": "note",
|
|
983
|
+
"shorthand": "n",
|
|
984
|
+
"value": true,
|
|
985
|
+
"desc": "Private note as Markdown (or opens $EDITOR)"
|
|
986
|
+
},
|
|
987
|
+
{
|
|
988
|
+
"name": "note-html",
|
|
989
|
+
"value": true,
|
|
990
|
+
"desc": "Private note as raw HTML instead of Markdown"
|
|
991
|
+
}
|
|
992
|
+
],
|
|
993
|
+
"synopsis": [
|
|
994
|
+
"hey contact note set <id> [note] [flags]"
|
|
995
|
+
],
|
|
996
|
+
"examples": [
|
|
997
|
+
"hey contact note set 12345 \"Prefers email\"",
|
|
998
|
+
"hey contact note set 12345 --note \"Prefers email\""
|
|
999
|
+
]
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
"name": "show",
|
|
1003
|
+
"path": "contact note show",
|
|
1004
|
+
"short": "Read a private contact note",
|
|
1005
|
+
"synopsis": [
|
|
1006
|
+
"hey contact note show <id> [flags]"
|
|
1007
|
+
],
|
|
1008
|
+
"examples": [
|
|
1009
|
+
"hey contact note show 12345",
|
|
1010
|
+
"hey contact note show 12345 --json"
|
|
1011
|
+
]
|
|
1012
|
+
}
|
|
1013
|
+
],
|
|
1014
|
+
"synopsis": [
|
|
1015
|
+
"hey contact note <command> [flags]"
|
|
1016
|
+
]
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
"name": "show",
|
|
1020
|
+
"path": "contact show",
|
|
1021
|
+
"short": "View a contact",
|
|
1022
|
+
"notes": "Returns contact details, aliases, screening status, and the private note. The embedded postings are one page of the contact's threads; hey contact threads <id> pages through all of them.",
|
|
1023
|
+
"synopsis": [
|
|
1024
|
+
"hey contact show <id> [flags]"
|
|
1025
|
+
],
|
|
1026
|
+
"examples": [
|
|
1027
|
+
"hey contact show 12345",
|
|
1028
|
+
"hey contact show 12345 --json"
|
|
1029
|
+
]
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
"name": "show-again",
|
|
1033
|
+
"path": "contact show-again",
|
|
1034
|
+
"short": "Show a hidden contact again",
|
|
1035
|
+
"notes": "Reverses `hey contact hide <id>`.",
|
|
1036
|
+
"synopsis": [
|
|
1037
|
+
"hey contact show-again <id> [flags]"
|
|
1038
|
+
],
|
|
1039
|
+
"examples": [
|
|
1040
|
+
"hey contact show-again 12345"
|
|
1041
|
+
]
|
|
1042
|
+
},
|
|
1043
|
+
{
|
|
1044
|
+
"name": "threads",
|
|
1045
|
+
"path": "contact threads",
|
|
1046
|
+
"short": "List every thread with a contact",
|
|
1047
|
+
"notes": "The ID comes from hey contact list, a posting's creator, or hey bundle view's contact. Returns threads newest first with topic_id for hey thread read, and answers --json, --styled, --markdown, --ids-only and --count.",
|
|
1048
|
+
"flags": [
|
|
1049
|
+
{
|
|
1050
|
+
"name": "all",
|
|
1051
|
+
"desc": "Fetch all results (override --limit)"
|
|
1052
|
+
},
|
|
1053
|
+
{
|
|
1054
|
+
"name": "limit",
|
|
1055
|
+
"value": true,
|
|
1056
|
+
"desc": "Maximum number of threads to show"
|
|
1057
|
+
},
|
|
1058
|
+
{
|
|
1059
|
+
"name": "page",
|
|
1060
|
+
"value": true,
|
|
1061
|
+
"desc": "Continue from a next_page cursor"
|
|
1062
|
+
}
|
|
1063
|
+
],
|
|
1064
|
+
"synopsis": [
|
|
1065
|
+
"hey contact threads <id> [flags]"
|
|
1066
|
+
],
|
|
1067
|
+
"examples": [
|
|
1068
|
+
"hey contact threads 12345",
|
|
1069
|
+
"hey contact threads 12345 --all",
|
|
1070
|
+
"hey contact threads 12345 --json"
|
|
1071
|
+
]
|
|
1072
|
+
},
|
|
1073
|
+
{
|
|
1074
|
+
"name": "unbundle",
|
|
1075
|
+
"path": "contact unbundle",
|
|
1076
|
+
"short": "List a contact's mail separately",
|
|
1077
|
+
"notes": "Unbundling reverses `hey contact bundle <id>` and preserves the underlying threads.",
|
|
1078
|
+
"synopsis": [
|
|
1079
|
+
"hey contact unbundle <id> [flags]"
|
|
1080
|
+
],
|
|
1081
|
+
"examples": [
|
|
1082
|
+
"hey contact unbundle 12345"
|
|
1083
|
+
]
|
|
1084
|
+
},
|
|
1085
|
+
{
|
|
1086
|
+
"name": "update",
|
|
1087
|
+
"path": "contact update",
|
|
1088
|
+
"short": "Edit a contact",
|
|
1089
|
+
"notes": "At least one field is required. Repeat --alias to replace aliases. --alias= clears every alias.",
|
|
1090
|
+
"flags": [
|
|
1091
|
+
{
|
|
1092
|
+
"name": "alias",
|
|
1093
|
+
"value": true,
|
|
1094
|
+
"desc": "Replacement alternate email address (repeatable)"
|
|
1095
|
+
},
|
|
1096
|
+
{
|
|
1097
|
+
"name": "email",
|
|
1098
|
+
"value": true,
|
|
1099
|
+
"desc": "New primary email address"
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
"name": "name",
|
|
1103
|
+
"value": true,
|
|
1104
|
+
"desc": "New contact name"
|
|
1105
|
+
}
|
|
1106
|
+
],
|
|
1107
|
+
"synopsis": [
|
|
1108
|
+
"hey contact update <id> [flags]"
|
|
1109
|
+
],
|
|
1110
|
+
"examples": [
|
|
1111
|
+
"hey contact update 12345 --name \"Jane Doe\"",
|
|
1112
|
+
"hey contact update 12345 --email jane@example.com --alias jane.doe@example.org",
|
|
1113
|
+
"hey contact update 12345 --alias="
|
|
1114
|
+
]
|
|
1115
|
+
}
|
|
1116
|
+
],
|
|
1117
|
+
"synopsis": [
|
|
1118
|
+
"hey contact <command> [flags]"
|
|
1119
|
+
]
|
|
1120
|
+
},
|
|
1121
|
+
{
|
|
1122
|
+
"name": "doctor",
|
|
1123
|
+
"path": "doctor",
|
|
1124
|
+
"short": "Find login and configuration problems",
|
|
1125
|
+
"synopsis": [
|
|
1126
|
+
"hey doctor [flags]"
|
|
1127
|
+
]
|
|
1128
|
+
},
|
|
1129
|
+
{
|
|
1130
|
+
"name": "draft",
|
|
1131
|
+
"path": "draft",
|
|
1132
|
+
"short": "Manage unsent drafts",
|
|
1133
|
+
"notes": "Subcommands: list, show, edit, send, delete. Draft IDs come from `hey draft list` or from `hey compose --draft`/`hey reply --draft`. list's --page continues from the next_page cursor of an earlier listing.",
|
|
1134
|
+
"subcommands": [
|
|
1135
|
+
{
|
|
1136
|
+
"name": "delete",
|
|
1137
|
+
"path": "draft delete",
|
|
1138
|
+
"short": "Trash drafts",
|
|
1139
|
+
"notes": "Takes draft IDs from `hey draft list`. Trashes the draft; there is no undo here.",
|
|
1140
|
+
"synopsis": [
|
|
1141
|
+
"hey draft delete <draft-id>... [flags]"
|
|
1142
|
+
],
|
|
1143
|
+
"examples": [
|
|
1144
|
+
"hey draft delete 12345",
|
|
1145
|
+
"hey draft delete 12345 67890"
|
|
1146
|
+
]
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
"name": "edit",
|
|
1150
|
+
"path": "draft edit",
|
|
1151
|
+
"short": "Change a draft",
|
|
1152
|
+
"notes": "--from chooses a configured sender email or ID within this draft account. It preserves the body verbatim, including existing signatures; use a body flag to replace those. Each flag replaces its field and an omitted flag keeps what the draft has — --to/--cc/--bcc replace that whole recipient kind (an explicit empty value clears it). With no field flags the body opens in $EDITOR as Markdown. A scheduled delivery is preserved.",
|
|
1153
|
+
"flags": [
|
|
1154
|
+
{
|
|
1155
|
+
"name": "bcc",
|
|
1156
|
+
"value": true,
|
|
1157
|
+
"desc": "Replace the BCC recipients (comma separated; empty clears)"
|
|
1158
|
+
},
|
|
1159
|
+
{
|
|
1160
|
+
"name": "cc",
|
|
1161
|
+
"value": true,
|
|
1162
|
+
"desc": "Replace the CC recipients (comma separated; empty clears)"
|
|
1163
|
+
},
|
|
1164
|
+
{
|
|
1165
|
+
"name": "from",
|
|
1166
|
+
"value": true,
|
|
1167
|
+
"desc": "Replace the sender with a configured email or ID in this draft account"
|
|
1168
|
+
},
|
|
1169
|
+
{
|
|
1170
|
+
"name": "message",
|
|
1171
|
+
"shorthand": "m",
|
|
1172
|
+
"value": true,
|
|
1173
|
+
"desc": "Replace the body with this Markdown"
|
|
1174
|
+
},
|
|
1175
|
+
{
|
|
1176
|
+
"name": "message-html",
|
|
1177
|
+
"value": true,
|
|
1178
|
+
"desc": "Replace the body with raw HTML instead of Markdown"
|
|
1179
|
+
},
|
|
1180
|
+
{
|
|
1181
|
+
"name": "subject",
|
|
1182
|
+
"value": true,
|
|
1183
|
+
"desc": "Replace the subject"
|
|
1184
|
+
},
|
|
1185
|
+
{
|
|
1186
|
+
"name": "to",
|
|
1187
|
+
"value": true,
|
|
1188
|
+
"desc": "Replace the To recipients (comma separated; empty clears)"
|
|
1189
|
+
}
|
|
1190
|
+
],
|
|
1191
|
+
"synopsis": [
|
|
1192
|
+
"hey draft edit <draft-id> [flags]"
|
|
1193
|
+
],
|
|
1194
|
+
"examples": [
|
|
1195
|
+
"hey draft edit 12345 --subject \"Quarterly planning (v2)\"",
|
|
1196
|
+
"hey draft edit 12345 --to maria@example.com --cc finance@example.com",
|
|
1197
|
+
"hey draft edit 12345 -m \"Rewritten agenda: budget first, hiring second.\""
|
|
1198
|
+
]
|
|
1199
|
+
},
|
|
1200
|
+
{
|
|
1201
|
+
"name": "list",
|
|
1202
|
+
"path": "draft list",
|
|
1203
|
+
"short": "List draft emails",
|
|
1204
|
+
"flags": [
|
|
1205
|
+
{
|
|
1206
|
+
"name": "all",
|
|
1207
|
+
"desc": "Fetch all results (override --limit)"
|
|
1208
|
+
},
|
|
1209
|
+
{
|
|
1210
|
+
"name": "limit",
|
|
1211
|
+
"value": true,
|
|
1212
|
+
"desc": "Maximum number of drafts to show"
|
|
1213
|
+
},
|
|
1214
|
+
{
|
|
1215
|
+
"name": "page",
|
|
1216
|
+
"value": true,
|
|
1217
|
+
"desc": "Continue from a next_page cursor"
|
|
1218
|
+
}
|
|
1219
|
+
],
|
|
1220
|
+
"synopsis": [
|
|
1221
|
+
"hey draft list [flags]"
|
|
1222
|
+
],
|
|
1223
|
+
"examples": [
|
|
1224
|
+
"hey draft list",
|
|
1225
|
+
"hey draft list --limit 10",
|
|
1226
|
+
"hey draft list --all --json"
|
|
1227
|
+
]
|
|
1228
|
+
},
|
|
1229
|
+
{
|
|
1230
|
+
"name": "send",
|
|
1231
|
+
"path": "draft send",
|
|
1232
|
+
"short": "Deliver a draft",
|
|
1233
|
+
"notes": "Sends the draft as it stands — recipients are required, added with `hey draft edit --to`. Delivery goes through HEY's undo window. Scheduling a delivery is done in a HEY app for now; the API cannot yet name an exact instant.",
|
|
1234
|
+
"synopsis": [
|
|
1235
|
+
"hey draft send <draft-id> [flags]"
|
|
1236
|
+
],
|
|
1237
|
+
"examples": [
|
|
1238
|
+
"hey draft send 12345"
|
|
1239
|
+
]
|
|
1240
|
+
},
|
|
1241
|
+
{
|
|
1242
|
+
"name": "show",
|
|
1243
|
+
"path": "draft show",
|
|
1244
|
+
"short": "Read a draft back",
|
|
1245
|
+
"notes": "Draft IDs come from `hey draft list` or from saving with `hey compose --draft`. The body is Markdown.",
|
|
1246
|
+
"synopsis": [
|
|
1247
|
+
"hey draft show <draft-id> [flags]"
|
|
1248
|
+
],
|
|
1249
|
+
"examples": [
|
|
1250
|
+
"hey draft show 12345",
|
|
1251
|
+
"hey draft show 12345 --json"
|
|
1252
|
+
]
|
|
1253
|
+
}
|
|
1254
|
+
],
|
|
1255
|
+
"synopsis": [
|
|
1256
|
+
"hey draft <command> [flags]"
|
|
1257
|
+
]
|
|
1258
|
+
},
|
|
1259
|
+
{
|
|
1260
|
+
"name": "event",
|
|
1261
|
+
"path": "event",
|
|
1262
|
+
"short": "Read and manage calendar events",
|
|
1263
|
+
"notes": "Subcommands: list, day, week, add, edit, delete. \"What's on the schedule today?\" is answered by day, not list: day and week read the span as HEY draws it, with a repeating event expanded into the occurrences inside it, over the calendars switched on in HEY. list reads what calendars hold — every calendar unless --calendar names one — and a repeating event is one row, its series, on the day the series began. An edit is not a patch on HEY's side: it resends the notes, location, link, attached email, reminders and time zones the event already carries, so notes lose their formatting and a countdown is removed unless --countdown names one again. edit <series id> changes a whole series; one day of it is edit <series id> --occurrence <occurrence_id from day/week> --apply-to current|future, which keeps the countdown and refuses to flatten notes unless --allow-plain-notes or --notes is given. --apply-to future starts a new series and requires --repeat with its complete schedule; a preset alone means forever and custom copies an existing opaque schedule (a count-based rule can restart its full count). A virtual day of an opaque custom schedule is read from HEY's Day view and refused if that view no longer serves it. A realized custom day cannot be split safely; use a virtual occurrence, edit that day alone, or edit the whole series. A realized preset occurrence moved away from its series time must be moved back with --apply-to current before a future split. Read the day again afterward for the new series id.",
|
|
1264
|
+
"subcommands": [
|
|
1265
|
+
{
|
|
1266
|
+
"name": "add",
|
|
1267
|
+
"path": "event add",
|
|
1268
|
+
"short": "Create an event",
|
|
1269
|
+
"flags": [
|
|
1270
|
+
{
|
|
1271
|
+
"name": "all-day",
|
|
1272
|
+
"desc": "Make it an all-day event"
|
|
1273
|
+
},
|
|
1274
|
+
{
|
|
1275
|
+
"name": "calendar",
|
|
1276
|
+
"value": true,
|
|
1277
|
+
"desc": "Calendar ID to file the event on"
|
|
1278
|
+
},
|
|
1279
|
+
{
|
|
1280
|
+
"name": "circle",
|
|
1281
|
+
"desc": "Circle the event"
|
|
1282
|
+
},
|
|
1283
|
+
{
|
|
1284
|
+
"name": "countdown",
|
|
1285
|
+
"value": true,
|
|
1286
|
+
"desc": "Count down this many units to the event"
|
|
1287
|
+
},
|
|
1288
|
+
{
|
|
1289
|
+
"name": "countdown-unit",
|
|
1290
|
+
"value": true,
|
|
1291
|
+
"desc": "Countdown unit: days, weeks or months",
|
|
1292
|
+
"default": "days"
|
|
1293
|
+
},
|
|
1294
|
+
{
|
|
1295
|
+
"name": "end-time",
|
|
1296
|
+
"value": true,
|
|
1297
|
+
"desc": "End time (HH:MM, defaults to an hour after the start)"
|
|
1298
|
+
},
|
|
1299
|
+
{
|
|
1300
|
+
"name": "ends-on",
|
|
1301
|
+
"value": true,
|
|
1302
|
+
"desc": "End date (YYYY-MM-DD, defaults to the start date)"
|
|
1303
|
+
},
|
|
1304
|
+
{
|
|
1305
|
+
"name": "invite",
|
|
1306
|
+
"value": true,
|
|
1307
|
+
"desc": "Email address to invite (repeatable, replaces the guest list)"
|
|
1308
|
+
},
|
|
1309
|
+
{
|
|
1310
|
+
"name": "link",
|
|
1311
|
+
"value": true,
|
|
1312
|
+
"desc": "Meeting or reference URL"
|
|
1313
|
+
},
|
|
1314
|
+
{
|
|
1315
|
+
"name": "location",
|
|
1316
|
+
"value": true,
|
|
1317
|
+
"desc": "Event location"
|
|
1318
|
+
},
|
|
1319
|
+
{
|
|
1320
|
+
"name": "notes",
|
|
1321
|
+
"value": true,
|
|
1322
|
+
"desc": "Event notes"
|
|
1323
|
+
},
|
|
1324
|
+
{
|
|
1325
|
+
"name": "remind",
|
|
1326
|
+
"value": true,
|
|
1327
|
+
"desc": "Notice before the event, e.g. 10m, 1h, 1d (repeatable)"
|
|
1328
|
+
},
|
|
1329
|
+
{
|
|
1330
|
+
"name": "repeat",
|
|
1331
|
+
"value": true,
|
|
1332
|
+
"desc": "Repeat: every_day, every_weekday, every_week, every_other_week, every_day_of_month, every_year; custom only copies an opaque schedule in a future occurrence edit"
|
|
1333
|
+
},
|
|
1334
|
+
{
|
|
1335
|
+
"name": "repeat-times",
|
|
1336
|
+
"value": true,
|
|
1337
|
+
"desc": "Stop repeating after this many occurrences"
|
|
1338
|
+
},
|
|
1339
|
+
{
|
|
1340
|
+
"name": "repeat-until",
|
|
1341
|
+
"value": true,
|
|
1342
|
+
"desc": "Stop repeating on this date (YYYY-MM-DD)"
|
|
1343
|
+
},
|
|
1344
|
+
{
|
|
1345
|
+
"name": "start-time",
|
|
1346
|
+
"value": true,
|
|
1347
|
+
"desc": "Start time (HH:MM)"
|
|
1348
|
+
},
|
|
1349
|
+
{
|
|
1350
|
+
"name": "starts-on",
|
|
1351
|
+
"value": true,
|
|
1352
|
+
"desc": "Start date (YYYY-MM-DD, defaults to today)"
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
"name": "time-zone",
|
|
1356
|
+
"value": true,
|
|
1357
|
+
"desc": "IANA zone the times are written in (defaults to this machine's)"
|
|
1358
|
+
},
|
|
1359
|
+
{
|
|
1360
|
+
"name": "title",
|
|
1361
|
+
"shorthand": "t",
|
|
1362
|
+
"value": true,
|
|
1363
|
+
"desc": "Event title"
|
|
1364
|
+
}
|
|
1365
|
+
],
|
|
1366
|
+
"synopsis": [
|
|
1367
|
+
"hey event add [title] [flags]"
|
|
1368
|
+
],
|
|
1369
|
+
"examples": [
|
|
1370
|
+
"hey event add \"Design review\" --starts-on 2026-09-02 --start-time 14:00 --end-time 15:00",
|
|
1371
|
+
"hey event add \"Sarah's birthday\" --starts-on 2026-09-02",
|
|
1372
|
+
"hey event add \"Standup\" --start-time 09:15 --repeat every_weekday --calendar 123"
|
|
1373
|
+
]
|
|
1374
|
+
},
|
|
1375
|
+
{
|
|
1376
|
+
"name": "day",
|
|
1377
|
+
"path": "event day",
|
|
1378
|
+
"short": "List the events of one day, as HEY draws it",
|
|
1379
|
+
"flags": [
|
|
1380
|
+
{
|
|
1381
|
+
"name": "all",
|
|
1382
|
+
"desc": "Fetch all results (override --limit)"
|
|
1383
|
+
},
|
|
1384
|
+
{
|
|
1385
|
+
"name": "limit",
|
|
1386
|
+
"value": true,
|
|
1387
|
+
"desc": "Maximum number of events to show"
|
|
1388
|
+
}
|
|
1389
|
+
],
|
|
1390
|
+
"synopsis": [
|
|
1391
|
+
"hey event day [date] [flags]"
|
|
1392
|
+
],
|
|
1393
|
+
"examples": [
|
|
1394
|
+
"hey event day",
|
|
1395
|
+
"hey event day 2026-09-02",
|
|
1396
|
+
"hey event day --json"
|
|
1397
|
+
]
|
|
1398
|
+
},
|
|
1399
|
+
{
|
|
1400
|
+
"name": "delete",
|
|
1401
|
+
"path": "event delete",
|
|
1402
|
+
"short": "Delete an event",
|
|
1403
|
+
"notes": "Deletes the whole event, recurring series included. An event on a shared calendar is deleted for everybody on it.",
|
|
1404
|
+
"synopsis": [
|
|
1405
|
+
"hey event delete <id> [flags]"
|
|
1406
|
+
],
|
|
1407
|
+
"examples": [
|
|
1408
|
+
"hey event delete 4821"
|
|
1409
|
+
]
|
|
1410
|
+
},
|
|
1411
|
+
{
|
|
1412
|
+
"name": "edit",
|
|
1413
|
+
"path": "event edit",
|
|
1414
|
+
"short": "Change an event",
|
|
1415
|
+
"flags": [
|
|
1416
|
+
{
|
|
1417
|
+
"name": "all-day",
|
|
1418
|
+
"desc": "Make it an all-day event"
|
|
1419
|
+
},
|
|
1420
|
+
{
|
|
1421
|
+
"name": "allow-plain-notes",
|
|
1422
|
+
"desc": "Let an --occurrence edit send notes it is not changing back as plain text, losing their formatting"
|
|
1423
|
+
},
|
|
1424
|
+
{
|
|
1425
|
+
"name": "apply-to",
|
|
1426
|
+
"value": true,
|
|
1427
|
+
"desc": "How much of the series an --occurrence edit reaches: current (that day alone) or future (that day and every one after it)"
|
|
1428
|
+
},
|
|
1429
|
+
{
|
|
1430
|
+
"name": "calendar",
|
|
1431
|
+
"value": true,
|
|
1432
|
+
"desc": "Calendar ID to file the event on"
|
|
1433
|
+
},
|
|
1434
|
+
{
|
|
1435
|
+
"name": "circle",
|
|
1436
|
+
"desc": "Circle the event"
|
|
1437
|
+
},
|
|
1438
|
+
{
|
|
1439
|
+
"name": "countdown",
|
|
1440
|
+
"value": true,
|
|
1441
|
+
"desc": "Count down this many units to the event"
|
|
1442
|
+
},
|
|
1443
|
+
{
|
|
1444
|
+
"name": "countdown-unit",
|
|
1445
|
+
"value": true,
|
|
1446
|
+
"desc": "Countdown unit: days, weeks or months",
|
|
1447
|
+
"default": "days"
|
|
1448
|
+
},
|
|
1449
|
+
{
|
|
1450
|
+
"name": "end-time",
|
|
1451
|
+
"value": true,
|
|
1452
|
+
"desc": "End time (HH:MM, defaults to an hour after the start)"
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"name": "ends-on",
|
|
1456
|
+
"value": true,
|
|
1457
|
+
"desc": "End date (YYYY-MM-DD, defaults to the start date)"
|
|
1458
|
+
},
|
|
1459
|
+
{
|
|
1460
|
+
"name": "invite",
|
|
1461
|
+
"value": true,
|
|
1462
|
+
"desc": "Email address to invite (repeatable, replaces the guest list)"
|
|
1463
|
+
},
|
|
1464
|
+
{
|
|
1465
|
+
"name": "link",
|
|
1466
|
+
"value": true,
|
|
1467
|
+
"desc": "Meeting or reference URL"
|
|
1468
|
+
},
|
|
1469
|
+
{
|
|
1470
|
+
"name": "location",
|
|
1471
|
+
"value": true,
|
|
1472
|
+
"desc": "Event location"
|
|
1473
|
+
},
|
|
1474
|
+
{
|
|
1475
|
+
"name": "notes",
|
|
1476
|
+
"value": true,
|
|
1477
|
+
"desc": "Event notes"
|
|
1478
|
+
},
|
|
1479
|
+
{
|
|
1480
|
+
"name": "occurrence",
|
|
1481
|
+
"value": true,
|
|
1482
|
+
"desc": "One day of a repeating event, by the occurrence_id 'hey event day' serves (<series id>_<YYYY-MM-DD>)"
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
"name": "remind",
|
|
1486
|
+
"value": true,
|
|
1487
|
+
"desc": "Notice before the event, e.g. 10m, 1h, 1d (repeatable)"
|
|
1488
|
+
},
|
|
1489
|
+
{
|
|
1490
|
+
"name": "repeat",
|
|
1491
|
+
"value": true,
|
|
1492
|
+
"desc": "Repeat: every_day, every_weekday, every_week, every_other_week, every_day_of_month, every_year; custom only copies an opaque schedule in a future occurrence edit"
|
|
1493
|
+
},
|
|
1494
|
+
{
|
|
1495
|
+
"name": "repeat-times",
|
|
1496
|
+
"value": true,
|
|
1497
|
+
"desc": "Stop repeating after this many occurrences"
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
"name": "repeat-until",
|
|
1501
|
+
"value": true,
|
|
1502
|
+
"desc": "Stop repeating on this date (YYYY-MM-DD)"
|
|
1503
|
+
},
|
|
1504
|
+
{
|
|
1505
|
+
"name": "start-time",
|
|
1506
|
+
"value": true,
|
|
1507
|
+
"desc": "Start time (HH:MM)"
|
|
1508
|
+
},
|
|
1509
|
+
{
|
|
1510
|
+
"name": "starts-on",
|
|
1511
|
+
"value": true,
|
|
1512
|
+
"desc": "Start date (YYYY-MM-DD, defaults to today)"
|
|
1513
|
+
},
|
|
1514
|
+
{
|
|
1515
|
+
"name": "time-zone",
|
|
1516
|
+
"value": true,
|
|
1517
|
+
"desc": "IANA zone the times are written in (defaults to this machine's)"
|
|
1518
|
+
},
|
|
1519
|
+
{
|
|
1520
|
+
"name": "title",
|
|
1521
|
+
"shorthand": "t",
|
|
1522
|
+
"value": true,
|
|
1523
|
+
"desc": "Event title"
|
|
1524
|
+
}
|
|
1525
|
+
],
|
|
1526
|
+
"synopsis": [
|
|
1527
|
+
"hey event edit <id> [date] [flags]"
|
|
1528
|
+
],
|
|
1529
|
+
"examples": [
|
|
1530
|
+
"hey event edit 4821 --title \"Design review (moved)\"",
|
|
1531
|
+
"hey event edit 4821 --starts-on 2026-09-04 --start-time 15:00",
|
|
1532
|
+
"hey event edit 4821 2026-09-02 --location \"Studio, 3rd floor\""
|
|
1533
|
+
]
|
|
1534
|
+
},
|
|
1535
|
+
{
|
|
1536
|
+
"name": "list",
|
|
1537
|
+
"path": "event list",
|
|
1538
|
+
"short": "List calendar events",
|
|
1539
|
+
"flags": [
|
|
1540
|
+
{
|
|
1541
|
+
"name": "all",
|
|
1542
|
+
"desc": "Fetch all results (override --limit)"
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"name": "calendar",
|
|
1546
|
+
"value": true,
|
|
1547
|
+
"desc": "Calendar ID to read (defaults to every calendar)"
|
|
1548
|
+
},
|
|
1549
|
+
{
|
|
1550
|
+
"name": "ends-on",
|
|
1551
|
+
"value": true,
|
|
1552
|
+
"desc": "End date (YYYY-MM-DD)"
|
|
1553
|
+
},
|
|
1554
|
+
{
|
|
1555
|
+
"name": "limit",
|
|
1556
|
+
"value": true,
|
|
1557
|
+
"desc": "Maximum number of events to show"
|
|
1558
|
+
},
|
|
1559
|
+
{
|
|
1560
|
+
"name": "starts-on",
|
|
1561
|
+
"value": true,
|
|
1562
|
+
"desc": "Start date (YYYY-MM-DD)"
|
|
1563
|
+
}
|
|
1564
|
+
],
|
|
1565
|
+
"synopsis": [
|
|
1566
|
+
"hey event list [flags]"
|
|
1567
|
+
],
|
|
1568
|
+
"examples": [
|
|
1569
|
+
"hey event list",
|
|
1570
|
+
"hey event list --starts-on 2026-01-01 --ends-on 2026-01-31",
|
|
1571
|
+
"hey event list --calendar 123 --limit 5 --json"
|
|
1572
|
+
]
|
|
1573
|
+
},
|
|
1574
|
+
{
|
|
1575
|
+
"name": "week",
|
|
1576
|
+
"path": "event week",
|
|
1577
|
+
"short": "List the events of one week, as HEY draws it",
|
|
1578
|
+
"flags": [
|
|
1579
|
+
{
|
|
1580
|
+
"name": "all",
|
|
1581
|
+
"desc": "Fetch all results (override --limit)"
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
"name": "limit",
|
|
1585
|
+
"value": true,
|
|
1586
|
+
"desc": "Maximum number of events to show"
|
|
1587
|
+
}
|
|
1588
|
+
],
|
|
1589
|
+
"synopsis": [
|
|
1590
|
+
"hey event week [date] [flags]"
|
|
1591
|
+
],
|
|
1592
|
+
"examples": [
|
|
1593
|
+
"hey event week",
|
|
1594
|
+
"hey event week 2026-09-02",
|
|
1595
|
+
"hey event week --json"
|
|
1596
|
+
]
|
|
1597
|
+
}
|
|
1598
|
+
],
|
|
1599
|
+
"synopsis": [
|
|
1600
|
+
"hey event <command> [flags]"
|
|
1601
|
+
]
|
|
1602
|
+
},
|
|
1603
|
+
{
|
|
1604
|
+
"name": "forward",
|
|
1605
|
+
"path": "forward",
|
|
1606
|
+
"short": "Forward the latest message in a thread",
|
|
1607
|
+
"notes": "Forwards the latest entry in a thread with HEY's quoted content. Accepts comma-separated recipients and an optional note via -m.",
|
|
1608
|
+
"flags": [
|
|
1609
|
+
{
|
|
1610
|
+
"name": "bcc",
|
|
1611
|
+
"value": true,
|
|
1612
|
+
"desc": "BCC recipient email address(es)"
|
|
1613
|
+
},
|
|
1614
|
+
{
|
|
1615
|
+
"name": "cc",
|
|
1616
|
+
"value": true,
|
|
1617
|
+
"desc": "CC recipient email address(es)"
|
|
1618
|
+
},
|
|
1619
|
+
{
|
|
1620
|
+
"name": "message",
|
|
1621
|
+
"shorthand": "m",
|
|
1622
|
+
"value": true,
|
|
1623
|
+
"desc": "Optional Markdown note above the forwarded message"
|
|
1624
|
+
},
|
|
1625
|
+
{
|
|
1626
|
+
"name": "message-html",
|
|
1627
|
+
"value": true,
|
|
1628
|
+
"desc": "The note as raw HTML instead of Markdown"
|
|
1629
|
+
},
|
|
1630
|
+
{
|
|
1631
|
+
"name": "to",
|
|
1632
|
+
"value": true,
|
|
1633
|
+
"desc": "Recipient email address(es)"
|
|
1634
|
+
}
|
|
1635
|
+
],
|
|
1636
|
+
"synopsis": [
|
|
1637
|
+
"hey forward <thread-id> [flags]"
|
|
1638
|
+
],
|
|
1639
|
+
"examples": [
|
|
1640
|
+
"hey forward 12345 --to alice@example.com",
|
|
1641
|
+
"hey forward 12345 --to alice@example.com --cc bob@example.org -m \"For your review\""
|
|
1642
|
+
]
|
|
1643
|
+
},
|
|
1644
|
+
{
|
|
1645
|
+
"name": "habit",
|
|
1646
|
+
"path": "habit",
|
|
1647
|
+
"short": "Create and manage habits",
|
|
1648
|
+
"notes": "Subcommands: list, create, edit, delete, complete, uncomplete. Use list --ids-only to pipe IDs to the rest. Days accept weekday names or 0 (Sunday) through 6 (Saturday).",
|
|
1649
|
+
"subcommands": [
|
|
1650
|
+
{
|
|
1651
|
+
"name": "complete",
|
|
1652
|
+
"path": "habit complete",
|
|
1653
|
+
"short": "Mark a habit as complete for a date",
|
|
1654
|
+
"flags": [
|
|
1655
|
+
{
|
|
1656
|
+
"name": "date",
|
|
1657
|
+
"value": true,
|
|
1658
|
+
"desc": "Date (YYYY-MM-DD, default: today)"
|
|
1659
|
+
}
|
|
1660
|
+
],
|
|
1661
|
+
"synopsis": [
|
|
1662
|
+
"hey habit complete <id> [flags]"
|
|
1663
|
+
],
|
|
1664
|
+
"examples": [
|
|
1665
|
+
"hey habit complete 789",
|
|
1666
|
+
"hey habit complete 789 --date 2026-01-15"
|
|
1667
|
+
]
|
|
1668
|
+
},
|
|
1669
|
+
{
|
|
1670
|
+
"name": "create",
|
|
1671
|
+
"path": "habit create",
|
|
1672
|
+
"short": "Create a habit",
|
|
1673
|
+
"flags": [
|
|
1674
|
+
{
|
|
1675
|
+
"name": "color",
|
|
1676
|
+
"value": true,
|
|
1677
|
+
"desc": "Habit color. Accepted values: blue, red, gold, green, teal, purple, pink, brown",
|
|
1678
|
+
"default": "blue"
|
|
1679
|
+
},
|
|
1680
|
+
{
|
|
1681
|
+
"name": "days",
|
|
1682
|
+
"value": true,
|
|
1683
|
+
"desc": "Weekdays (names or 0-6, comma-separated)",
|
|
1684
|
+
"default": "0,1,2,3,4,5,6"
|
|
1685
|
+
},
|
|
1686
|
+
{
|
|
1687
|
+
"name": "icon",
|
|
1688
|
+
"value": true,
|
|
1689
|
+
"desc": "Habit icon. Accepted values: weights, art, baseball, basketball, bed, bicycle, brain, camera, cat, church, clean, cook, dog, football, fruit, game, garden, guitar, heart, hydrate, meditate, money, music, piano, pill, plant, read, run, smoke, soccer, study, swim, tea, toothbrush, tree, tv, vegetable, walk, water, write, yoga, heat, ice, lotus, breathe, drink, star",
|
|
1690
|
+
"default": "weights"
|
|
1691
|
+
},
|
|
1692
|
+
{
|
|
1693
|
+
"name": "name",
|
|
1694
|
+
"value": true,
|
|
1695
|
+
"desc": "Habit name"
|
|
1696
|
+
}
|
|
1697
|
+
],
|
|
1698
|
+
"synopsis": [
|
|
1699
|
+
"hey habit create [name] [flags]"
|
|
1700
|
+
],
|
|
1701
|
+
"examples": [
|
|
1702
|
+
"hey habit create \"Morning strength training\"",
|
|
1703
|
+
"hey habit create --name \"Practice piano\" --icon music --color green --days monday,wednesday,friday"
|
|
1704
|
+
]
|
|
1705
|
+
},
|
|
1706
|
+
{
|
|
1707
|
+
"name": "delete",
|
|
1708
|
+
"path": "habit delete",
|
|
1709
|
+
"short": "Delete a habit and its history",
|
|
1710
|
+
"synopsis": [
|
|
1711
|
+
"hey habit delete <id> [flags]"
|
|
1712
|
+
],
|
|
1713
|
+
"examples": [
|
|
1714
|
+
"hey habit delete 789"
|
|
1715
|
+
]
|
|
1716
|
+
},
|
|
1717
|
+
{
|
|
1718
|
+
"name": "edit",
|
|
1719
|
+
"path": "habit edit",
|
|
1720
|
+
"short": "Edit a habit",
|
|
1721
|
+
"flags": [
|
|
1722
|
+
{
|
|
1723
|
+
"name": "color",
|
|
1724
|
+
"value": true,
|
|
1725
|
+
"desc": "New habit color. Accepted values: blue, red, gold, green, teal, purple, pink, brown"
|
|
1726
|
+
},
|
|
1727
|
+
{
|
|
1728
|
+
"name": "days",
|
|
1729
|
+
"value": true,
|
|
1730
|
+
"desc": "New weekdays (names or 0-6, comma-separated)"
|
|
1731
|
+
},
|
|
1732
|
+
{
|
|
1733
|
+
"name": "icon",
|
|
1734
|
+
"value": true,
|
|
1735
|
+
"desc": "New habit icon. Accepted values: weights, art, baseball, basketball, bed, bicycle, brain, camera, cat, church, clean, cook, dog, football, fruit, game, garden, guitar, heart, hydrate, meditate, money, music, piano, pill, plant, read, run, smoke, soccer, study, swim, tea, toothbrush, tree, tv, vegetable, walk, water, write, yoga, heat, ice, lotus, breathe, drink, star"
|
|
1736
|
+
},
|
|
1737
|
+
{
|
|
1738
|
+
"name": "name",
|
|
1739
|
+
"value": true,
|
|
1740
|
+
"desc": "New habit name"
|
|
1741
|
+
}
|
|
1742
|
+
],
|
|
1743
|
+
"synopsis": [
|
|
1744
|
+
"hey habit edit <id> [name] [flags]"
|
|
1745
|
+
],
|
|
1746
|
+
"examples": [
|
|
1747
|
+
"hey habit edit 789 --name \"Evening walk\"",
|
|
1748
|
+
"hey habit edit 789 --days monday,tuesday,wednesday,thursday,friday",
|
|
1749
|
+
"hey habit update 789 --icon walk --color gold"
|
|
1750
|
+
]
|
|
1751
|
+
},
|
|
1752
|
+
{
|
|
1753
|
+
"name": "list",
|
|
1754
|
+
"path": "habit list",
|
|
1755
|
+
"short": "List habits",
|
|
1756
|
+
"flags": [
|
|
1757
|
+
{
|
|
1758
|
+
"name": "all",
|
|
1759
|
+
"desc": "Fetch all results (override --limit)"
|
|
1760
|
+
},
|
|
1761
|
+
{
|
|
1762
|
+
"name": "date",
|
|
1763
|
+
"value": true,
|
|
1764
|
+
"desc": "Any day in the week to read (YYYY-MM-DD, defaults to today)"
|
|
1765
|
+
},
|
|
1766
|
+
{
|
|
1767
|
+
"name": "limit",
|
|
1768
|
+
"value": true,
|
|
1769
|
+
"desc": "Maximum number of habits to show"
|
|
1770
|
+
}
|
|
1771
|
+
],
|
|
1772
|
+
"synopsis": [
|
|
1773
|
+
"hey habit list [flags]"
|
|
1774
|
+
],
|
|
1775
|
+
"examples": [
|
|
1776
|
+
"hey habit list",
|
|
1777
|
+
"hey habit list --date 2026-09-02",
|
|
1778
|
+
"hey habit list --ids-only"
|
|
1779
|
+
]
|
|
1780
|
+
},
|
|
1781
|
+
{
|
|
1782
|
+
"name": "uncomplete",
|
|
1783
|
+
"path": "habit uncomplete",
|
|
1784
|
+
"short": "Remove a habit completion for a date",
|
|
1785
|
+
"flags": [
|
|
1786
|
+
{
|
|
1787
|
+
"name": "date",
|
|
1788
|
+
"value": true,
|
|
1789
|
+
"desc": "Date (YYYY-MM-DD, default: today)"
|
|
1790
|
+
}
|
|
1791
|
+
],
|
|
1792
|
+
"synopsis": [
|
|
1793
|
+
"hey habit uncomplete <id> [flags]"
|
|
1794
|
+
],
|
|
1795
|
+
"examples": [
|
|
1796
|
+
"hey habit uncomplete 789",
|
|
1797
|
+
"hey habit uncomplete 789 --date 2026-01-15"
|
|
1798
|
+
]
|
|
1799
|
+
}
|
|
1800
|
+
],
|
|
1801
|
+
"synopsis": [
|
|
1802
|
+
"hey habit <command> [flags]"
|
|
1803
|
+
]
|
|
1804
|
+
},
|
|
1805
|
+
{
|
|
1806
|
+
"name": "ignore",
|
|
1807
|
+
"path": "ignore",
|
|
1808
|
+
"short": "Ignore email threads",
|
|
1809
|
+
"notes": "Accepts one or more box item IDs from hey box view output. Ignored threads remain in their box and can be restored with hey stop-ignoring.",
|
|
1810
|
+
"synopsis": [
|
|
1811
|
+
"hey ignore <box-item-id>... [flags]"
|
|
1812
|
+
],
|
|
1813
|
+
"examples": [
|
|
1814
|
+
"hey ignore 12345",
|
|
1815
|
+
"hey ignore 12345 67890"
|
|
1816
|
+
]
|
|
1817
|
+
},
|
|
1818
|
+
{
|
|
1819
|
+
"name": "journal",
|
|
1820
|
+
"path": "journal",
|
|
1821
|
+
"short": "Read and write journal entries",
|
|
1822
|
+
"notes": "Subcommands: list, read, write. Read defaults to today. Write accepts --content, stdin, or opens $EDITOR; content is Markdown, or raw HTML via --content-html.",
|
|
1823
|
+
"subcommands": [
|
|
1824
|
+
{
|
|
1825
|
+
"name": "list",
|
|
1826
|
+
"path": "journal list",
|
|
1827
|
+
"short": "List journal entries",
|
|
1828
|
+
"flags": [
|
|
1829
|
+
{
|
|
1830
|
+
"name": "all",
|
|
1831
|
+
"desc": "Fetch all results (override --limit)"
|
|
1832
|
+
},
|
|
1833
|
+
{
|
|
1834
|
+
"name": "calendar",
|
|
1835
|
+
"value": true,
|
|
1836
|
+
"desc": "Calendar ID to read (defaults to the personal calendar)"
|
|
1837
|
+
},
|
|
1838
|
+
{
|
|
1839
|
+
"name": "ends-on",
|
|
1840
|
+
"value": true,
|
|
1841
|
+
"desc": "End date (YYYY-MM-DD)"
|
|
1842
|
+
},
|
|
1843
|
+
{
|
|
1844
|
+
"name": "limit",
|
|
1845
|
+
"value": true,
|
|
1846
|
+
"desc": "Maximum number of entries to show"
|
|
1847
|
+
},
|
|
1848
|
+
{
|
|
1849
|
+
"name": "starts-on",
|
|
1850
|
+
"value": true,
|
|
1851
|
+
"desc": "Start date (YYYY-MM-DD)"
|
|
1852
|
+
}
|
|
1853
|
+
],
|
|
1854
|
+
"synopsis": [
|
|
1855
|
+
"hey journal list [flags]"
|
|
1856
|
+
],
|
|
1857
|
+
"examples": [
|
|
1858
|
+
"hey journal list",
|
|
1859
|
+
"hey journal list --limit 10",
|
|
1860
|
+
"hey journal list --starts-on 2026-01-01 --ends-on 2026-01-31 --json"
|
|
1861
|
+
]
|
|
1862
|
+
},
|
|
1863
|
+
{
|
|
1864
|
+
"name": "read",
|
|
1865
|
+
"path": "journal read",
|
|
1866
|
+
"short": "Read a journal entry (default: today)",
|
|
1867
|
+
"synopsis": [
|
|
1868
|
+
"hey journal read [date] [flags]"
|
|
1869
|
+
],
|
|
1870
|
+
"examples": [
|
|
1871
|
+
"hey journal read",
|
|
1872
|
+
"hey journal read 2026-03-15",
|
|
1873
|
+
"hey journal read --html"
|
|
1874
|
+
]
|
|
1875
|
+
},
|
|
1876
|
+
{
|
|
1877
|
+
"name": "write",
|
|
1878
|
+
"path": "journal write",
|
|
1879
|
+
"short": "Write or edit a journal entry (default: today)",
|
|
1880
|
+
"flags": [
|
|
1881
|
+
{
|
|
1882
|
+
"name": "content",
|
|
1883
|
+
"shorthand": "c",
|
|
1884
|
+
"value": true,
|
|
1885
|
+
"desc": "Journal content as Markdown (or opens $EDITOR)"
|
|
1886
|
+
},
|
|
1887
|
+
{
|
|
1888
|
+
"name": "content-html",
|
|
1889
|
+
"value": true,
|
|
1890
|
+
"desc": "Journal content as raw HTML instead of Markdown"
|
|
1891
|
+
}
|
|
1892
|
+
],
|
|
1893
|
+
"synopsis": [
|
|
1894
|
+
"hey journal write [date] [content] [flags]"
|
|
1895
|
+
],
|
|
1896
|
+
"examples": [
|
|
1897
|
+
"hey journal write \"Shipped the pagination fix and paired with Jane on the cover art.\"",
|
|
1898
|
+
"hey journal write 2026-03-15 \"Retrospective: the migration took two days longer than planned.\"",
|
|
1899
|
+
"hey journal write -c \"Reviewed the Q3 numbers with Alice.\""
|
|
1900
|
+
]
|
|
1901
|
+
}
|
|
1902
|
+
],
|
|
1903
|
+
"synopsis": [
|
|
1904
|
+
"hey journal <command> [flags]"
|
|
1905
|
+
]
|
|
1906
|
+
},
|
|
1907
|
+
{
|
|
1908
|
+
"name": "label",
|
|
1909
|
+
"path": "label",
|
|
1910
|
+
"short": "List and manage email labels",
|
|
1911
|
+
"usage": "label <id>",
|
|
1912
|
+
"notes": "The ID comes from hey label list. Returns labeled email threads with topic_id for reading them, and answers --json, --styled, --markdown, --ids-only and --count.",
|
|
1913
|
+
"flags": [
|
|
1914
|
+
{
|
|
1915
|
+
"name": "all",
|
|
1916
|
+
"desc": "Fetch all results (override --limit)"
|
|
1917
|
+
},
|
|
1918
|
+
{
|
|
1919
|
+
"name": "limit",
|
|
1920
|
+
"value": true,
|
|
1921
|
+
"desc": "Maximum number of threads to show"
|
|
1922
|
+
},
|
|
1923
|
+
{
|
|
1924
|
+
"name": "page",
|
|
1925
|
+
"value": true,
|
|
1926
|
+
"desc": "Continue from a next_page cursor"
|
|
1927
|
+
}
|
|
1928
|
+
],
|
|
1929
|
+
"subcommands": [
|
|
1930
|
+
{
|
|
1931
|
+
"name": "add",
|
|
1932
|
+
"path": "label add",
|
|
1933
|
+
"short": "Add a label to email threads",
|
|
1934
|
+
"flags": [
|
|
1935
|
+
{
|
|
1936
|
+
"name": "to",
|
|
1937
|
+
"value": true,
|
|
1938
|
+
"desc": "Label ID (required)"
|
|
1939
|
+
}
|
|
1940
|
+
],
|
|
1941
|
+
"synopsis": [
|
|
1942
|
+
"hey label add <box-item-id>... [flags]"
|
|
1943
|
+
],
|
|
1944
|
+
"examples": [
|
|
1945
|
+
"hey label add 12345 --to 789",
|
|
1946
|
+
"hey label add 12345 67890 --to 789"
|
|
1947
|
+
]
|
|
1948
|
+
},
|
|
1949
|
+
{
|
|
1950
|
+
"name": "create",
|
|
1951
|
+
"path": "label create",
|
|
1952
|
+
"short": "Create a label and add it to email threads",
|
|
1953
|
+
"synopsis": [
|
|
1954
|
+
"hey label create <name> <box-item-id>... [flags]"
|
|
1955
|
+
],
|
|
1956
|
+
"examples": [
|
|
1957
|
+
"hey label create \"Travel receipts\" 12345",
|
|
1958
|
+
"hey label create \"Project Apollo\" 12345 67890"
|
|
1959
|
+
]
|
|
1960
|
+
},
|
|
1961
|
+
{
|
|
1962
|
+
"name": "list",
|
|
1963
|
+
"path": "label list",
|
|
1964
|
+
"short": "List your email labels",
|
|
1965
|
+
"notes": "Returns label IDs and names. Use an ID with hey label view and hey label add/remove.",
|
|
1966
|
+
"flags": [
|
|
1967
|
+
{
|
|
1968
|
+
"name": "all",
|
|
1969
|
+
"desc": "Fetch all results (override --limit)"
|
|
1970
|
+
},
|
|
1971
|
+
{
|
|
1972
|
+
"name": "limit",
|
|
1973
|
+
"value": true,
|
|
1974
|
+
"desc": "Maximum number of labels to show"
|
|
1975
|
+
}
|
|
1976
|
+
],
|
|
1977
|
+
"synopsis": [
|
|
1978
|
+
"hey label list [flags]"
|
|
1979
|
+
],
|
|
1980
|
+
"examples": [
|
|
1981
|
+
"hey label list",
|
|
1982
|
+
"hey label list --limit 10",
|
|
1983
|
+
"hey label list --json"
|
|
1984
|
+
]
|
|
1985
|
+
},
|
|
1986
|
+
{
|
|
1987
|
+
"name": "remove",
|
|
1988
|
+
"path": "label remove",
|
|
1989
|
+
"short": "Remove labels from email threads",
|
|
1990
|
+
"flags": [
|
|
1991
|
+
{
|
|
1992
|
+
"name": "from",
|
|
1993
|
+
"value": true,
|
|
1994
|
+
"desc": "Label ID, or all to remove every label (required)"
|
|
1995
|
+
}
|
|
1996
|
+
],
|
|
1997
|
+
"synopsis": [
|
|
1998
|
+
"hey label remove <box-item-id>... [flags]"
|
|
1999
|
+
],
|
|
2000
|
+
"examples": [
|
|
2001
|
+
"hey label remove 12345 --from 789",
|
|
2002
|
+
"hey label remove 12345 67890 --from all"
|
|
2003
|
+
]
|
|
2004
|
+
},
|
|
2005
|
+
{
|
|
2006
|
+
"name": "view",
|
|
2007
|
+
"path": "label view",
|
|
2008
|
+
"short": "List email threads with a label",
|
|
2009
|
+
"notes": "The ID comes from hey label list. Returns labeled email threads with topic_id for reading them, and answers --json, --styled, --markdown, --ids-only and --count.",
|
|
2010
|
+
"flags": [
|
|
2011
|
+
{
|
|
2012
|
+
"name": "all",
|
|
2013
|
+
"desc": "Fetch all results (override --limit)"
|
|
2014
|
+
},
|
|
2015
|
+
{
|
|
2016
|
+
"name": "limit",
|
|
2017
|
+
"value": true,
|
|
2018
|
+
"desc": "Maximum number of threads to show"
|
|
2019
|
+
},
|
|
2020
|
+
{
|
|
2021
|
+
"name": "page",
|
|
2022
|
+
"value": true,
|
|
2023
|
+
"desc": "Continue from a next_page cursor"
|
|
2024
|
+
}
|
|
2025
|
+
],
|
|
2026
|
+
"synopsis": [
|
|
2027
|
+
"hey label view <id> [flags]"
|
|
2028
|
+
],
|
|
2029
|
+
"examples": [
|
|
2030
|
+
"hey label view 123",
|
|
2031
|
+
"hey label view 123 --page next-cursor",
|
|
2032
|
+
"hey label view 123 --all"
|
|
2033
|
+
]
|
|
2034
|
+
}
|
|
2035
|
+
],
|
|
2036
|
+
"synopsis": [
|
|
2037
|
+
"hey label <command> [flags]"
|
|
2038
|
+
],
|
|
2039
|
+
"examples": [
|
|
2040
|
+
"hey label list",
|
|
2041
|
+
"hey label view 123",
|
|
2042
|
+
"hey label view 123 --all"
|
|
2043
|
+
]
|
|
2044
|
+
},
|
|
2045
|
+
{
|
|
2046
|
+
"name": "login",
|
|
2047
|
+
"path": "login",
|
|
2048
|
+
"short": "Authenticate with the HEY server",
|
|
2049
|
+
"flags": [
|
|
2050
|
+
{
|
|
2051
|
+
"name": "cookie",
|
|
2052
|
+
"value": true,
|
|
2053
|
+
"desc": "Session cookie value from browser (session_token)"
|
|
2054
|
+
},
|
|
2055
|
+
{
|
|
2056
|
+
"name": "no-browser",
|
|
2057
|
+
"desc": "Don't open browser, print URL instead"
|
|
2058
|
+
},
|
|
2059
|
+
{
|
|
2060
|
+
"name": "token",
|
|
2061
|
+
"value": true,
|
|
2062
|
+
"desc": "Pre-generated Bearer token"
|
|
2063
|
+
}
|
|
2064
|
+
],
|
|
2065
|
+
"synopsis": [
|
|
2066
|
+
"hey login [flags]"
|
|
2067
|
+
],
|
|
2068
|
+
"examples": [
|
|
2069
|
+
"hey login",
|
|
2070
|
+
"hey login --token YOUR_BEARER_TOKEN",
|
|
2071
|
+
"hey login --cookie SESSION_COOKIE_VALUE"
|
|
2072
|
+
]
|
|
2073
|
+
},
|
|
2074
|
+
{
|
|
2075
|
+
"name": "logout",
|
|
2076
|
+
"path": "logout",
|
|
2077
|
+
"short": "Clear stored credentials",
|
|
2078
|
+
"synopsis": [
|
|
2079
|
+
"hey logout [flags]"
|
|
2080
|
+
],
|
|
2081
|
+
"examples": [
|
|
2082
|
+
"hey logout"
|
|
2083
|
+
]
|
|
2084
|
+
},
|
|
2085
|
+
{
|
|
2086
|
+
"name": "mcp",
|
|
2087
|
+
"path": "mcp",
|
|
2088
|
+
"short": "Serve HEY to MCP clients over stdio",
|
|
2089
|
+
"notes": "Long-running server; stdout speaks the MCP wire protocol. Not for interactive use.",
|
|
2090
|
+
"flags": [
|
|
2091
|
+
{
|
|
2092
|
+
"name": "domains",
|
|
2093
|
+
"value": true,
|
|
2094
|
+
"desc": "Narrow to specific domains (comma-separated; default all)"
|
|
2095
|
+
},
|
|
2096
|
+
{
|
|
2097
|
+
"name": "read-only",
|
|
2098
|
+
"desc": "Serve only read-only actions"
|
|
2099
|
+
}
|
|
2100
|
+
],
|
|
2101
|
+
"synopsis": [
|
|
2102
|
+
"hey mcp [flags]"
|
|
2103
|
+
]
|
|
2104
|
+
},
|
|
2105
|
+
{
|
|
2106
|
+
"name": "move",
|
|
2107
|
+
"path": "move",
|
|
2108
|
+
"short": "Move email threads to another box",
|
|
2109
|
+
"notes": "Accepts box item IDs from hey box view output. --to accepts a box name, kind, or ID. To remove Reply Later, move the threads to Imbox; seen threads then appear in Previously Seen. Use hey bubble up for Bubble Up. A hey box view row with kind \"bundle\" is refused: moving one unbundles that sender's mail in the box they are delivered to. Change grouping with hey contact bundle|unbundle <contact-id>.",
|
|
2110
|
+
"flags": [
|
|
2111
|
+
{
|
|
2112
|
+
"name": "to",
|
|
2113
|
+
"value": true,
|
|
2114
|
+
"desc": "Destination box name, kind, or ID (required)"
|
|
2115
|
+
}
|
|
2116
|
+
],
|
|
2117
|
+
"synopsis": [
|
|
2118
|
+
"hey move <box-item-id>... [flags]"
|
|
2119
|
+
],
|
|
2120
|
+
"examples": [
|
|
2121
|
+
"hey move 12345 --to feed",
|
|
2122
|
+
"hey move 12345 67890 --to imbox",
|
|
2123
|
+
"hey move 12345 --to 987"
|
|
2124
|
+
]
|
|
2125
|
+
},
|
|
2126
|
+
{
|
|
2127
|
+
"name": "reply",
|
|
2128
|
+
"path": "reply",
|
|
2129
|
+
"short": "Reply to a thread",
|
|
2130
|
+
"notes": "Replies to the latest entry in a thread, addressed the way HEY addresses a reply: everyone that entry was addressed to, plus its sender on the To line, minus the acting user's own addresses. Repeatable --to/--cc/--bcc flags merge explicit recipients into that prefill; --replace-recipients uses only the explicit lists. --dry-run is read-only, needs no message, and returns the resolved sender, recipients, subject, account, thread and entry. Accepts message via -m, stdin, or $EDITOR, plus repeatable --attach files; an attachment can be sent without body text. The message is Markdown; use --message-html to send raw HTML instead. --draft saves the reply as a draft, carries the resolved recipients, and answers the draft ID for hey draft show/edit/send/delete.",
|
|
2131
|
+
"flags": [
|
|
2132
|
+
{
|
|
2133
|
+
"name": "attach",
|
|
2134
|
+
"value": true,
|
|
2135
|
+
"desc": "File to attach (repeatable)"
|
|
2136
|
+
},
|
|
2137
|
+
{
|
|
2138
|
+
"name": "bcc",
|
|
2139
|
+
"value": true,
|
|
2140
|
+
"desc": "BCC recipient email address (repeatable or comma-separated)"
|
|
2141
|
+
},
|
|
2142
|
+
{
|
|
2143
|
+
"name": "cc",
|
|
2144
|
+
"value": true,
|
|
2145
|
+
"desc": "CC recipient email address (repeatable or comma-separated)"
|
|
2146
|
+
},
|
|
2147
|
+
{
|
|
2148
|
+
"name": "draft",
|
|
2149
|
+
"desc": "Save as a draft instead of sending"
|
|
2150
|
+
},
|
|
2151
|
+
{
|
|
2152
|
+
"name": "dry-run",
|
|
2153
|
+
"desc": "Print the resolved reply envelope without sending"
|
|
2154
|
+
},
|
|
2155
|
+
{
|
|
2156
|
+
"name": "message",
|
|
2157
|
+
"shorthand": "m",
|
|
2158
|
+
"value": true,
|
|
2159
|
+
"desc": "Reply message as Markdown (or opens $EDITOR)"
|
|
2160
|
+
},
|
|
2161
|
+
{
|
|
2162
|
+
"name": "message-html",
|
|
2163
|
+
"value": true,
|
|
2164
|
+
"desc": "Reply message as raw HTML instead of Markdown"
|
|
2165
|
+
},
|
|
2166
|
+
{
|
|
2167
|
+
"name": "replace-recipients",
|
|
2168
|
+
"desc": "Replace HEY's reply recipients with the explicit To, CC and BCC lists"
|
|
2169
|
+
},
|
|
2170
|
+
{
|
|
2171
|
+
"name": "to",
|
|
2172
|
+
"value": true,
|
|
2173
|
+
"desc": "To recipient email address (repeatable or comma-separated)"
|
|
2174
|
+
}
|
|
2175
|
+
],
|
|
2176
|
+
"synopsis": [
|
|
2177
|
+
"hey reply <thread-id> [flags]"
|
|
2178
|
+
],
|
|
2179
|
+
"examples": [
|
|
2180
|
+
"hey reply 12345 -m \"Friday works for me — I'll send an agenda.\"",
|
|
2181
|
+
"hey reply 12345 --to support@example.com -m \"The replacement is on the way.\"",
|
|
2182
|
+
"hey reply 12345 --to support@example.com --replace-recipients --dry-run --json"
|
|
2183
|
+
]
|
|
2184
|
+
},
|
|
2185
|
+
{
|
|
2186
|
+
"name": "screener",
|
|
2187
|
+
"path": "screener",
|
|
2188
|
+
"short": "Decide who gets to email you",
|
|
2189
|
+
"notes": "Clearance IDs come from `hey screener list`, and are not contact IDs. Approving delivers everything the sender has waiting; denying hides it. Both are reversible with the opposite command. `hey screener history` shows what was already decided.",
|
|
2190
|
+
"subcommands": [
|
|
2191
|
+
{
|
|
2192
|
+
"name": "approve",
|
|
2193
|
+
"path": "screener approve",
|
|
2194
|
+
"short": "Let a sender through",
|
|
2195
|
+
"notes": "Clearance IDs come from `hey screener list`, not contact IDs. --box and --seen apply to one sender at a time; several IDs go through the bulk endpoint, which takes neither. Reverse with `hey screener deny <id>`.",
|
|
2196
|
+
"flags": [
|
|
2197
|
+
{
|
|
2198
|
+
"name": "box",
|
|
2199
|
+
"value": true,
|
|
2200
|
+
"desc": "Deliver their email to this box instead of the Imbox"
|
|
2201
|
+
},
|
|
2202
|
+
{
|
|
2203
|
+
"name": "seen",
|
|
2204
|
+
"desc": "Mark what they already sent as seen"
|
|
2205
|
+
}
|
|
2206
|
+
],
|
|
2207
|
+
"synopsis": [
|
|
2208
|
+
"hey screener approve <clearance-id>... [flags]"
|
|
2209
|
+
],
|
|
2210
|
+
"examples": [
|
|
2211
|
+
"hey screener approve 12345",
|
|
2212
|
+
"hey screener approve 12345 --box \"The Feed\"",
|
|
2213
|
+
"hey screener approve 12345 --seen"
|
|
2214
|
+
]
|
|
2215
|
+
},
|
|
2216
|
+
{
|
|
2217
|
+
"name": "clear",
|
|
2218
|
+
"path": "screener clear",
|
|
2219
|
+
"short": "Empty the Screener without deciding",
|
|
2220
|
+
"notes": "Clears the whole queue for the account, not one sender, and takes no confirmation. It decides nothing: senders reappear in The Screener on their next email, so what they already sent stays hidden until then. HEY queues the work, so `hey screener list` may still show the queue for a moment afterwards.",
|
|
2221
|
+
"synopsis": [
|
|
2222
|
+
"hey screener clear [flags]"
|
|
2223
|
+
],
|
|
2224
|
+
"examples": [
|
|
2225
|
+
"hey screener clear",
|
|
2226
|
+
"hey screener clear --json"
|
|
2227
|
+
]
|
|
2228
|
+
},
|
|
2229
|
+
{
|
|
2230
|
+
"name": "deny",
|
|
2231
|
+
"path": "screener deny",
|
|
2232
|
+
"short": "Turn a sender away",
|
|
2233
|
+
"notes": "Clearance IDs come from `hey screener list`, not contact IDs. --spam also marks what they already sent as spam and trains HEY's filter on it, which is harder to undo than denying. Reverse with `hey screener approve <id>`.",
|
|
2234
|
+
"flags": [
|
|
2235
|
+
{
|
|
2236
|
+
"name": "spam",
|
|
2237
|
+
"desc": "Also mark what they sent as spam and train the filter"
|
|
2238
|
+
}
|
|
2239
|
+
],
|
|
2240
|
+
"synopsis": [
|
|
2241
|
+
"hey screener deny <clearance-id>... [flags]"
|
|
2242
|
+
],
|
|
2243
|
+
"examples": [
|
|
2244
|
+
"hey screener deny 12345",
|
|
2245
|
+
"hey screener deny 12345 67890",
|
|
2246
|
+
"hey screener deny 12345 --spam"
|
|
2247
|
+
]
|
|
2248
|
+
},
|
|
2249
|
+
{
|
|
2250
|
+
"name": "history",
|
|
2251
|
+
"path": "screener history",
|
|
2252
|
+
"short": "List the senders already screened",
|
|
2253
|
+
"notes": "Only senders already decided on — the pending queue is `hey screener list`. Change a decision with `hey screener approve <id>` or `hey screener deny <id>` using the ID from here. --page continues from the next_page cursor of an earlier listing.",
|
|
2254
|
+
"flags": [
|
|
2255
|
+
{
|
|
2256
|
+
"name": "all",
|
|
2257
|
+
"desc": "Fetch all results (up to 100 pages)"
|
|
2258
|
+
},
|
|
2259
|
+
{
|
|
2260
|
+
"name": "page",
|
|
2261
|
+
"value": true,
|
|
2262
|
+
"desc": "Continue from a next_page cursor"
|
|
2263
|
+
}
|
|
2264
|
+
],
|
|
2265
|
+
"synopsis": [
|
|
2266
|
+
"hey screener history [flags]"
|
|
2267
|
+
],
|
|
2268
|
+
"examples": [
|
|
2269
|
+
"hey screener history",
|
|
2270
|
+
"hey screener history --json",
|
|
2271
|
+
"hey screener history --all --json"
|
|
2272
|
+
]
|
|
2273
|
+
},
|
|
2274
|
+
{
|
|
2275
|
+
"name": "list",
|
|
2276
|
+
"path": "screener list",
|
|
2277
|
+
"short": "List the senders waiting to be screened",
|
|
2278
|
+
"notes": "Returns clearance IDs with the sender and the subject of what they sent. Feed the ID to `hey screener approve` or `hey screener deny`, and topic_id to `hey thread read` to read the thread first. Use --count for the number alone, which is a much cheaper request. --page continues from the next_page cursor of an earlier listing.",
|
|
2279
|
+
"flags": [
|
|
2280
|
+
{
|
|
2281
|
+
"name": "all",
|
|
2282
|
+
"desc": "Fetch all results (up to 100 pages)"
|
|
2283
|
+
},
|
|
2284
|
+
{
|
|
2285
|
+
"name": "page",
|
|
2286
|
+
"value": true,
|
|
2287
|
+
"desc": "Continue from a next_page cursor"
|
|
2288
|
+
}
|
|
2289
|
+
],
|
|
2290
|
+
"synopsis": [
|
|
2291
|
+
"hey screener list [flags]"
|
|
2292
|
+
],
|
|
2293
|
+
"examples": [
|
|
2294
|
+
"hey screener list",
|
|
2295
|
+
"hey screener list --json",
|
|
2296
|
+
"hey screener list --count"
|
|
2297
|
+
]
|
|
2298
|
+
}
|
|
2299
|
+
],
|
|
2300
|
+
"synopsis": [
|
|
2301
|
+
"hey screener <command> [flags]"
|
|
2302
|
+
]
|
|
2303
|
+
},
|
|
2304
|
+
{
|
|
2305
|
+
"name": "search",
|
|
2306
|
+
"path": "search",
|
|
2307
|
+
"short": "Search email threads and messages",
|
|
2308
|
+
"notes": "Returns one result per thread. id is the box item ID for organization actions when the thread has an active box item, topic_id opens the thread, and messages contains the matching message summaries. Use `hey search filters` to discover box, date, label, and attachment values.",
|
|
2309
|
+
"flags": [
|
|
2310
|
+
{
|
|
2311
|
+
"name": "all",
|
|
2312
|
+
"desc": "Fetch up to 100 results pages from --page onward"
|
|
2313
|
+
},
|
|
2314
|
+
{
|
|
2315
|
+
"name": "any",
|
|
2316
|
+
"value": true,
|
|
2317
|
+
"desc": "Words where at least one must appear"
|
|
2318
|
+
},
|
|
2319
|
+
{
|
|
2320
|
+
"name": "attachment",
|
|
2321
|
+
"value": true,
|
|
2322
|
+
"desc": "Attachment kind: any, images, pdfs, calendar_invites, documents, spreadsheets, presentations, media, or zip_files"
|
|
2323
|
+
},
|
|
2324
|
+
{
|
|
2325
|
+
"name": "date",
|
|
2326
|
+
"value": true,
|
|
2327
|
+
"desc": "Date range: last_7_days, last_30_days, last_90_days, or year"
|
|
2328
|
+
},
|
|
2329
|
+
{
|
|
2330
|
+
"name": "exact",
|
|
2331
|
+
"value": true,
|
|
2332
|
+
"desc": "Exact phrase that must appear"
|
|
2333
|
+
},
|
|
2334
|
+
{
|
|
2335
|
+
"name": "from",
|
|
2336
|
+
"value": true,
|
|
2337
|
+
"desc": "Sender name or email address"
|
|
2338
|
+
},
|
|
2339
|
+
{
|
|
2340
|
+
"name": "in",
|
|
2341
|
+
"value": true,
|
|
2342
|
+
"desc": "Box: imbox, feed, papertrail, or trash"
|
|
2343
|
+
},
|
|
2344
|
+
{
|
|
2345
|
+
"name": "label",
|
|
2346
|
+
"value": true,
|
|
2347
|
+
"desc": "Label name"
|
|
2348
|
+
},
|
|
2349
|
+
{
|
|
2350
|
+
"name": "none",
|
|
2351
|
+
"value": true,
|
|
2352
|
+
"desc": "Words that must not appear"
|
|
2353
|
+
},
|
|
2354
|
+
{
|
|
2355
|
+
"name": "page",
|
|
2356
|
+
"value": true,
|
|
2357
|
+
"desc": "Results page",
|
|
2358
|
+
"default": "1"
|
|
2359
|
+
},
|
|
2360
|
+
{
|
|
2361
|
+
"name": "required",
|
|
2362
|
+
"value": true,
|
|
2363
|
+
"desc": "Words that must all appear"
|
|
2364
|
+
},
|
|
2365
|
+
{
|
|
2366
|
+
"name": "subject",
|
|
2367
|
+
"value": true,
|
|
2368
|
+
"desc": "Words in the subject"
|
|
2369
|
+
},
|
|
2370
|
+
{
|
|
2371
|
+
"name": "to",
|
|
2372
|
+
"value": true,
|
|
2373
|
+
"desc": "Recipient name or email address"
|
|
2374
|
+
}
|
|
2375
|
+
],
|
|
2376
|
+
"subcommands": [
|
|
2377
|
+
{
|
|
2378
|
+
"name": "filters",
|
|
2379
|
+
"path": "search filters",
|
|
2380
|
+
"short": "List available search refinement values",
|
|
2381
|
+
"notes": "Returns the current values accepted by --in, --date, --label, and --attachment.",
|
|
2382
|
+
"synopsis": [
|
|
2383
|
+
"hey search filters [flags]"
|
|
2384
|
+
]
|
|
2385
|
+
}
|
|
2386
|
+
],
|
|
2387
|
+
"synopsis": [
|
|
2388
|
+
"hey search [query] [flags]",
|
|
2389
|
+
"hey search <command> [flags]"
|
|
2390
|
+
],
|
|
2391
|
+
"examples": [
|
|
2392
|
+
"hey search \"quarterly planning\"",
|
|
2393
|
+
"hey search --from jane@example.com --date last_30_days",
|
|
2394
|
+
"hey search --subject invoice --attachment pdfs --all"
|
|
2395
|
+
]
|
|
2396
|
+
},
|
|
2397
|
+
{
|
|
2398
|
+
"name": "seen",
|
|
2399
|
+
"path": "seen",
|
|
2400
|
+
"short": "Mark email threads as seen",
|
|
2401
|
+
"notes": "Accepts one or more box item IDs from hey box view output. Marks each email thread as seen/read.",
|
|
2402
|
+
"synopsis": [
|
|
2403
|
+
"hey seen <box-item-id>... [flags]"
|
|
2404
|
+
],
|
|
2405
|
+
"examples": [
|
|
2406
|
+
"hey seen 12345",
|
|
2407
|
+
"hey seen 12345 67890"
|
|
2408
|
+
]
|
|
2409
|
+
},
|
|
2410
|
+
{
|
|
2411
|
+
"name": "set-aside",
|
|
2412
|
+
"path": "set-aside",
|
|
2413
|
+
"short": "List and group email threads in Set Aside",
|
|
2414
|
+
"subcommands": [
|
|
2415
|
+
{
|
|
2416
|
+
"name": "group",
|
|
2417
|
+
"path": "set-aside group",
|
|
2418
|
+
"short": "List and manage groups in Set Aside",
|
|
2419
|
+
"subcommands": [
|
|
2420
|
+
{
|
|
2421
|
+
"name": "add",
|
|
2422
|
+
"path": "set-aside group add",
|
|
2423
|
+
"short": "Add email threads to a Set Aside group",
|
|
2424
|
+
"notes": "Accepts box item IDs from hey set-aside view and a group ID from hey set-aside group list. Threads not yet in Set Aside are moved there and marked seen, which also clears a bubble-up. A thread already in another group is moved to this one.",
|
|
2425
|
+
"flags": [
|
|
2426
|
+
{
|
|
2427
|
+
"name": "to",
|
|
2428
|
+
"value": true,
|
|
2429
|
+
"desc": "Group ID (required)"
|
|
2430
|
+
}
|
|
2431
|
+
],
|
|
2432
|
+
"synopsis": [
|
|
2433
|
+
"hey set-aside group add <box-item-id>... [flags]"
|
|
2434
|
+
],
|
|
2435
|
+
"examples": [
|
|
2436
|
+
"hey set-aside group add 12345 --to 42",
|
|
2437
|
+
"hey set-aside group add 12345 67890 --to 42"
|
|
2438
|
+
]
|
|
2439
|
+
},
|
|
2440
|
+
{
|
|
2441
|
+
"name": "create",
|
|
2442
|
+
"path": "set-aside group create",
|
|
2443
|
+
"short": "Gather email threads into a new Set Aside group",
|
|
2444
|
+
"notes": "Accepts box item IDs from hey set-aside view. Threads not yet in Set Aside are moved there and marked seen, which also clears a bubble-up. Returns the new group's ID.",
|
|
2445
|
+
"synopsis": [
|
|
2446
|
+
"hey set-aside group create <box-item-id>... [flags]"
|
|
2447
|
+
],
|
|
2448
|
+
"examples": [
|
|
2449
|
+
"hey set-aside group create 12345",
|
|
2450
|
+
"hey set-aside group create 12345 67890"
|
|
2451
|
+
]
|
|
2452
|
+
},
|
|
2453
|
+
{
|
|
2454
|
+
"name": "delete",
|
|
2455
|
+
"path": "set-aside group delete",
|
|
2456
|
+
"short": "Break up a Set Aside group",
|
|
2457
|
+
"notes": "Deleting a group moves its threads to Previously Seen in the Imbox, not back into Set Aside. Use hey set-aside group remove to ungroup threads that should stay set aside.",
|
|
2458
|
+
"synopsis": [
|
|
2459
|
+
"hey set-aside group delete <group-id> [flags]"
|
|
2460
|
+
],
|
|
2461
|
+
"examples": [
|
|
2462
|
+
"hey set-aside group delete 42"
|
|
2463
|
+
]
|
|
2464
|
+
},
|
|
2465
|
+
{
|
|
2466
|
+
"name": "list",
|
|
2467
|
+
"path": "set-aside group list",
|
|
2468
|
+
"short": "List the groups in Set Aside",
|
|
2469
|
+
"notes": "Returns group IDs with their thread counts. Use an ID with hey set-aside group view, add and delete.",
|
|
2470
|
+
"synopsis": [
|
|
2471
|
+
"hey set-aside group list [flags]"
|
|
2472
|
+
],
|
|
2473
|
+
"examples": [
|
|
2474
|
+
"hey set-aside group list",
|
|
2475
|
+
"hey set-aside group list --json"
|
|
2476
|
+
]
|
|
2477
|
+
},
|
|
2478
|
+
{
|
|
2479
|
+
"name": "remove",
|
|
2480
|
+
"path": "set-aside group remove",
|
|
2481
|
+
"short": "Take email threads out of their Set Aside group",
|
|
2482
|
+
"notes": "Accepts box item IDs from hey set-aside view. The threads stay in Set Aside, outside any group.",
|
|
2483
|
+
"synopsis": [
|
|
2484
|
+
"hey set-aside group remove <box-item-id>... [flags]"
|
|
2485
|
+
],
|
|
2486
|
+
"examples": [
|
|
2487
|
+
"hey set-aside group remove 12345",
|
|
2488
|
+
"hey set-aside group remove 12345 67890"
|
|
2489
|
+
]
|
|
2490
|
+
},
|
|
2491
|
+
{
|
|
2492
|
+
"name": "view",
|
|
2493
|
+
"path": "set-aside group view",
|
|
2494
|
+
"short": "List email threads in a Set Aside group",
|
|
2495
|
+
"notes": "The ID comes from hey set-aside group list. Returns the group's threads; use id with hey set-aside group remove and hey move, topic_id with hey thread read. --page continues from the next_page cursor of an earlier listing of the same group.",
|
|
2496
|
+
"flags": [
|
|
2497
|
+
{
|
|
2498
|
+
"name": "all",
|
|
2499
|
+
"desc": "Fetch all results (override --limit)"
|
|
2500
|
+
},
|
|
2501
|
+
{
|
|
2502
|
+
"name": "limit",
|
|
2503
|
+
"value": true,
|
|
2504
|
+
"desc": "Maximum number of threads to show"
|
|
2505
|
+
},
|
|
2506
|
+
{
|
|
2507
|
+
"name": "page",
|
|
2508
|
+
"value": true,
|
|
2509
|
+
"desc": "Continue from a next_page cursor"
|
|
2510
|
+
}
|
|
2511
|
+
],
|
|
2512
|
+
"synopsis": [
|
|
2513
|
+
"hey set-aside group view <group-id> [flags]"
|
|
2514
|
+
],
|
|
2515
|
+
"examples": [
|
|
2516
|
+
"hey set-aside group view 42",
|
|
2517
|
+
"hey set-aside group view 42 --all",
|
|
2518
|
+
"hey set-aside group view 42 --json"
|
|
2519
|
+
]
|
|
2520
|
+
}
|
|
2521
|
+
],
|
|
2522
|
+
"synopsis": [
|
|
2523
|
+
"hey set-aside group [flags]",
|
|
2524
|
+
"hey set-aside group <command> [flags]"
|
|
2525
|
+
],
|
|
2526
|
+
"examples": [
|
|
2527
|
+
"hey set-aside group list",
|
|
2528
|
+
"hey set-aside group view 42",
|
|
2529
|
+
"hey set-aside group create 12345 67890"
|
|
2530
|
+
]
|
|
2531
|
+
},
|
|
2532
|
+
{
|
|
2533
|
+
"name": "view",
|
|
2534
|
+
"path": "set-aside view",
|
|
2535
|
+
"short": "List email threads in Set Aside",
|
|
2536
|
+
"notes": "Returns the same threads as hey box view set-aside, with each thread's box_group_id. Use id with hey set-aside group create/add/remove and hey move; use topic_id with hey thread read.",
|
|
2537
|
+
"flags": [
|
|
2538
|
+
{
|
|
2539
|
+
"name": "all",
|
|
2540
|
+
"desc": "Fetch all results (override --limit)"
|
|
2541
|
+
},
|
|
2542
|
+
{
|
|
2543
|
+
"name": "limit",
|
|
2544
|
+
"value": true,
|
|
2545
|
+
"desc": "Maximum number of threads to show"
|
|
2546
|
+
},
|
|
2547
|
+
{
|
|
2548
|
+
"name": "page",
|
|
2549
|
+
"value": true,
|
|
2550
|
+
"desc": "Continue from a next_page cursor"
|
|
2551
|
+
}
|
|
2552
|
+
],
|
|
2553
|
+
"synopsis": [
|
|
2554
|
+
"hey set-aside view [flags]"
|
|
2555
|
+
],
|
|
2556
|
+
"examples": [
|
|
2557
|
+
"hey set-aside view",
|
|
2558
|
+
"hey set-aside view --all",
|
|
2559
|
+
"hey set-aside view --json"
|
|
2560
|
+
]
|
|
2561
|
+
}
|
|
2562
|
+
],
|
|
2563
|
+
"synopsis": [
|
|
2564
|
+
"hey set-aside [flags]",
|
|
2565
|
+
"hey set-aside <command> [flags]"
|
|
2566
|
+
],
|
|
2567
|
+
"examples": [
|
|
2568
|
+
"hey set-aside view",
|
|
2569
|
+
"hey set-aside group list",
|
|
2570
|
+
"hey set-aside group create 12345 67890"
|
|
2571
|
+
]
|
|
2572
|
+
},
|
|
2573
|
+
{
|
|
2574
|
+
"name": "setup",
|
|
2575
|
+
"path": "setup",
|
|
2576
|
+
"short": "Set up HEY for first use",
|
|
2577
|
+
"notes": "Runs the first-run wizard: OAuth sign-in, a look at the linked accounts, coding-agent setup, and the Omarchy integration when detected. --skip-agents and --skip-omarchy leave those integrations unchanged. --silent-success keeps required authentication and failure output, shows an installation spinner, and ends with SETUP COMPLETE. HEY_NONINTERACTIVE=1 suppresses interactive sign-in, but unskipped agent setup still writes skill files and the wizard persists the onboarded flag — there is no read-only mode; use `hey doctor` to inspect without changing anything. --json changes only the output format: a terminal on stdin (an allocated PTY included) still starts browser OAuth and waits for it. Logged out and non-interactive reports status incomplete with a remediation breadcrumb.",
|
|
2578
|
+
"flags": [
|
|
2579
|
+
{
|
|
2580
|
+
"name": "silent-success",
|
|
2581
|
+
"desc": "Show setup activity and end a successful run with SETUP COMPLETE"
|
|
2582
|
+
},
|
|
2583
|
+
{
|
|
2584
|
+
"name": "skip-agents",
|
|
2585
|
+
"desc": "Leave coding-agent integrations unchanged"
|
|
2586
|
+
},
|
|
2587
|
+
{
|
|
2588
|
+
"name": "skip-omarchy",
|
|
2589
|
+
"desc": "Leave the Omarchy integration unchanged"
|
|
2590
|
+
}
|
|
2591
|
+
],
|
|
2592
|
+
"subcommands": [
|
|
2593
|
+
{
|
|
2594
|
+
"name": "agents",
|
|
2595
|
+
"path": "setup agents",
|
|
2596
|
+
"short": "Install or remove HEY coding-agent integrations",
|
|
2597
|
+
"notes": "Never prompts. Set HEY_SETUP_AGENT=claude|codex|all|none to choose; unset auto-detects a single agent. --remove uninstalls HEY's managed agent integrations.",
|
|
2598
|
+
"flags": [
|
|
2599
|
+
{
|
|
2600
|
+
"name": "remove",
|
|
2601
|
+
"desc": "Remove HEY coding-agent integrations"
|
|
2602
|
+
}
|
|
2603
|
+
],
|
|
2604
|
+
"synopsis": [
|
|
2605
|
+
"hey setup agents [flags]"
|
|
2606
|
+
]
|
|
2607
|
+
},
|
|
2608
|
+
{
|
|
2609
|
+
"name": "claude",
|
|
2610
|
+
"path": "setup claude",
|
|
2611
|
+
"short": "Connect Claude Code to HEY",
|
|
2612
|
+
"notes": "Non-interactive when output is piped or --json is set. Succeeds with {plugin_installed, agent_detected}; a not-detected or not-connected outcome is an error envelope (code setup_incomplete, manual steps in the hint) with a nonzero exit.",
|
|
2613
|
+
"synopsis": [
|
|
2614
|
+
"hey setup claude [flags]"
|
|
2615
|
+
]
|
|
2616
|
+
},
|
|
2617
|
+
{
|
|
2618
|
+
"name": "codex",
|
|
2619
|
+
"path": "setup codex",
|
|
2620
|
+
"short": "Connect Codex to HEY",
|
|
2621
|
+
"notes": "Non-interactive when output is piped or --json is set. Succeeds with {plugin_installed, agent_detected}; a not-detected or not-connected outcome is an error envelope (code setup_incomplete, manual steps in the hint) with a nonzero exit.",
|
|
2622
|
+
"synopsis": [
|
|
2623
|
+
"hey setup codex [flags]"
|
|
2624
|
+
]
|
|
2625
|
+
},
|
|
2626
|
+
{
|
|
2627
|
+
"name": "omarchy",
|
|
2628
|
+
"path": "setup omarchy",
|
|
2629
|
+
"short": "Install hey into the Omarchy desktop",
|
|
2630
|
+
"notes": "Only meaningful on Omarchy Linux. Writes to ~/.config/omarchy and ~/.local/share/applications; never edits Hyprland keybindings.",
|
|
2631
|
+
"flags": [
|
|
2632
|
+
{
|
|
2633
|
+
"name": "no-notify",
|
|
2634
|
+
"desc": "Turn new-mail toasts back off"
|
|
2635
|
+
},
|
|
2636
|
+
{
|
|
2637
|
+
"name": "notify",
|
|
2638
|
+
"desc": "Turn on the bar plugin's new-mail toasts"
|
|
2639
|
+
},
|
|
2640
|
+
{
|
|
2641
|
+
"name": "remove",
|
|
2642
|
+
"desc": "Remove everything hey setup omarchy installed"
|
|
2643
|
+
}
|
|
2644
|
+
],
|
|
2645
|
+
"synopsis": [
|
|
2646
|
+
"hey setup omarchy [flags]"
|
|
2647
|
+
],
|
|
2648
|
+
"examples": [
|
|
2649
|
+
"hey setup omarchy",
|
|
2650
|
+
"hey setup omarchy --notify",
|
|
2651
|
+
"hey setup omarchy --remove"
|
|
2652
|
+
]
|
|
2653
|
+
}
|
|
2654
|
+
],
|
|
2655
|
+
"synopsis": [
|
|
2656
|
+
"hey setup [flags]",
|
|
2657
|
+
"hey setup <command> [flags]"
|
|
2658
|
+
]
|
|
2659
|
+
},
|
|
2660
|
+
{
|
|
2661
|
+
"name": "share",
|
|
2662
|
+
"path": "share",
|
|
2663
|
+
"short": "Get a sharing link for an email thread",
|
|
2664
|
+
"notes": "Accepts the topic_id from hey box view, hey label view, or hey search output. Returns the sharing link in the url field.",
|
|
2665
|
+
"synopsis": [
|
|
2666
|
+
"hey share <thread-id> [flags]"
|
|
2667
|
+
],
|
|
2668
|
+
"examples": [
|
|
2669
|
+
"hey share 12345",
|
|
2670
|
+
"hey share 12345 --json"
|
|
2671
|
+
]
|
|
2672
|
+
},
|
|
2673
|
+
{
|
|
2674
|
+
"name": "shell-completion",
|
|
2675
|
+
"path": "shell-completion",
|
|
2676
|
+
"short": "Set up tab completion for your shell",
|
|
2677
|
+
"notes": "Subcommands: install, generate. install writes the script where the shell reads it and is the usual way in; generate prints it to stdout for a package or a dotfile to place itself.",
|
|
2678
|
+
"subcommands": [
|
|
2679
|
+
{
|
|
2680
|
+
"name": "generate",
|
|
2681
|
+
"path": "shell-completion generate",
|
|
2682
|
+
"short": "Print a completion script to stdout",
|
|
2683
|
+
"synopsis": [
|
|
2684
|
+
"hey shell-completion generate <bash|zsh|fish|powershell> [flags]"
|
|
2685
|
+
],
|
|
2686
|
+
"examples": [
|
|
2687
|
+
"hey shell-completion generate bash",
|
|
2688
|
+
"hey shell-completion generate zsh > \"$HOME/.local/share/zsh/site-functions/_hey\""
|
|
2689
|
+
]
|
|
2690
|
+
},
|
|
2691
|
+
{
|
|
2692
|
+
"name": "install",
|
|
2693
|
+
"path": "shell-completion install",
|
|
2694
|
+
"short": "Install shell completions where your shell will find them",
|
|
2695
|
+
"notes": "Writes one file under the user's home. Reports the path it wrote and any shell configuration still needed.",
|
|
2696
|
+
"flags": [
|
|
2697
|
+
{
|
|
2698
|
+
"name": "force",
|
|
2699
|
+
"desc": "Write even over a packaged or foreign completion file"
|
|
2700
|
+
}
|
|
2701
|
+
],
|
|
2702
|
+
"synopsis": [
|
|
2703
|
+
"hey shell-completion install [bash|zsh|fish] [flags]"
|
|
2704
|
+
],
|
|
2705
|
+
"examples": [
|
|
2706
|
+
"hey shell-completion install",
|
|
2707
|
+
"hey shell-completion install zsh",
|
|
2708
|
+
"hey shell-completion install bash --force"
|
|
2709
|
+
]
|
|
2710
|
+
}
|
|
2711
|
+
],
|
|
2712
|
+
"synopsis": [
|
|
2713
|
+
"hey shell-completion <command> [flags]"
|
|
2714
|
+
]
|
|
2715
|
+
},
|
|
2716
|
+
{
|
|
2717
|
+
"name": "skill",
|
|
2718
|
+
"path": "skill",
|
|
2719
|
+
"short": "Manage the embedded agent skill",
|
|
2720
|
+
"subcommands": [
|
|
2721
|
+
{
|
|
2722
|
+
"name": "install",
|
|
2723
|
+
"path": "skill install",
|
|
2724
|
+
"short": "Install the hey skill globally for your coding agents",
|
|
2725
|
+
"synopsis": [
|
|
2726
|
+
"hey skill install [flags]"
|
|
2727
|
+
]
|
|
2728
|
+
}
|
|
2729
|
+
],
|
|
2730
|
+
"synopsis": [
|
|
2731
|
+
"hey skill [flags]",
|
|
2732
|
+
"hey skill <command> [flags]"
|
|
2733
|
+
]
|
|
2734
|
+
},
|
|
2735
|
+
{
|
|
2736
|
+
"name": "snippet",
|
|
2737
|
+
"path": "snippet",
|
|
2738
|
+
"short": "List and manage reusable email snippets",
|
|
2739
|
+
"notes": "List, create, update, or delete snippets. Find snippet IDs with hey snippet list.",
|
|
2740
|
+
"subcommands": [
|
|
2741
|
+
{
|
|
2742
|
+
"name": "create",
|
|
2743
|
+
"path": "snippet create",
|
|
2744
|
+
"short": "Create a reusable email snippet",
|
|
2745
|
+
"flags": [
|
|
2746
|
+
{
|
|
2747
|
+
"name": "content",
|
|
2748
|
+
"value": true,
|
|
2749
|
+
"desc": "Snippet content as Markdown"
|
|
2750
|
+
},
|
|
2751
|
+
{
|
|
2752
|
+
"name": "content-html",
|
|
2753
|
+
"value": true,
|
|
2754
|
+
"desc": "Snippet content as raw HTML instead of Markdown"
|
|
2755
|
+
},
|
|
2756
|
+
{
|
|
2757
|
+
"name": "name",
|
|
2758
|
+
"value": true,
|
|
2759
|
+
"desc": "Snippet name (required)"
|
|
2760
|
+
}
|
|
2761
|
+
],
|
|
2762
|
+
"synopsis": [
|
|
2763
|
+
"hey snippet create [flags]"
|
|
2764
|
+
],
|
|
2765
|
+
"examples": [
|
|
2766
|
+
"hey snippet create --name \"Scheduling reply\" --content \"Tuesday works for me.\"",
|
|
2767
|
+
"hey snippet create --name \"Office hours\" --content \"<p>Office hours are Monday through Thursday.</p>\""
|
|
2768
|
+
]
|
|
2769
|
+
},
|
|
2770
|
+
{
|
|
2771
|
+
"name": "delete",
|
|
2772
|
+
"path": "snippet delete",
|
|
2773
|
+
"short": "Delete a reusable email snippet",
|
|
2774
|
+
"synopsis": [
|
|
2775
|
+
"hey snippet delete <id> [flags]"
|
|
2776
|
+
],
|
|
2777
|
+
"examples": [
|
|
2778
|
+
"hey snippet delete 44"
|
|
2779
|
+
]
|
|
2780
|
+
},
|
|
2781
|
+
{
|
|
2782
|
+
"name": "list",
|
|
2783
|
+
"path": "snippet list",
|
|
2784
|
+
"short": "List reusable email snippets",
|
|
2785
|
+
"notes": "Returns snippet IDs, names, plain text, and rich-text HTML. Use an ID with hey snippet update or delete.",
|
|
2786
|
+
"synopsis": [
|
|
2787
|
+
"hey snippet list [flags]"
|
|
2788
|
+
],
|
|
2789
|
+
"examples": [
|
|
2790
|
+
"hey snippet list",
|
|
2791
|
+
"hey snippet list --json",
|
|
2792
|
+
"hey snippet list --ids-only"
|
|
2793
|
+
]
|
|
2794
|
+
},
|
|
2795
|
+
{
|
|
2796
|
+
"name": "update",
|
|
2797
|
+
"path": "snippet update",
|
|
2798
|
+
"short": "Update a reusable email snippet",
|
|
2799
|
+
"flags": [
|
|
2800
|
+
{
|
|
2801
|
+
"name": "content",
|
|
2802
|
+
"value": true,
|
|
2803
|
+
"desc": "New snippet content as Markdown"
|
|
2804
|
+
},
|
|
2805
|
+
{
|
|
2806
|
+
"name": "content-html",
|
|
2807
|
+
"value": true,
|
|
2808
|
+
"desc": "New snippet content as raw HTML instead of Markdown"
|
|
2809
|
+
},
|
|
2810
|
+
{
|
|
2811
|
+
"name": "name",
|
|
2812
|
+
"value": true,
|
|
2813
|
+
"desc": "New snippet name"
|
|
2814
|
+
}
|
|
2815
|
+
],
|
|
2816
|
+
"synopsis": [
|
|
2817
|
+
"hey snippet update <id> [flags]"
|
|
2818
|
+
],
|
|
2819
|
+
"examples": [
|
|
2820
|
+
"hey snippet update 44 --name \"Scheduling\"",
|
|
2821
|
+
"hey snippet update 44 --content \"Wednesday works for me.\""
|
|
2822
|
+
]
|
|
2823
|
+
}
|
|
2824
|
+
],
|
|
2825
|
+
"synopsis": [
|
|
2826
|
+
"hey snippet <command> [flags]"
|
|
2827
|
+
]
|
|
2828
|
+
},
|
|
2829
|
+
{
|
|
2830
|
+
"name": "spam",
|
|
2831
|
+
"path": "spam",
|
|
2832
|
+
"short": "Mark email threads as spam",
|
|
2833
|
+
"notes": "Accepts one or more box item IDs from hey box view output. Marks each thread as spam and removes it from the current box.",
|
|
2834
|
+
"synopsis": [
|
|
2835
|
+
"hey spam <box-item-id>... [flags]"
|
|
2836
|
+
],
|
|
2837
|
+
"examples": [
|
|
2838
|
+
"hey spam 12345",
|
|
2839
|
+
"hey spam 12345 67890"
|
|
2840
|
+
]
|
|
2841
|
+
},
|
|
2842
|
+
{
|
|
2843
|
+
"name": "stop-ignoring",
|
|
2844
|
+
"path": "stop-ignoring",
|
|
2845
|
+
"short": "Stop ignoring email threads",
|
|
2846
|
+
"notes": "Accepts one or more box item IDs from hey box view output. Reverses hey ignore for each thread.",
|
|
2847
|
+
"synopsis": [
|
|
2848
|
+
"hey stop-ignoring <box-item-id>... [flags]"
|
|
2849
|
+
],
|
|
2850
|
+
"examples": [
|
|
2851
|
+
"hey stop-ignoring 12345",
|
|
2852
|
+
"hey stop-ignoring 12345 67890"
|
|
2853
|
+
]
|
|
2854
|
+
},
|
|
2855
|
+
{
|
|
2856
|
+
"name": "thread",
|
|
2857
|
+
"path": "thread",
|
|
2858
|
+
"short": "Read email threads",
|
|
2859
|
+
"notes": "Subcommands: read. Thread IDs come from hey box view. Use the same ID with hey reply or hey forward.",
|
|
2860
|
+
"subcommands": [
|
|
2861
|
+
{
|
|
2862
|
+
"name": "read",
|
|
2863
|
+
"path": "thread read",
|
|
2864
|
+
"short": "Read a thread",
|
|
2865
|
+
"notes": "Returns a thread with all entries, oldest first. Entry bodies are Markdown; the creator is the account user, while a non-default send-as address is the optional sender on a hydrated entry. Each entry whose message was read carries recipients as to, cc and bcc contact lists. In JSON, inbound entries also carry received_via: the exact account delivery addresses HEY recorded, distinct from the visible recipients, with an optional resolved contact. --html writes an HTML document instead, one <article> per entry with a From/To/CC/BCC header and HEY's original body HTML. A thread that could only be read in part is refused unless --allow-partial is passed, in which case each entry's body_state says what was read. Use the topic ID with hey reply or hey forward.",
|
|
2866
|
+
"flags": [
|
|
2867
|
+
{
|
|
2868
|
+
"name": "allow-partial",
|
|
2869
|
+
"desc": "Take a thread that could only be read in part, with a notice saying what is missing"
|
|
2870
|
+
}
|
|
2871
|
+
],
|
|
2872
|
+
"synopsis": [
|
|
2873
|
+
"hey thread read <thread-id> [flags]"
|
|
2874
|
+
],
|
|
2875
|
+
"examples": [
|
|
2876
|
+
"hey thread read 12345",
|
|
2877
|
+
"hey thread read 12345 --json",
|
|
2878
|
+
"hey thread read 12345 --markdown"
|
|
2879
|
+
]
|
|
2880
|
+
}
|
|
2881
|
+
],
|
|
2882
|
+
"synopsis": [
|
|
2883
|
+
"hey thread <command> [flags]"
|
|
2884
|
+
]
|
|
2885
|
+
},
|
|
2886
|
+
{
|
|
2887
|
+
"name": "timetrack",
|
|
2888
|
+
"path": "timetrack",
|
|
2889
|
+
"short": "Track time",
|
|
2890
|
+
"notes": "Subcommands: start, stop, current, list, edit, delete, export, categories, category. Use current to check if tracking is active before start/stop. Stop takes --category to file the track as it stops it. List, edit and delete work on completed tracks and take the IDs list reports. Export writes CSV to stdout or safely saves it with --output.",
|
|
2891
|
+
"subcommands": [
|
|
2892
|
+
{
|
|
2893
|
+
"name": "categories",
|
|
2894
|
+
"path": "timetrack categories",
|
|
2895
|
+
"short": "List time track categories",
|
|
2896
|
+
"synopsis": [
|
|
2897
|
+
"hey timetrack categories [flags]"
|
|
2898
|
+
],
|
|
2899
|
+
"examples": [
|
|
2900
|
+
"hey timetrack categories",
|
|
2901
|
+
"hey timetrack categories --json"
|
|
2902
|
+
]
|
|
2903
|
+
},
|
|
2904
|
+
{
|
|
2905
|
+
"name": "category",
|
|
2906
|
+
"path": "timetrack category",
|
|
2907
|
+
"short": "Manage time track categories",
|
|
2908
|
+
"subcommands": [
|
|
2909
|
+
{
|
|
2910
|
+
"name": "create",
|
|
2911
|
+
"path": "timetrack category create",
|
|
2912
|
+
"short": "Create a time track category",
|
|
2913
|
+
"synopsis": [
|
|
2914
|
+
"hey timetrack category create <title> [flags]"
|
|
2915
|
+
],
|
|
2916
|
+
"examples": [
|
|
2917
|
+
"hey timetrack category create \"Client work\""
|
|
2918
|
+
]
|
|
2919
|
+
},
|
|
2920
|
+
{
|
|
2921
|
+
"name": "delete",
|
|
2922
|
+
"path": "timetrack category delete",
|
|
2923
|
+
"short": "Delete a time track category",
|
|
2924
|
+
"synopsis": [
|
|
2925
|
+
"hey timetrack category delete <id> [flags]"
|
|
2926
|
+
],
|
|
2927
|
+
"examples": [
|
|
2928
|
+
"hey timetrack category delete 123"
|
|
2929
|
+
]
|
|
2930
|
+
},
|
|
2931
|
+
{
|
|
2932
|
+
"name": "rename",
|
|
2933
|
+
"path": "timetrack category rename",
|
|
2934
|
+
"short": "Rename a time track category",
|
|
2935
|
+
"synopsis": [
|
|
2936
|
+
"hey timetrack category rename <id> <title> [flags]"
|
|
2937
|
+
],
|
|
2938
|
+
"examples": [
|
|
2939
|
+
"hey timetrack category rename 123 \"Planning\""
|
|
2940
|
+
]
|
|
2941
|
+
}
|
|
2942
|
+
],
|
|
2943
|
+
"synopsis": [
|
|
2944
|
+
"hey timetrack category <command> [flags]"
|
|
2945
|
+
]
|
|
2946
|
+
},
|
|
2947
|
+
{
|
|
2948
|
+
"name": "current",
|
|
2949
|
+
"path": "timetrack current",
|
|
2950
|
+
"short": "Show current time tracking status",
|
|
2951
|
+
"synopsis": [
|
|
2952
|
+
"hey timetrack current [flags]"
|
|
2953
|
+
],
|
|
2954
|
+
"examples": [
|
|
2955
|
+
"hey timetrack current",
|
|
2956
|
+
"hey timetrack current --json"
|
|
2957
|
+
]
|
|
2958
|
+
},
|
|
2959
|
+
{
|
|
2960
|
+
"name": "delete",
|
|
2961
|
+
"path": "timetrack delete",
|
|
2962
|
+
"short": "Delete a time track",
|
|
2963
|
+
"synopsis": [
|
|
2964
|
+
"hey timetrack delete <id> [flags]"
|
|
2965
|
+
],
|
|
2966
|
+
"examples": [
|
|
2967
|
+
"hey timetrack delete 1042"
|
|
2968
|
+
]
|
|
2969
|
+
},
|
|
2970
|
+
{
|
|
2971
|
+
"name": "edit",
|
|
2972
|
+
"path": "timetrack edit",
|
|
2973
|
+
"short": "Edit a completed time track",
|
|
2974
|
+
"flags": [
|
|
2975
|
+
{
|
|
2976
|
+
"name": "category",
|
|
2977
|
+
"value": true,
|
|
2978
|
+
"desc": "Category title to file the track under, created if HEY has none by that title"
|
|
2979
|
+
},
|
|
2980
|
+
{
|
|
2981
|
+
"name": "end",
|
|
2982
|
+
"value": true,
|
|
2983
|
+
"desc": "New end, as YYYY-MM-DDTHH:MM in your time zone"
|
|
2984
|
+
},
|
|
2985
|
+
{
|
|
2986
|
+
"name": "notes",
|
|
2987
|
+
"value": true,
|
|
2988
|
+
"desc": "New notes"
|
|
2989
|
+
},
|
|
2990
|
+
{
|
|
2991
|
+
"name": "start",
|
|
2992
|
+
"value": true,
|
|
2993
|
+
"desc": "New start, as YYYY-MM-DDTHH:MM in your time zone"
|
|
2994
|
+
}
|
|
2995
|
+
],
|
|
2996
|
+
"synopsis": [
|
|
2997
|
+
"hey timetrack edit <id> [flags]"
|
|
2998
|
+
],
|
|
2999
|
+
"examples": [
|
|
3000
|
+
"hey timetrack edit 1042 --end 2026-08-22T17:30",
|
|
3001
|
+
"hey timetrack edit 1042 --category \"Client work\" --notes \"Invoice review\"",
|
|
3002
|
+
"hey timetrack edit 1042 --start 2026-08-22T09:00 --end 2026-08-22T11:15"
|
|
3003
|
+
]
|
|
3004
|
+
},
|
|
3005
|
+
{
|
|
3006
|
+
"name": "export",
|
|
3007
|
+
"path": "timetrack export",
|
|
3008
|
+
"short": "Export completed time tracks as CSV",
|
|
3009
|
+
"notes": "Writes HEY's CSV unchanged to stdout. Use --output to save it to a file; existing paths are preserved unless --force is set. The columns are Start, End, Duration, Category, and Notes.",
|
|
3010
|
+
"flags": [
|
|
3011
|
+
{
|
|
3012
|
+
"name": "force",
|
|
3013
|
+
"desc": "Replace an existing output file"
|
|
3014
|
+
},
|
|
3015
|
+
{
|
|
3016
|
+
"name": "output",
|
|
3017
|
+
"shorthand": "o",
|
|
3018
|
+
"value": true,
|
|
3019
|
+
"desc": "Save CSV to this file instead of stdout"
|
|
3020
|
+
}
|
|
3021
|
+
],
|
|
3022
|
+
"synopsis": [
|
|
3023
|
+
"hey timetrack export [flags]"
|
|
3024
|
+
],
|
|
3025
|
+
"examples": [
|
|
3026
|
+
"hey timetrack export > time-tracking.csv",
|
|
3027
|
+
"hey timetrack export --output time-tracking.csv",
|
|
3028
|
+
"hey timetrack export --output time-tracking.csv --force"
|
|
3029
|
+
]
|
|
3030
|
+
},
|
|
3031
|
+
{
|
|
3032
|
+
"name": "list",
|
|
3033
|
+
"path": "timetrack list",
|
|
3034
|
+
"short": "List completed time tracks",
|
|
3035
|
+
"notes": "Reads HEY's tracked time index, newest-ended first. Category is a title and is empty for an unfiled track. --category takes a category ID from hey timetrack categories.",
|
|
3036
|
+
"flags": [
|
|
3037
|
+
{
|
|
3038
|
+
"name": "all",
|
|
3039
|
+
"desc": "Fetch all results (override --limit)"
|
|
3040
|
+
},
|
|
3041
|
+
{
|
|
3042
|
+
"name": "category",
|
|
3043
|
+
"value": true,
|
|
3044
|
+
"desc": "Only tracks filed under this category ID"
|
|
3045
|
+
},
|
|
3046
|
+
{
|
|
3047
|
+
"name": "limit",
|
|
3048
|
+
"value": true,
|
|
3049
|
+
"desc": "Maximum number of time tracks to show"
|
|
3050
|
+
}
|
|
3051
|
+
],
|
|
3052
|
+
"synopsis": [
|
|
3053
|
+
"hey timetrack list [flags]"
|
|
3054
|
+
],
|
|
3055
|
+
"examples": [
|
|
3056
|
+
"hey timetrack list",
|
|
3057
|
+
"hey timetrack list --limit 10",
|
|
3058
|
+
"hey timetrack list --all --json"
|
|
3059
|
+
]
|
|
3060
|
+
},
|
|
3061
|
+
{
|
|
3062
|
+
"name": "start",
|
|
3063
|
+
"path": "timetrack start",
|
|
3064
|
+
"short": "Start time tracking",
|
|
3065
|
+
"synopsis": [
|
|
3066
|
+
"hey timetrack start [flags]"
|
|
3067
|
+
],
|
|
3068
|
+
"examples": [
|
|
3069
|
+
"hey timetrack start",
|
|
3070
|
+
"hey timetrack start --json"
|
|
3071
|
+
]
|
|
3072
|
+
},
|
|
3073
|
+
{
|
|
3074
|
+
"name": "stop",
|
|
3075
|
+
"path": "timetrack stop",
|
|
3076
|
+
"short": "Stop time tracking",
|
|
3077
|
+
"flags": [
|
|
3078
|
+
{
|
|
3079
|
+
"name": "category",
|
|
3080
|
+
"value": true,
|
|
3081
|
+
"desc": "Category title to file the stopped track under, created if HEY has none by that title"
|
|
3082
|
+
}
|
|
3083
|
+
],
|
|
3084
|
+
"synopsis": [
|
|
3085
|
+
"hey timetrack stop [flags]"
|
|
3086
|
+
],
|
|
3087
|
+
"examples": [
|
|
3088
|
+
"hey timetrack stop",
|
|
3089
|
+
"hey timetrack stop --category \"Client work\"",
|
|
3090
|
+
"hey timetrack stop --json"
|
|
3091
|
+
]
|
|
3092
|
+
}
|
|
3093
|
+
],
|
|
3094
|
+
"synopsis": [
|
|
3095
|
+
"hey timetrack <command> [flags]"
|
|
3096
|
+
]
|
|
3097
|
+
},
|
|
3098
|
+
{
|
|
3099
|
+
"name": "todo",
|
|
3100
|
+
"path": "todo",
|
|
3101
|
+
"short": "Create and manage to-dos",
|
|
3102
|
+
"notes": "Subcommands: list, add, complete, uncomplete, delete. Use list --ids-only to pipe IDs to complete/delete.",
|
|
3103
|
+
"subcommands": [
|
|
3104
|
+
{
|
|
3105
|
+
"name": "add",
|
|
3106
|
+
"path": "todo add",
|
|
3107
|
+
"short": "Create a new todo",
|
|
3108
|
+
"flags": [
|
|
3109
|
+
{
|
|
3110
|
+
"name": "date",
|
|
3111
|
+
"value": true,
|
|
3112
|
+
"desc": "Due date (YYYY-MM-DD)"
|
|
3113
|
+
},
|
|
3114
|
+
{
|
|
3115
|
+
"name": "title",
|
|
3116
|
+
"shorthand": "t",
|
|
3117
|
+
"value": true,
|
|
3118
|
+
"desc": "Todo title"
|
|
3119
|
+
}
|
|
3120
|
+
],
|
|
3121
|
+
"synopsis": [
|
|
3122
|
+
"hey todo add [title] [flags]"
|
|
3123
|
+
],
|
|
3124
|
+
"examples": [
|
|
3125
|
+
"hey todo add \"Buy groceries\"",
|
|
3126
|
+
"hey todo add -t \"Meeting prep\" --date 2026-01-20",
|
|
3127
|
+
"hey todo add --title \"Review PR\" --json"
|
|
3128
|
+
]
|
|
3129
|
+
},
|
|
3130
|
+
{
|
|
3131
|
+
"name": "complete",
|
|
3132
|
+
"path": "todo complete",
|
|
3133
|
+
"short": "Mark a todo as complete",
|
|
3134
|
+
"synopsis": [
|
|
3135
|
+
"hey todo complete <id> [flags]"
|
|
3136
|
+
],
|
|
3137
|
+
"examples": [
|
|
3138
|
+
"hey todo complete 456"
|
|
3139
|
+
]
|
|
3140
|
+
},
|
|
3141
|
+
{
|
|
3142
|
+
"name": "delete",
|
|
3143
|
+
"path": "todo delete",
|
|
3144
|
+
"short": "Delete a todo",
|
|
3145
|
+
"synopsis": [
|
|
3146
|
+
"hey todo delete <id> [flags]"
|
|
3147
|
+
],
|
|
3148
|
+
"examples": [
|
|
3149
|
+
"hey todo delete 456"
|
|
3150
|
+
]
|
|
3151
|
+
},
|
|
3152
|
+
{
|
|
3153
|
+
"name": "list",
|
|
3154
|
+
"path": "todo list",
|
|
3155
|
+
"short": "List todos",
|
|
3156
|
+
"flags": [
|
|
3157
|
+
{
|
|
3158
|
+
"name": "all",
|
|
3159
|
+
"desc": "Fetch all results (override --limit)"
|
|
3160
|
+
},
|
|
3161
|
+
{
|
|
3162
|
+
"name": "calendar",
|
|
3163
|
+
"value": true,
|
|
3164
|
+
"desc": "Calendar ID to read (defaults to the personal calendar)"
|
|
3165
|
+
},
|
|
3166
|
+
{
|
|
3167
|
+
"name": "ends-on",
|
|
3168
|
+
"value": true,
|
|
3169
|
+
"desc": "End date (YYYY-MM-DD)"
|
|
3170
|
+
},
|
|
3171
|
+
{
|
|
3172
|
+
"name": "limit",
|
|
3173
|
+
"value": true,
|
|
3174
|
+
"desc": "Maximum number of todos to show"
|
|
3175
|
+
},
|
|
3176
|
+
{
|
|
3177
|
+
"name": "starts-on",
|
|
3178
|
+
"value": true,
|
|
3179
|
+
"desc": "Start date (YYYY-MM-DD)"
|
|
3180
|
+
}
|
|
3181
|
+
],
|
|
3182
|
+
"synopsis": [
|
|
3183
|
+
"hey todo list [flags]"
|
|
3184
|
+
],
|
|
3185
|
+
"examples": [
|
|
3186
|
+
"hey todo list",
|
|
3187
|
+
"hey todo list --limit 10",
|
|
3188
|
+
"hey todo list --starts-on 2026-01-01 --ends-on 2026-01-31 --json"
|
|
3189
|
+
]
|
|
3190
|
+
},
|
|
3191
|
+
{
|
|
3192
|
+
"name": "uncomplete",
|
|
3193
|
+
"path": "todo uncomplete",
|
|
3194
|
+
"short": "Mark a todo as incomplete",
|
|
3195
|
+
"synopsis": [
|
|
3196
|
+
"hey todo uncomplete <id> [flags]"
|
|
3197
|
+
],
|
|
3198
|
+
"examples": [
|
|
3199
|
+
"hey todo uncomplete 456"
|
|
3200
|
+
]
|
|
3201
|
+
}
|
|
3202
|
+
],
|
|
3203
|
+
"synopsis": [
|
|
3204
|
+
"hey todo <command> [flags]"
|
|
3205
|
+
]
|
|
3206
|
+
},
|
|
3207
|
+
{
|
|
3208
|
+
"name": "trash",
|
|
3209
|
+
"path": "trash",
|
|
3210
|
+
"short": "Move email threads to Trash",
|
|
3211
|
+
"notes": "Accepts one or more box item IDs from hey box view output. Shared threads lose your access rather than being deleted for everyone.",
|
|
3212
|
+
"synopsis": [
|
|
3213
|
+
"hey trash <box-item-id>... [flags]"
|
|
3214
|
+
],
|
|
3215
|
+
"examples": [
|
|
3216
|
+
"hey trash 12345",
|
|
3217
|
+
"hey trash 12345 67890"
|
|
3218
|
+
]
|
|
3219
|
+
},
|
|
3220
|
+
{
|
|
3221
|
+
"name": "tui",
|
|
3222
|
+
"path": "tui",
|
|
3223
|
+
"short": "Launch the interactive terminal UI",
|
|
3224
|
+
"flags": [
|
|
3225
|
+
{
|
|
3226
|
+
"name": "instance",
|
|
3227
|
+
"value": true,
|
|
3228
|
+
"desc": "Name this TUI for remote open requests"
|
|
3229
|
+
},
|
|
3230
|
+
{
|
|
3231
|
+
"name": "remote",
|
|
3232
|
+
"desc": "Open the destination in a running TUI and exit"
|
|
3233
|
+
},
|
|
3234
|
+
{
|
|
3235
|
+
"name": "screener",
|
|
3236
|
+
"desc": "Open The Screener"
|
|
3237
|
+
},
|
|
3238
|
+
{
|
|
3239
|
+
"name": "topic",
|
|
3240
|
+
"value": true,
|
|
3241
|
+
"desc": "Open a thread by topic ID"
|
|
3242
|
+
},
|
|
3243
|
+
{
|
|
3244
|
+
"name": "topic-title",
|
|
3245
|
+
"value": true,
|
|
3246
|
+
"desc": "Set the title of a directly opened thread"
|
|
3247
|
+
}
|
|
3248
|
+
],
|
|
3249
|
+
"synopsis": [
|
|
3250
|
+
"hey tui [flags]"
|
|
3251
|
+
]
|
|
3252
|
+
},
|
|
3253
|
+
{
|
|
3254
|
+
"name": "unseen",
|
|
3255
|
+
"path": "unseen",
|
|
3256
|
+
"short": "Mark email threads as unseen",
|
|
3257
|
+
"notes": "Accepts one or more box item IDs from hey box view output. Marks each email thread as unseen/unread.",
|
|
3258
|
+
"synopsis": [
|
|
3259
|
+
"hey unseen <box-item-id>... [flags]"
|
|
3260
|
+
],
|
|
3261
|
+
"examples": [
|
|
3262
|
+
"hey unseen 12345",
|
|
3263
|
+
"hey unseen 12345 67890"
|
|
3264
|
+
]
|
|
3265
|
+
},
|
|
3266
|
+
{
|
|
3267
|
+
"name": "unshare",
|
|
3268
|
+
"path": "unshare",
|
|
3269
|
+
"short": "Turn off an email thread's sharing link",
|
|
3270
|
+
"notes": "Accepts the topic_id from hey box view, hey label view, or hey search output. The thread remains in HEY.",
|
|
3271
|
+
"synopsis": [
|
|
3272
|
+
"hey unshare <thread-id> [flags]"
|
|
3273
|
+
],
|
|
3274
|
+
"examples": [
|
|
3275
|
+
"hey unshare 12345"
|
|
3276
|
+
]
|
|
3277
|
+
},
|
|
3278
|
+
{
|
|
3279
|
+
"name": "upgrade",
|
|
3280
|
+
"path": "upgrade",
|
|
3281
|
+
"short": "Upgrade hey to the latest release",
|
|
3282
|
+
"notes": "Exits 0 only when already current or when the upgrade was applied and confirmed. An optional version argument pins the target release for native and mise installs; upgrades never downgrade. Error codes: upgrade_required (an update exists but this install method must be upgraded another way — follow the hint), upgrade_incomplete, upgrade_unverified, upgrade_failed.",
|
|
3283
|
+
"synopsis": [
|
|
3284
|
+
"hey upgrade [version] [flags]"
|
|
3285
|
+
],
|
|
3286
|
+
"examples": [
|
|
3287
|
+
"hey upgrade",
|
|
3288
|
+
"hey upgrade --json",
|
|
3289
|
+
"hey upgrade 0.2.0-rc.1"
|
|
3290
|
+
]
|
|
3291
|
+
},
|
|
3292
|
+
{
|
|
3293
|
+
"name": "version",
|
|
3294
|
+
"path": "version",
|
|
3295
|
+
"short": "Show the installed hey version",
|
|
3296
|
+
"synopsis": [
|
|
3297
|
+
"hey version [flags]"
|
|
3298
|
+
],
|
|
3299
|
+
"examples": [
|
|
3300
|
+
"hey version",
|
|
3301
|
+
"hey version --json"
|
|
3302
|
+
]
|
|
3303
|
+
},
|
|
3304
|
+
{
|
|
3305
|
+
"name": "watch",
|
|
3306
|
+
"path": "watch",
|
|
3307
|
+
"short": "Follow email threads and calendars as they change",
|
|
3308
|
+
"notes": "Long-running. Writes one JSON object per changed thread to stdout (NDJSON), not the usual envelope. Use --exit-on-first to block until one change lands and then exit.",
|
|
3309
|
+
"flags": [
|
|
3310
|
+
{
|
|
3311
|
+
"name": "box",
|
|
3312
|
+
"value": true,
|
|
3313
|
+
"desc": "Box whose changes to report, by name or ID (repeatable, defaults to all; every box is followed either way, so new mail is judged across all of them)"
|
|
3314
|
+
},
|
|
3315
|
+
{
|
|
3316
|
+
"name": "events",
|
|
3317
|
+
"value": true,
|
|
3318
|
+
"desc": "Changes to report: added, updated, deleted, resync and new for mail; recording_added, recording_updated, recording_deleted, calendar_added, calendar_updated, calendar_deleted and calendar_resync for the calendars",
|
|
3319
|
+
"default": "[added,updated,deleted,resync,recording_added,recording_updated,recording_deleted,calendar_added,calendar_updated,calendar_deleted,calendar_resync]"
|
|
3320
|
+
},
|
|
3321
|
+
{
|
|
3322
|
+
"name": "exit-on-first",
|
|
3323
|
+
"desc": "Exit after the first change"
|
|
3324
|
+
},
|
|
3325
|
+
{
|
|
3326
|
+
"name": "run-async",
|
|
3327
|
+
"value": true,
|
|
3328
|
+
"desc": "Shell command to spawn per change, without waiting for it"
|
|
3329
|
+
},
|
|
3330
|
+
{
|
|
3331
|
+
"name": "run-sync",
|
|
3332
|
+
"value": true,
|
|
3333
|
+
"desc": "Shell command to run per change, one at a time, waiting for each"
|
|
3334
|
+
},
|
|
3335
|
+
{
|
|
3336
|
+
"name": "since",
|
|
3337
|
+
"value": true,
|
|
3338
|
+
"desc": "Report changes since this time first (RFC 3339 or YYYY-MM-DD)"
|
|
3339
|
+
},
|
|
3340
|
+
{
|
|
3341
|
+
"name": "timeout",
|
|
3342
|
+
"value": true,
|
|
3343
|
+
"desc": "Give up waiting after this long (for example 30m)",
|
|
3344
|
+
"default": "0s"
|
|
3345
|
+
}
|
|
3346
|
+
],
|
|
3347
|
+
"synopsis": [
|
|
3348
|
+
"hey watch [flags]"
|
|
3349
|
+
],
|
|
3350
|
+
"examples": [
|
|
3351
|
+
"hey watch",
|
|
3352
|
+
"hey watch --box imbox --events added",
|
|
3353
|
+
"hey watch --box imbox --events new --exit-on-first"
|
|
3354
|
+
]
|
|
3355
|
+
},
|
|
3356
|
+
{
|
|
3357
|
+
"name": "workflow",
|
|
3358
|
+
"path": "workflow",
|
|
3359
|
+
"short": "List and manage email workflows",
|
|
3360
|
+
"usage": "workflow <id>",
|
|
3361
|
+
"notes": "The workflow ID comes from hey workflow list. Detail returns stage IDs in position order.",
|
|
3362
|
+
"subcommands": [
|
|
3363
|
+
{
|
|
3364
|
+
"name": "add",
|
|
3365
|
+
"path": "workflow add",
|
|
3366
|
+
"short": "Add email threads to a workflow stage",
|
|
3367
|
+
"flags": [
|
|
3368
|
+
{
|
|
3369
|
+
"name": "stage",
|
|
3370
|
+
"value": true,
|
|
3371
|
+
"desc": "Stage ID (required)"
|
|
3372
|
+
},
|
|
3373
|
+
{
|
|
3374
|
+
"name": "to",
|
|
3375
|
+
"value": true,
|
|
3376
|
+
"desc": "Workflow ID (required)"
|
|
3377
|
+
}
|
|
3378
|
+
],
|
|
3379
|
+
"synopsis": [
|
|
3380
|
+
"hey workflow add <thread-id>... [flags]"
|
|
3381
|
+
],
|
|
3382
|
+
"examples": [
|
|
3383
|
+
"hey workflow add 501 --to 123 --stage 456",
|
|
3384
|
+
"hey workflow add 501 502 --to 123 --stage 456"
|
|
3385
|
+
]
|
|
3386
|
+
},
|
|
3387
|
+
{
|
|
3388
|
+
"name": "create",
|
|
3389
|
+
"path": "workflow create",
|
|
3390
|
+
"short": "Create an email workflow",
|
|
3391
|
+
"synopsis": [
|
|
3392
|
+
"hey workflow create <name> [flags]"
|
|
3393
|
+
],
|
|
3394
|
+
"examples": [
|
|
3395
|
+
"hey workflow create \"Hiring\"",
|
|
3396
|
+
"hey workflow create \"Sales pipeline\" --account 12345"
|
|
3397
|
+
]
|
|
3398
|
+
},
|
|
3399
|
+
{
|
|
3400
|
+
"name": "delete",
|
|
3401
|
+
"path": "workflow delete",
|
|
3402
|
+
"short": "Delete an email workflow",
|
|
3403
|
+
"synopsis": [
|
|
3404
|
+
"hey workflow delete <id> [flags]"
|
|
3405
|
+
],
|
|
3406
|
+
"examples": [
|
|
3407
|
+
"hey workflow delete 123"
|
|
3408
|
+
]
|
|
3409
|
+
},
|
|
3410
|
+
{
|
|
3411
|
+
"name": "list",
|
|
3412
|
+
"path": "workflow list",
|
|
3413
|
+
"short": "List your email workflows",
|
|
3414
|
+
"notes": "Returns workflow IDs, names, and linked account IDs. Use an ID with hey workflow view; use --account to limit the list to one linked mail account.",
|
|
3415
|
+
"flags": [
|
|
3416
|
+
{
|
|
3417
|
+
"name": "all",
|
|
3418
|
+
"desc": "Show every workflow (override --limit)"
|
|
3419
|
+
},
|
|
3420
|
+
{
|
|
3421
|
+
"name": "limit",
|
|
3422
|
+
"value": true,
|
|
3423
|
+
"desc": "Maximum number of workflows to show"
|
|
3424
|
+
}
|
|
3425
|
+
],
|
|
3426
|
+
"synopsis": [
|
|
3427
|
+
"hey workflow list [flags]"
|
|
3428
|
+
],
|
|
3429
|
+
"examples": [
|
|
3430
|
+
"hey workflow list",
|
|
3431
|
+
"hey workflow list --account 12345",
|
|
3432
|
+
"hey workflow list --limit 10"
|
|
3433
|
+
]
|
|
3434
|
+
},
|
|
3435
|
+
{
|
|
3436
|
+
"name": "move",
|
|
3437
|
+
"path": "workflow move",
|
|
3438
|
+
"short": "Move email threads to another workflow stage",
|
|
3439
|
+
"flags": [
|
|
3440
|
+
{
|
|
3441
|
+
"name": "to",
|
|
3442
|
+
"value": true,
|
|
3443
|
+
"desc": "Destination stage ID (required)"
|
|
3444
|
+
},
|
|
3445
|
+
{
|
|
3446
|
+
"name": "workflow",
|
|
3447
|
+
"value": true,
|
|
3448
|
+
"desc": "Workflow ID (required)"
|
|
3449
|
+
}
|
|
3450
|
+
],
|
|
3451
|
+
"synopsis": [
|
|
3452
|
+
"hey workflow move <thread-id>... [flags]"
|
|
3453
|
+
],
|
|
3454
|
+
"examples": [
|
|
3455
|
+
"hey workflow move 501 --workflow 123 --to 789",
|
|
3456
|
+
"hey workflow move 501 502 --workflow 123 --to 789"
|
|
3457
|
+
]
|
|
3458
|
+
},
|
|
3459
|
+
{
|
|
3460
|
+
"name": "remove",
|
|
3461
|
+
"path": "workflow remove",
|
|
3462
|
+
"short": "Remove email threads from a workflow",
|
|
3463
|
+
"flags": [
|
|
3464
|
+
{
|
|
3465
|
+
"name": "from",
|
|
3466
|
+
"value": true,
|
|
3467
|
+
"desc": "Workflow ID (required)"
|
|
3468
|
+
}
|
|
3469
|
+
],
|
|
3470
|
+
"synopsis": [
|
|
3471
|
+
"hey workflow remove <thread-id>... [flags]"
|
|
3472
|
+
],
|
|
3473
|
+
"examples": [
|
|
3474
|
+
"hey workflow remove 501 --from 123",
|
|
3475
|
+
"hey workflow remove 501 502 --from 123"
|
|
3476
|
+
]
|
|
3477
|
+
},
|
|
3478
|
+
{
|
|
3479
|
+
"name": "stage",
|
|
3480
|
+
"path": "workflow stage",
|
|
3481
|
+
"short": "Manage workflow stages",
|
|
3482
|
+
"notes": "Create adds an Untitled stage; use hey workflow view <id> to find its stage ID, then update it with --name.",
|
|
3483
|
+
"subcommands": [
|
|
3484
|
+
{
|
|
3485
|
+
"name": "create",
|
|
3486
|
+
"path": "workflow stage create",
|
|
3487
|
+
"short": "Add an Untitled stage to a workflow",
|
|
3488
|
+
"synopsis": [
|
|
3489
|
+
"hey workflow stage create <workflow-id> [flags]"
|
|
3490
|
+
],
|
|
3491
|
+
"examples": [
|
|
3492
|
+
"hey workflow stage create 123"
|
|
3493
|
+
]
|
|
3494
|
+
},
|
|
3495
|
+
{
|
|
3496
|
+
"name": "delete",
|
|
3497
|
+
"path": "workflow stage delete",
|
|
3498
|
+
"short": "Delete a workflow stage",
|
|
3499
|
+
"synopsis": [
|
|
3500
|
+
"hey workflow stage delete <workflow-id> <stage-id> [flags]"
|
|
3501
|
+
],
|
|
3502
|
+
"examples": [
|
|
3503
|
+
"hey workflow stage delete 123 456"
|
|
3504
|
+
]
|
|
3505
|
+
},
|
|
3506
|
+
{
|
|
3507
|
+
"name": "update",
|
|
3508
|
+
"path": "workflow stage update",
|
|
3509
|
+
"short": "Rename a workflow stage",
|
|
3510
|
+
"flags": [
|
|
3511
|
+
{
|
|
3512
|
+
"name": "name",
|
|
3513
|
+
"value": true,
|
|
3514
|
+
"desc": "New stage name (required)"
|
|
3515
|
+
}
|
|
3516
|
+
],
|
|
3517
|
+
"synopsis": [
|
|
3518
|
+
"hey workflow stage update <workflow-id> <stage-id> [flags]"
|
|
3519
|
+
],
|
|
3520
|
+
"examples": [
|
|
3521
|
+
"hey workflow stage update 123 456 --name \"Interviewing\""
|
|
3522
|
+
]
|
|
3523
|
+
}
|
|
3524
|
+
],
|
|
3525
|
+
"synopsis": [
|
|
3526
|
+
"hey workflow stage <command> [flags]"
|
|
3527
|
+
]
|
|
3528
|
+
},
|
|
3529
|
+
{
|
|
3530
|
+
"name": "update",
|
|
3531
|
+
"path": "workflow update",
|
|
3532
|
+
"short": "Rename an email workflow",
|
|
3533
|
+
"flags": [
|
|
3534
|
+
{
|
|
3535
|
+
"name": "name",
|
|
3536
|
+
"value": true,
|
|
3537
|
+
"desc": "New workflow name (required)"
|
|
3538
|
+
}
|
|
3539
|
+
],
|
|
3540
|
+
"synopsis": [
|
|
3541
|
+
"hey workflow update <id> [flags]"
|
|
3542
|
+
],
|
|
3543
|
+
"examples": [
|
|
3544
|
+
"hey workflow update 123 --name \"Recruiting\""
|
|
3545
|
+
]
|
|
3546
|
+
},
|
|
3547
|
+
{
|
|
3548
|
+
"name": "view",
|
|
3549
|
+
"path": "workflow view",
|
|
3550
|
+
"short": "View a workflow and its stages",
|
|
3551
|
+
"notes": "The workflow ID comes from hey workflow list. Detail returns stage IDs in position order.",
|
|
3552
|
+
"synopsis": [
|
|
3553
|
+
"hey workflow view <id> [flags]"
|
|
3554
|
+
],
|
|
3555
|
+
"examples": [
|
|
3556
|
+
"hey workflow view 123",
|
|
3557
|
+
"hey workflow view 123 --json",
|
|
3558
|
+
"hey workflow view 123 --ids-only"
|
|
3559
|
+
]
|
|
3560
|
+
}
|
|
3561
|
+
],
|
|
3562
|
+
"synopsis": [
|
|
3563
|
+
"hey workflow <command> [flags]"
|
|
3564
|
+
],
|
|
3565
|
+
"examples": [
|
|
3566
|
+
"hey workflow list",
|
|
3567
|
+
"hey workflow view 123",
|
|
3568
|
+
"hey workflow view 123 --json"
|
|
3569
|
+
]
|
|
3570
|
+
}
|
|
3571
|
+
]
|
|
3572
|
+
}
|