@audienti/cli 0.1.45 → 0.1.51

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/CHANGELOG.md CHANGED
@@ -4,8 +4,57 @@ All notable changes to the Audienti CLI are documented here.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.1.51] - 2026-09-03
8
+
9
+ ### Added
10
+
11
+ - Add first-class `audienti inbox-ops queue`, `filters`, and `rule` commands backed by owner-scoped account APIs, authoritative row-derived sender/domain identities, all four allow/filter rule combinations, and unchanged JSON output.
12
+
13
+ ## [0.1.50] - 2026-09-02
14
+
15
+ ### Added
16
+
17
+ - Add preview-first `audienti prospects move-account` with dual-account selection, optional destination assignment, motion and list mappings, manifest-bound apply, stable human-readable summaries, and unchanged final JSON output.
18
+
19
+ ## [0.1.49] - 2026-09-02
20
+
21
+ ### Added
22
+
23
+ - Expose configured user and social-cookie proxy geography, effective proxy source, and server-calculated LinkedIn quotas, warm-up ramp, outstanding-invitation inventory state, and current invitation capacity in `audienti setup play preflight` without exposing proxy or authentication secrets.
24
+
25
+ ## [0.1.48] - 2026-09-02
26
+
27
+ ### Added
28
+
29
+ - Add account-scoped `audienti users automation show` and preview-first `update` commands for principal-specific LinkedIn controls, category and aggregate visibility limits, warm-up ramping, unchanged JSON readback, and explicit `--apply` persistence.
30
+ - Add reversible `audienti icps archive` and `restore` commands, active/archived/all list filtering, lifecycle status in ICP analytics, and inspectable primary-motion and preserved-secondary-link effects.
31
+
32
+ ## [0.1.47] - 2026-09-02
33
+
34
+ ### Added
35
+
36
+ - Expose server-derived social-cookie active days, working hours, effective timezone, and current in-window status in `audienti setup play preflight`.
37
+
38
+ ### Changed
39
+
40
+ - Allow `audienti motions update <motn_id> --payload <file.json>` to replace an account-scoped motion principal and backing list, including `list_id: null` clearing.
41
+
42
+ ## [0.1.46] - 2026-09-02
43
+
44
+ ### Added
45
+
46
+ - Add `audienti analytics icps` and the account-scoped ICP analytics API for current source-ICP prospect mix, rolling seven-day contribution, per-ICP counts, creation timestamps and human-readable ages, and explicit unattributed semantics.
47
+
48
+ ### Changed
49
+
50
+ - Allow `audienti motions update <motn_id> --status closing` for motion wind-downs that stop discovery while admitted Operator work drains.
51
+
7
52
  ## [0.1.45] - 2026-09-02
8
53
 
54
+ ### Added
55
+
56
+ - Add `audienti analytics motions` and the account-scoped motion analytics API for current prospect mix, rolling seven-day recorded-source contribution, per-motion counts, explicit attribution semantics, and unchanged machine-readable JSON output.
57
+
9
58
  ### Changed
10
59
 
11
60
  - Keep Operator and analytics API responses within shared product visibility while preserving true-user authorization for Operator queues.
package/README.md CHANGED
@@ -4,7 +4,8 @@ Audienti CLI is the agent-first command-line client for the Audienti production
4
4
  API and the local bridge for Audienti's app-hosted MCP endpoint. It lets local
5
5
  coding agents and operators inspect accounts,
6
6
  create and manage plays, import prospects, build lists, manage task reminders,
7
- configure list routing rules, and work supported operator flows.
7
+ configure list routing rules and account-user automation safety, and work
8
+ supported operator flows.
8
9
 
9
10
  ## Install
10
11
 
@@ -137,14 +138,18 @@ Common inspection commands:
137
138
  audienti update check
138
139
  audienti operator next --plan
139
140
  audienti writer test-run <prsp_id>
141
+ audienti analytics motions --json
142
+ audienti analytics icps --json
140
143
  audienti motions analytics <motn_id>
141
144
  audienti motions run-discovery <motn_id>
142
145
  audienti motions quick-start --url https://example.com --wait --confirm
143
146
  audienti motions abm-companies <motn_id> add --file abm-domains.txt
144
147
  audienti motions abm-companies <motn_id> list
148
+ audienti motions update <motn_id> --status closing
145
149
  audienti motions update <motn_id> --status paused
146
150
  audienti motions update <motn_id> --start-date 2026-09-01 --end-date 2026-09-30 --maximum-company-count 25
