@bussolabs/closeyourit-cli 0.0.16 → 0.0.17

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.
Files changed (160) hide show
  1. package/README.md +73 -2
  2. package/dist/commands/alerts/notifications/delete.d.ts +12 -0
  3. package/dist/commands/alerts/notifications/delete.js +25 -0
  4. package/dist/commands/alerts/notifications/list.d.ts +9 -0
  5. package/dist/commands/alerts/notifications/list.js +29 -0
  6. package/dist/commands/alerts/notifications/read-all.d.ts +6 -0
  7. package/dist/commands/alerts/notifications/read-all.js +15 -0
  8. package/dist/commands/alerts/notifications/read.d.ts +9 -0
  9. package/dist/commands/alerts/notifications/read.js +22 -0
  10. package/dist/commands/alerts/preferences/show.d.ts +6 -0
  11. package/dist/commands/alerts/preferences/show.js +16 -0
  12. package/dist/commands/alerts/preferences/update.d.ts +20 -0
  13. package/dist/commands/alerts/preferences/update.js +63 -0
  14. package/dist/commands/analytics/goals/create.d.ts +13 -0
  15. package/dist/commands/analytics/goals/create.js +35 -0
  16. package/dist/commands/analytics/goals/delete.d.ts +13 -0
  17. package/dist/commands/analytics/goals/delete.js +27 -0
  18. package/dist/commands/analytics/goals/list.d.ts +9 -0
  19. package/dist/commands/analytics/goals/list.js +25 -0
  20. package/dist/commands/analytics/share.d.ts +10 -0
  21. package/dist/commands/analytics/share.js +30 -0
  22. package/dist/commands/analytics/show.d.ts +11 -0
  23. package/dist/commands/analytics/show.js +32 -0
  24. package/dist/commands/analytics/unshare.d.ts +10 -0
  25. package/dist/commands/analytics/unshare.js +24 -0
  26. package/dist/commands/cron-monitors/list.d.ts +11 -0
  27. package/dist/commands/cron-monitors/list.js +38 -0
  28. package/dist/commands/cron-monitors/show.d.ts +9 -0
  29. package/dist/commands/cron-monitors/show.js +20 -0
  30. package/dist/commands/groups/create.d.ts +1 -0
  31. package/dist/commands/groups/create.js +7 -0
  32. package/dist/commands/groups/update.d.ts +1 -0
  33. package/dist/commands/groups/update.js +8 -1
  34. package/dist/commands/ideas/archive.d.ts +12 -0
  35. package/dist/commands/ideas/archive.js +24 -0
  36. package/dist/commands/ideas/case-delete.d.ts +14 -0
  37. package/dist/commands/ideas/case-delete.js +30 -0
  38. package/dist/commands/ideas/case-update.d.ts +15 -0
  39. package/dist/commands/ideas/case-update.js +41 -0
  40. package/dist/commands/ideas/delete.d.ts +13 -0
  41. package/dist/commands/ideas/delete.js +27 -0
  42. package/dist/commands/ideas/unarchive.d.ts +12 -0
  43. package/dist/commands/ideas/unarchive.js +24 -0
  44. package/dist/commands/logs/link.d.ts +12 -0
  45. package/dist/commands/logs/link.js +33 -0
  46. package/dist/commands/logs/show.d.ts +9 -0
  47. package/dist/commands/logs/show.js +21 -0
  48. package/dist/commands/logs/unlink.d.ts +13 -0
  49. package/dist/commands/logs/unlink.js +26 -0
  50. package/dist/commands/members/remove.d.ts +12 -0
  51. package/dist/commands/members/remove.js +27 -0
  52. package/dist/commands/members/set-access.d.ts +4 -0
  53. package/dist/commands/members/set-access.js +38 -4
  54. package/dist/commands/members/update.d.ts +14 -0
  55. package/dist/commands/members/update.js +40 -0
  56. package/dist/commands/monitors/announcements/clear.d.ts +13 -0
  57. package/dist/commands/monitors/announcements/clear.js +27 -0
  58. package/dist/commands/monitors/announcements/set.d.ts +17 -0
  59. package/dist/commands/monitors/announcements/set.js +45 -0
  60. package/dist/commands/monitors/announcements/show.d.ts +12 -0
  61. package/dist/commands/monitors/announcements/show.js +24 -0
  62. package/dist/commands/monitors/create.d.ts +1 -0
  63. package/dist/commands/monitors/create.js +3 -0
  64. package/dist/commands/monitors/incidents/delete.d.ts +14 -0
  65. package/dist/commands/monitors/incidents/delete.js +28 -0
  66. package/dist/commands/monitors/incidents/group.d.ts +15 -0
  67. package/dist/commands/monitors/incidents/group.js +38 -0
  68. package/dist/commands/monitors/incidents/ungroup.d.ts +14 -0
  69. package/dist/commands/monitors/incidents/ungroup.js +31 -0
  70. package/dist/commands/monitors/incidents/update-add.d.ts +15 -0
  71. package/dist/commands/monitors/incidents/update-add.js +38 -0
  72. package/dist/commands/monitors/incidents/update-delete.d.ts +15 -0
  73. package/dist/commands/monitors/incidents/update-delete.js +31 -0
  74. package/dist/commands/monitors/publish.d.ts +12 -0
  75. package/dist/commands/monitors/publish.js +21 -0
  76. package/dist/commands/monitors/unpublish.d.ts +12 -0
  77. package/dist/commands/monitors/unpublish.js +21 -0
  78. package/dist/commands/monitors/update.d.ts +1 -0
  79. package/dist/commands/monitors/update.js +3 -0
  80. package/dist/commands/org/update.d.ts +2 -0
  81. package/dist/commands/org/update.js +10 -0
  82. package/dist/commands/platforms/create.d.ts +1 -0
  83. package/dist/commands/platforms/create.js +7 -0
  84. package/dist/commands/platforms/update.d.ts +1 -0
  85. package/dist/commands/platforms/update.js +8 -1
  86. package/dist/commands/projects/create.d.ts +2 -0
  87. package/dist/commands/projects/create.js +13 -0
  88. package/dist/commands/projects/link-server.d.ts +11 -0
  89. package/dist/commands/projects/link-server.js +33 -0
  90. package/dist/commands/projects/settings/show.d.ts +9 -0
  91. package/dist/commands/projects/settings/show.js +23 -0
  92. package/dist/commands/projects/settings/update.d.ts +14 -0
  93. package/dist/commands/projects/settings/update.js +50 -0
  94. package/dist/commands/projects/unlink-server.d.ts +13 -0
  95. package/dist/commands/projects/unlink-server.js +29 -0
  96. package/dist/commands/projects/update.d.ts +2 -0
  97. package/dist/commands/projects/update.js +14 -1
  98. package/dist/commands/releases/list.d.ts +10 -0
  99. package/dist/commands/releases/list.js +29 -0
  100. package/dist/commands/tickets/links.d.ts +12 -0
  101. package/dist/commands/tickets/links.js +33 -0
  102. package/dist/commands/tickets/reviewer.d.ts +13 -0
  103. package/dist/commands/tickets/reviewer.js +29 -0
  104. package/dist/commands/tickets/unlink.d.ts +14 -0
  105. package/dist/commands/tickets/unlink.js +29 -0
  106. package/dist/commands/tickets/unreviewer.d.ts +12 -0
  107. package/dist/commands/tickets/unreviewer.js +25 -0
  108. package/dist/commands/tickets/unwatch.d.ts +12 -0
  109. package/dist/commands/tickets/unwatch.js +25 -0
  110. package/dist/commands/tickets/watch.d.ts +12 -0
  111. package/dist/commands/tickets/watch.js +26 -0
  112. package/dist/commands/todos/complete.d.ts +10 -0
  113. package/dist/commands/todos/complete.js +23 -0
  114. package/dist/commands/todos/create.d.ts +10 -0
  115. package/dist/commands/todos/create.js +29 -0
  116. package/dist/commands/todos/delete.d.ts +12 -0
  117. package/dist/commands/todos/delete.js +25 -0
  118. package/dist/commands/todos/items/add.d.ts +14 -0
  119. package/dist/commands/todos/items/add.js +35 -0
  120. package/dist/commands/todos/items/delete.d.ts +13 -0
  121. package/dist/commands/todos/items/delete.js +26 -0
  122. package/dist/commands/todos/items/list.d.ts +12 -0
  123. package/dist/commands/todos/items/list.js +28 -0
  124. package/dist/commands/todos/items/update.d.ts +15 -0
  125. package/dist/commands/todos/items/update.js +38 -0
  126. package/dist/commands/todos/list.d.ts +9 -0
  127. package/dist/commands/todos/list.js +24 -0
  128. package/dist/commands/todos/reorder.d.ts +9 -0
  129. package/dist/commands/todos/reorder.js +19 -0
  130. package/dist/commands/todos/share.d.ts +12 -0
  131. package/dist/commands/todos/share.js +33 -0
  132. package/dist/commands/todos/shared-show.d.ts +9 -0
  133. package/dist/commands/todos/shared-show.js +20 -0
  134. package/dist/commands/todos/shared.d.ts +9 -0
  135. package/dist/commands/todos/shared.js +25 -0
  136. package/dist/commands/todos/shares.d.ts +9 -0
  137. package/dist/commands/todos/shares.js +26 -0
  138. package/dist/commands/todos/show.d.ts +9 -0
  139. package/dist/commands/todos/show.js +20 -0
  140. package/dist/commands/todos/uncomplete.d.ts +10 -0
  141. package/dist/commands/todos/uncomplete.js +23 -0
  142. package/dist/commands/todos/update.d.ts +13 -0
  143. package/dist/commands/todos/update.js +34 -0
  144. package/dist/commands/uptime-groups/create.d.ts +12 -0
  145. package/dist/commands/uptime-groups/create.js +35 -0
  146. package/dist/commands/uptime-groups/delete.d.ts +12 -0
  147. package/dist/commands/uptime-groups/delete.js +25 -0
  148. package/dist/commands/uptime-groups/list.d.ts +9 -0
  149. package/dist/commands/uptime-groups/list.js +24 -0
  150. package/dist/commands/uptime-groups/publish.d.ts +9 -0
  151. package/dist/commands/uptime-groups/publish.js +22 -0
  152. package/dist/commands/uptime-groups/show.d.ts +9 -0
  153. package/dist/commands/uptime-groups/show.js +20 -0
  154. package/dist/commands/uptime-groups/unpublish.d.ts +9 -0
  155. package/dist/commands/uptime-groups/unpublish.js +22 -0
  156. package/dist/commands/uptime-groups/update.d.ts +15 -0
  157. package/dist/commands/uptime-groups/update.js +37 -0
  158. package/oclif.manifest.json +5826 -2217
  159. package/opencli.json +3003 -83
  160. package/package.json +16 -1
