maeve-cli 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -9
- package/dist/index.js +716 -297
- package/examples/create-content.json +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -150,14 +150,17 @@ maeve media:list --workspace <id> --type image --label-ids <id,id> --favorite
|
|
|
150
150
|
maeve media:list --workspace <id> --state deleted
|
|
151
151
|
maeve media:upload ./image.png --workspace <id>
|
|
152
152
|
maeve media:get --workspace <id> --id <mediaId>
|
|
153
|
+
maeve media:usage-history --workspace <id> --id <mediaId>
|
|
153
154
|
maeve media:update --workspace <id> --id <mediaId> --json media-update.json
|
|
154
155
|
maeve media:download-url --workspace <id> --id <mediaId>
|
|
155
156
|
maeve media:view-url --workspace <id> --id <mediaId>
|
|
156
157
|
maeve media:archive --workspace <id> --id <mediaId>
|
|
157
158
|
maeve media:delete --workspace <id> --id <mediaId>
|
|
159
|
+
maeve media:restore --workspace <id> --id <mediaId>
|
|
160
|
+
maeve media:delete-permanent --workspace <id> --id <mediaId> --yes
|
|
158
161
|
```
|
|
159
162
|
|
|
160
|
-
`media:delete` and `media:bulk-delete` move active media to the Bin. The API returns `deleteAfter`; media attached to scheduled posts is blocked with `MEDIA_ATTACHED_TO_SCHEDULED_POST`.
|
|
163
|
+
`media:delete` and `media:bulk-delete` move active media to the Bin. The API returns `deleteAfter`; media attached to scheduled posts is blocked with `MEDIA_ATTACHED_TO_SCHEDULED_POST`. Use `media:restore` to bring an item back from the Bin, or `media:delete-permanent` to remove it for good (requires `--yes`).
|
|
161
164
|
|
|
162
165
|
Folders and labels:
|
|
163
166
|
|
|
@@ -175,9 +178,28 @@ maeve media:labels:update --workspace <id> --id <labelId> --json media-label.jso
|
|
|
175
178
|
maeve media:labels:delete --workspace <id> --id <labelId>
|
|
176
179
|
maeve media:labels:attach --workspace <id> --id <mediaId> --json media-label-ids.json
|
|
177
180
|
maeve media:labels:detach --workspace <id> --id <mediaId> --json media-label-ids.json
|
|
181
|
+
maeve media:labels:usage --workspace <id> --label-ids <id,id>
|
|
182
|
+
maeve media:labels:health --workspace <id>
|
|
183
|
+
maeve media:labels:archive --workspace <id> --id <labelId>
|
|
184
|
+
maeve media:labels:restore --workspace <id> --id <labelId>
|
|
185
|
+
maeve media:labels:merge --workspace <id> --id <sourceLabelId> --json media-label-merge.json
|
|
178
186
|
```
|
|
179
187
|
|
|
180
|
-
`media:labels:*` is the canonical Media Room organization command family. If a global install still shows `media:tags:*`, upgrade `maeve-cli`.
|
|
188
|
+
`media:labels:*` is the canonical Media Room organization command family. If a global install still shows `media:tags:*`, upgrade `maeve-cli`. `media:labels:merge` folds the source label into a target; its payload is `{ "targetLabelId": "<id>" }`.
|
|
189
|
+
|
|
190
|
+
Label groups:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
maeve media:label-groups:list --workspace <id>
|
|
194
|
+
maeve media:label-groups:create --workspace <id> --json label-group.json
|
|
195
|
+
maeve media:label-groups:update --workspace <id> --id <groupId> --json label-group.json
|
|
196
|
+
maeve media:label-groups:reorder --workspace <id> --json label-group-order.json
|
|
197
|
+
maeve media:label-groups:add-labels --workspace <id> --id <groupId> --json label-ids.json
|
|
198
|
+
maeve media:label-groups:ungroup-labels --workspace <id> --json label-ids.json
|
|
199
|
+
maeve media:label-groups:delete --workspace <id> --id <groupId> --json label-group-delete.json
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
`media:label-groups:reorder` takes the full `{ "groupIds": [...] }` order. `add-labels` and `ungroup-labels` take `{ "labelIds": [...] }`. `delete` takes `{ "mode": "archive-labels" }` or `{ "mode": "ungroup-labels" }` to say what happens to the labels in the group.
|
|
181
203
|
|
|
182
204
|
Bulk operations:
|
|
183
205
|
|
|
@@ -187,6 +209,8 @@ maeve media:bulk-move --workspace <id> --json media-bulk-move.json
|
|
|
187
209
|
maeve media:bulk-label --workspace <id> --json media-bulk-labels.json
|
|
188
210
|
maeve media:bulk-unlabel --workspace <id> --json media-bulk-labels.json
|
|
189
211
|
maeve media:bulk-delete --workspace <id> --json media-ids.json --yes
|
|
212
|
+
maeve media:bulk-restore --workspace <id> --json media-ids.json
|
|
213
|
+
maeve media:bulk-delete-forever --workspace <id> --json media-ids.json --yes
|
|
190
214
|
```
|
|
191
215
|
|
|
192
216
|
### Content
|
|
@@ -201,7 +225,6 @@ maeve content:schedule --workspace <id> --id <contentId> --scheduled-at "2026-05
|
|
|
201
225
|
maeve content:intended-time --workspace <id> --id <contentId> --scheduled-at "2026-05-01T10:00:00+10:00"
|
|
202
226
|
maeve content:notes --workspace <id> --id <contentId> --notes "<p>Planning notes</p>"
|
|
203
227
|
maeve content:notes --workspace <id> --id <contentId> --json notes.json
|
|
204
|
-
maeve content:workflow --workspace <id> --id <contentId> --status drafting
|
|
205
228
|
maeve content:publish --workspace <id> --id <contentId> --yes
|
|
206
229
|
maeve content:published-caption --workspace <id> --id <contentId> --json published-caption.json --yes
|
|
207
230
|
maeve content:archive --workspace <id> --id <contentId>
|
|
@@ -248,6 +271,52 @@ maeve client-reviews:update-participant --workspace <id> --batch <batchId> --jso
|
|
|
248
271
|
maeve client-reviews:comment --workspace <id> --batch <batchId> --json comment.json
|
|
249
272
|
```
|
|
250
273
|
|
|
274
|
+
### Campaigns
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
maeve campaigns:list --workspace <id> --include-phases
|
|
278
|
+
maeve campaigns:get --workspace <id> --id <campaignId>
|
|
279
|
+
maeve campaigns:content --workspace <id> --id <campaignId> --status scheduled
|
|
280
|
+
maeve campaigns:create --workspace <id> --json campaign.json
|
|
281
|
+
maeve campaigns:update --workspace <id> --id <campaignId> --json campaign.json
|
|
282
|
+
maeve campaigns:archive --workspace <id> --id <campaignId>
|
|
283
|
+
maeve campaigns:restore --workspace <id> --id <campaignId>
|
|
284
|
+
maeve campaigns:phases:list --workspace <id> --id <campaignId>
|
|
285
|
+
maeve campaigns:phases:create --workspace <id> --id <campaignId> --json campaign-phase.json
|
|
286
|
+
maeve campaigns:phases:replace --workspace <id> --id <campaignId> --json campaign-phases.json
|
|
287
|
+
maeve campaigns:phases:update --workspace <id> --id <campaignId> --phase-id <phaseId> --json campaign-phase.json
|
|
288
|
+
maeve campaigns:phases:delete --workspace <id> --id <campaignId> --phase-id <phaseId> --yes
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
Use `campaigns:list` and `campaigns:get` to find the campaign and phase IDs that
|
|
292
|
+
`content:create` and `content:update` accept in `campaignId` / `campaignPhaseId`. Create
|
|
293
|
+
payload: `name`, `startDate`, and `endDate` are required (dates are ISO 8601); `color`,
|
|
294
|
+
`goal`, `description`, `targetPlatforms`, `estimatedBudget`, `actualBudget`, and
|
|
295
|
+
`budgetCurrency` are optional. `campaigns:phases:replace` takes the full `{ "phases": [...] }`
|
|
296
|
+
array.
|
|
297
|
+
|
|
298
|
+
```json
|
|
299
|
+
{
|
|
300
|
+
"name": "May launch",
|
|
301
|
+
"startDate": "2026-05-01",
|
|
302
|
+
"endDate": "2026-05-31",
|
|
303
|
+
"color": "#2563EB",
|
|
304
|
+
"targetPlatforms": ["instagram", "facebook"]
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Strategy
|
|
309
|
+
|
|
310
|
+
Read-only. The CLI exposes the strategy reads the public API serves; strategy is edited in
|
|
311
|
+
the app.
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
maeve strategy:foundation --workspace <id>
|
|
315
|
+
maeve strategy:goals --workspace <id>
|
|
316
|
+
maeve strategy:goals:metrics --workspace <id>
|
|
317
|
+
maeve strategy:goal --workspace <id> --id <goalId>
|
|
318
|
+
```
|
|
319
|
+
|
|
251
320
|
### Taxonomy and hashtags
|
|
252
321
|
|
|
253
322
|
```bash
|
|
@@ -278,7 +347,7 @@ maeve analytics:report --workspace <id> --provider instagram --json analytics-re
|
|
|
278
347
|
|
|
279
348
|
`analytics:posts` is single-integration. `analytics:posts-aggregate` accepts `--integration-ids` and `--sort-by recent|engagement|views`.
|
|
280
349
|
|
|
281
|
-
`analytics:report` is
|
|
350
|
+
`analytics:report` is team-plan only. It saves the PDF to `--output`. Stdout stays JSON metadata.
|
|
282
351
|
|
|
283
352
|
### Inbox
|
|
284
353
|
|
|
@@ -289,6 +358,11 @@ maeve inbox:stats --workspace <id>
|
|
|
289
358
|
maeve inbox:read --workspace <id> --thread <threadId>
|
|
290
359
|
maeve inbox:unread --workspace <id> --thread <threadId>
|
|
291
360
|
maeve inbox:read-all --workspace <id> --json inbox-read-all.json --yes
|
|
361
|
+
maeve inbox:resolve --workspace <id> --thread <threadId>
|
|
362
|
+
maeve inbox:reopen --workspace <id> --thread <threadId>
|
|
363
|
+
maeve inbox:resolve-all --workspace <id> --json inbox-resolve-all.json --yes
|
|
364
|
+
maeve inbox:resolve-message --workspace <id> --message <messageId>
|
|
365
|
+
maeve inbox:reopen-message --workspace <id> --message <messageId>
|
|
292
366
|
maeve inbox:reply --workspace <id> --thread <threadId> --json inbox-reply.json --yes
|
|
293
367
|
maeve inbox:note --workspace <id> --thread <threadId> --json inbox-note.json
|
|
294
368
|
maeve inbox:moderate --workspace <id> --message <messageId> --json inbox-moderate.json --yes
|
|
@@ -296,6 +370,8 @@ maeve inbox:retry-message --workspace <id> --message <messageId> --yes
|
|
|
296
370
|
maeve inbox:delete-failed --workspace <id> --message <messageId> --yes
|
|
297
371
|
```
|
|
298
372
|
|
|
373
|
+
`inbox:resolve` and `inbox:resolve-message` accept an optional `--json` file with a resolution reason and note. `inbox:resolve-all` resolves every thread matching the filter payload and requires `--yes`. The reopen commands take no body.
|
|
374
|
+
|
|
299
375
|
### Grid planner
|
|
300
376
|
|
|
301
377
|
```bash
|
|
@@ -310,6 +386,21 @@ maeve grid:remove-cover --workspace <id> --item <itemId>
|
|
|
310
386
|
maeve grid:promote --workspace <id> --item <itemId> --json grid-promote.json --yes
|
|
311
387
|
```
|
|
312
388
|
|
|
389
|
+
### Boosts
|
|
390
|
+
|
|
391
|
+
Read-only, team plan. The CLI reads boost state for reporting but does not create, pause,
|
|
392
|
+
resume, delete, or estimate boosts, because those spend Meta ad budget. Run those from the
|
|
393
|
+
app.
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
maeve boosts:list --workspace <id> --statuses active,paused
|
|
397
|
+
maeve boosts:get --workspace <id> --id <boostId>
|
|
398
|
+
maeve boosts:performance --workspace <id> --id <boostId>
|
|
399
|
+
maeve boosts:ad-accounts --workspace <id> --integration <integrationId>
|
|
400
|
+
maeve boosts:boosted-content-ids --workspace <id>
|
|
401
|
+
maeve boosts:by-content --workspace <id> --content <contentId>
|
|
402
|
+
```
|
|
403
|
+
|
|
313
404
|
## Payloads
|
|
314
405
|
|
|
315
406
|
### Content
|
|
@@ -355,12 +446,10 @@ Common fields:
|
|
|
355
446
|
- `settings`: provider settings from integration capabilities only. Media metadata belongs in `contentMedia`.
|
|
356
447
|
- `firstComment`, `shareToFeed`: optional publish behavior fields.
|
|
357
448
|
- `pillarIds`, `formatIds`, `labelIds`: arrays of workspace taxonomy UUIDs.
|
|
358
|
-
- `campaignId`, `campaignPhaseId`: optional campaign links. Use `null` to clear when updating.
|
|
359
|
-
- `priority`: `urgent`, `high`, `medium`, or `low`.
|
|
449
|
+
- `campaignId`, `campaignPhaseId`: optional root-post campaign links. Use `null` to clear when updating.
|
|
450
|
+
- `priority`: optional root-post priority, `urgent`, `high`, `medium`, or `low`.
|
|
360
451
|
- `threadMessages`: items for thread-style content using `captions` and optional `contentMedia`.
|
|
361
452
|
|
|
362
|
-
`content:workflow` accepts only the user-mutable workflow statuses: `idea` or `drafting`.
|
|
363
|
-
|
|
364
453
|
`content:published-caption` edits the provider caption for an already-published Facebook item and requires `--yes`.
|
|
365
454
|
|
|
366
455
|
```json
|
|
@@ -371,7 +460,7 @@ Common fields:
|
|
|
371
460
|
|
|
372
461
|
### Approvals and client reviews
|
|
373
462
|
|
|
374
|
-
Approval and client review commands need an
|
|
463
|
+
Approval and client review commands need an team workspace plan and the role shown in each command's `--help`. Payloads mirror the public API DTOs.
|
|
375
464
|
|
|
376
465
|
Internal approval request:
|
|
377
466
|
|