147
151
  audienti motions update <motn_id> --own-post-engagement true
152
+ audienti motions update <motn_id> --payload motion-principal-list.json
148
153
  audienti motions update <motn_id> --payload motion-signals.json
149
154
  audienti motions activate <motn_id>
150
155
  audienti motions delete <motn_id> --confirm yes
@@ -167,6 +172,9 @@ audienti company-rules list
167
172
  audienti lists routing-rules <list_id> list
168
173
  audienti lists routing-rules <list_id> apply
169
174
  audienti users activity --window 7d
175
+ audienti users automation show 136 --platform linkedin --json --account <acct_id>
176
+ audienti users automation update 136 --payload automation-controls.json --json --account <acct_id>
177
+ audienti users automation update 136 --payload automation-controls.json --apply --json --account <acct_id>
170
178
  audienti analytics prospects --window 24h
171
179
  audienti analytics dashboard --play-tag wine_campaign
172
180
  audienti analytics metrics --cohort-preset week-to-date
@@ -206,6 +214,21 @@ audienti operator next --plan
206
214
  audienti operator next --done --note "Connection request sent."
207
215
  ```
208
216
 
217
+ Inbox Ops has its own owner-scoped CLI surface. Queue rows expose the stable row
218
+ id used by the rule command; sender and domain values are always derived by the
219
+ server from that authorized row:
220
+
221
+ ```bash
222
+ audienti inbox-ops queue [--page <n>]
223
+ audienti inbox-ops filters
224
+ audienti inbox-ops rule <row_id> --scope sender --disposition filter
225
+ audienti inbox-ops rule <row_id> --scope domain --disposition allow
226
+ ```
227
+
228
+ The four rule combinations mirror the Operator card actions. They update only
229
+ the authenticated owner's personal/global Inbox Ops preferences and do not
230
+ archive mail, call the provider, or add a DNC entry.
231
+
209
232
  To manage simple reminders for yourself:
210
233
 
211
234
  ```bash
@@ -318,6 +341,112 @@ happened later, such as connection requests sent in a date range. Rebuild the
318
341
  list when the event definition or date window changes so the analytics question
319
342
  stays auditable.
320
343
 