package/README.md CHANGED
@@ -33,9 +33,15 @@ organization are stored locally.
33
33
  | `whoami` | Show account, organization, token prefix and permissions. |
34
34
  | `projects list [--page]` | List visible projects. |
35
35
  | `projects show <id\|key>` | Show one project. |
36
- | `projects create <name> [--group <id\|name>] [--key] [--color] [--description]` | Create a project (key derived from the name if omitted). |
36
+ | `projects create <name> --key <key> [--group <id\|name>] [--color] [--description] [--roadmap-enabled] [--quick-bug-report-enabled]` | Create a project (optionally inside a group). |
37
+ | `projects update --project <id\|key> [--name] [--key] [--color] [--description] [--group] [--roadmap-enabled] [--quick-bug-report-enabled]` | Update a project (only the passed fields change). |
38
+ | `projects link-server --project <id\|key> --host-id <id> --environment-id <id>` | Link a server host to a declared project environment (uptime). |
39
+ | `projects unlink-server <link-id> --project <id\|key> --confirm` | Unlink a server host from the project. |
40
+ | `projects settings show --project <id\|key>` | Show a project's settings (log/analytics retention + feature flags). |
41
+ | `projects settings update --project <id\|key> [--logs-retention-days] [--analytics-retention-days] [--roadmap-enabled] [--quick-bug-report-enabled] [--analytics-enabled]` | Update a project's settings (only the passed fields change). |
37
42
  | `groups list [--page]` | List groups (macro-projects) in your org. |
