@epilot/cli 0.1.131 → 0.1.133

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 CHANGED
@@ -29,7 +29,7 @@ npm install -g @epilot/cli
29
29
 
30
30
  <!-- usage-help -->
31
31
  ```
32
- epilot v0.1.131 — CLI for epilot APIs
32
+ epilot v0.1.133 — CLI for epilot APIs
33
33
 
34
34
  USAGE
35
35
  epilot <api> <operationId> [params...] [flags]
@@ -37,7 +37,7 @@
37
37
  "/v1/campaign/{campaign_id}/status": {
38
38
  "post": {
39
39
  "operationId": "changeCampaignStatus",
40
- "summary": "Change the status of a campaign",
40
+ "summary": "changeCampaignStatus",
41
41
  "description": "Change the status of a campaign to a desired status.\n\nThe status can be one of the following: active, inactive.\n\nStatus transition is accompanied by side effects, e.g., automation execution.\n",
42
42
  "tags": [
43
43
  "Campaign"
@@ -69,7 +69,7 @@
69
69
  "get": {
70
70
  "operationId": "getCampaignJobStatus",
71
71
  "description": "Get the status of a campaign's automation job",
72
- "summary": "Get the status of a campaign's automation job",
72
+ "summary": "getCampaignJobStatus",
73
73
  "tags": [
74
74
  "Campaign"
75
75
  ],
@@ -99,7 +99,7 @@
99
99
  "/v1/campaign/{campaign_id}/portals": {
100
100
  "get": {
101
101
  "operationId": "getCampaignPortals",
102
- "summary": "Get portals usage info for a campaign",
102
+ "summary": "getCampaignPortals",
103
103
  "description": "Get the list of portals and its widgets where the campaign is used.\n",
104
104
  "tags": [
105
105
  "Campaign"
@@ -130,7 +130,7 @@
130
130
  "/v1/campaign/{campaign_id}/automations:retrigger": {
131
131
  "post": {
132
132
  "operationId": "retriggerCampaignAutomations",
133
- "summary": "Retrigger automations for campaign recipients",
133
+ "summary": "retriggerCampaignAutomations",
134
134
  "description": "Retrigger automation executions for specific campaign recipients that have failed.\n\nThis endpoint starts new automation executions for the specified recipients\nusing the campaign's associated automation flow. Only recipients with\nautomation_status 'failed' will be processed. Recipients with other statuses\n(success, pending, in_progress, cancelled) will be skipped to prevent\naccidentally retriggering successful or ongoing automations.\n",
135
135
  "tags": [
136
136
  "Campaign Delivery"
@@ -174,7 +174,7 @@
174
174
  "/v1/campaign:setup": {
175
175
  "post": {
176
176
  "operationId": "setupCampaign",
177
- "summary": "Set up a campaign with related entities and configurations",
177
+ "summary": "setupCampaign",
178
178
  "description": "Creates a `campaign` entity together with its related entities and configurations in a single call.\nUsed by the campaign wizard UI, but not restricted to it.\n",
179
179
  "tags": [
180
180
  "Campaign"
@@ -210,7 +210,7 @@
210
210
  "/v1/campaign:match": {
211
211
  "post": {
212
212
  "operationId": "matchCampaigns",
213
- "summary": "Match campaigns",
213
+ "summary": "matchCampaigns",
214
214
  "description": "Match campaigns based on target entities.\n\nThis endpoint returns the list of campaigns where the provided entities are part of the target.\n",
215
215
  "tags": [
216
216
  "Campaign"
@@ -246,7 +246,7 @@
246
246
  "/v1/campaign:discover": {
247
247
  "post": {
248
248
  "operationId": "discoverCampaigns",
249
- "summary": "Discover Entity-UI Next Best Actions for an entity",
249
+ "summary": "discoverCampaigns",
250
250
  "description": "Given an entity, returns the Next Best Actions it should see on the Entity-UI channel.\n\nEnumerates the organization's **active** campaigns that carry a valid Entity-UI Next Best\nAction, live-matches each against the entity using the existing match engine, and returns\nthe matching NBAs priority-sorted (one per campaign).\n\nThis is a pure read: it writes nothing. An entity that matches no campaigns returns an\nempty list, not an error.\n",
251
251
  "tags": [
252
252
  "Campaign"
@@ -282,7 +282,7 @@
282
282
  "/v1/target:match": {
283
283
  "post": {
284
284
  "operationId": "matchTargets",
285
- "summary": "Match targets",
285
+ "summary": "matchTargets",
286
286
  "description": "Find targets from the provided list that include the provide entities.\n",
287
287
  "tags": [
288
288
  "Target"
@@ -318,7 +318,7 @@
318
318
  "/v1/target/queries": {
319
319
  "post": {
320
320
  "operationId": "getTargetQueries",
321
- "summary": "Get target queries",
321
+ "summary": "getTargetQueries",
322
322
  "description": "Transform target filters into Lucene queries for the provided target IDs.\nReturns the transformed query string for each target along with any errors encountered.\n",
323
323
  "tags": [
324
324
  "Target"
@@ -354,7 +354,7 @@
354
354
  "/v1/campaign/{campaign_id}/recipient": {
355
355
  "post": {
356
356
  "operationId": "createRecipient",
357
- "summary": "Create a recipient associated with a campaign",
357
+ "summary": "createRecipient",
358
358
  "description": "Creates a new recipient associated with a campaign.",
359
359
  "tags": [
360
360
  "Campaign Recipient"
@@ -395,7 +395,7 @@
395
395
  "/v1/campaign/{campaign_id}/recipient/{recipient_id}": {
396
396
  "patch": {
397
397
  "operationId": "updateRecipient",
398
- "summary": "Update a recipient",
398
+ "summary": "updateRecipient",
399
399
  "description": "Updates a recipient's attributes.",
400
400
  "tags": [
401
401
  "Campaign Recipient"
@@ -439,7 +439,7 @@
439
439
  "/v1/campaign/{campaign_id}/recipient/{recipient_id}/portal:status": {
440
440
  "patch": {
441
441
  "operationId": "updateRecipientPortalStatus",
442
- "summary": "Update portal status for a campaign recipient",
442
+ "summary": "updateRecipientPortalStatus",
443
443
  "description": "Updates the portal status for a specific campaign recipient.\nThe portal_status_updated_at timestamp is automatically set when the status changes.\n\nStatus transition rules:\n- From 'sent': can change to 'seen', 'dismissed', or 'clicked'\n- From 'seen': can change to 'dismissed' or 'clicked'\n- From 'dismissed' or 'clicked': cannot be changed (final states)\n",
444
444
  "tags": [
445
445
  "Campaign Recipient"
@@ -489,8 +489,8 @@
489
489
  "/v1/campaign/{campaign_id}/recipient/{recipient_id}/entity_ui:status": {
490
490
  "patch": {
491
491
  "operationId": "updateRecipientEntityUiStatus",
492
- "summary": "Update Entity-UI (Next Best Action) status for a campaign recipient",
493
- "description": "Records a Next Best Action interaction for a recipient on the Entity-UI channel.\n\nUnlike the portal channel, an NBA recipient is created lazily: the first `seen` creates\nthe recipient record (and requires `entity_schema`). `seen` is idempotent — re-viewing an\nNBA that is already seen/clicked/dismissed is a no-op success and never regresses the status.\n\nStatus transition rules:\n- `seen`: lazily creates the recipient; a no-op success if a status already exists\n- From `seen`: can change to `clicked` or `dismissed`\n- From `clicked`: can change to `dismissed`\n- From `dismissed`: cannot be changed (final state)\n\n`dismissed` and `clicked` require an existing recipient (404 otherwise, since an NBA is\nborn at `seen`) and reject invalid transitions (409).\n\nThe entity_ui_status_updated_at timestamp is automatically set when the status changes.\n",
492
+ "summary": "updateRecipientEntityUiStatus",
493
+ "description": "Records a Next Best Action interaction for a recipient on the Entity-UI channel.\n\nUnlike the portal channel, an NBA recipient is created lazily: the first `seen` creates\nthe recipient record (and requires `entity_schema`). `seen` is idempotent — re-viewing an\nNBA that is already seen/clicked/dismissed is a no-op success and never regresses the status.\n\nStatus transition rules:\n- `seen`: lazily creates the recipient; a no-op success if a status already exists\n- From `seen`: can change to `clicked` or `dismissed`\n- From `clicked`: can change to `dismissed`\n- From `dismissed`: cannot be changed via this operation — use `entity_ui:restore`\n\n`dismissed` and `clicked` require an existing recipient (404 otherwise, since an NBA is\nborn at `seen`) and reject invalid transitions (409).\n\nThe entity_ui_status_updated_at timestamp is automatically set when the status changes.\n",
494
494
  "tags": [
495
495
  "Campaign Recipient"
496
496
  ],
@@ -536,10 +536,47 @@
536
536
  }
537
537
  }
538
538
  },
539
+ "/v1/campaign/{campaign_id}/recipient/{recipient_id}/entity_ui:restore": {
540
+ "post": {
541
+ "operationId": "restoreRecipientEntityUiStatus",
542
+ "summary": "Undo a dismissal on the Entity-UI (Next Best Action) channel",
543
+ "description": "Reverses a dismissal so the Next Best Action becomes visible to the entity again. This is\nthe only way out of `dismissed` — `entity_ui:status` cannot leave that state.\n\nThe recipient's status is restored to whatever it was immediately before the dismissal\n(recorded in `entity_ui_status_before_dismiss`), so a `clicked` NBA that was dismissed\nreturns to `clicked` and does not lose its recorded click. Falls back to `seen` when no\nprevious status was recorded.\n\nScoped to the Entity-UI channel only: the recipient's portal and automation state is never\ntouched. Takes no request body — the recipient's current state fully determines the result.\n\nReturns 404 when the recipient has no Entity-UI status at all, and 409 when it has one but\nis not currently `dismissed` (there is nothing to undo).\n",
544
+ "tags": [
545
+ "Campaign Recipient"
546
+ ],
547
+ "security": [
548
+ {
549
+ "EpilotAuth": []
550
+ }
551
+ ],
552
+ "parameters": [
553
+ {
554
+ "$ref": "#/components/parameters/CampaignIdPathParam"
555
+ },
556
+ {
557
+ "$ref": "#/components/parameters/RecipientIdPathParam"
558
+ }
559
+ ],
560
+ "responses": {
561
+ "200": {
562
+ "$ref": "#/components/responses/RecipientResponse"
563
+ },
564
+ "404": {
565
+ "$ref": "#/components/responses/ClientErrorResponse"
566
+ },
567
+ "409": {
568
+ "$ref": "#/components/responses/ClientErrorResponse"
569
+ },
570
+ "500": {
571
+ "$ref": "#/components/responses/ServerErrorResponse"
572
+ }
573
+ }
574
+ }
575
+ },
539
576
  "/v1/campaign/{campaign_id}/recipients": {
540
577
  "get": {
541
578
  "operationId": "getRecipients",
542
- "summary": "Get campaign recipients",
579
+ "summary": "getRecipients",
543
580
  "description": "Get a paginated list of recipients for a campaign.",
544
581
  "tags": [
545
582
  "Campaign Recipient"
@@ -598,6 +635,14 @@
598
635
  "schema": {
599
636
  "$ref": "#/components/schemas/PortalStatus"
600
637
  }
638
+ },
639
+ {
640
+ "name": "email_status",
641
+ "in": "query",
642
+ "description": "Filter by email delivery status (e.g. bounced, delivered). The response total reflects the count for the filtered status.",
643
+ "schema": {
644
+ "$ref": "#/components/schemas/EmailStatus"
645
+ }
601
646
  }
602
647
  ],
603
648
  "responses": {
@@ -612,6 +657,37 @@
612
657
  }
613
658
  }
614
659
  }
660
+ },
661
+ "/v1/campaign/{campaign_id}/email-stats": {
662
+ "get": {
663
+ "operationId": "getEmailStats",
664
+ "summary": "getEmailStats",
665
+ "description": "Aggregate email delivery counts for a campaign, for the KPI summary on the campaign UI.\nCounts cover the email (automation) channel only; `total_emailed` is the number of\nrecipients with a recorded email status. `delivered` is derivable as\n`total_emailed - bounced - complained - failed`.\n",
666
+ "tags": [
667
+ "Campaign Recipient"
668
+ ],
669
+ "security": [
670
+ {
671
+ "EpilotAuth": []
672
+ }
673
+ ],
674
+ "parameters": [
675
+ {
676
+ "$ref": "#/components/parameters/CampaignIdPathParam"
677
+ }
678
+ ],
679
+ "responses": {
680
+ "200": {
681
+ "$ref": "#/components/responses/EmailStatsResponse"
682
+ },
683
+ "400": {
684
+ "$ref": "#/components/responses/ClientErrorResponse"
685
+ },
686
+ "500": {
687
+ "$ref": "#/components/responses/ServerErrorResponse"
688
+ }
689
+ }
690
+ }
615
691
  }
616
692
  },
617
693
  "components": {
@@ -666,6 +742,7 @@
666
742
  "CAMPAIGN_NOT_FOUND",
667
743
  "CAMPAIGN_HAS_NO_TARGET",
668
744
  "CAMPAIGN_HAS_NO_DELIVERY_METHOD",
745
+ "INVALID_NEXT_BEST_ACTION",
669
746
  "CAMPAIGN_HAS_JOB_IN_PROGRESS",
670
747
  "CAMPAIGN_HAS_UNEXPECTED_STATUS",
671
748
  "JOB_TOKEN_MISSING",
@@ -1010,6 +1087,7 @@
1010
1087
  "properties": {
1011
1088
  "category": {
1012
1089
  "type": "string",
1090
+ "maxLength": 30,
1013
1091
  "description": "Light category label shown above the title. Free-form text."
1014
1092
  },
1015
1093
  "icon": {
@@ -1031,10 +1109,12 @@
1031
1109
  },
1032
1110
  "title": {
1033
1111
  "type": "string",
1112
+ "maxLength": 60,
1034
1113
  "description": "Bold action title. Required. Supports `{{placeholders}}`."
1035
1114
  },
1036
1115
  "body": {
1037
1116
  "type": "string",
1117
+ "maxLength": 140,
1038
1118
  "description": "Optional description. Supports `{{placeholders}}` (incl. relative dates)."
1039
1119
  },
1040
1120
  "priority": {
@@ -1061,16 +1141,12 @@
1061
1141
  "enum": [
1062
1142
  "journey",
1063
1143
  "workflow",
1064
- "url"
1144
+ "flow"
1065
1145
  ]
1066
1146
  },
1067
1147
  "target": {
1068
1148
  "type": "string",
1069
- "description": "Journey id, workflow definition id, or URL, depending on `type`."
1070
- },
1071
- "label": {
1072
- "type": "string",
1073
- "description": "Optional CTA button label."
1149
+ "description": "Journey id, workflow definition id, or flow template id, depending on `type`."
1074
1150
  },
1075
1151
  "context_params": {
1076
1152
  "type": "array",
@@ -1120,6 +1196,35 @@
1120
1196
  ],
1121
1197
  "additionalProperties": false
1122
1198
  },
1199
+ "DiscoverResult": {
1200
+ "type": "object",
1201
+ "description": "One discovered Next Best Action, plus this entity's interaction state for it.",
1202
+ "properties": {
1203
+ "campaign_id": {
1204
+ "$ref": "#/components/schemas/BaseUUID"
1205
+ },
1206
+ "nba": {
1207
+ "$ref": "#/components/schemas/NextBestAction"
1208
+ },
1209
+ "status": {
1210
+ "allOf": [
1211
+ {
1212
+ "$ref": "#/components/schemas/EntityUiStatus"
1213
+ }
1214
+ ],
1215
+ "description": "The recipient's current Entity-UI status for this campaign, present only when a\nrecipient record already exists (i.e. the entity has previously seen, clicked or\ndismissed this NBA). Absent when the entity has not yet interacted with it.\n\nIn `results` this is only ever `seen` or `clicked`; in `dismissed` it is always\n`dismissed`. Lets the client skip a redundant `seen` call for NBAs already seen.\n"
1216
+ },
1217
+ "status_updated_at": {
1218
+ "type": "string",
1219
+ "format": "date-time",
1220
+ "description": "When `status` was last written. Present whenever `status` is. Lets the client show how\nlong ago an NBA was dismissed.\n"
1221
+ }
1222
+ },
1223
+ "required": [
1224
+ "campaign_id",
1225
+ "nba"
1226
+ ]
1227
+ },
1123
1228
  "MatchTargetParams": {
1124
1229
  "type": "object",
1125
1230
  "properties": {
@@ -1233,11 +1338,23 @@
1233
1338
  "clicked"
1234
1339
  ]
1235
1340
  },
1236
- "Resolution": {
1341
+ "EmailStatus": {
1237
1342
  "type": "string",
1238
- "description": "Cross-channel resolution of a campaign for a recipient. Unlike the per-channel `*_status`\nfields (where `dismissed` is channel-local), a resolution suppresses the campaign on EVERY\nchannel the 360 Entity-UI card and the portal teaser alike. Server-managed and read-only:\nnever sent by a client. Absence means unresolved.\n",
1343
+ "description": "Delivery status of the email a campaign's automation sends to a recipient. Set to `sent`\nonce the automation hands the email off, then updated asynchronously as SES notifications\narrive (`bounced` / `complained`; an SES Reject maps to `bounced`). `failed` is a send-time\nfailure (the automation execution could not send at all), distinct from an asynchronous\nbounce. `delivered` is reserved for when Delivery events are published.\n",
1239
1344
  "enum": [
1240
- "accepted"
1345
+ "sent",
1346
+ "delivered",
1347
+ "bounced",
1348
+ "complained",
1349
+ "failed"
1350
+ ]
1351
+ },
1352
+ "EmailBounceType": {
1353
+ "type": "string",
1354
+ "description": "SES bounce classification: `permanent` (hard) or `transient` (soft).",
1355
+ "enum": [
1356
+ "permanent",
1357
+ "transient"
1241
1358
  ]
1242
1359
  },
1243
1360
  "Recipient": {
@@ -1276,8 +1393,49 @@
1276
1393
  "type": "string",
1277
1394
  "format": "date-time"
1278
1395
  },
1279
- "resolution": {
1280
- "$ref": "#/components/schemas/Resolution"
1396
+ "entity_ui_status_before_dismiss": {
1397
+ "allOf": [
1398
+ {
1399
+ "$ref": "#/components/schemas/EntityUiStatus"
1400
+ }
1401
+ ],
1402
+ "description": "The Entity-UI status the recipient held immediately before it was dismissed, so\n`entity_ui:restore` can put it back without losing a recorded click.\n\nServer-managed — never send this from a client; it is ignored on write. Meaningful\n**only while** `entity_ui_status` is `dismissed`: a restore intentionally leaves the\nvalue behind rather than clearing it, so a stale value after a restore is expected and\nmust not be read.\n"
1403
+ },
1404
+ "message_entity_id": {
1405
+ "type": "string",
1406
+ "description": "The message entity id of the email sent to this recipient by the campaign's automation\n(not the SES/provider message id), used to correlate SES delivery notifications back to\nthe recipient. Server-managed.\n"
1407
+ },
1408
+ "email_status": {
1409
+ "$ref": "#/components/schemas/EmailStatus"
1410
+ },
1411
+ "email_status_updated_at": {
1412
+ "type": "string",
1413
+ "format": "date-time"
1414
+ },
1415
+ "email_bounce_type": {
1416
+ "$ref": "#/components/schemas/EmailBounceType"
1417
+ },
1418
+ "email_bounce_subtype": {
1419
+ "type": "string",
1420
+ "description": "SES bounce sub-type (e.g. `General`, `NoEmail`, `MailboxFull`)."
1421
+ },
1422
+ "email_complaint_type": {
1423
+ "type": "string",
1424
+ "description": "SES complaint feedback type (e.g. `abuse`, `fraud`), set for complaints."
1425
+ },
1426
+ "email_bounce_reason": {
1427
+ "type": "string",
1428
+ "description": "Human-readable failure reason — the SES bounce `diagnosticCode`, the complaint\nfeedback type, or a send-time error message.\n"
1429
+ },
1430
+ "email_send_error": {
1431
+ "type": "object",
1432
+ "additionalProperties": true,
1433
+ "description": "The raw SES notification (or send error) kept verbatim for a detail view."
1434
+ },
1435
+ "email_unsubscribed_at": {
1436
+ "type": "string",
1437
+ "format": "date-time",
1438
+ "description": "When the contact unsubscribed from email marketing (opted out). Server-managed."
1281
1439
  },
1282
1440
  "updated_at": {
1283
1441
  "type": "string",
@@ -1774,6 +1932,61 @@
1774
1932
  }
1775
1933
  }
1776
1934
  },
1935
+ "EmailStatsResponse": {
1936
+ "description": "Aggregate email delivery counts for a campaign.",
1937
+ "content": {
1938
+ "application/json": {
1939
+ "schema": {
1940
+ "type": "object",
1941
+ "required": [
1942
+ "total_emailed",
1943
+ "sent",
1944
+ "delivered",
1945
+ "bounced",
1946
+ "bounced_hard",
1947
+ "bounced_soft",
1948
+ "complained",
1949
+ "failed",
1950
+ "unsubscribed"
1951
+ ],
1952
+ "properties": {
1953
+ "total_emailed": {
1954
+ "type": "integer",
1955
+ "description": "Recipients with a recorded email status (the KPI denominator)."
1956
+ },
1957
+ "sent": {
1958
+ "type": "integer"
1959
+ },
1960
+ "delivered": {
1961
+ "type": "integer",
1962
+ "description": "Currently always 0 (Delivery events are not published yet)."
1963
+ },
1964
+ "bounced": {
1965
+ "type": "integer"
1966
+ },
1967
+ "bounced_hard": {
1968
+ "type": "integer",
1969
+ "description": "Bounces classified permanent (bounced_hard + bounced_soft = bounced)."
1970
+ },
1971
+ "bounced_soft": {
1972
+ "type": "integer",
1973
+ "description": "Bounces classified transient."
1974
+ },
1975
+ "complained": {
1976
+ "type": "integer"
1977
+ },
1978
+ "failed": {
1979
+ "type": "integer"
1980
+ },
1981
+ "unsubscribed": {
1982
+ "type": "integer",
1983
+ "description": "Recipients who opted out of email marketing."
1984
+ }
1985
+ }
1986
+ }
1987
+ }
1988
+ }
1989
+ },
1777
1990
  "MatchCampaignsResponse": {
1778
1991
  "description": "List of campaigns where the target entities match the given entities.",
1779
1992
  "content": {
@@ -1814,39 +2027,27 @@
1814
2027
  "properties": {
1815
2028
  "hits": {
1816
2029
  "type": "number",
1817
- "description": "Number of matching NBAs."
2030
+ "description": "Number of matching NBAs. Counts `results` only — dismissed ones are excluded."
1818
2031
  },
1819
2032
  "results": {
1820
2033
  "type": "array",
1821
2034
  "description": "Matching NBAs, sorted by priority (desc); one entry per campaign.",
1822
2035
  "items": {
1823
- "type": "object",
1824
- "properties": {
1825
- "campaign_id": {
1826
- "$ref": "#/components/schemas/BaseUUID"
1827
- },
1828
- "nba": {
1829
- "$ref": "#/components/schemas/NextBestAction"
1830
- },
1831
- "status": {
1832
- "allOf": [
1833
- {
1834
- "$ref": "#/components/schemas/EntityUiStatus"
1835
- }
1836
- ],
1837
- "description": "The recipient's current Entity-UI status for this campaign, present only\nwhen a recipient record already exists (i.e. the entity has previously seen\nor clicked this NBA). Absent when the entity has not yet interacted with it.\nDismissed NBAs are filtered out server-side, so this is only ever `seen` or\n`clicked`. Lets the client skip a redundant `seen` call for NBAs already seen.\n"
1838
- }
1839
- },
1840
- "required": [
1841
- "campaign_id",
1842
- "nba"
1843
- ]
2036
+ "$ref": "#/components/schemas/DiscoverResult"
2037
+ }
2038
+ },
2039
+ "dismissed": {
2040
+ "type": "array",
2041
+ "description": "NBAs this entity has dismissed that would otherwise be in `results` — same shape,\nalso priority-sorted. Returned so the client can show the agent what it hid and\noffer to restore it, without a second round-trip.\n\nOnly currently-relevant dismissals appear: each one is matched against its\ncampaign's target exactly like a visible NBA, so a dismissal is dropped once the\ncampaign ends or the entity stops matching. Capped, so this is not a complete\ndismissal history.\n",
2042
+ "items": {
2043
+ "$ref": "#/components/schemas/DiscoverResult"
1844
2044
  }
1845
2045
  }
1846
2046
  },
1847
2047
  "required": [
1848
2048
  "hits",
1849
- "results"
2049
+ "results",
2050
+ "dismissed"
1850
2051
  ]
1851
2052
  }
1852
2053
  }
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  API_LIST
4
- } from "../chunk-W65MAOR7.js";
4
+ } from "../chunk-4A3TISYH.js";
5
5
 
6
6
  // bin/epilot.ts
7
7
  import { runMain } from "citty";
@@ -11,7 +11,7 @@ import { defineCommand } from "citty";
11
11
  var main = defineCommand({
12
12
  meta: {
13
13
  name: "epilot",
14
- version: "0.1.131",
14
+ version: "0.1.133",
15
15
  description: "CLI for epilot APIs"
16
16
  },
17
17
  args: {
@@ -30,8 +30,8 @@ var main = defineCommand({
30
30
  auth: () => import("../auth-WMXFMPWE.js").then((m) => m.default),
31
31
  profile: () => import("../profile-OZJL5ZPT.js").then((m) => m.default),
32
32
  config: () => import("../config-DGZIMLZK.js").then((m) => m.default),
33
- completion: () => import("../completion-2WQXG7JT.js").then((m) => m.default),
34
- upgrade: () => import("../upgrade-KC42PNIK.js").then((m) => m.default),
33
+ completion: () => import("../completion-MSAMXF3P.js").then((m) => m.default),
34
+ upgrade: () => import("../upgrade-SOALILEI.js").then((m) => m.default),
35
35
  "access-token": () => import("../access-token-WWE6BDJH.js").then((m) => m.default),
36
36
  address: () => import("../address-EH3C4CVB.js").then((m) => m.default),
37
37
  "address-suggestions": () => import("../address-suggestions-RRSLOBFW.js").then((m) => m.default),
@@ -134,13 +134,13 @@ process.stderr.on("error", (err) => {
134
134
  if (err.code === "EPIPE") process.exit(0);
135
135
  throw err;
136
136
  });
137
- var VERSION = true ? "0.1.131" : (await null).default.version;
137
+ var VERSION = true ? "0.1.133" : (await null).default.version;
138
138
  var reorderedArgv = hoistFlagsAfterSubcommand(process.argv.slice(2));
139
139
  process.argv = [process.argv[0], process.argv[1], ...reorderedArgv];
140
140
  var args = process.argv.slice(2);
141
141
  var completionsIdx = args.indexOf("--_completions");
142
142
  if (completionsIdx >= 0) {
143
- const { handleCompletions } = await import("../completion-2WQXG7JT.js");
143
+ const { handleCompletions } = await import("../completion-MSAMXF3P.js");
144
144
  handleCompletions(args[completionsIdx + 1], args[completionsIdx + 2]);
145
145
  process.exit(0);
146
146
  }
@@ -1371,7 +1371,7 @@ var API_LIST = [
1371
1371
  kebabName: "targeting",
1372
1372
  title: "Targeting API",
1373
1373
  serverUrl: "https://targeting.sls.epilot.io",
1374
- operationCount: 14,
1374
+ operationCount: 16,
1375
1375
  operationIds: [
1376
1376
  "changeCampaignStatus",
1377
1377
  "getCampaignJobStatus",
@@ -1386,7 +1386,9 @@ var API_LIST = [
1386
1386
  "updateRecipient",
1387
1387
  "updateRecipientPortalStatus",
1388
1388
  "updateRecipientEntityUiStatus",
1389
- "getRecipients"
1389
+ "restoreRecipientEntityUiStatus",
1390
+ "getRecipients",
1391
+ "getEmailStats"
1390
1392
  ]
1391
1393
  },
1392
1394
  {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  API_LIST
4
- } from "./chunk-W65MAOR7.js";
4
+ } from "./chunk-4A3TISYH.js";
5
5
  import {
6
6
  DIM,
7
7
  GREEN,
@@ -72,7 +72,7 @@ ${GREEN}${BOLD}Upgraded to @epilot/cli@${latest}${RESET}
72
72
  }
73
73
  });
74
74
  var getCurrentVersion = () => {
75
- if (true) return "0.1.131";
75
+ if (true) return "0.1.133";
76
76
  try {
77
77
  const output = execSync("npm ls -g @epilot/cli --depth=0 --json 2>/dev/null", {
78
78
  encoding: "utf-8",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/cli",
3
- "version": "0.1.131",
3
+ "version": "0.1.133",
4
4
  "description": "CLI for epilot APIs",
5
5
  "type": "module",
6
6
  "bin": {