344
+ `audienti setup play preflight` includes the selected sender's server-derived
345
+ working schedule under `social_cookie.automation`, including `active_days`,
346
+ normalized `working_hours`, effective `time_zone`, and current
347
+ `in_working_hours` state. The human-readable output reports the same timezone,
348
+ today's window, and whether provider execution is currently inside the window.
349
+ It also reports the configured user fallback location, the connected account's
350
+ configured and last-verified effective proxy geography, and the proxy source
351
+ without exposing proxy URLs, credentials, egress IPs, or browser session data.
352
+ For LinkedIn, `social_cookie.automation.pacing` includes effective weekly
353
+ quotas, daily targets, motion active days, the outstanding-invitation cap, ramp
354
+ configuration, current outstanding inventory, any inventory blocker, and current
355
+ invitation capacity calculated by the server. A `null` weekly quota means
356
+ unlimited.
357
+
358
+ Use `users automation` to inspect or change one account user's LinkedIn safety
359
+ policy without changing the saved account selection:
360
+
361
+ ```bash
362
+ audienti users automation show 136 --platform linkedin --json --account acct_example
363
+ audienti users automation update 136 --payload automation-controls.json --json --account acct_example
364
+ audienti users automation update 136 --payload automation-controls.json --apply --json --account acct_example
365
+ ```
366
+
367
+ `update` is preview-only unless `--apply` is present. The CLI always sends
368
+ `platform: "linkedin"` and an explicit `apply` boolean after the file fields,
369
+ so a payload file cannot silently opt into applying a change. The server scopes
370
+ the connected account through the selected account plus account user, preserves
371
+ omitted controls, returns the before and proposed/actual after states, and
372
+ records an audit event only for an applied update. `--json` prints the server
373
+ payload unchanged.
374
+
375
+ An `automation-controls.json` warm-up payload can use every automation gate,
376
+ independent action limits, an aggregate visibility limit, and a weekly ramp:
377
+
378
+ ```json
379
+ {
380
+ "automation_controls": {
381
+ "automatic_sending_enabled": false,
382
+ "visibility_operations_autopilot_enabled": true,
383
+ "post_comment_autopilot_enabled": false,
384
+ "connection_request_autopilot_enabled": false,
385
+ "inmail_autopilot_enabled": false,
386
+ "direct_message_autopilot_enabled": false,
387
+ "email_sending_autopilot_enabled": false,
388
+ "manual_action_handoff_enabled": false,
389
+ "risk_cooldown_enabled": true
390
+ },
391
+ "action_limits": {
392
+ "profile_view": { "hourly": 2, "daily": 4, "weekly": 20 },
393
+ "follow": { "hourly": 2, "daily": 3, "weekly": 15 },
394
+ "like": { "hourly": 1, "daily": 2, "weekly": 10 },
395
+ "invite": { "hourly": 1, "daily": 2, "weekly": 10 },
396
+ "message": { "hourly": 1, "daily": 2, "weekly": 10 },
397
+ "comment": { "hourly": 1, "daily": 1, "weekly": 5 },
398
+ "visibility": { "hourly": 3, "daily": 8, "weekly": 40 }
399
+ },
400
+ "visibility_ramp": {
401
+ "enabled": true,
402
+ "starting_daily_limit": 8,
403
+ "weekly_increment": 2
404
+ }
405
+ }
406
+ ```
407
+
408
+ `follow` covers follows and unfollows; `like` covers likes and unlikes;
409
+ `message` covers messages and InMail. `visibility` is the aggregate cap across
410
+ profile views, follows/unfollows, and likes/unlikes. The show/preview readback
411
+ includes configured, default, effective, used, and remaining hourly, daily,
412
+ and weekly values plus the currently binding limits.
413
+
414
+ Motion update payload mode can replace the selected principal and backing list:
415
+
416
+ ```json
417
+ {
418
+ "principal_account_user_id": 136,
419
+ "list_id": "list_abc123"
420
+ }
421
+ ```
422
+
423
+ The principal and list are resolved inside the selected account. Use
424
+ `"list_id": null` to clear the backing list.
425
+
426
+ To inspect the account's current prospect mix by motion type and compare it
427
+ with the rolling seven-day recorded-source contribution:
428
+
429
+ ```bash
430
+ audienti analytics motions
431
+ audienti analytics motions --json
432
+ ```
433
+
434
+ Current Unattributed counts mean no current motion association. Rolling
435
+ seven-day Unattributed counts mean no attributable recorded source motion; the
436
+ server falls back to the current motion only when recorded source data is
437
+ blank.
438
+
439
+ To inspect the account's current prospect mix by source ICP and compare it
440
+ with the rolling seven-day source contribution:
441
+
442
+ ```bash
443
+ audienti analytics icps
444
+ audienti analytics icps --json
445
+ ```
446
+
447
+ Unattributed means no attributable account source ICP. The server falls back
448
+ to the current motion ICP only when recorded ICP source data is blank.
449
+
321
450
  To see whether one motion is producing prospects by day, and where each
322
451
  produced-day cohort currently sits in the funnel:
323
452
 
@@ -362,12 +491,19 @@ To create or update an ICP from a rich JSON payload:
362
491
  ```bash
363
492
  audienti icps create --payload icp.json
364
493
  audienti icps update <icp_id> --payload icp-patch.json
494
+ audienti icps list --status all
495
+ audienti icps archive <icp_id>
496
+ audienti icps restore <icp_id>
365
497
  ```
366
498
 
367
499
  `icps update --payload` accepts the same human-readable facet keys as create.
368
500
  Supplied facet collections, such as `company_sizes_attributes`, replace that
369
501
  collection in place; omitted fields and collections remain unchanged. Invalid
370
502
  lookup values fail server-side without partially applying the patch.
503
+ Archive is reversible and is the normal cleanup action. It removes the ICP from
504
+ new selection, closes active primary motions so admitted work can drain,
505
+ archives inactive primary motions, and preserves secondary motion links.
506
+ Restoring the ICP does not reactivate motions.
371
507
 
372
508
  To audit one account user's outbound actions, optionally narrowed to one motion
373
509
  and one AccountProspect.created_at cohort:
@@ -446,6 +582,19 @@ audienti prospects assign <prsp_id> --assigned-user <account_user_id|me>
446
582
  audienti prospects assign <prsp_id> --assigned-user unassign