38
- | `groups create <name> [--color]` | Create a group (container of related projects, e.g. "DriverOne"). |
43
+ | `groups create <name> [--color] [--roadmap-enabled]` | Create a group (container of related projects, e.g. "DriverOne"). |
44
+ | `groups update <id\|name> [--name] [--color] [--roadmap-enabled]` | Update a group (rename, recolor, toggle roadmap). |
39
45
  | `roles list\|show <id\|name>` | List roles / show a role with its permission keys. |
40
46
  | `roles create <name> [--permission <key>…] [--color]` | Create an RBAC role (bundle of permission keys). |
41
47
  | `roles update <id\|name> [--name] [--permission <key>…] [--color]` | Update a role (permissions REPLACE the set). |
@@ -46,9 +52,15 @@ organization are stored locally.
46
52
  | `teams add-member\|remove-member <team> <email\|id>` | Add/remove one person, keeping the others. |
47
53
  | `teams delete <id\|name>` | Delete a team. |
48
54
  | `members list [--page]` | List org members (resolve email → account id). |
55
+ | `members set-access <membership-id> [--group <id\|name>…] [--project <id\|key>…] [--role-id <id\|name>…] [--override <key=allow\|deny\|inherit>…]` | Set a member's scope, direct roles and permission overrides. |
56
+ | `members update <membership-id> [--name] [--email] [--handle]` | Update a member's profile (requires members.edit). |
57
+ | `members remove <membership-id> --confirm` | Remove a member from the org (requires members.manage). |
49
58
  | `invitations create <email> [--role customer\|member\|admin]` | Invite a person; prints the acceptance link (once). |
50
59
  | `invitations list [--page]` | List invitations. |
51
60
  | `invitations revoke <id>` | Revoke a pending invitation. |
61
+ | `org update [--name] [--slug] [--projects-view cards\|table] [--logs-retention-days] [--analytics-retention-days]` | Update the organization (requires organization.manage). |
62
+ | `platforms create <code> --label <label> [--color] [--position] [--active] [--supports-uptime]` | Create a platform (a device/system your projects run on). |
63
+ | `platforms update <id\|code> [--code] [--label] [--color] [--position] [--active] [--supports-uptime]` | Update a platform. |
52
64
  | `errors list --project <id\|key> [--status] [--page]` | List error groups. |
53
65
  | `errors show <id> --project <id\|key>` | Show one error group. |
54
66
  | `errors resolve\|reopen\|mute\|unmute <id> --project <id\|key>` | Triage an error group. |
@@ -61,9 +73,21 @@ organization are stored locally.
61
73
  | `tickets create --project <id\|key> --title <t> [--kind] [--step-*] [--description] [--status-id] [--priority-id]` | Create a ticket. |
62
74
  | `tickets reject <id> --project <id\|key> --reason <text>` | Reject the review: back to work, the reason becomes a comment. |
63
75
  | `tickets approve <id> --project <id\|key>` | Approve the review: move to the first done status. |
76
+ | `tickets links <id> --project <id\|key>` | List the ticket-to-ticket links (duplicate/related) involving a ticket. |
77
+ | `tickets unlink <id> <link-id> --project <id\|key> --confirm` | Remove a ticket-to-ticket link (requires tickets.edit). |
78
+ | `tickets reviewer <id> --project <id\|key> --reviewer-id <account-id>` | Set the reviewer of a ticket (requires tickets.assign). |
79
+ | `tickets unreviewer <id> --project <id\|key>` | Remove the reviewer of a ticket. |
80
+ | `tickets watch\|unwatch <id> --project <id\|key>` | Watch / stop watching a ticket (its notifications). |
81
+ | `ideas delete <id> --project <id\|key> --confirm` | Delete an idea (author always allowed; others need ideas.delete). |
82
+ | `ideas archive\|unarchive <id> --project <id\|key>` | Archive an idea (open → archived) / reopen it. |
83
+ | `ideas case-update <idea-id> <case-id> --project <id\|key> [--title] [--description]` | Update a case (example) of an idea. |
84
+ | `ideas case-delete <idea-id> <case-id> --project <id\|key> --confirm` | Delete a case from an open idea. |
64
85
  | `metrics list --project <id\|key> [--kind] [--page]` | List metric groups. |
65
86
  | `metrics show <id> --project <id\|key>` | Show one metric group. |
66
87
  | `logs list [--project <id\|key>] [--level] [--trace-id] [--environment] [--page]` | List structured log entries. Cross-app: omit `--project` for the full visible stream. |
88
+ | `logs show <id>` | Show a single log entry (attributes, trace id, correlation). |
89
+ | `logs link <id> --to <Errors::Group:uuid\|Ticketing::Ticket:uuid>` | Manually link a log entry to an error group or ticket. |
90
+ | `logs unlink <id> <link-id> --confirm` | Remove a manual log link. |
67
91
  | `kb list [--project <id\|key>] [--kind] [--per] [--page]` | List knowledge pages. Cross-project: omit `--project` for every visible project. |
68
92
  | `kb search <query…> [--project <id\|key>] [--kind] [--per] [--page]` | Search knowledge pages (semantic when available, title ILIKE fallback). |
69
93
  | `kb show <id>` | Show one knowledge page: metadata header + raw markdown body. |
@@ -81,9 +105,56 @@ organization are stored locally.
81
105
  | `servers tokens list` | List the fleet enrollment tokens. |
82
106
  | `servers tokens create <name>` | Create an enrollment token (secret shown once). |
83
107
  | `servers tokens revoke <id> --confirm` | Revoke an enrollment token. |
108
+ | `monitors create --project <id\|key> --url <url> [--environment] [--http-method] [--interval-seconds] [--expected-status] [--timeout-seconds] [--expected-body-keyword] [--ssl-expiry-warn-days] [--group-id]` | Create an uptime monitor (one per environment). |
109
+ | `monitors update <id> --project <id\|key> [--url] [--http-method] [--interval-seconds] [--expected-status] [--timeout-seconds] [--expected-body-keyword] [--ssl-expiry-warn-days] [--group-id]` | Update an uptime monitor. |
110
+ | `monitors publish\|unpublish <id> --project <id\|key>` | Publish / unpublish the monitor's public status page. |
111
+ | `monitors announcements show <id> --project <id\|key>` | Show the status-page announcement banner. |
112
+ | `monitors announcements set <id> --project <id\|key> [--level info\|maintenance\|warning] [--message] [--starts-at] [--ends-at] [--active]` | Upsert the status-page announcement banner. |
113
+ | `monitors announcements clear <id> --project <id\|key> --confirm` | Remove the announcement banner. |
114
+ | `monitors incidents delete <id> <incident-id> --project <id\|key> --confirm` | Delete an uptime incident. |
115
+ | `monitors incidents group <id> --project <id\|key> --incident <id>… --phase <phase> [--body]` | Unify incidents and post the first narration step. |
116
+ | `monitors incidents ungroup <id> <incident-id> --project <id\|key> [--keep <window-id>]` | Dissolve an incident grouping. |
117
+ | `monitors incidents update-add <id> <incident-id> --project <id\|key> --phase <phase> [--body]` | Add a timeline step to a narrated incident. |
118
+ | `monitors incidents update-delete <id> <incident-id> <update-id> --project <id\|key> --confirm` | Delete a timeline step from an incident. |
119
+ | `uptime-groups list [--page]` | List uptime monitor groups in your org. |
120
+ | `uptime-groups show <id>` | Show an uptime monitor group. |
121
+ | `uptime-groups create --name <name> [--color] [--icon] [--description]` | Create an uptime monitor group (org-level container). |
122
+ | `uptime-groups update <id> [--name] [--color] [--icon] [--description]` | Update an uptime monitor group. |
123
+ | `uptime-groups delete <id> --confirm` | Delete an uptime monitor group. |
124
+ | `uptime-groups publish\|unpublish <id>` | Publish / unpublish the group's public status page. |
125
+ | `cron-monitors list [--status] [--project <id\|key>] [--page]` | List cron / heartbeat monitors across visible projects. |
126
+ | `cron-monitors show <id>` | Show a cron / heartbeat monitor. |
127
+ | `analytics show --project <id\|key> [--range 24h\|7d\|30d\|1y] [--environment]` | Show the web analytics snapshot (traffic, top pages, goals). |
128
+ | `analytics share --project <id\|key> [--password]` | Publish a public shareable analytics link. |
129
+ | `analytics unshare --project <id\|key> --confirm` | Revoke the public analytics link. |
130
+ | `analytics goals list --project <id\|key>` | List a project's conversion goals. |
131
+ | `analytics goals create --project <id\|key> --kind pageview_path\|custom_event --display-name <name> [--event-name] [--path-pattern]` | Create a conversion goal. |
132
+ | `analytics goals delete <id> --project <id\|key> --confirm` | Delete a conversion goal. |
133
+ | `releases list --project <id\|key> [--page]` | List a project's releases (tracked from CI). |
84
134
  | `alerts channels list` | List the external alert channels (webhook / Telegram). |