447
583
  ```
448
584
 
585
+ To preview moving a prospect and its account-scoped history into another
586
+ account where you are also an administrator:
587
+
588
+ ```bash
589
+ audienti prospects move-account <prsp_id> --account <source_acct_id> --target-account <target_acct_id>
590
+ audienti prospects move-account <prsp_id> --account <source_acct_id> --target-account <target_acct_id> --assigned-user me --target-motion <motn_id> --target-list <list_id> --apply
591
+ ```
592
+
593
+ The command is preview-only unless `--apply` is present. Apply always requests
594
+ a fresh preview first and submits the returned `manifest_digest`, so a move is
595
+ rejected when the underlying state changes. `--json` prints the preview or final
596
+ apply response unchanged.
597
+
449
598
  To make emergency prospect state changes without going through a motion:
450
599
 
451
600
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@audienti/cli",
3
- "version": "0.1.45",
3
+ "version": "0.1.51",
4
4
  "description": "Agent-first command-line client for Audienti.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -70,9 +70,17 @@ Useful MCP tools:
70
70
  - `auth.me` confirms the token identity.
71
71
  - `accounts.list` shows accessible accounts.
72
72
  - `setup.play_preflight` returns connected-account readiness and setup or
73
- mapping URLs.
73
+ mapping URLs, including the selected sender's active days, working hours,
74
+ effective timezone, current in-window status, configured user fallback
75
+ location, effective proxy geography and source, and server-calculated
76
+ LinkedIn pacing and outstanding-invitation inventory authority under
77
+ `social_cookie.automation`. Treat `ready: true` as connection readiness, not
78
+ approval to start automation.
74
79
  - `offers.create`, `icps.create`, and `motions.create` set up the offer, ICP,
75
80
  and play.
81
+ - Use `audienti icps list --status all` to audit active and archived ICPs. Use
82
+ `audienti icps archive <icp_id>` for reversible cleanup and `restore` to make
83
+ the ICP selectable again; restore never reactivates motions.
76
84
  - Use `audienti motions abm-companies <motn_id> add --file <txt|json>` to attach
77
85
  a positive company filter list for isolated ABM discovery runs.
78
86
  - `analytics.stages` returns stage conversion cohorts and stage aging.
@@ -85,6 +93,9 @@ Useful MCP tools:
85
93
  payload or behavior is unclear.
86
94
  - Inspect the current resource before a create, update, attach, delete, or
87
95
  operator outcome writeback.
96
+ - For account-user automation, run `users automation show`, then preview the
97
+ exact payload without `--apply`. Apply only after explicit authorization and
98
+ verify the applied response/readback.
88
99
  - Treat the production API as the source of truth. Persist durable work in
89
100
  Audienti rather than leaving it only in agent prose.
90
101
  - Keep current gaps explicit. Do not imply that unsupported actions execute.
@@ -96,10 +107,15 @@ audienti help agent-workflows
96
107
  audienti prospects list --query "name or company" --wide --json
97
108
  audienti prospects list --assigned-user unassigned --json
98
109
  audienti prospects assign <prsp_id> --assigned-user me --json
110
+ audienti prospects move-account <prsp_id> --account <source_acct_id> --target-account <target_acct_id> --json
111
+ audienti prospects move-account <prsp_id> --account <source_acct_id> --target-account <target_acct_id> --assigned-user me --apply --json
99
112
  audienti prospects set-status <prsp_id> --status not_fit --json
100
113
  audienti prospects lock <prsp_id> --note "Emergency hold" --json
101
114
  audienti prospects unlock <prsp_id> --json
102
115
  audienti users activity me --window 7d --json
116
+ audienti users automation show <account_user_id|me> --platform linkedin --json --account <acct_id>
117
+ audienti users automation update <account_user_id|me> --payload automation-controls.json --json --account <acct_id>
118
+ audienti users automation update <account_user_id|me> --payload automation-controls.json --apply --json --account <acct_id>
103
119
  audienti prospects import-batch --file prospects.csv --motion <motn_id> --assigned-user me --json
104
120
  audienti lists create --name "Target list" --json
105
121
  audienti lists routing-rules <list_id> list --json
@@ -111,10 +127,16 @@ audienti motions abm-companies <motn_id> add --file abm-domains.txt --json
111
127
  audienti motions abm-companies <motn_id> list --json
112
128
  audienti motions update <motn_id> --status paused --json
113
129
  audienti motions update <motn_id> --start-date 2026-09-01 --end-date 2026-09-30 --maximum-company-count 25 --json
130
+ audienti motions update <motn_id> --payload motion-principal-list.json --json
114
131
  audienti motions activate <motn_id> --json
115
132
  audienti motions delete <motn_id> --confirm yes --json
116
133
  audienti operator next --json
117
134
  audienti operator next --plan
135
+ audienti inbox-ops queue --json
136
+ audienti inbox-ops filters --json
137
+ audienti inbox-ops rule <row_id> --scope <sender|domain> --disposition <allow|filter> --json
138
+ audienti analytics motions --json
139
+ audienti analytics icps --json
118
140
  audienti analytics prospects --window 24h --json
119
141
  audienti analytics stages --window 30d
120
142
  audienti analytics visibility --window 24h --user me --json
@@ -132,6 +154,83 @@ audienti writer test-run <prsp_id> --mode step --branch no-accept --step 3 --rep
132
154
  audienti writer test-run show <prsp_id> <rprt_id>
133
155
  ```