85
135
  | `alerts channels create <name> --kind telegram\|webhook …` | Create a channel (`--bot-token`/`--chat-id` or `--url`/`--secret`). |
86
136
  | `alerts channels delete <id> --confirm` | Delete a channel. |
137
+ | `alerts notifications list [--page]` | List your in-app alert notifications. |
138
+ | `alerts notifications read <id>` | Mark a notification as read. |
139
+ | `alerts notifications read-all` | Mark all your unread notifications as read. |
140
+ | `alerts notifications delete <id> --confirm` | Delete one of your notifications. |
141
+ | `alerts preferences show` | Show your personal alert preferences (per org). |
142
+ | `alerts preferences update [--in-app-enabled] [--email-enabled] [--errors-enabled] [--uptime-enabled] [--tickets-enabled] [--chat-enabled] [--servers-enabled] [--min-level] [--quiet-hours-enabled] [--quiet-hours-start] [--quiet-hours-end] [--quiet-hours-tz]` | Update your personal alert preferences (send only the fields to change). |
143
+ | `todos list [--page]` | List your own todo lists. |
144
+ | `todos show <id>` | Show one of your todo lists. |
145
+ | `todos create --name <name> [--color]` | Create a todo list. |
146
+ | `todos update <id> [--name] [--color]` | Update a todo list (rename or recolor). |
147
+ | `todos delete <id> --confirm` | Delete a todo list. |
148
+ | `todos reorder --list <id>…` | Reorder your todo lists (pass --list once per id, in order). |
149
+ | `todos shares <list-id>` | List the members a todo list is shared with. |
150
+ | `todos share <list-id> [--account <id>…]` | Set who a todo list is shared with (omit --account to unshare all). |
151
+ | `todos complete\|uncomplete <list-id> <item-id>` | Mark a todo item done / reopen it. |
152
+ | `todos shared [--page]` | List todo lists shared with you (read-only). |
153
+ | `todos shared-show <id>` | Show a todo list shared with you (read-only). |
154
+ | `todos items list <list-id> [--page]` | List the items of a todo list. |
155
+ | `todos items add <list-id> --title <title> [--ticket] [--position]` | Add an item to a todo list. |
156
+ | `todos items update <list-id> <item-id> [--title] [--ticket] [--position]` | Update a todo item. |
157
+ | `todos items delete <list-id> <item-id> --confirm` | Delete a todo item. |
87
158
 
88
159
  Every command accepts `--json` for machine-readable output and `--help` for usage details.
89
160
  `--project` accepts either a project UUID or its key (matched case-insensitively).
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class AlertsNotificationsDelete extends BaseCommand {
3
+ static args: {
4
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
5
+ };
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ confirm: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<unknown>;
12
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../../base");
5
+ class AlertsNotificationsDelete extends base_1.BaseCommand {
6
+ static args = {
7
+ id: core_1.Args.string({ description: 'Notification id', required: true }),
8
+ };
9
+ static description = 'Delete one of your notifications (irreversible)';
10
+ static examples = ['<%= config.bin %> alerts notifications delete <notification-id> --confirm'];
11
+ static flags = {
12
+ confirm: core_1.Flags.boolean({ description: 'Required: confirm the irreversible deletion' }),
13
+ };
14
+ async run() {
15
+ const { args, flags } = await this.parse(AlertsNotificationsDelete);
16
+ if (!flags.confirm) {
17
+ this.error('Refusing to delete without --confirm (the action is irreversible).', { exit: 2 });
18
+ }
19
+ await this.api.delete(`/cli/v1/alert_notifications/${args.id}`);
20
+ if (!this.jsonEnabled())
21
+ this.log(`Deleted notification ${args.id}`);
22
+ return { deleted: args.id };
23
+ }
24
+ }
25
+ exports.default = AlertsNotificationsDelete;
@@ -0,0 +1,9 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class AlertsNotificationsList extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ page: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ };
8
+ run(): Promise<unknown>;
9
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const base_1 = require("../../../base");
4
+ const output_1 = require("../../../lib/output");
5
+ class AlertsNotificationsList extends base_1.BaseCommand {
6
+ static description = 'List your in-app alert notifications (your own inbox)';
7
+ static examples = [
8
+ '<%= config.bin %> alerts notifications list',
9
+ '<%= config.bin %> alerts notifications list --page 2 --json',
10
+ ];
11
+ static flags = { ...base_1.pageFlag };
12
+ async run() {
13
+ const { flags } = await this.parse(AlertsNotificationsList);
14
+ const res = await this.api.get(`/cli/v1/alert_notifications?page=${flags.page}`);
15
+ const notifications = res.data ?? [];
16
+ if (!this.jsonEnabled()) {
17
+ this.log((0, output_1.renderTable)(['CREATED_AT', 'READ', 'TYPE', 'TITLE', 'ID'], notifications.map((notification) => [
18
+ String(notification.created_at ?? ''),
19
+ String(notification.read ?? ''),
20
+ String(notification.event_type ?? ''),
21
+ String(notification.title ?? ''),
22
+ String(notification.id ?? ''),
23
+ ])));
24
+ this.log(`\nUnread: ${String(res.meta?.unread ?? 0)}`);
25
+ }
26
+ return res;
27
+ }
28
+ }
29
+ exports.default = AlertsNotificationsList;
@@ -0,0 +1,6 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class AlertsNotificationsReadAll extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<unknown>;
6
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const base_1 = require("../../../base");
4
+ class AlertsNotificationsReadAll extends base_1.BaseCommand {
5
+ static description = 'Mark all your unread notifications as read';
6
+ static examples = ['<%= config.bin %> alerts notifications read-all'];
7
+ async run() {
8
+ const res = await this.api.put('/cli/v1/alert_notifications/read_all');
9
+ if (!this.jsonEnabled()) {
10
+ this.log(`Marked ${res.data?.marked_read ?? 0} notification(s) read`);
11
+ }
12
+ return res;
13
+ }
14
+ }
15
+ exports.default = AlertsNotificationsReadAll;
@@ -0,0 +1,9 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class AlertsNotificationsRead extends BaseCommand {
3
+ static args: {
4
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
5
+ };
6
+ static description: string;
7
+ static examples: string[];
8
+ run(): Promise<unknown>;
9
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../../base");
5
+ const output_1 = require("../../../lib/output");
6
+ class AlertsNotificationsRead extends base_1.BaseCommand {
7
+ static args = {
8
+ id: core_1.Args.string({ description: 'Notification id', required: true }),
9
+ };
10
+ static description = 'Mark a single notification as read (idempotent)';
11
+ static examples = ['<%= config.bin %> alerts notifications read <notification-id>'];
12
+ async run() {
13
+ const { args } = await this.parse(AlertsNotificationsRead);
14
+ const res = await this.api.put(`/cli/v1/alert_notifications/${args.id}/read`);
15
+ if (!this.jsonEnabled()) {
16
+ this.log(`Notification ${args.id} marked read:`);
17
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
18
+ }
19
+ return res;
20
+ }
21
+ }
22
+ exports.default = AlertsNotificationsRead;
@@ -0,0 +1,6 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class AlertsPreferencesShow extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<unknown>;
6
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const base_1 = require("../../../base");
4
+ const output_1 = require("../../../lib/output");
5
+ class AlertsPreferencesShow extends base_1.BaseCommand {
6
+ static description = 'Show your personal alert preferences (per organization)';
7
+ static examples = ['<%= config.bin %> alerts preferences show'];
8
+ async run() {
9
+ const res = await this.api.get('/cli/v1/alert_preferences');
10
+ if (!this.jsonEnabled()) {
11
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
12
+ }
13
+ return res;
14
+ }
15
+ }
16
+ exports.default = AlertsPreferencesShow;
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class AlertsPreferencesUpdate extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ 'in-app-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
+ 'email-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ 'errors-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ 'uptime-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ 'tickets-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ 'chat-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ 'servers-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ 'min-level': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ 'quiet-hours-enabled': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ 'quiet-hours-start': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
+ 'quiet-hours-end': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ 'quiet-hours-tz': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<unknown>;
20
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../../base");
5
+ const output_1 = require("../../../lib/output");
6
+ class AlertsPreferencesUpdate extends base_1.BaseCommand {
7
+ static description = 'Update your personal alert preferences (send only the fields you want to change)';
8
+ static examples = [
9
+ '<%= config.bin %> alerts preferences update --no-email-enabled --min-level error',
10
+ '<%= config.bin %> alerts preferences update --quiet-hours-enabled --quiet-hours-start 22:00 --quiet-hours-end 07:00 --quiet-hours-tz Europe/Rome',
11
+ ];
12
+ static flags = {
13
+ 'in-app-enabled': core_1.Flags.boolean({ allowNo: true, description: 'Deliver notifications in-app' }),
14
+ 'email-enabled': core_1.Flags.boolean({ allowNo: true, description: 'Deliver notifications by email' }),
15
+ 'errors-enabled': core_1.Flags.boolean({ allowNo: true, description: 'Receive error alerts' }),
16
+ 'uptime-enabled': core_1.Flags.boolean({ allowNo: true, description: 'Receive uptime alerts' }),
17
+ 'tickets-enabled': core_1.Flags.boolean({ allowNo: true, description: 'Receive ticket notifications' }),
18
+ 'chat-enabled': core_1.Flags.boolean({ allowNo: true, description: 'Receive chat notifications' }),
19
+ 'servers-enabled': core_1.Flags.boolean({ allowNo: true, description: 'Receive server alerts' }),
20
+ 'min-level': core_1.Flags.string({ description: 'Minimum error level that notifies you' }),
21
+ 'quiet-hours-enabled': core_1.Flags.boolean({ allowNo: true, description: 'Enable the quiet-hours window' }),
22
+ 'quiet-hours-start': core_1.Flags.string({ description: 'Quiet-hours start (HH:MM)' }),
23
+ 'quiet-hours-end': core_1.Flags.string({ description: 'Quiet-hours end (HH:MM)' }),
24
+ 'quiet-hours-tz': core_1.Flags.string({ description: 'Quiet-hours timezone (IANA, e.g. Europe/Rome)' }),
25
+ };
26
+ async run() {
27
+ const { flags } = await this.parse(AlertsPreferencesUpdate);
28
+ const body = {};
29
+ if (flags['in-app-enabled'] !== undefined)
30
+ body.in_app_enabled = flags['in-app-enabled'];
31
+ if (flags['email-enabled'] !== undefined)
32
+ body.email_enabled = flags['email-enabled'];
33
+ if (flags['errors-enabled'] !== undefined)
34
+ body.errors_enabled = flags['errors-enabled'];
35
+ if (flags['uptime-enabled'] !== undefined)
36
+ body.uptime_enabled = flags['uptime-enabled'];
37
+ if (flags['tickets-enabled'] !== undefined)
38
+ body.tickets_enabled = flags['tickets-enabled'];
39
+ if (flags['chat-enabled'] !== undefined)
40
+ body.chat_enabled = flags['chat-enabled'];
41
+ if (flags['servers-enabled'] !== undefined)
42
+ body.servers_enabled = flags['servers-enabled'];
43
+ if (flags['min-level'] !== undefined)
44
+ body.min_level = flags['min-level'];
45
+ // The backend keeps the quiet window only when quiet_hours_enabled is the string "1" (else it clears
46
+ // start/end). Map the boolean flag to that sentinel; pass start/end/tz through untouched.
47
+ if (flags['quiet-hours-enabled'] !== undefined)
48
+ body.quiet_hours_enabled = flags['quiet-hours-enabled'] ? '1' : '0';
49
+ if (flags['quiet-hours-start'] !== undefined)
50
+ body.quiet_hours_start = flags['quiet-hours-start'];
51
+ if (flags['quiet-hours-end'] !== undefined)
52
+ body.quiet_hours_end = flags['quiet-hours-end'];
53
+ if (flags['quiet-hours-tz'] !== undefined)
54
+ body.quiet_hours_tz = flags['quiet-hours-tz'];
55
+ const res = await this.api.put('/cli/v1/alert_preferences', body);
56
+ if (!this.jsonEnabled()) {
57
+ this.log('Alert preferences updated:');
58
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
59
+ }
60
+ return res;
61
+ }
62
+ }
63
+ exports.default = AlertsPreferencesUpdate;
@@ -0,0 +1,13 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class AnalyticsGoalsCreate extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ kind: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ 'display-name': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ 'event-name': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ 'path-pattern': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<unknown>;
13
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../../base");
5
+ const output_1 = require("../../../lib/output");
6
+ class AnalyticsGoalsCreate extends base_1.BaseCommand {
7
+ static description = 'Create a conversion goal on a project';
8
+ static examples = [
9
+ '<%= config.bin %> analytics goals create -p acme-web --kind custom_event --display-name Signup --event-name signup',
10
+ '<%= config.bin %> analytics goals create -p acme-web --kind pageview_path --display-name Pricing --path-pattern "/pricing"',
11
+ ];
12
+ static flags = {
13
+ ...base_1.projectFlag,
14
+ kind: core_1.Flags.string({ description: 'Goal kind', options: ['pageview_path', 'custom_event'], required: true }),
15
+ 'display-name': core_1.Flags.string({ description: 'Human-readable goal name', required: true }),
16
+ 'event-name': core_1.Flags.string({ description: 'Custom event name (required for custom_event goals)' }),
17
+ 'path-pattern': core_1.Flags.string({ description: 'Path pattern, "*" suffix = prefix match (required for pageview_path goals)' }),
18
+ };
19
+ async run() {
20
+ const { flags } = await this.parse(AnalyticsGoalsCreate);
21
+ const projectId = await this.resolveProjectId(flags.project);
22
+ const body = { kind: flags.kind, display_name: flags['display-name'] };
23
+ if (flags['event-name'] !== undefined)
24
+ body.event_name = flags['event-name'];
25
+ if (flags['path-pattern'] !== undefined)
26
+ body.path_pattern = flags['path-pattern'];
27
+ const res = await this.api.post(`/cli/v1/projects/${projectId}/analytics/goals`, body);
28
+ if (!this.jsonEnabled()) {
29
+ this.log('Goal created:');
30
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
31
+ }
32
+ return res;
33
+ }
34
+ }
35
+ exports.default = AnalyticsGoalsCreate;
@@ -0,0 +1,13 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class AnalyticsGoalsDelete extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ confirm: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<unknown>;
13
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../../base");
5
+ class AnalyticsGoalsDelete extends base_1.BaseCommand {
6
+ static description = 'Delete a conversion goal (irreversible)';
7
+ static examples = ['<%= config.bin %> analytics goals delete <goal-id> --project acme-web --confirm'];
8
+ static args = {
9
+ id: core_1.Args.string({ description: 'Goal id', required: true }),
10
+ };
11
+ static flags = {
12
+ ...base_1.projectFlag,
13
+ confirm: core_1.Flags.boolean({ description: 'Required: confirm the irreversible deletion' }),
14
+ };
15
+ async run() {
16
+ const { args, flags } = await this.parse(AnalyticsGoalsDelete);
17
+ if (!flags.confirm) {
18
+ this.error('Refusing to delete without --confirm (the action is irreversible).', { exit: 2 });
19
+ }
20
+ const projectId = await this.resolveProjectId(flags.project);
21
+ await this.api.delete(`/cli/v1/projects/${projectId}/analytics/goals/${args.id}`);
22
+ if (!this.jsonEnabled())
23
+ this.log(`Deleted goal ${args.id}`);
24
+ return { deleted: args.id };
25
+ }
26
+ }
27
+ exports.default = AnalyticsGoalsDelete;
@@ -0,0 +1,9 @@
1
+ import { BaseCommand } from '../../../base';
2
+ export default class AnalyticsGoalsList extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ };
8
+ run(): Promise<unknown>;
9
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const base_1 = require("../../../base");
4
+ const output_1 = require("../../../lib/output");
5
+ class AnalyticsGoalsList extends base_1.BaseCommand {
6
+ static description = 'List the conversion goals of a project';
7
+ static examples = ['<%= config.bin %> analytics goals list --project acme-web'];
8
+ static flags = { ...base_1.projectFlag };
9
+ async run() {
10
+ const { flags } = await this.parse(AnalyticsGoalsList);
11
+ const projectId = await this.resolveProjectId(flags.project);
12
+ const res = await this.api.get(`/cli/v1/projects/${projectId}/analytics/goals`);
13
+ const goals = res.data ?? [];
14
+ if (!this.jsonEnabled()) {
15
+ this.log((0, output_1.renderTable)(['NAME', 'KIND', 'TARGET', 'ID'], goals.map((goal) => [
16
+ String(goal.display_name ?? ''),
17
+ String(goal.kind ?? ''),
18
+ String(goal.event_name ?? goal.path_pattern ?? ''),
19
+ String(goal.id ?? ''),
20
+ ])));
21
+ }
22
+ return res;
23
+ }
24
+ }
25
+ exports.default = AnalyticsGoalsList;
@@ -0,0 +1,10 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class AnalyticsShare extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ password: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ };
9
+ run(): Promise<unknown>;
10
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../base");
5
+ const output_1 = require("../../lib/output");
6
+ class AnalyticsShare extends base_1.BaseCommand {
7
+ static description = 'Publish a public shareable link to the analytics dashboard (optional password)';
8
+ static examples = [
9
+ '<%= config.bin %> analytics share --project acme-web',
10
+ '<%= config.bin %> analytics share -p acme-web --password s3cret',
11
+ ];
12
+ static flags = {
13
+ ...base_1.projectFlag,
14
+ password: core_1.Flags.string({ description: 'Optional password to protect the shared link' }),
15
+ };
16
+ async run() {
17
+ const { flags } = await this.parse(AnalyticsShare);
18
+ const projectId = await this.resolveProjectId(flags.project);
19
+ const body = {};
20
+ if (flags.password !== undefined)
21
+ body.password = flags.password;
22
+ const res = await this.api.post(`/cli/v1/projects/${projectId}/analytics/share`, body);
23
+ if (!this.jsonEnabled()) {
24
+ this.log('Analytics dashboard shared:');
25
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
26
+ }
27
+ return res;
28
+ }
29
+ }
30
+ exports.default = AnalyticsShare;
@@ -0,0 +1,11 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class AnalyticsShow extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ range: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ environment: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ };
10
+ run(): Promise<unknown>;
11
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../base");
5
+ const output_1 = require("../../lib/output");
6
+ class AnalyticsShow extends base_1.BaseCommand {
7
+ static description = 'Show the web analytics snapshot for a project (traffic, top pages, goals)';
8
+ static examples = [
9
+ '<%= config.bin %> analytics show --project acme-web',
10
+ '<%= config.bin %> analytics show -p acme-web --range 30d --environment production --json',
11
+ ];
12
+ static flags = {
13
+ ...base_1.projectFlag,
14
+ range: core_1.Flags.string({ description: 'Time range', options: ['24h', '7d', '30d', '1y'] }),
15
+ environment: core_1.Flags.string({ description: 'Filter by environment code' }),
16
+ };
17
+ async run() {
18
+ const { flags } = await this.parse(AnalyticsShow);
19
+ const projectId = await this.resolveProjectId(flags.project);
20
+ const params = new URLSearchParams();
21
+ if (flags.range !== undefined)
22
+ params.set('range', flags.range);
23
+ if (flags.environment !== undefined)
24
+ params.set('environment', flags.environment);
25
+ const query = params.toString();
26
+ const res = await this.api.get(`/cli/v1/projects/${projectId}/analytics${query ? `?${query}` : ''}`);
27
+ if (!this.jsonEnabled())
28
+ this.log((0, output_1.renderRecord)(res.data ?? {}));
29
+ return res;
30
+ }
31
+ }
32
+ exports.default = AnalyticsShow;
@@ -0,0 +1,10 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class AnalyticsUnshare extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ confirm: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ };
9
+ run(): Promise<unknown>;
10
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_1 = require("../../base");
5
+ class AnalyticsUnshare extends base_1.BaseCommand {
6
+ static description = 'Revoke the public analytics dashboard link';
7
+ static examples = ['<%= config.bin %> analytics unshare --project acme-web --confirm'];
8
+ static flags = {
9
+ ...base_1.projectFlag,
10
+ confirm: core_1.Flags.boolean({ description: 'Required: confirm revoking the public link' }),
11
+ };
12
+ async run() {
13
+ const { flags } = await this.parse(AnalyticsUnshare);
14
+ if (!flags.confirm) {
15
+ this.error('Refusing to unshare without --confirm.', { exit: 2 });
16
+ }
17
+ const projectId = await this.resolveProjectId(flags.project);
18
+ await this.api.delete(`/cli/v1/projects/${projectId}/analytics/share`);
19
+ if (!this.jsonEnabled())
20
+ this.log('Revoked the public analytics link');
21
+ return { unshared: projectId };
22
+ }
23
+ }
24
+ exports.default = AnalyticsUnshare;