134
156
 
157
+ ## Prospect Account Moves
158
+
159
+ Use `audienti prospects move-account` only to transfer one prospect and its
160
+ account-scoped history, not to copy it. `--account` is the source account and
161
+ `--target-account` is the destination. The authenticated user must administer
162
+ both accounts.
163
+
164
+ Start with a preview and inspect `eligible`, `blockers`, `mappings`,
165
+ `dispositions`, and `expected_state`:
166
+
167
+ ```bash
168
+ audienti prospects move-account <prsp_id> \
169
+ --account <source_acct_id> \
170
+ --target-account <target_acct_id> \
171
+ --assigned-user <target_account_user_id|me> \
172
+ --target-motion <target_motn_id> \
173
+ --target-list <target_list_id> \
174
+ --json
175
+ ```
176
+
177
+ Omit mappings that were not explicitly chosen; never infer a target motion,
178
+ list, agent, or research mapping by name. Apply only after the preview is
179
+ eligible and the user authorizes the move:
180
+
181
+ ```bash
182
+ audienti prospects move-account <prsp_id> \
183
+ --account <source_acct_id> \
184
+ --target-account <target_acct_id> \
185
+ --assigned-user <target_account_user_id|me> \
186
+ --target-motion <target_motn_id> \
187
+ --target-list <target_list_id> \
188
+ --apply \
189
+ --json
190
+ ```
191
+
192
+ With `--apply`, the CLI performs a fresh preview and submits that response's
193
+ `manifest_digest`; it does not reuse an older preview. Treat a stale manifest,
194
+ any blocker, or any failed response as not applied, then inspect current source
195
+ and target state before retrying.
196
+
197
+ ## Account-User Automation Safety
198
+
199
+ `audienti users automation show <account_user_id|me>` resolves one connected
200
+ account through the selected account, account user, and LinkedIn platform. Use
201
+ per-command `--account` for administrative inspection without changing the
202
+ saved default. Fail closed on API ambiguity or missing access; do not substitute
203
+ another connected account.
204
+
205
+ Automation updates are preview-first:
206
+
207
+ ```bash
208
+ audienti users automation show 136 --platform linkedin --json --account acct_example
209
+ audienti users automation update 136 --payload automation-controls.json --json --account acct_example
210
+ audienti users automation update 136 --payload automation-controls.json --apply --json --account acct_example
211
+ audienti users automation show 136 --platform linkedin --json --account acct_example
212
+ ```
213
+
214
+ The payload object accepts `automation_controls`, `action_limits`, and
215
+ `visibility_ramp`. Action-limit keys are `profile_view`, `follow`, `like`,
216
+ `invite`, `message`, `comment`, and aggregate `visibility`; each action limit
217
+ may provide `hourly`, `daily`, and `weekly`. `follow` covers follow/unfollow,
218
+ `like` covers like/unlike, and `message` covers messages/InMail. A ramp accepts
219
+ `enabled`, `starting_daily_limit`, `weekly_increment`, and optional
220
+ `started_at`.
221
+
222
+ The CLI wraps the file as `{ automation: { ...payload, platform: "linkedin",
223
+ apply: false|true } }`; file values cannot override the command's platform or
224
+ apply decision. Omitted settings are preserved by the server. Use unchanged
225
+ JSON output to compare current, before, and after snapshots, including policy
226
+ source, schedule/timezone, configured/default/effective limits, used and
227
+ remaining capacity, binding limits, preview/applied state, and applied audit id.
228
+
229
+ For a new account, keep contact and writing controls disabled, enable risk
230
+ cooldown, and bound `visibility` to the authorized active-day warm-up level.
231
+ Never infer that `ready: true`, paused motions, or prepared queue work authorizes
232
+ provider execution.
233
+
135
234
  List routing-rule create and update commands accept the same normalized
136
235
  condition and action data as the list UI. Inspect the ordered rules first, use
137
236
  `audienti lists routing-rules help` for the payload contract, and treat `apply`
package/src/api-client.js CHANGED
@@ -51,6 +51,17 @@ export class AudientiClient {
51
51
  return this.requestJson(accountPath(accountId, ["users"]));
52
52
  }
53
53
 
54
+ userAutomation(accountId, userId, query = {}) {
55
+ return this.requestJson(accountPath(accountId, ["users", userId, "automation"], query));
56
+ }
57
+
58
+ updateUserAutomation(accountId, userId, body, query = {}) {
59
+ return this.requestJson(accountPath(accountId, ["users", userId, "automation"], query), {
60
+ method: "PATCH",
61
+ body
62
+ });
63
+ }
64
+
54
65
  socialCookies(accountId, query = {}) {
55
66
  return this.requestJson(accountPath(accountId, ["social_cookies"], query));
56
67
  }
@@ -87,8 +98,8 @@ export class AudientiClient {
87
98
  });
88
99
  }
89
100
 
90
- icps(accountId) {
91
- return this.requestJson(accountPath(accountId, ["icps"]));
101
+ icps(accountId, query = {}) {
102
+ return this.requestJson(accountPath(accountId, ["icps"], query));
92
103
  }
93
104
 
94
105
  icp(accountId, icpId) {
@@ -109,6 +120,20 @@ export class AudientiClient {
109
120
  });
110
121
  }
111
122
 
123
+ archiveIcp(accountId, icpId) {
124
+ return this.requestJson(accountPath(accountId, ["icps", icpId, "archive"]), {
125
+ method: "POST",
126
+ body: {}
127
+ });
128
+ }
129
+
130
+ restoreIcp(accountId, icpId) {
131
+ return this.requestJson(accountPath(accountId, ["icps", icpId, "restore"]), {
132
+ method: "POST",
133
+ body: {}
134
+ });
135
+ }
136
+
112
137
  addIcpTag(accountId, icpId, body) {
113
138
  return this.requestJson(accountPath(accountId, ["icps", icpId, "add_tag"]), {
114
139
  method: "POST",
@@ -467,6 +492,13 @@ export class AudientiClient {
467
492
  return this.requestJson(accountPath(accountId, ["prospects", prospectId]));
468
493
  }
469
494
 
495
+ moveProspectAccount(accountId, prospectId, body) {
496
+ return this.requestJson(accountPath(accountId, ["prospects", prospectId, "move_account"]), {
497
+ method: "POST",
498
+ body
499
+ });
500
+ }
501
+
470
502
  replanProspect(accountId, prospectId, body = {}) {
471
503
  return this.requestJson(accountPath(accountId, ["prospects", prospectId, "replan"]), {
472
504
  method: "POST",
@@ -625,6 +657,17 @@ export class AudientiClient {
625
657
  return this.requestJson(accountPath(accountId, ["operator"], query));
626
658
  }
627
659
 
660
+ inboxOpsFilters(accountId) {
661
+ return this.requestJson(accountPath(accountId, ["inbox_ops", "filters"]));
662
+ }
663
+
664
+ updateInboxOpsRule(accountId, rowId, body) {
665
+ return this.requestJson(accountPath(accountId, ["inbox_ops", rowId, "rule"]), {
666
+ method: "PATCH",
667
+ body
668
+ });
669
+ }
670
+
628
671
  operatorNext(accountId, query = {}) {
629
672
  return this.requestJson(accountPath(accountId, ["operator", "next"], query));
630
673
  }
@@ -663,6 +706,14 @@ export class AudientiClient {
663
706
  return this.requestJson(accountPath(accountId, ["analytics", "dashboard"], query));
664
707
  }
665
708
 
709
+ analyticsMotions(accountId) {
710
+ return this.requestJson(accountPath(accountId, ["analytics", "motions"]));
711
+ }
712
+
713
+ analyticsIcps(accountId) {
714
+ return this.requestJson(accountPath(accountId, ["analytics", "icps"]));
715
+ }
716
+
666
717
  analyticsMetrics(accountId, query = {}) {
667
718
  return this.requestJson(accountPath(accountId, ["analytics", "metrics"], query));
668
719
  }