@bussolabs/closeyourit-cli 0.0.15 → 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 (164) 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/case.d.ts +14 -0
  41. package/dist/commands/ideas/case.js +33 -0
  42. package/dist/commands/ideas/delete.d.ts +13 -0
  43. package/dist/commands/ideas/delete.js +27 -0
  44. package/dist/commands/ideas/unarchive.d.ts +12 -0
  45. package/dist/commands/ideas/unarchive.js +24 -0
  46. package/dist/commands/ideas/update.d.ts +16 -0
  47. package/dist/commands/ideas/update.js +45 -0
  48. package/dist/commands/logs/link.d.ts +12 -0
  49. package/dist/commands/logs/link.js +33 -0
  50. package/dist/commands/logs/show.d.ts +9 -0
  51. package/dist/commands/logs/show.js +21 -0
  52. package/dist/commands/logs/unlink.d.ts +13 -0
  53. package/dist/commands/logs/unlink.js +26 -0
  54. package/dist/commands/members/remove.d.ts +12 -0
  55. package/dist/commands/members/remove.js +27 -0
  56. package/dist/commands/members/set-access.d.ts +4 -0
  57. package/dist/commands/members/set-access.js +38 -4
  58. package/dist/commands/members/update.d.ts +14 -0
  59. package/dist/commands/members/update.js +40 -0
  60. package/dist/commands/monitors/announcements/clear.d.ts +13 -0
  61. package/dist/commands/monitors/announcements/clear.js +27 -0
  62. package/dist/commands/monitors/announcements/set.d.ts +17 -0
  63. package/dist/commands/monitors/announcements/set.js +45 -0
  64. package/dist/commands/monitors/announcements/show.d.ts +12 -0
  65. package/dist/commands/monitors/announcements/show.js +24 -0
  66. package/dist/commands/monitors/create.d.ts +1 -0
  67. package/dist/commands/monitors/create.js +3 -0
  68. package/dist/commands/monitors/incidents/delete.d.ts +14 -0
  69. package/dist/commands/monitors/incidents/delete.js +28 -0
  70. package/dist/commands/monitors/incidents/group.d.ts +15 -0
  71. package/dist/commands/monitors/incidents/group.js +38 -0
  72. package/dist/commands/monitors/incidents/ungroup.d.ts +14 -0
  73. package/dist/commands/monitors/incidents/ungroup.js +31 -0
  74. package/dist/commands/monitors/incidents/update-add.d.ts +15 -0
  75. package/dist/commands/monitors/incidents/update-add.js +38 -0
  76. package/dist/commands/monitors/incidents/update-delete.d.ts +15 -0
  77. package/dist/commands/monitors/incidents/update-delete.js +31 -0
  78. package/dist/commands/monitors/publish.d.ts +12 -0
  79. package/dist/commands/monitors/publish.js +21 -0
  80. package/dist/commands/monitors/unpublish.d.ts +12 -0
  81. package/dist/commands/monitors/unpublish.js +21 -0
  82. package/dist/commands/monitors/update.d.ts +1 -0
  83. package/dist/commands/monitors/update.js +3 -0
  84. package/dist/commands/org/update.d.ts +2 -0
  85. package/dist/commands/org/update.js +10 -0
  86. package/dist/commands/platforms/create.d.ts +1 -0
  87. package/dist/commands/platforms/create.js +7 -0
  88. package/dist/commands/platforms/update.d.ts +1 -0
  89. package/dist/commands/platforms/update.js +8 -1
  90. package/dist/commands/projects/create.d.ts +2 -0
  91. package/dist/commands/projects/create.js +13 -0
  92. package/dist/commands/projects/link-server.d.ts +11 -0
  93. package/dist/commands/projects/link-server.js +33 -0
  94. package/dist/commands/projects/settings/show.d.ts +9 -0
  95. package/dist/commands/projects/settings/show.js +23 -0
  96. package/dist/commands/projects/settings/update.d.ts +14 -0
  97. package/dist/commands/projects/settings/update.js +50 -0
  98. package/dist/commands/projects/unlink-server.d.ts +13 -0
  99. package/dist/commands/projects/unlink-server.js +29 -0
  100. package/dist/commands/projects/update.d.ts +2 -0
  101. package/dist/commands/projects/update.js +14 -1
  102. package/dist/commands/releases/list.d.ts +10 -0
  103. package/dist/commands/releases/list.js +29 -0
  104. package/dist/commands/tickets/links.d.ts +12 -0
  105. package/dist/commands/tickets/links.js +33 -0
  106. package/dist/commands/tickets/reviewer.d.ts +13 -0
  107. package/dist/commands/tickets/reviewer.js +29 -0
  108. package/dist/commands/tickets/unlink.d.ts +14 -0
  109. package/dist/commands/tickets/unlink.js +29 -0
  110. package/dist/commands/tickets/unreviewer.d.ts +12 -0
  111. package/dist/commands/tickets/unreviewer.js +25 -0
  112. package/dist/commands/tickets/unwatch.d.ts +12 -0
  113. package/dist/commands/tickets/unwatch.js +25 -0
  114. package/dist/commands/tickets/watch.d.ts +12 -0
  115. package/dist/commands/tickets/watch.js +26 -0
  116. package/dist/commands/todos/complete.d.ts +10 -0
  117. package/dist/commands/todos/complete.js +23 -0
  118. package/dist/commands/todos/create.d.ts +10 -0
  119. package/dist/commands/todos/create.js +29 -0
  120. package/dist/commands/todos/delete.d.ts +12 -0
  121. package/dist/commands/todos/delete.js +25 -0
  122. package/dist/commands/todos/items/add.d.ts +14 -0
  123. package/dist/commands/todos/items/add.js +35 -0
  124. package/dist/commands/todos/items/delete.d.ts +13 -0
  125. package/dist/commands/todos/items/delete.js +26 -0
  126. package/dist/commands/todos/items/list.d.ts +12 -0
  127. package/dist/commands/todos/items/list.js +28 -0
  128. package/dist/commands/todos/items/update.d.ts +15 -0
  129. package/dist/commands/todos/items/update.js +38 -0
  130. package/dist/commands/todos/list.d.ts +9 -0
  131. package/dist/commands/todos/list.js +24 -0
  132. package/dist/commands/todos/reorder.d.ts +9 -0
  133. package/dist/commands/todos/reorder.js +19 -0
  134. package/dist/commands/todos/share.d.ts +12 -0
  135. package/dist/commands/todos/share.js +33 -0
  136. package/dist/commands/todos/shared-show.d.ts +9 -0
  137. package/dist/commands/todos/shared-show.js +20 -0
  138. package/dist/commands/todos/shared.d.ts +9 -0
  139. package/dist/commands/todos/shared.js +25 -0
  140. package/dist/commands/todos/shares.d.ts +9 -0
  141. package/dist/commands/todos/shares.js +26 -0
  142. package/dist/commands/todos/show.d.ts +9 -0
  143. package/dist/commands/todos/show.js +20 -0
  144. package/dist/commands/todos/uncomplete.d.ts +10 -0
  145. package/dist/commands/todos/uncomplete.js +23 -0
  146. package/dist/commands/todos/update.d.ts +13 -0
  147. package/dist/commands/todos/update.js +34 -0
  148. package/dist/commands/uptime-groups/create.d.ts +12 -0
  149. package/dist/commands/uptime-groups/create.js +35 -0
  150. package/dist/commands/uptime-groups/delete.d.ts +12 -0
  151. package/dist/commands/uptime-groups/delete.js +25 -0
  152. package/dist/commands/uptime-groups/list.d.ts +9 -0
  153. package/dist/commands/uptime-groups/list.js +24 -0
  154. package/dist/commands/uptime-groups/publish.d.ts +9 -0
  155. package/dist/commands/uptime-groups/publish.js +22 -0
  156. package/dist/commands/uptime-groups/show.d.ts +9 -0
  157. package/dist/commands/uptime-groups/show.js +20 -0
  158. package/dist/commands/uptime-groups/unpublish.d.ts +9 -0
  159. package/dist/commands/uptime-groups/unpublish.js +22 -0
  160. package/dist/commands/uptime-groups/update.d.ts +15 -0
  161. package/dist/commands/uptime-groups/update.js +37 -0
  162. package/oclif.manifest.json +5936 -2190
  163. package/opencli.json +3235 -189
  164. package/package.json +16 -1
package/opencli.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "opencli": "0.1",
4
4
  "info": {
5
5
  "title": "closeyourit",
6
- "version": "0.0.13",
6
+ "version": "0.0.17",
7
7
  "summary": "CLI for CloseYourIt",
8
8
  "description": "Manage organization, projects, error monitoring, ingest tokens, tickets and performance metrics with your CloseYourIt user token.",
9
9
  "license": {
@@ -122,6 +122,319 @@
122
122
  "examples": [
123
123
  "closeyourit projects show acme-api"
124
124
  ]
125
+ },
126
+ {
127
+ "name": "create",
128
+ "description": "Create a project (optionally inside a group).",
129
+ "arguments": [
130
+ {
131
+ "name": "NAME",
132
+ "required": true,
133
+ "description": "Project name."
134
+ }
135
+ ],
136
+ "options": [
137
+ {
138
+ "name": "--key",
139
+ "aliases": [
140
+ "-k"
141
+ ],
142
+ "required": true,
143
+ "description": "Project key (uppercase A-Z0-9, max 4 chars, unique per org).",
144
+ "arguments": [
145
+ {
146
+ "name": "KEY",
147
+ "required": true
148
+ }
149
+ ]
150
+ },
151
+ {
152
+ "name": "--group",
153
+ "aliases": [
154
+ "-g"
155
+ ],
156
+ "description": "Group id (UUID) or name to place the project in.",
157
+ "arguments": [
158
+ {
159
+ "name": "GROUP"
160
+ }
161
+ ]
162
+ },
163
+ {
164
+ "name": "--color",
165
+ "description": "Color label.",
166
+ "arguments": [
167
+ {
168
+ "name": "COLOR"
169
+ }
170
+ ]
171
+ },
172
+ {
173
+ "name": "--description",
174
+ "description": "Free-form description.",
175
+ "arguments": [
176
+ {
177
+ "name": "TEXT"
178
+ }
179
+ ]
180
+ },
181
+ {
182
+ "name": "--roadmap-enabled",
183
+ "description": "Enable the roadmap (feature/improvement tickets + milestones) for this project."
184
+ },
185
+ {
186
+ "name": "--quick-bug-report-enabled",
187
+ "description": "Enable the AI-assisted quick bug report on this project."
188
+ }
189
+ ],
190
+ "examples": [
191
+ "closeyourit projects create driverone-rails --key DRRA",
192
+ "closeyourit projects create driverone-rails --group DriverOne --key DRRA",
193
+ "closeyourit projects create driverone-flutter -g <group-uuid> -k DRFL",
194
+ "closeyourit projects create acme-api -k ACME --roadmap-enabled --quick-bug-report-enabled"
195
+ ]
196
+ },
197
+ {
198
+ "name": "update",
199
+ "description": "Update a project (name, key, color, description, group, feature flags).",
200
+ "options": [
201
+ {
202
+ "name": "--project",
203
+ "aliases": [
204
+ "-p"
205
+ ],
206
+ "required": true,
207
+ "description": "Project id (UUID) or key.",
208
+ "arguments": [
209
+ {
210
+ "name": "PROJECT",
211
+ "required": true
212
+ }
213
+ ]
214
+ },
215
+ {
216
+ "name": "--name",
217
+ "description": "New project name.",
218
+ "arguments": [
219
+ {
220
+ "name": "NAME"
221
+ }
222
+ ]
223
+ },
224
+ {
225
+ "name": "--key",
226
+ "description": "New project key (uppercase A-Z0-9).",
227
+ "arguments": [
228
+ {
229
+ "name": "KEY"
230
+ }
231
+ ]
232
+ },
233
+ {
234
+ "name": "--color",
235
+ "description": "Color label.",
236
+ "arguments": [
237
+ {
238
+ "name": "COLOR"
239
+ }
240
+ ]
241
+ },
242
+ {
243
+ "name": "--description",
244
+ "description": "Free-form description.",
245
+ "arguments": [
246
+ {
247
+ "name": "TEXT"
248
+ }
249
+ ]
250
+ },
251
+ {
252
+ "name": "--group",
253
+ "description": "Group id (UUID) or name to move the project into.",
254
+ "arguments": [
255
+ {
256
+ "name": "GROUP"
257
+ }
258
+ ]
259
+ },
260
+ {
261
+ "name": "--roadmap-enabled",
262
+ "description": "Enable/disable the roadmap (feature/improvement tickets + milestones) for this project."
263
+ },
264
+ {
265
+ "name": "--quick-bug-report-enabled",
266
+ "description": "Enable/disable the AI-assisted quick bug report on this project."
267
+ }
268
+ ],
269
+ "examples": [
270
+ "closeyourit projects update --project LBRA --name \"New name\"",
271
+ "closeyourit projects update -p LBRA --group Backend",
272
+ "closeyourit projects update -p LBRA --roadmap-enabled --no-quick-bug-report-enabled"
273
+ ]
274
+ },
275
+ {
276
+ "name": "link-server",
277
+ "description": "Link a server host to one of the project declared environments (uptime monitoring).",
278
+ "options": [
279
+ {
280
+ "name": "--project",
281
+ "aliases": [
282
+ "-p"
283
+ ],
284
+ "required": true,
285
+ "description": "Project id (UUID) or key.",
286
+ "arguments": [
287
+ {
288
+ "name": "PROJECT",
289
+ "required": true
290
+ }
291
+ ]
292
+ },
293
+ {
294
+ "name": "--host-id",
295
+ "required": true,
296
+ "description": "Server host id (UUID, org-scoped and active).",
297
+ "arguments": [
298
+ {
299
+ "name": "ID",
300
+ "required": true
301
+ }
302
+ ]
303
+ },
304
+ {
305
+ "name": "--environment-id",
306
+ "required": true,
307
+ "description": "Environment id (UUID) among those declared by the project.",
308
+ "arguments": [
309
+ {
310
+ "name": "ID",
311
+ "required": true
312
+ }
313
+ ]
314
+ }
315
+ ],
316
+ "examples": [
317
+ "closeyourit projects link-server --project LBRA --host-id <host-uuid> --environment-id <env-uuid>"
318
+ ]
319
+ },
320
+ {
321
+ "name": "unlink-server",
322
+ "description": "Unlink a server host from the project (removes the host-environment link).",
323
+ "arguments": [
324
+ {
325
+ "name": "ID",
326
+ "required": true,
327
+ "description": "Server link id (from projects link-server / project servers list)."
328
+ }
329
+ ],
330
+ "options": [
331
+ {
332
+ "name": "--project",
333
+ "aliases": [
334
+ "-p"
335
+ ],
336
+ "required": true,
337
+ "description": "Project id (UUID) or key.",
338
+ "arguments": [
339
+ {
340
+ "name": "PROJECT",
341
+ "required": true
342
+ }
343
+ ]
344
+ },
345
+ {
346
+ "name": "--confirm",
347
+ "description": "Required: confirm the irreversible unlink."
348
+ }
349
+ ],
350
+ "examples": [
351
+ "closeyourit projects unlink-server <link-id> --project LBRA --confirm"
352
+ ]
353
+ },
354
+ {
355
+ "name": "settings",
356
+ "description": "Project settings (log/analytics retention + feature flags).",
357
+ "commands": [
358
+ {
359
+ "name": "show",
360
+ "description": "Show a project settings (log/analytics retention + feature flags).",
361
+ "options": [
362
+ {
363
+ "name": "--project",
364
+ "aliases": [
365
+ "-p"
366
+ ],
367
+ "required": true,
368
+ "description": "Project id (UUID) or key.",
369
+ "arguments": [
370
+ {
371
+ "name": "PROJECT",
372
+ "required": true
373
+ }
374
+ ]
375
+ }
376
+ ],
377
+ "examples": [
378
+ "closeyourit projects settings show --project legalbloom-rails",
379
+ "closeyourit projects settings show -p LBRA"
380
+ ]
381
+ },
382
+ {
383
+ "name": "update",
384
+ "description": "Update a project settings (log/analytics retention + feature flags); only the passed fields change.",
385
+ "options": [
386
+ {
387
+ "name": "--project",
388
+ "aliases": [
389
+ "-p"
390
+ ],
391
+ "required": true,
392
+ "description": "Project id (UUID) or key.",
393
+ "arguments": [
394
+ {
395
+ "name": "PROJECT",
396
+ "required": true
397
+ }
398
+ ]
399
+ },
400
+ {
401
+ "name": "--logs-retention-days",
402
+ "description": "Log retention in days (blank inherits the org/global default).",
403
+ "arguments": [
404
+ {
405
+ "name": "N"
406
+ }
407
+ ]
408
+ },
409
+ {
410
+ "name": "--analytics-retention-days",
411
+ "description": "Analytics retention in days (blank inherits the org/global default).",
412
+ "arguments": [
413
+ {
414
+ "name": "N"
415
+ }
416
+ ]
417
+ },
418
+ {
419
+ "name": "--roadmap-enabled",
420
+ "description": "Enable/disable the project roadmap."
421
+ },
422
+ {
423
+ "name": "--quick-bug-report-enabled",
424
+ "description": "Enable/disable the AI-assisted quick bug report."
425
+ },
426
+ {
427
+ "name": "--analytics-enabled",
428
+ "description": "Enable/disable web analytics ingestion."
429
+ }
430
+ ],
431
+ "examples": [
432
+ "closeyourit projects settings update --project LBRA --logs-retention-days 30",
433
+ "closeyourit projects settings update -p LBRA --analytics-retention-days 365 --analytics-enabled",
434
+ "closeyourit projects settings update -p LBRA --roadmap-enabled --no-quick-bug-report-enabled"
435
+ ]
436
+ }
437
+ ]
125
438
  }
126
439
  ]
127
440
  },
@@ -746,16 +1059,17 @@
746
1059
  ]
747
1060
  }
748
1061
  ]
749
- }
750
- ]
751
- },
752
- {
753
- "name": "ideas",
754
- "description": "Project ideas: propose, vote, comment, convert to ticket (AI-synthesized draft).",
755
- "commands": [
1062
+ },
756
1063
  {
757
- "name": "list",
758
- "description": "List ideas for a project (sorted by votes).",
1064
+ "name": "links",
1065
+ "description": "List the ticket-to-ticket links involving a ticket (duplicate/related).",
1066
+ "arguments": [
1067
+ {
1068
+ "name": "ID",
1069
+ "required": true,
1070
+ "description": "Ticket id or code (e.g. DRFL-3)."
1071
+ }
1072
+ ],
759
1073
  "options": [
760
1074
  {
761
1075
  "name": "--project",
@@ -770,43 +1084,26 @@
770
1084
  "required": true
771
1085
  }
772
1086
  ]
773
- },
774
- {
775
- "name": "--page",
776
- "description": "Page number.",
777
- "arguments": [
778
- {
779
- "name": "N"
780
- }
781
- ]
782
- },
783
- {
784
- "name": "--status",
785
- "description": "Filter by status (open|converted|archived).",
786
- "arguments": [
787
- {
788
- "name": "STATUS"
789
- }
790
- ]
791
- },
792
- {
793
- "name": "--sort",
794
- "description": "Sort order (votes|recent).",
795
- "arguments": [
796
- {
797
- "name": "SORT"
798
- }
799
- ]
800
1087
  }
1088
+ ],
1089
+ "examples": [
1090
+ "closeyourit tickets links <ticket-id> --project acme-api",
1091
+ "closeyourit tickets links <ticket-id> -p acme-api --json"
801
1092
  ]
802
1093
  },
803
1094
  {
804
- "name": "show",
805
- "description": "Show an idea (fields + full proposal body).",
1095
+ "name": "unlink",
1096
+ "description": "Remove a ticket-to-ticket link (irreversible; requires tickets.edit).",
806
1097
  "arguments": [
807
1098
  {
808
- "name": "IDEA_ID",
809
- "required": true
1099
+ "name": "ID",
1100
+ "required": true,
1101
+ "description": "Ticket id or code (e.g. DRFL-3)."
1102
+ },
1103
+ {
1104
+ "name": "LINK_ID",
1105
+ "required": true,
1106
+ "description": "Link id to remove."
810
1107
  }
811
1108
  ],
812
1109
  "options": [
@@ -823,12 +1120,26 @@
823
1120
  "required": true
824
1121
  }
825
1122
  ]
1123
+ },
1124
+ {
1125
+ "name": "--confirm",
1126
+ "description": "Required: confirm the irreversible removal."
826
1127
  }
1128
+ ],
1129
+ "examples": [
1130
+ "closeyourit tickets unlink <ticket-id> <link-id> --project acme-api --confirm"
827
1131
  ]
828
1132
  },
829
1133
  {
830
- "name": "create",
831
- "description": "Propose an idea for a project.",
1134
+ "name": "reviewer",
1135
+ "description": "Set the reviewer of a ticket (requires tickets.assign).",
1136
+ "arguments": [
1137
+ {
1138
+ "name": "ID",
1139
+ "required": true,
1140
+ "description": "Ticket id or code (e.g. DRFL-3)."
1141
+ }
1142
+ ],
832
1143
  "options": [
833
1144
  {
834
1145
  "name": "--project",
@@ -845,36 +1156,59 @@
845
1156
  ]
846
1157
  },
847
1158
  {
848
- "name": "--title",
1159
+ "name": "--reviewer-id",
849
1160
  "required": true,
850
- "description": "Idea title.",
1161
+ "description": "Account id to set as reviewer.",
851
1162
  "arguments": [
852
1163
  {
853
- "name": "TITLE",
1164
+ "name": "ID",
854
1165
  "required": true
855
1166
  }
856
1167
  ]
857
- },
1168
+ }
1169
+ ],
1170
+ "examples": [
1171
+ "closeyourit tickets reviewer <ticket-id> --project acme-api --reviewer-id <account-id>"
1172
+ ]
1173
+ },
1174
+ {
1175
+ "name": "unreviewer",
1176
+ "description": "Remove the reviewer of a ticket (requires tickets.assign).",
1177
+ "arguments": [
858
1178
  {
859
- "name": "--body",
1179
+ "name": "ID",
1180
+ "required": true,
1181
+ "description": "Ticket id or code (e.g. DRFL-3)."
1182
+ }
1183
+ ],
1184
+ "options": [
1185
+ {
1186
+ "name": "--project",
1187
+ "aliases": [
1188
+ "-p"
1189
+ ],
860
1190
  "required": true,
861
- "description": "Idea proposal body.",
1191
+ "description": "Project id (UUID) or key.",
862
1192
  "arguments": [
863
1193
  {
864
- "name": "TEXT",
1194
+ "name": "PROJECT",
865
1195
  "required": true
866
1196
  }
867
1197
  ]
868
1198
  }
1199
+ ],
1200
+ "examples": [
1201
+ "closeyourit tickets unreviewer <ticket-id> --project acme-api"
869
1202
  ]
870
1203
  },
871
1204
  {
872
- "name": "vote",
873
- "description": "Upvote an idea (idempotent).",
1205
+ "name": "watch",
1206
+ "description": "Watch a ticket to receive its notifications (idempotent).",
874
1207
  "arguments": [
875
1208
  {
876
- "name": "IDEA_ID",
877
- "required": true
1209
+ "name": "ID",
1210
+ "required": true,
1211
+ "description": "Ticket id or code (e.g. DRFL-3)."
878
1212
  }
879
1213
  ],
880
1214
  "options": [
@@ -892,15 +1226,19 @@
892
1226
  }
893
1227
  ]
894
1228
  }
1229
+ ],
1230
+ "examples": [
1231
+ "closeyourit tickets watch <ticket-id> --project acme-api"
895
1232
  ]
896
1233
  },
897
1234
  {
898
- "name": "unvote",
899
- "description": "Remove your upvote (idempotent).",
1235
+ "name": "unwatch",
1236
+ "description": "Stop watching a ticket (idempotent).",
900
1237
  "arguments": [
901
1238
  {
902
- "name": "IDEA_ID",
903
- "required": true
1239
+ "name": "ID",
1240
+ "required": true,
1241
+ "description": "Ticket id or code (e.g. DRFL-3)."
904
1242
  }
905
1243
  ],
906
1244
  "options": [
@@ -918,17 +1256,20 @@
918
1256
  }
919
1257
  ]
920
1258
  }
1259
+ ],
1260
+ "examples": [
1261
+ "closeyourit tickets unwatch <ticket-id> --project acme-api"
921
1262
  ]
922
- },
1263
+ }
1264
+ ]
1265
+ },
1266
+ {
1267
+ "name": "ideas",
1268
+ "description": "Project ideas: propose, vote, comment, convert to ticket (AI-synthesized draft).",
1269
+ "commands": [
923
1270
  {
924
- "name": "comment",
925
- "description": "Add a comment to an open idea.",
926
- "arguments": [
927
- {
928
- "name": "IDEA_ID",
929
- "required": true
930
- }
931
- ],
1271
+ "name": "list",
1272
+ "description": "List ideas for a project (sorted by votes).",
932
1273
  "options": [
933
1274
  {
934
1275
  "name": "--project",
@@ -945,21 +1286,37 @@
945
1286
  ]
946
1287
  },
947
1288
  {
948
- "name": "--body",
949
- "required": true,
950
- "description": "Comment body.",
1289
+ "name": "--page",
1290
+ "description": "Page number.",
951
1291
  "arguments": [
952
1292
  {
953
- "name": "TEXT",
954
- "required": true
1293
+ "name": "N"
1294
+ }
1295
+ ]
1296
+ },
1297
+ {
1298
+ "name": "--status",
1299
+ "description": "Filter by status (open|converted|archived).",
1300
+ "arguments": [
1301
+ {
1302
+ "name": "STATUS"
1303
+ }
1304
+ ]
1305
+ },
1306
+ {
1307
+ "name": "--sort",
1308
+ "description": "Sort order (votes|recent).",
1309
+ "arguments": [
1310
+ {
1311
+ "name": "SORT"
955
1312
  }
956
1313
  ]
957
1314
  }
958
1315
  ]
959
1316
  },
960
1317
  {
961
- "name": "comments",
962
- "description": "List all comments of an idea (oldest first).",
1318
+ "name": "show",
1319
+ "description": "Show an idea (fields + full proposal body).",
963
1320
  "arguments": [
964
1321
  {
965
1322
  "name": "IDEA_ID",
@@ -984,14 +1341,8 @@
984
1341
  ]
985
1342
  },
986
1343
  {
987
- "name": "comment-delete",
988
- "description": "Delete a comment from an open idea (author, or ideas.comment.delete_any).",
989
- "arguments": [
990
- {
991
- "name": "IDEA_ID",
992
- "required": true
993
- }
994
- ],
1344
+ "name": "create",
1345
+ "description": "Propose an idea for a project.",
995
1346
  "options": [
996
1347
  {
997
1348
  "name": "--project",
@@ -1008,25 +1359,50 @@
1008
1359
  ]
1009
1360
  },
1010
1361
  {
1011
- "name": "--comment-id",
1362
+ "name": "--title",
1012
1363
  "required": true,
1013
- "description": "Comment id to delete.",
1364
+ "description": "Idea title.",
1014
1365
  "arguments": [
1015
1366
  {
1016
- "name": "ID",
1367
+ "name": "TITLE",
1017
1368
  "required": true
1018
1369
  }
1019
1370
  ]
1020
1371
  },
1021
1372
  {
1022
- "name": "--confirm",
1023
- "description": "Required: confirm the irreversible deletion."
1373
+ "name": "--problem",
1374
+ "required": true,
1375
+ "description": "Problem or need the idea solves.",
1376
+ "arguments": [
1377
+ {
1378
+ "name": "TEXT",
1379
+ "required": true
1380
+ }
1381
+ ]
1382
+ },
1383
+ {
1384
+ "name": "--solution",
1385
+ "description": "Proposed solution (optional).",
1386
+ "arguments": [
1387
+ {
1388
+ "name": "TEXT"
1389
+ }
1390
+ ]
1391
+ },
1392
+ {
1393
+ "name": "--stakeholders",
1394
+ "description": "Who it helps — repeatable (optional).",
1395
+ "arguments": [
1396
+ {
1397
+ "name": "LABEL"
1398
+ }
1399
+ ]
1024
1400
  }
1025
1401
  ]
1026
1402
  },
1027
1403
  {
1028
- "name": "convert",
1029
- "description": "Convert an idea into a ticket. Without --title/--description the server AI synthesizes the draft from idea + comments (~30s). Author always allowed; others need ideas.convert.",
1404
+ "name": "update",
1405
+ "description": "Update an idea (full replace of title/problem/solution omitted fields are cleared).",
1030
1406
  "arguments": [
1031
1407
  {
1032
1408
  "name": "IDEA_ID",
@@ -1050,7 +1426,7 @@
1050
1426
  },
1051
1427
  {
1052
1428
  "name": "--title",
1053
- "description": "Ticket title (with --description skips AI).",
1429
+ "description": "Idea title.",
1054
1430
  "arguments": [
1055
1431
  {
1056
1432
  "name": "TITLE"
@@ -1058,8 +1434,8 @@
1058
1434
  ]
1059
1435
  },
1060
1436
  {
1061
- "name": "--description",
1062
- "description": "Ticket description (with --title skips AI).",
1437
+ "name": "--problem",
1438
+ "description": "Problem or need the idea solves.",
1063
1439
  "arguments": [
1064
1440
  {
1065
1441
  "name": "TEXT"
@@ -1067,43 +1443,60 @@
1067
1443
  ]
1068
1444
  },
1069
1445
  {
1070
- "name": "--kind",
1071
- "description": "Ticket kind (default: feature if roadmap, else bug).",
1446
+ "name": "--solution",
1447
+ "description": "Proposed solution (cleared if omitted).",
1072
1448
  "arguments": [
1073
1449
  {
1074
- "name": "KIND"
1450
+ "name": "TEXT"
1075
1451
  }
1076
1452
  ]
1077
1453
  },
1078
1454
  {
1079
- "name": "--status-id",
1080
- "description": "Status lookup id (default: open).",
1455
+ "name": "--stakeholders",
1456
+ "description": "Who it helps — repeatable (replaced only when provided).",
1081
1457
  "arguments": [
1082
1458
  {
1083
- "name": "ID"
1459
+ "name": "LABEL"
1084
1460
  }
1085
1461
  ]
1086
- },
1462
+ }
1463
+ ]
1464
+ },
1465
+ {
1466
+ "name": "vote",
1467
+ "description": "Upvote an idea (idempotent).",
1468
+ "arguments": [
1087
1469
  {
1088
- "name": "--priority-id",
1089
- "description": "Priority lookup id (default: medium).",
1470
+ "name": "IDEA_ID",
1471
+ "required": true
1472
+ }
1473
+ ],
1474
+ "options": [
1475
+ {
1476
+ "name": "--project",
1477
+ "aliases": [
1478
+ "-p"
1479
+ ],
1480
+ "required": true,
1481
+ "description": "Project id (UUID) or key.",
1090
1482
  "arguments": [
1091
1483
  {
1092
- "name": "ID"
1484
+ "name": "PROJECT",
1485
+ "required": true
1093
1486
  }
1094
1487
  ]
1095
1488
  }
1096
1489
  ]
1097
- }
1098
- ]
1099
- },
1100
- {
1101
- "name": "metrics",
1102
- "description": "Performance metrics (slow queries/methods).",
1103
- "commands": [
1490
+ },
1104
1491
  {
1105
- "name": "list",
1106
- "description": "List performance metric groups for a project.",
1492
+ "name": "unvote",
1493
+ "description": "Remove your upvote (idempotent).",
1494
+ "arguments": [
1495
+ {
1496
+ "name": "IDEA_ID",
1497
+ "required": true
1498
+ }
1499
+ ],
1107
1500
  "options": [
1108
1501
  {
1109
1502
  "name": "--project",
@@ -1118,34 +1511,52 @@
1118
1511
  "required": true
1119
1512
  }
1120
1513
  ]
1121
- },
1514
+ }
1515
+ ]
1516
+ },
1517
+ {
1518
+ "name": "comment",
1519
+ "description": "Add a comment to an open idea.",
1520
+ "arguments": [
1122
1521
  {
1123
- "name": "--kind",
1124
- "description": "Filter by metric kind (e.g. sql, method).",
1522
+ "name": "IDEA_ID",
1523
+ "required": true
1524
+ }
1525
+ ],
1526
+ "options": [
1527
+ {
1528
+ "name": "--project",
1529
+ "aliases": [
1530
+ "-p"
1531
+ ],
1532
+ "required": true,
1533
+ "description": "Project id (UUID) or key.",
1125
1534
  "arguments": [
1126
1535
  {
1127
- "name": "KIND"
1536
+ "name": "PROJECT",
1537
+ "required": true
1128
1538
  }
1129
1539
  ]
1130
1540
  },
1131
1541
  {
1132
- "name": "--page",
1133
- "description": "Page number.",
1542
+ "name": "--body",
1543
+ "required": true,
1544
+ "description": "Comment body.",
1134
1545
  "arguments": [
1135
1546
  {
1136
- "name": "N"
1547
+ "name": "TEXT",
1548
+ "required": true
1137
1549
  }
1138
1550
  ]
1139
1551
  }
1140
1552
  ]
1141
1553
  },
1142
1554
  {
1143
- "name": "show",
1144
- "description": "Show a single metric group.",
1555
+ "name": "case",
1556
+ "description": "Add a case (example/scenario) to an open idea.",
1145
1557
  "arguments": [
1146
1558
  {
1147
- "name": "ID",
1148
- "description": "Metric group id.",
1559
+ "name": "IDEA_ID",
1149
1560
  "required": true
1150
1561
  }
1151
1562
  ],
@@ -1163,55 +1574,49 @@
1163
1574
  "required": true
1164
1575
  }
1165
1576
  ]
1166
- }
1167
- ]
1168
- }
1169
- ]
1170
- },
1171
- {
1172
- "name": "servers",
1173
- "description": "Server monitoring fleet: list/show hosts, rename, pause/resume, revoke, delete; manage enrollment tokens.",
1174
- "commands": [
1175
- {
1176
- "name": "list",
1177
- "description": "List the monitored servers (fleet snapshot).",
1178
- "options": [
1179
- {
1180
- "name": "--page",
1181
- "description": "Page number."
1182
1577
  },
1183
1578
  {
1184
- "name": "--status",
1185
- "description": "Filter by status (repeatable: pending|up|down|paused)."
1186
- }
1187
- ]
1188
- },
1189
- {
1190
- "name": "show",
1191
- "description": "Show a monitored server (latest snapshot).",
1192
- "arguments": [
1579
+ "name": "--title",
1580
+ "required": true,
1581
+ "description": "Case title.",
1582
+ "arguments": [
1583
+ {
1584
+ "name": "TITLE",
1585
+ "required": true
1586
+ }
1587
+ ]
1588
+ },
1193
1589
  {
1194
- "name": "ID",
1195
- "required": true
1590
+ "name": "--description",
1591
+ "description": "Case description (optional).",
1592
+ "arguments": [
1593
+ {
1594
+ "name": "TEXT"
1595
+ }
1596
+ ]
1196
1597
  }
1197
1598
  ]
1198
1599
  },
1199
1600
  {
1200
- "name": "rename",
1201
- "description": "Rename a server (display name).",
1601
+ "name": "comments",
1602
+ "description": "List all comments of an idea (oldest first).",
1202
1603
  "arguments": [
1203
1604
  {
1204
- "name": "ID",
1605
+ "name": "IDEA_ID",
1205
1606
  "required": true
1206
1607
  }
1207
1608
  ],
1208
1609
  "options": [
1209
1610
  {
1210
- "name": "--name",
1211
- "description": "New display name.",
1611
+ "name": "--project",
1612
+ "aliases": [
1613
+ "-p"
1614
+ ],
1615
+ "required": true,
1616
+ "description": "Project id (UUID) or key.",
1212
1617
  "arguments": [
1213
1618
  {
1214
- "name": "NAME",
1619
+ "name": "PROJECT",
1215
1620
  "required": true
1216
1621
  }
1217
1622
  ]
@@ -1219,101 +1624,2742 @@
1219
1624
  ]
1220
1625
  },
1221
1626
  {
1222
- "name": "pause",
1223
- "description": "Pause a server (no staleness/alerts).",
1627
+ "name": "comment-delete",
1628
+ "description": "Delete a comment from an open idea (author, or ideas.comment.delete_any).",
1224
1629
  "arguments": [
1225
1630
  {
1226
- "name": "ID",
1631
+ "name": "IDEA_ID",
1227
1632
  "required": true
1228
1633
  }
1634
+ ],
1635
+ "options": [
1636
+ {
1637
+ "name": "--project",
1638
+ "aliases": [
1639
+ "-p"
1640
+ ],
1641
+ "required": true,
1642
+ "description": "Project id (UUID) or key.",
1643
+ "arguments": [
1644
+ {
1645
+ "name": "PROJECT",
1646
+ "required": true
1647
+ }
1648
+ ]
1649
+ },
1650
+ {
1651
+ "name": "--comment-id",
1652
+ "required": true,
1653
+ "description": "Comment id to delete.",
1654
+ "arguments": [
1655
+ {
1656
+ "name": "ID",
1657
+ "required": true
1658
+ }
1659
+ ]
1660
+ },
1661
+ {
1662
+ "name": "--confirm",
1663
+ "description": "Required: confirm the irreversible deletion."
1664
+ }
1229
1665
  ]
1230
1666
  },
1231
1667
  {
1232
- "name": "resume",
1233
- "description": "Resume a paused server.",
1668
+ "name": "convert",
1669
+ "description": "Convert an idea into a ticket. Without --title/--description the server AI synthesizes the draft from idea + comments (~30s). Author always allowed; others need ideas.convert.",
1234
1670
  "arguments": [
1235
1671
  {
1236
- "name": "ID",
1672
+ "name": "IDEA_ID",
1237
1673
  "required": true
1238
1674
  }
1675
+ ],
1676
+ "options": [
1677
+ {
1678
+ "name": "--project",
1679
+ "aliases": [
1680
+ "-p"
1681
+ ],
1682
+ "required": true,
1683
+ "description": "Project id (UUID) or key.",
1684
+ "arguments": [
1685
+ {
1686
+ "name": "PROJECT",
1687
+ "required": true
1688
+ }
1689
+ ]
1690
+ },
1691
+ {
1692
+ "name": "--title",
1693
+ "description": "Ticket title (with --description skips AI).",
1694
+ "arguments": [
1695
+ {
1696
+ "name": "TITLE"
1697
+ }
1698
+ ]
1699
+ },
1700
+ {
1701
+ "name": "--description",
1702
+ "description": "Ticket description (with --title skips AI).",
1703
+ "arguments": [
1704
+ {
1705
+ "name": "TEXT"
1706
+ }
1707
+ ]
1708
+ },
1709
+ {
1710
+ "name": "--kind",
1711
+ "description": "Ticket kind (default: feature if roadmap, else bug).",
1712
+ "arguments": [
1713
+ {
1714
+ "name": "KIND"
1715
+ }
1716
+ ]
1717
+ },
1718
+ {
1719
+ "name": "--status-id",
1720
+ "description": "Status lookup id (default: open).",
1721
+ "arguments": [
1722
+ {
1723
+ "name": "ID"
1724
+ }
1725
+ ]
1726
+ },
1727
+ {
1728
+ "name": "--priority-id",
1729
+ "description": "Priority lookup id (default: medium).",
1730
+ "arguments": [
1731
+ {
1732
+ "name": "ID"
1733
+ }
1734
+ ]
1735
+ }
1239
1736
  ]
1240
1737
  },
1241
1738
  {
1242
- "name": "revoke",
1243
- "description": "Revoke a server: its agent gets 403 and stops.",
1739
+ "name": "delete",
1740
+ "description": "Delete an idea (author always allowed; others need ideas.delete).",
1244
1741
  "arguments": [
1245
1742
  {
1246
1743
  "name": "ID",
1247
- "required": true
1744
+ "required": true,
1745
+ "description": "Idea id."
1248
1746
  }
1249
1747
  ],
1250
1748
  "options": [
1749
+ {
1750
+ "name": "--project",
1751
+ "aliases": [
1752
+ "-p"
1753
+ ],
1754
+ "required": true,
1755
+ "description": "Project id (UUID) or key.",
1756
+ "arguments": [
1757
+ {
1758
+ "name": "PROJECT",
1759
+ "required": true
1760
+ }
1761
+ ]
1762
+ },
1251
1763
  {
1252
1764
  "name": "--confirm",
1253
- "description": "Required confirmation."
1765
+ "description": "Required: confirm the irreversible deletion."
1254
1766
  }
1767
+ ],
1768
+ "examples": [
1769
+ "closeyourit ideas delete <idea-id> --project acme-api --confirm"
1255
1770
  ]
1256
1771
  },
1257
1772
  {
1258
- "name": "unrevoke",
1259
- "description": "Restore a revoked server.",
1773
+ "name": "archive",
1774
+ "description": "Archive an idea (open to archived; author always allowed, others need ideas.edit).",
1260
1775
  "arguments": [
1261
1776
  {
1262
1777
  "name": "ID",
1263
- "required": true
1778
+ "required": true,
1779
+ "description": "Idea id."
1780
+ }
1781
+ ],
1782
+ "options": [
1783
+ {
1784
+ "name": "--project",
1785
+ "aliases": [
1786
+ "-p"
1787
+ ],
1788
+ "required": true,
1789
+ "description": "Project id (UUID) or key.",
1790
+ "arguments": [
1791
+ {
1792
+ "name": "PROJECT",
1793
+ "required": true
1794
+ }
1795
+ ]
1264
1796
  }
1797
+ ],
1798
+ "examples": [
1799
+ "closeyourit ideas archive <idea-id> --project acme-api"
1265
1800
  ]
1266
1801
  },
1267
1802
  {
1268
- "name": "delete",
1269
- "description": "Delete a server and all its metrics.",
1803
+ "name": "unarchive",
1804
+ "description": "Reopen an archived idea (archived to open; author always allowed, others need ideas.edit).",
1270
1805
  "arguments": [
1271
1806
  {
1272
1807
  "name": "ID",
1273
- "required": true
1808
+ "required": true,
1809
+ "description": "Idea id."
1274
1810
  }
1275
1811
  ],
1276
1812
  "options": [
1277
1813
  {
1278
- "name": "--confirm",
1279
- "description": "Required confirmation."
1814
+ "name": "--project",
1815
+ "aliases": [
1816
+ "-p"
1817
+ ],
1818
+ "required": true,
1819
+ "description": "Project id (UUID) or key.",
1820
+ "arguments": [
1821
+ {
1822
+ "name": "PROJECT",
1823
+ "required": true
1824
+ }
1825
+ ]
1280
1826
  }
1827
+ ],
1828
+ "examples": [
1829
+ "closeyourit ideas unarchive <idea-id> --project acme-api"
1281
1830
  ]
1282
1831
  },
1283
1832
  {
1284
- "name": "tokens",
1285
- "description": "Fleet enrollment tokens.",
1286
- "commands": [
1833
+ "name": "case-update",
1834
+ "description": "Update a case (example/scenario) of an idea (title and/or description).",
1835
+ "arguments": [
1287
1836
  {
1288
- "name": "list",
1289
- "description": "List enrollment tokens."
1837
+ "name": "IDEA",
1838
+ "required": true,
1839
+ "description": "Idea id."
1290
1840
  },
1291
1841
  {
1292
- "name": "create",
1293
- "description": "Create a token (secret shown once).",
1842
+ "name": "CASE",
1843
+ "required": true,
1844
+ "description": "Case id."
1845
+ }
1846
+ ],
1847
+ "options": [
1848
+ {
1849
+ "name": "--project",
1850
+ "aliases": [
1851
+ "-p"
1852
+ ],
1853
+ "required": true,
1854
+ "description": "Project id (UUID) or key.",
1294
1855
  "arguments": [
1295
1856
  {
1296
- "name": "NAME",
1857
+ "name": "PROJECT",
1297
1858
  "required": true
1298
1859
  }
1299
1860
  ]
1300
1861
  },
1301
1862
  {
1302
- "name": "revoke",
1303
- "description": "Revoke an enrollment token.",
1863
+ "name": "--title",
1864
+ "description": "New case title.",
1304
1865
  "arguments": [
1305
1866
  {
1306
- "name": "ID",
1307
- "required": true
1867
+ "name": "TITLE"
1308
1868
  }
1309
- ],
1310
- "options": [
1869
+ ]
1870
+ },
1871
+ {
1872
+ "name": "--description",
1873
+ "description": "New case description.",
1874
+ "arguments": [
1311
1875
  {
1312
- "name": "--confirm",
1313
- "description": "Required confirmation."
1876
+ "name": "TEXT"
1314
1877
  }
1315
1878
  ]
1316
1879
  }
1880
+ ],
1881
+ "examples": [
1882
+ "closeyourit ideas case-update <idea-id> <case-id> --project acme-api --title \"QR check-in\"",
1883
+ "closeyourit ideas case-update <idea-id> <case-id> -p acme-api --description \"Staff scans the QR at the door\""
1884
+ ]
1885
+ },
1886
+ {
1887
+ "name": "case-delete",
1888
+ "description": "Delete a case from an open idea (author always allowed, others need ideas.edit).",
1889
+ "arguments": [
1890
+ {
1891
+ "name": "IDEA",
1892
+ "required": true,
1893
+ "description": "Idea id."
1894
+ },
1895
+ {
1896
+ "name": "CASE",
1897
+ "required": true,
1898
+ "description": "Case id."
1899
+ }
1900
+ ],
1901
+ "options": [
1902
+ {
1903
+ "name": "--project",
1904
+ "aliases": [
1905
+ "-p"
1906
+ ],
1907
+ "required": true,
1908
+ "description": "Project id (UUID) or key.",
1909
+ "arguments": [
1910
+ {
1911
+ "name": "PROJECT",
1912
+ "required": true
1913
+ }
1914
+ ]
1915
+ },
1916
+ {
1917
+ "name": "--confirm",
1918
+ "description": "Required: confirm the irreversible deletion."
1919
+ }
1920
+ ],
1921
+ "examples": [
1922
+ "closeyourit ideas case-delete <idea-id> <case-id> --project acme-api --confirm"
1923
+ ]
1924
+ }
1925
+ ]
1926
+ },
1927
+ {
1928
+ "name": "metrics",
1929
+ "description": "Performance metrics (slow queries/methods).",
1930
+ "commands": [
1931
+ {
1932
+ "name": "list",
1933
+ "description": "List performance metric groups for a project.",
1934
+ "options": [
1935
+ {
1936
+ "name": "--project",
1937
+ "aliases": [
1938
+ "-p"
1939
+ ],
1940
+ "required": true,
1941
+ "description": "Project id (UUID) or key.",
1942
+ "arguments": [
1943
+ {
1944
+ "name": "PROJECT",
1945
+ "required": true
1946
+ }
1947
+ ]
1948
+ },
1949
+ {
1950
+ "name": "--kind",
1951
+ "description": "Filter by metric kind (e.g. sql, method).",
1952
+ "arguments": [
1953
+ {
1954
+ "name": "KIND"
1955
+ }
1956
+ ]
1957
+ },
1958
+ {
1959
+ "name": "--page",
1960
+ "description": "Page number.",
1961
+ "arguments": [
1962
+ {
1963
+ "name": "N"
1964
+ }
1965
+ ]
1966
+ }
1967
+ ]
1968
+ },
1969
+ {
1970
+ "name": "show",
1971
+ "description": "Show a single metric group.",
1972
+ "arguments": [
1973
+ {
1974
+ "name": "ID",
1975
+ "description": "Metric group id.",
1976
+ "required": true
1977
+ }
1978
+ ],
1979
+ "options": [
1980
+ {
1981
+ "name": "--project",
1982
+ "aliases": [
1983
+ "-p"
1984
+ ],
1985
+ "required": true,
1986
+ "description": "Project id (UUID) or key.",
1987
+ "arguments": [
1988
+ {
1989
+ "name": "PROJECT",
1990
+ "required": true
1991
+ }
1992
+ ]
1993
+ }
1994
+ ]
1995
+ }
1996
+ ]
1997
+ },
1998
+ {
1999
+ "name": "servers",
2000
+ "description": "Server monitoring fleet: list/show hosts, rename, pause/resume, revoke, delete; manage enrollment tokens.",
2001
+ "commands": [
2002
+ {
2003
+ "name": "list",
2004
+ "description": "List the monitored servers (fleet snapshot).",
2005
+ "options": [
2006
+ {
2007
+ "name": "--page",
2008
+ "description": "Page number."
2009
+ },
2010
+ {
2011
+ "name": "--status",
2012
+ "description": "Filter by status (repeatable: pending|up|down|paused)."
2013
+ }
2014
+ ]
2015
+ },
2016
+ {
2017
+ "name": "show",
2018
+ "description": "Show a monitored server (latest snapshot).",
2019
+ "arguments": [
2020
+ {
2021
+ "name": "ID",
2022
+ "required": true
2023
+ }
2024
+ ]
2025
+ },
2026
+ {
2027
+ "name": "rename",
2028
+ "description": "Rename a server (display name).",
2029
+ "arguments": [
2030
+ {
2031
+ "name": "ID",
2032
+ "required": true
2033
+ }
2034
+ ],
2035
+ "options": [
2036
+ {
2037
+ "name": "--name",
2038
+ "description": "New display name.",
2039
+ "arguments": [
2040
+ {
2041
+ "name": "NAME",
2042
+ "required": true
2043
+ }
2044
+ ]
2045
+ }
2046
+ ]
2047
+ },
2048
+ {
2049
+ "name": "pause",
2050
+ "description": "Pause a server (no staleness/alerts).",
2051
+ "arguments": [
2052
+ {
2053
+ "name": "ID",
2054
+ "required": true
2055
+ }
2056
+ ]
2057
+ },
2058
+ {
2059
+ "name": "resume",
2060
+ "description": "Resume a paused server.",
2061
+ "arguments": [
2062
+ {
2063
+ "name": "ID",
2064
+ "required": true
2065
+ }
2066
+ ]
2067
+ },
2068
+ {
2069
+ "name": "revoke",
2070
+ "description": "Revoke a server: its agent gets 403 and stops.",
2071
+ "arguments": [
2072
+ {
2073
+ "name": "ID",
2074
+ "required": true
2075
+ }
2076
+ ],
2077
+ "options": [
2078
+ {
2079
+ "name": "--confirm",
2080
+ "description": "Required confirmation."
2081
+ }
2082
+ ]
2083
+ },
2084
+ {
2085
+ "name": "unrevoke",
2086
+ "description": "Restore a revoked server.",
2087
+ "arguments": [
2088
+ {
2089
+ "name": "ID",
2090
+ "required": true
2091
+ }
2092
+ ]
2093
+ },
2094
+ {
2095
+ "name": "delete",
2096
+ "description": "Delete a server and all its metrics.",
2097
+ "arguments": [
2098
+ {
2099
+ "name": "ID",
2100
+ "required": true
2101
+ }
2102
+ ],
2103
+ "options": [
2104
+ {
2105
+ "name": "--confirm",
2106
+ "description": "Required confirmation."
2107
+ }
2108
+ ]
2109
+ },
2110
+ {
2111
+ "name": "tokens",
2112
+ "description": "Fleet enrollment tokens.",
2113
+ "commands": [
2114
+ {
2115
+ "name": "list",
2116
+ "description": "List enrollment tokens."
2117
+ },
2118
+ {
2119
+ "name": "create",
2120
+ "description": "Create a token (secret shown once).",
2121
+ "arguments": [
2122
+ {
2123
+ "name": "NAME",
2124
+ "required": true
2125
+ }
2126
+ ]
2127
+ },
2128
+ {
2129
+ "name": "revoke",
2130
+ "description": "Revoke an enrollment token.",
2131
+ "arguments": [
2132
+ {
2133
+ "name": "ID",
2134
+ "required": true
2135
+ }
2136
+ ],
2137
+ "options": [
2138
+ {
2139
+ "name": "--confirm",
2140
+ "description": "Required confirmation."
2141
+ }
2142
+ ]
2143
+ }
2144
+ ]
2145
+ }
2146
+ ]
2147
+ },
2148
+ {
2149
+ "name": "analytics",
2150
+ "description": "Web analytics: snapshot, public share link, conversion goals.",
2151
+ "commands": [
2152
+ {
2153
+ "name": "show",
2154
+ "description": "Show the web analytics snapshot for a project (traffic, top pages, goals).",
2155
+ "options": [
2156
+ {
2157
+ "name": "--project",
2158
+ "aliases": [
2159
+ "-p"
2160
+ ],
2161
+ "required": true,
2162
+ "description": "Project id (UUID) or key.",
2163
+ "arguments": [
2164
+ {
2165
+ "name": "PROJECT",
2166
+ "required": true
2167
+ }
2168
+ ]
2169
+ },
2170
+ {
2171
+ "name": "--range",
2172
+ "description": "Time range.",
2173
+ "arguments": [
2174
+ {
2175
+ "name": "RANGE"
2176
+ }
2177
+ ]
2178
+ },
2179
+ {
2180
+ "name": "--environment",
2181
+ "description": "Filter by environment code.",
2182
+ "arguments": [
2183
+ {
2184
+ "name": "CODE"
2185
+ }
2186
+ ]
2187
+ }
2188
+ ],
2189
+ "examples": [
2190
+ "closeyourit analytics show --project acme-web",
2191
+ "closeyourit analytics show -p acme-web --range 30d --environment production --json"
2192
+ ]
2193
+ },
2194
+ {
2195
+ "name": "share",
2196
+ "description": "Publish a public shareable link to the analytics dashboard (optional password).",
2197
+ "options": [
2198
+ {
2199
+ "name": "--project",
2200
+ "aliases": [
2201
+ "-p"
2202
+ ],
2203
+ "required": true,
2204
+ "description": "Project id (UUID) or key.",
2205
+ "arguments": [
2206
+ {
2207
+ "name": "PROJECT",
2208
+ "required": true
2209
+ }
2210
+ ]
2211
+ },
2212
+ {
2213
+ "name": "--password",
2214
+ "description": "Optional password to protect the shared link.",
2215
+ "arguments": [
2216
+ {
2217
+ "name": "PASSWORD"
2218
+ }
2219
+ ]
2220
+ }
2221
+ ],
2222
+ "examples": [
2223
+ "closeyourit analytics share --project acme-web",
2224
+ "closeyourit analytics share -p acme-web --password s3cret"
2225
+ ]
2226
+ },
2227
+ {
2228
+ "name": "unshare",
2229
+ "description": "Revoke the public analytics dashboard link.",
2230
+ "options": [
2231
+ {
2232
+ "name": "--project",
2233
+ "aliases": [
2234
+ "-p"
2235
+ ],
2236
+ "required": true,
2237
+ "description": "Project id (UUID) or key.",
2238
+ "arguments": [
2239
+ {
2240
+ "name": "PROJECT",
2241
+ "required": true
2242
+ }
2243
+ ]
2244
+ },
2245
+ {
2246
+ "name": "--confirm",
2247
+ "description": "Required: confirm revoking the public link."
2248
+ }
2249
+ ],
2250
+ "examples": [
2251
+ "closeyourit analytics unshare --project acme-web --confirm"
2252
+ ]
2253
+ },
2254
+ {
2255
+ "name": "goals",
2256
+ "description": "Conversion goals.",
2257
+ "commands": [
2258
+ {
2259
+ "name": "list",
2260
+ "description": "List the conversion goals of a project.",
2261
+ "options": [
2262
+ {
2263
+ "name": "--project",
2264
+ "aliases": [
2265
+ "-p"
2266
+ ],
2267
+ "required": true,
2268
+ "description": "Project id (UUID) or key.",
2269
+ "arguments": [
2270
+ {
2271
+ "name": "PROJECT",
2272
+ "required": true
2273
+ }
2274
+ ]
2275
+ }
2276
+ ],
2277
+ "examples": [
2278
+ "closeyourit analytics goals list --project acme-web"
2279
+ ]
2280
+ },
2281
+ {
2282
+ "name": "create",
2283
+ "description": "Create a conversion goal on a project.",
2284
+ "options": [
2285
+ {
2286
+ "name": "--project",
2287
+ "aliases": [
2288
+ "-p"
2289
+ ],
2290
+ "required": true,
2291
+ "description": "Project id (UUID) or key.",
2292
+ "arguments": [
2293
+ {
2294
+ "name": "PROJECT",
2295
+ "required": true
2296
+ }
2297
+ ]
2298
+ },
2299
+ {
2300
+ "name": "--kind",
2301
+ "required": true,
2302
+ "description": "Goal kind.",
2303
+ "arguments": [
2304
+ {
2305
+ "name": "KIND",
2306
+ "required": true
2307
+ }
2308
+ ]
2309
+ },
2310
+ {
2311
+ "name": "--display-name",
2312
+ "required": true,
2313
+ "description": "Human-readable goal name.",
2314
+ "arguments": [
2315
+ {
2316
+ "name": "NAME",
2317
+ "required": true
2318
+ }
2319
+ ]
2320
+ },
2321
+ {
2322
+ "name": "--event-name",
2323
+ "description": "Custom event name (required for custom_event goals).",
2324
+ "arguments": [
2325
+ {
2326
+ "name": "NAME"
2327
+ }
2328
+ ]
2329
+ },
2330
+ {
2331
+ "name": "--path-pattern",
2332
+ "description": "Path pattern, \"*\" suffix = prefix match (required for pageview_path goals).",
2333
+ "arguments": [
2334
+ {
2335
+ "name": "PATTERN"
2336
+ }
2337
+ ]
2338
+ }
2339
+ ],
2340
+ "examples": [
2341
+ "closeyourit analytics goals create -p acme-web --kind custom_event --display-name Signup --event-name signup",
2342
+ "closeyourit analytics goals create -p acme-web --kind pageview_path --display-name Pricing --path-pattern \"/pricing\""
2343
+ ]
2344
+ },
2345
+ {
2346
+ "name": "delete",
2347
+ "description": "Delete a conversion goal (irreversible).",
2348
+ "arguments": [
2349
+ {
2350
+ "name": "ID",
2351
+ "required": true,
2352
+ "description": "Goal id."
2353
+ }
2354
+ ],
2355
+ "options": [
2356
+ {
2357
+ "name": "--project",
2358
+ "aliases": [
2359
+ "-p"
2360
+ ],
2361
+ "required": true,
2362
+ "description": "Project id (UUID) or key.",
2363
+ "arguments": [
2364
+ {
2365
+ "name": "PROJECT",
2366
+ "required": true
2367
+ }
2368
+ ]
2369
+ },
2370
+ {
2371
+ "name": "--confirm",
2372
+ "description": "Required: confirm the irreversible deletion."
2373
+ }
2374
+ ],
2375
+ "examples": [
2376
+ "closeyourit analytics goals delete <goal-id> --project acme-web --confirm"
2377
+ ]
2378
+ }
2379
+ ]
2380
+ }
2381
+ ]
2382
+ },
2383
+ {
2384
+ "name": "uptime-groups",
2385
+ "description": "Uptime monitor groups (org-level) + public status pages.",
2386
+ "commands": [
2387
+ {
2388
+ "name": "list",
2389
+ "description": "List the uptime monitor groups in your organization.",
2390
+ "options": [
2391
+ {
2392
+ "name": "--page",
2393
+ "description": "Page number.",
2394
+ "arguments": [
2395
+ {
2396
+ "name": "N"
2397
+ }
2398
+ ]
2399
+ }
2400
+ ],
2401
+ "examples": [
2402
+ "closeyourit uptime-groups list",
2403
+ "closeyourit uptime-groups list --page 2 --json"
2404
+ ]
2405
+ },
2406
+ {
2407
+ "name": "show",
2408
+ "description": "Show an uptime monitor group.",
2409
+ "arguments": [
2410
+ {
2411
+ "name": "ID",
2412
+ "required": true,
2413
+ "description": "Uptime group id."
2414
+ }
2415
+ ],
2416
+ "examples": [
2417
+ "closeyourit uptime-groups show <group-id>"
2418
+ ]
2419
+ },
2420
+ {
2421
+ "name": "create",
2422
+ "description": "Create an uptime monitor group (org-level container).",
2423
+ "options": [
2424
+ {
2425
+ "name": "--name",
2426
+ "required": true,
2427
+ "description": "Group name.",
2428
+ "arguments": [
2429
+ {
2430
+ "name": "NAME",
2431
+ "required": true
2432
+ }
2433
+ ]
2434
+ },
2435
+ {
2436
+ "name": "--color",
2437
+ "description": "Accent color (Tailwind palette name).",
2438
+ "arguments": [
2439
+ {
2440
+ "name": "COLOR"
2441
+ }
2442
+ ]
2443
+ },
2444
+ {
2445
+ "name": "--icon",
2446
+ "description": "Icon name.",
2447
+ "arguments": [
2448
+ {
2449
+ "name": "ICON"
2450
+ }
2451
+ ]
2452
+ },
2453
+ {
2454
+ "name": "--description",
2455
+ "description": "Group description.",
2456
+ "arguments": [
2457
+ {
2458
+ "name": "TEXT"
2459
+ }
2460
+ ]
2461
+ }
2462
+ ],
2463
+ "examples": [
2464
+ "closeyourit uptime-groups create --name \"Core services\"",
2465
+ "closeyourit uptime-groups create --name API --color sky --icon server --description \"Public API\""
2466
+ ]
2467
+ },
2468
+ {
2469
+ "name": "update",
2470
+ "description": "Update an uptime monitor group (only the provided fields).",
2471
+ "arguments": [
2472
+ {
2473
+ "name": "ID",
2474
+ "required": true,
2475
+ "description": "Uptime group id."
2476
+ }
2477
+ ],
2478
+ "options": [
2479
+ {
2480
+ "name": "--name",
2481
+ "description": "Group name.",
2482
+ "arguments": [
2483
+ {
2484
+ "name": "NAME"
2485
+ }
2486
+ ]
2487
+ },
2488
+ {
2489
+ "name": "--color",
2490
+ "description": "Accent color (Tailwind palette name).",
2491
+ "arguments": [
2492
+ {
2493
+ "name": "COLOR"
2494
+ }
2495
+ ]
2496
+ },
2497
+ {
2498
+ "name": "--icon",
2499
+ "description": "Icon name.",
2500
+ "arguments": [
2501
+ {
2502
+ "name": "ICON"
2503
+ }
2504
+ ]
2505
+ },
2506
+ {
2507
+ "name": "--description",
2508
+ "description": "Group description.",
2509
+ "arguments": [
2510
+ {
2511
+ "name": "TEXT"
2512
+ }
2513
+ ]
2514
+ }
2515
+ ],
2516
+ "examples": [
2517
+ "closeyourit uptime-groups update <group-id> --name \"New name\" --color emerald"
2518
+ ]
2519
+ },
2520
+ {
2521
+ "name": "delete",
2522
+ "description": "Delete an uptime monitor group (irreversible).",
2523
+ "arguments": [
2524
+ {
2525
+ "name": "ID",
2526
+ "required": true,
2527
+ "description": "Uptime group id."
2528
+ }
2529
+ ],
2530
+ "options": [
2531
+ {
2532
+ "name": "--confirm",
2533
+ "description": "Required: confirm the irreversible deletion."
2534
+ }
2535
+ ],
2536
+ "examples": [
2537
+ "closeyourit uptime-groups delete <group-id> --confirm"
2538
+ ]
2539
+ },
2540
+ {
2541
+ "name": "publish",
2542
+ "description": "Publish the public status page for an uptime group.",
2543
+ "arguments": [
2544
+ {
2545
+ "name": "ID",
2546
+ "required": true,
2547
+ "description": "Uptime group id."
2548
+ }
2549
+ ],
2550
+ "examples": [
2551
+ "closeyourit uptime-groups publish <group-id>"
2552
+ ]
2553
+ },
2554
+ {
2555
+ "name": "unpublish",
2556
+ "description": "Unpublish (retract) the public status page for an uptime group.",
2557
+ "arguments": [
2558
+ {
2559
+ "name": "ID",
2560
+ "required": true,
2561
+ "description": "Uptime group id."
2562
+ }
2563
+ ],
2564
+ "examples": [
2565
+ "closeyourit uptime-groups unpublish <group-id>"
2566
+ ]
2567
+ }
2568
+ ]
2569
+ },
2570
+ {
2571
+ "name": "releases",
2572
+ "description": "Project releases (tracked from CI).",
2573
+ "commands": [
2574
+ {
2575
+ "name": "list",
2576
+ "description": "List the releases of a project (tracked from CI).",
2577
+ "options": [
2578
+ {
2579
+ "name": "--project",
2580
+ "aliases": [
2581
+ "-p"
2582
+ ],
2583
+ "required": true,
2584
+ "description": "Project id (UUID) or key.",
2585
+ "arguments": [
2586
+ {
2587
+ "name": "PROJECT",
2588
+ "required": true
2589
+ }
2590
+ ]
2591
+ },
2592
+ {
2593
+ "name": "--page",
2594
+ "description": "Page number.",
2595
+ "arguments": [
2596
+ {
2597
+ "name": "N"
2598
+ }
2599
+ ]
2600
+ }
2601
+ ],
2602
+ "examples": [
2603
+ "closeyourit releases list --project acme-api",
2604
+ "closeyourit releases list -p acme-api --page 2 --json"
2605
+ ]
2606
+ }
2607
+ ]
2608
+ },
2609
+ {
2610
+ "name": "cron-monitors",
2611
+ "description": "Cron / heartbeat monitors.",
2612
+ "commands": [
2613
+ {
2614
+ "name": "list",
2615
+ "description": "List cron / heartbeat monitors across your visible projects.",
2616
+ "options": [
2617
+ {
2618
+ "name": "--page",
2619
+ "description": "Page number.",
2620
+ "arguments": [
2621
+ {
2622
+ "name": "N"
2623
+ }
2624
+ ]
2625
+ },
2626
+ {
2627
+ "name": "--project",
2628
+ "aliases": [
2629
+ "-p"
2630
+ ],
2631
+ "description": "Filter by project id (UUID) or key.",
2632
+ "arguments": [
2633
+ {
2634
+ "name": "PROJECT"
2635
+ }
2636
+ ]
2637
+ },
2638
+ {
2639
+ "name": "--status",
2640
+ "description": "Filter by status.",
2641
+ "arguments": [
2642
+ {
2643
+ "name": "STATUS"
2644
+ }
2645
+ ]
2646
+ }
2647
+ ],
2648
+ "examples": [
2649
+ "closeyourit cron-monitors list",
2650
+ "closeyourit cron-monitors list --status missed --project acme-api --json"
2651
+ ]
2652
+ },
2653
+ {
2654
+ "name": "show",
2655
+ "description": "Show a cron / heartbeat monitor.",
2656
+ "arguments": [
2657
+ {
2658
+ "name": "ID",
2659
+ "required": true,
2660
+ "description": "Cron monitor id."
2661
+ }
2662
+ ],
2663
+ "examples": [
2664
+ "closeyourit cron-monitors show <monitor-id>"
2665
+ ]
2666
+ }
2667
+ ]
2668
+ },
2669
+ {
2670
+ "name": "todos",
2671
+ "description": "Personal todo lists (per organization).",
2672
+ "commands": [
2673
+ {
2674
+ "name": "list",
2675
+ "description": "List your own todo lists.",
2676
+ "options": [
2677
+ {
2678
+ "name": "--page",
2679
+ "description": "Page number.",
2680
+ "arguments": [
2681
+ {
2682
+ "name": "N"
2683
+ }
2684
+ ]
2685
+ }
2686
+ ],
2687
+ "examples": [
2688
+ "closeyourit todos list",
2689
+ "closeyourit todos list --page 2 --json"
2690
+ ]
2691
+ },
2692
+ {
2693
+ "name": "show",
2694
+ "description": "Show one of your todo lists.",
2695
+ "arguments": [
2696
+ {
2697
+ "name": "ID",
2698
+ "required": true,
2699
+ "description": "Todo list id."
2700
+ }
2701
+ ],
2702
+ "examples": [
2703
+ "closeyourit todos show <list-id>"
2704
+ ]
2705
+ },
2706
+ {
2707
+ "name": "create",
2708
+ "description": "Create a todo list.",
2709
+ "options": [
2710
+ {
2711
+ "name": "--name",
2712
+ "required": true,
2713
+ "description": "List name.",
2714
+ "arguments": [
2715
+ {
2716
+ "name": "NAME",
2717
+ "required": true
2718
+ }
2719
+ ]
2720
+ },
2721
+ {
2722
+ "name": "--color",
2723
+ "description": "Color label.",
2724
+ "arguments": [
2725
+ {
2726
+ "name": "COLOR"
2727
+ }
2728
+ ]
2729
+ }
2730
+ ],
2731
+ "examples": [
2732
+ "closeyourit todos create --name \"Sprint prep\"",
2733
+ "closeyourit todos create --name \"Sprint prep\" --color indigo"
2734
+ ]
2735
+ },
2736
+ {
2737
+ "name": "update",
2738
+ "description": "Update a todo list (rename or recolor).",
2739
+ "arguments": [
2740
+ {
2741
+ "name": "ID",
2742
+ "required": true,
2743
+ "description": "Todo list id."
2744
+ }
2745
+ ],
2746
+ "options": [
2747
+ {
2748
+ "name": "--name",
2749
+ "description": "New name.",
2750
+ "arguments": [
2751
+ {
2752
+ "name": "NAME"
2753
+ }
2754
+ ]
2755
+ },
2756
+ {
2757
+ "name": "--color",
2758
+ "description": "Color label.",
2759
+ "arguments": [
2760
+ {
2761
+ "name": "COLOR"
2762
+ }
2763
+ ]
2764
+ }
2765
+ ],
2766
+ "examples": [
2767
+ "closeyourit todos update <list-id> --name \"Sprint prep\"",
2768
+ "closeyourit todos update <list-id> --color rose"
2769
+ ]
2770
+ },
2771
+ {
2772
+ "name": "delete",
2773
+ "description": "Delete a todo list (irreversible).",
2774
+ "arguments": [
2775
+ {
2776
+ "name": "ID",
2777
+ "required": true,
2778
+ "description": "Todo list id."
2779
+ }
2780
+ ],
2781
+ "options": [
2782
+ {
2783
+ "name": "--confirm",
2784
+ "description": "Required: confirm the irreversible deletion."
2785
+ }
2786
+ ],
2787
+ "examples": [
2788
+ "closeyourit todos delete <list-id> --confirm"
2789
+ ]
2790
+ },
2791
+ {
2792
+ "name": "reorder",
2793
+ "description": "Reorder your todo lists (pass --list once per id, in the desired order).",
2794
+ "options": [
2795
+ {
2796
+ "name": "--list",
2797
+ "required": true,
2798
+ "description": "List id, in order (repeatable).",
2799
+ "arguments": [
2800
+ {
2801
+ "name": "ID",
2802
+ "required": true
2803
+ }
2804
+ ]
2805
+ }
2806
+ ],
2807
+ "examples": [
2808
+ "closeyourit todos reorder --list <id-a> --list <id-b> --list <id-c>"
2809
+ ]
2810
+ },
2811
+ {
2812
+ "name": "shares",
2813
+ "description": "List the members a todo list is shared with (read-only).",
2814
+ "arguments": [
2815
+ {
2816
+ "name": "LIST_ID",
2817
+ "required": true,
2818
+ "description": "Todo list id."
2819
+ }
2820
+ ],
2821
+ "examples": [
2822
+ "closeyourit todos shares <list-id>"
2823
+ ]
2824
+ },
2825
+ {
2826
+ "name": "share",
2827
+ "description": "Set who a todo list is shared with (replaces the set; omit --account to unshare all).",
2828
+ "arguments": [
2829
+ {
2830
+ "name": "LIST_ID",
2831
+ "required": true,
2832
+ "description": "Todo list id."
2833
+ }
2834
+ ],
2835
+ "options": [
2836
+ {
2837
+ "name": "--account",
2838
+ "description": "Recipient account id (repeatable).",
2839
+ "arguments": [
2840
+ {
2841
+ "name": "ID"
2842
+ }
2843
+ ]
2844
+ }
2845
+ ],
2846
+ "examples": [
2847
+ "closeyourit todos share <list-id> --account <account-id> --account <account-id>",
2848
+ "closeyourit todos share <list-id>"
2849
+ ]
2850
+ },
2851
+ {
2852
+ "name": "complete",
2853
+ "description": "Mark a todo item as done.",
2854
+ "arguments": [
2855
+ {
2856
+ "name": "LIST_ID",
2857
+ "required": true,
2858
+ "description": "Todo list id."
2859
+ },
2860
+ {
2861
+ "name": "ITEM_ID",
2862
+ "required": true,
2863
+ "description": "Todo item id."
2864
+ }
2865
+ ],
2866
+ "examples": [
2867
+ "closeyourit todos complete <list-id> <item-id>"
2868
+ ]
2869
+ },
2870
+ {
2871
+ "name": "uncomplete",
2872
+ "description": "Reopen a todo item (mark it not done).",
2873
+ "arguments": [
2874
+ {
2875
+ "name": "LIST_ID",
2876
+ "required": true,
2877
+ "description": "Todo list id."
2878
+ },
2879
+ {
2880
+ "name": "ITEM_ID",
2881
+ "required": true,
2882
+ "description": "Todo item id."
2883
+ }
2884
+ ],
2885
+ "examples": [
2886
+ "closeyourit todos uncomplete <list-id> <item-id>"
2887
+ ]
2888
+ },
2889
+ {
2890
+ "name": "shared",
2891
+ "description": "List todo lists shared with you (read-only).",
2892
+ "options": [
2893
+ {
2894
+ "name": "--page",
2895
+ "description": "Page number.",
2896
+ "arguments": [
2897
+ {
2898
+ "name": "N"
2899
+ }
2900
+ ]
2901
+ }
2902
+ ],
2903
+ "examples": [
2904
+ "closeyourit todos shared",
2905
+ "closeyourit todos shared --page 2 --json"
2906
+ ]
2907
+ },
2908
+ {
2909
+ "name": "shared-show",
2910
+ "description": "Show a todo list shared with you (read-only).",
2911
+ "arguments": [
2912
+ {
2913
+ "name": "ID",
2914
+ "required": true,
2915
+ "description": "Shared todo list id."
2916
+ }
2917
+ ],
2918
+ "examples": [
2919
+ "closeyourit todos shared-show <list-id>"
2920
+ ]
2921
+ },
2922
+ {
2923
+ "name": "items",
2924
+ "description": "Todo list items.",
2925
+ "commands": [
2926
+ {
2927
+ "name": "list",
2928
+ "description": "List the items of one of your todo lists.",
2929
+ "arguments": [
2930
+ {
2931
+ "name": "LIST_ID",
2932
+ "required": true,
2933
+ "description": "Todo list id."
2934
+ }
2935
+ ],
2936
+ "options": [
2937
+ {
2938
+ "name": "--page",
2939
+ "description": "Page number.",
2940
+ "arguments": [
2941
+ {
2942
+ "name": "N"
2943
+ }
2944
+ ]
2945
+ }
2946
+ ],
2947
+ "examples": [
2948
+ "closeyourit todos items list <list-id>"
2949
+ ]
2950
+ },
2951
+ {
2952
+ "name": "add",
2953
+ "description": "Add an item to a todo list.",
2954
+ "arguments": [
2955
+ {
2956
+ "name": "LIST_ID",
2957
+ "required": true,
2958
+ "description": "Todo list id."
2959
+ }
2960
+ ],
2961
+ "options": [
2962
+ {
2963
+ "name": "--title",
2964
+ "required": true,
2965
+ "description": "Item title.",
2966
+ "arguments": [
2967
+ {
2968
+ "name": "TITLE",
2969
+ "required": true
2970
+ }
2971
+ ]
2972
+ },
2973
+ {
2974
+ "name": "--ticket",
2975
+ "description": "Link the item to a ticket id.",
2976
+ "arguments": [
2977
+ {
2978
+ "name": "ID"
2979
+ }
2980
+ ]
2981
+ },
2982
+ {
2983
+ "name": "--position",
2984
+ "description": "Position in the list.",
2985
+ "arguments": [
2986
+ {
2987
+ "name": "N"
2988
+ }
2989
+ ]
2990
+ }
2991
+ ],
2992
+ "examples": [
2993
+ "closeyourit todos items add <list-id> --title \"Write the changelog\"",
2994
+ "closeyourit todos items add <list-id> --title \"Fix login\" --ticket <ticket-id>"
2995
+ ]
2996
+ },
2997
+ {
2998
+ "name": "update",
2999
+ "description": "Update a todo item (retitle, relink a ticket, or reposition).",
3000
+ "arguments": [
3001
+ {
3002
+ "name": "LIST_ID",
3003
+ "required": true,
3004
+ "description": "Todo list id."
3005
+ },
3006
+ {
3007
+ "name": "ITEM_ID",
3008
+ "required": true,
3009
+ "description": "Todo item id."
3010
+ }
3011
+ ],
3012
+ "options": [
3013
+ {
3014
+ "name": "--title",
3015
+ "description": "New title.",
3016
+ "arguments": [
3017
+ {
3018
+ "name": "TITLE"
3019
+ }
3020
+ ]
3021
+ },
3022
+ {
3023
+ "name": "--ticket",
3024
+ "description": "Link the item to a ticket id.",
3025
+ "arguments": [
3026
+ {
3027
+ "name": "ID"
3028
+ }
3029
+ ]
3030
+ },
3031
+ {
3032
+ "name": "--position",
3033
+ "description": "Position in the list.",
3034
+ "arguments": [
3035
+ {
3036
+ "name": "N"
3037
+ }
3038
+ ]
3039
+ }
3040
+ ],
3041
+ "examples": [
3042
+ "closeyourit todos items update <list-id> <item-id> --title \"New title\"",
3043
+ "closeyourit todos items update <list-id> <item-id> --ticket <ticket-id>"
3044
+ ]
3045
+ },
3046
+ {
3047
+ "name": "delete",
3048
+ "description": "Delete a todo item (irreversible).",
3049
+ "arguments": [
3050
+ {
3051
+ "name": "LIST_ID",
3052
+ "required": true,
3053
+ "description": "Todo list id."
3054
+ },
3055
+ {
3056
+ "name": "ITEM_ID",
3057
+ "required": true,
3058
+ "description": "Todo item id."
3059
+ }
3060
+ ],
3061
+ "options": [
3062
+ {
3063
+ "name": "--confirm",
3064
+ "description": "Required: confirm the irreversible deletion."
3065
+ }
3066
+ ],
3067
+ "examples": [
3068
+ "closeyourit todos items delete <list-id> <item-id> --confirm"
3069
+ ]
3070
+ }
3071
+ ]
3072
+ }
3073
+ ]
3074
+ },
3075
+ {
3076
+ "name": "monitors",
3077
+ "description": "Uptime monitors: create, publish, announcements, incidents.",
3078
+ "commands": [
3079
+ {
3080
+ "name": "create",
3081
+ "description": "Create an uptime monitor for a project (one per environment).",
3082
+ "options": [
3083
+ {
3084
+ "name": "--project",
3085
+ "aliases": [
3086
+ "-p"
3087
+ ],
3088
+ "required": true,
3089
+ "description": "Project id (UUID) or key.",
3090
+ "arguments": [
3091
+ {
3092
+ "name": "PROJECT",
3093
+ "required": true
3094
+ }
3095
+ ]
3096
+ },
3097
+ {
3098
+ "name": "--url",
3099
+ "required": true,
3100
+ "description": "URL to probe.",
3101
+ "arguments": [
3102
+ {
3103
+ "name": "URL",
3104
+ "required": true
3105
+ }
3106
+ ]
3107
+ },
3108
+ {
3109
+ "name": "--environment",
3110
+ "description": "Environment id (must be declared by the project).",
3111
+ "arguments": [
3112
+ {
3113
+ "name": "ID"
3114
+ }
3115
+ ]
3116
+ },
3117
+ {
3118
+ "name": "--http-method",
3119
+ "description": "HTTP method (default GET).",
3120
+ "arguments": [
3121
+ {
3122
+ "name": "METHOD"
3123
+ }
3124
+ ]
3125
+ },
3126
+ {
3127
+ "name": "--interval-seconds",
3128
+ "description": "Seconds between checks.",
3129
+ "arguments": [
3130
+ {
3131
+ "name": "N"
3132
+ }
3133
+ ]
3134
+ },
3135
+ {
3136
+ "name": "--expected-status",
3137
+ "description": "Expected HTTP status code.",
3138
+ "arguments": [
3139
+ {
3140
+ "name": "CODE"
3141
+ }
3142
+ ]
3143
+ },
3144
+ {
3145
+ "name": "--timeout-seconds",
3146
+ "description": "Request timeout in seconds.",
3147
+ "arguments": [
3148
+ {
3149
+ "name": "N"
3150
+ }
3151
+ ]
3152
+ },
3153
+ {
3154
+ "name": "--expected-body-keyword",
3155
+ "description": "Keyword expected in the response body (check fails without it; not with HEAD).",
3156
+ "arguments": [
3157
+ {
3158
+ "name": "TEXT"
3159
+ }
3160
+ ]
3161
+ },
3162
+ {
3163
+ "name": "--ssl-expiry-warn-days",
3164
+ "description": "Alert when the TLS certificate has at most N days left (empty = off).",
3165
+ "arguments": [
3166
+ {
3167
+ "name": "N"
3168
+ }
3169
+ ]
3170
+ },
3171
+ {
3172
+ "name": "--group-id",
3173
+ "description": "Uptime group id to attach the monitor to (org-level).",
3174
+ "arguments": [
3175
+ {
3176
+ "name": "ID"
3177
+ }
3178
+ ]
3179
+ }
3180
+ ],
3181
+ "examples": [
3182
+ "closeyourit monitors create --project acme-api --url https://acme.example.com/up",
3183
+ "closeyourit monitors create -p acme-api --url https://acme.example.com/up --environment <env-id> --interval-seconds 60 --expected-status 200"
3184
+ ]
3185
+ },
3186
+ {
3187
+ "name": "update",
3188
+ "description": "Update an uptime monitor (URL, method, interval, expected status, timeout).",
3189
+ "arguments": [
3190
+ {
3191
+ "name": "ID",
3192
+ "required": true,
3193
+ "description": "Monitor id."
3194
+ }
3195
+ ],
3196
+ "options": [
3197
+ {
3198
+ "name": "--project",
3199
+ "aliases": [
3200
+ "-p"
3201
+ ],
3202
+ "required": true,
3203
+ "description": "Project id (UUID) or key.",
3204
+ "arguments": [
3205
+ {
3206
+ "name": "PROJECT",
3207
+ "required": true
3208
+ }
3209
+ ]
3210
+ },
3211
+ {
3212
+ "name": "--url",
3213
+ "description": "URL to probe.",
3214
+ "arguments": [
3215
+ {
3216
+ "name": "URL"
3217
+ }
3218
+ ]
3219
+ },
3220
+ {
3221
+ "name": "--http-method",
3222
+ "description": "HTTP method.",
3223
+ "arguments": [
3224
+ {
3225
+ "name": "METHOD"
3226
+ }
3227
+ ]
3228
+ },
3229
+ {
3230
+ "name": "--interval-seconds",
3231
+ "description": "Seconds between checks.",
3232
+ "arguments": [
3233
+ {
3234
+ "name": "N"
3235
+ }
3236
+ ]
3237
+ },
3238
+ {
3239
+ "name": "--expected-status",
3240
+ "description": "Expected HTTP status code.",
3241
+ "arguments": [
3242
+ {
3243
+ "name": "CODE"
3244
+ }
3245
+ ]
3246
+ },
3247
+ {
3248
+ "name": "--timeout-seconds",
3249
+ "description": "Request timeout in seconds.",
3250
+ "arguments": [
3251
+ {
3252
+ "name": "N"
3253
+ }
3254
+ ]
3255
+ },
3256
+ {
3257
+ "name": "--expected-body-keyword",
3258
+ "description": "Keyword expected in the response body (check fails without it; not with HEAD).",
3259
+ "arguments": [
3260
+ {
3261
+ "name": "TEXT"
3262
+ }
3263
+ ]
3264
+ },
3265
+ {
3266
+ "name": "--ssl-expiry-warn-days",
3267
+ "description": "Alert when the TLS certificate has at most N days left (empty = off).",
3268
+ "arguments": [
3269
+ {
3270
+ "name": "N"
3271
+ }
3272
+ ]
3273
+ },
3274
+ {
3275
+ "name": "--group-id",
3276
+ "description": "Uptime group id to attach the monitor to (org-level).",
3277
+ "arguments": [
3278
+ {
3279
+ "name": "ID"
3280
+ }
3281
+ ]
3282
+ }
3283
+ ],
3284
+ "examples": [
3285
+ "closeyourit monitors update <monitor-id> --project acme-api --interval-seconds 120",
3286
+ "closeyourit monitors update <monitor-id> -p acme-api --url https://acme.example.com/health --expected-status 204"
3287
+ ]
3288
+ },
3289
+ {
3290
+ "name": "publish",
3291
+ "description": "Publish the public status page for a monitor (opt-in).",
3292
+ "arguments": [
3293
+ {
3294
+ "name": "ID",
3295
+ "required": true,
3296
+ "description": "Monitor id."
3297
+ }
3298
+ ],
3299
+ "options": [
3300
+ {
3301
+ "name": "--project",
3302
+ "aliases": [
3303
+ "-p"
3304
+ ],
3305
+ "required": true,
3306
+ "description": "Project id (UUID) or key.",
3307
+ "arguments": [
3308
+ {
3309
+ "name": "PROJECT",
3310
+ "required": true
3311
+ }
3312
+ ]
3313
+ }
3314
+ ],
3315
+ "examples": [
3316
+ "closeyourit monitors publish <monitor-id> --project acme-api"
3317
+ ]
3318
+ },
3319
+ {
3320
+ "name": "unpublish",
3321
+ "description": "Unpublish the public status page for a monitor.",
3322
+ "arguments": [
3323
+ {
3324
+ "name": "ID",
3325
+ "required": true,
3326
+ "description": "Monitor id."
3327
+ }
3328
+ ],
3329
+ "options": [
3330
+ {
3331
+ "name": "--project",
3332
+ "aliases": [
3333
+ "-p"
3334
+ ],
3335
+ "required": true,
3336
+ "description": "Project id (UUID) or key.",
3337
+ "arguments": [
3338
+ {
3339
+ "name": "PROJECT",
3340
+ "required": true
3341
+ }
3342
+ ]
3343
+ }
3344
+ ],
3345
+ "examples": [
3346
+ "closeyourit monitors unpublish <monitor-id> --project acme-api"
3347
+ ]
3348
+ },
3349
+ {
3350
+ "name": "announcements",
3351
+ "description": "Status-page announcement banner.",
3352
+ "commands": [
3353
+ {
3354
+ "name": "show",
3355
+ "description": "Show the status page announcement banner for a monitor (null if none).",
3356
+ "arguments": [
3357
+ {
3358
+ "name": "MONITOR",
3359
+ "required": true,
3360
+ "description": "Monitor id."
3361
+ }
3362
+ ],
3363
+ "options": [
3364
+ {
3365
+ "name": "--project",
3366
+ "aliases": [
3367
+ "-p"
3368
+ ],
3369
+ "required": true,
3370
+ "description": "Project id (UUID) or key.",
3371
+ "arguments": [
3372
+ {
3373
+ "name": "PROJECT",
3374
+ "required": true
3375
+ }
3376
+ ]
3377
+ }
3378
+ ],
3379
+ "examples": [
3380
+ "closeyourit monitors announcements show <monitor-id> --project acme-api"
3381
+ ]
3382
+ },
3383
+ {
3384
+ "name": "set",
3385
+ "description": "Upsert the status page announcement banner for a monitor.",
3386
+ "arguments": [
3387
+ {
3388
+ "name": "MONITOR",
3389
+ "required": true,
3390
+ "description": "Monitor id."
3391
+ }
3392
+ ],
3393
+ "options": [
3394
+ {
3395
+ "name": "--project",
3396
+ "aliases": [
3397
+ "-p"
3398
+ ],
3399
+ "required": true,
3400
+ "description": "Project id (UUID) or key.",
3401
+ "arguments": [
3402
+ {
3403
+ "name": "PROJECT",
3404
+ "required": true
3405
+ }
3406
+ ]
3407
+ },
3408
+ {
3409
+ "name": "--level",
3410
+ "description": "Banner level.",
3411
+ "arguments": [
3412
+ {
3413
+ "name": "LEVEL"
3414
+ }
3415
+ ]
3416
+ },
3417
+ {
3418
+ "name": "--message",
3419
+ "description": "Banner message.",
3420
+ "arguments": [
3421
+ {
3422
+ "name": "TEXT"
3423
+ }
3424
+ ]
3425
+ },
3426
+ {
3427
+ "name": "--starts-at",
3428
+ "description": "Start time (ISO 8601).",
3429
+ "arguments": [
3430
+ {
3431
+ "name": "ISO8601"
3432
+ }
3433
+ ]
3434
+ },
3435
+ {
3436
+ "name": "--ends-at",
3437
+ "description": "End time (ISO 8601).",
3438
+ "arguments": [
3439
+ {
3440
+ "name": "ISO8601"
3441
+ }
3442
+ ]
3443
+ },
3444
+ {
3445
+ "name": "--active",
3446
+ "description": "Whether the banner is active."
3447
+ }
3448
+ ],
3449
+ "examples": [
3450
+ "closeyourit monitors announcements set <monitor-id> --project acme-api --level maintenance --message \"Scheduled DB upgrade\"",
3451
+ "closeyourit monitors announcements set <monitor-id> -p acme-api --level warning --message \"Degraded\" --starts-at 2026-07-10T09:00:00Z --ends-at 2026-07-10T11:00:00Z --active"
3452
+ ]
3453
+ },
3454
+ {
3455
+ "name": "clear",
3456
+ "description": "Remove the status page announcement banner for a monitor.",
3457
+ "arguments": [
3458
+ {
3459
+ "name": "MONITOR",
3460
+ "required": true,
3461
+ "description": "Monitor id."
3462
+ }
3463
+ ],
3464
+ "options": [
3465
+ {
3466
+ "name": "--project",
3467
+ "aliases": [
3468
+ "-p"
3469
+ ],
3470
+ "required": true,
3471
+ "description": "Project id (UUID) or key.",
3472
+ "arguments": [
3473
+ {
3474
+ "name": "PROJECT",
3475
+ "required": true
3476
+ }
3477
+ ]
3478
+ },
3479
+ {
3480
+ "name": "--confirm",
3481
+ "description": "Required: confirm the removal."
3482
+ }
3483
+ ],
3484
+ "examples": [
3485
+ "closeyourit monitors announcements clear <monitor-id> --project acme-api --confirm"
3486
+ ]
3487
+ }
3488
+ ]
3489
+ },
3490
+ {
3491
+ "name": "incidents",
3492
+ "description": "Uptime incidents.",
3493
+ "commands": [
3494
+ {
3495
+ "name": "delete",
3496
+ "description": "Delete an uptime incident (and its grouped windows; irreversible).",
3497
+ "arguments": [
3498
+ {
3499
+ "name": "MONITOR",
3500
+ "required": true,
3501
+ "description": "Monitor id."
3502
+ },
3503
+ {
3504
+ "name": "INCIDENT",
3505
+ "required": true,
3506
+ "description": "Incident id (primary)."
3507
+ }
3508
+ ],
3509
+ "options": [
3510
+ {
3511
+ "name": "--project",
3512
+ "aliases": [
3513
+ "-p"
3514
+ ],
3515
+ "required": true,
3516
+ "description": "Project id (UUID) or key.",
3517
+ "arguments": [
3518
+ {
3519
+ "name": "PROJECT",
3520
+ "required": true
3521
+ }
3522
+ ]
3523
+ },
3524
+ {
3525
+ "name": "--confirm",
3526
+ "description": "Required: confirm the deletion."
3527
+ }
3528
+ ],
3529
+ "examples": [
3530
+ "closeyourit monitors incidents delete <monitor-id> <incident-id> --project acme-api --confirm"
3531
+ ]
3532
+ },
3533
+ {
3534
+ "name": "group",
3535
+ "description": "Unify incidents of a monitor and post the first narration step.",
3536
+ "arguments": [
3537
+ {
3538
+ "name": "MONITOR",
3539
+ "required": true,
3540
+ "description": "Monitor id."
3541
+ }
3542
+ ],
3543
+ "options": [
3544
+ {
3545
+ "name": "--project",
3546
+ "aliases": [
3547
+ "-p"
3548
+ ],
3549
+ "required": true,
3550
+ "description": "Project id (UUID) or key.",
3551
+ "arguments": [
3552
+ {
3553
+ "name": "PROJECT",
3554
+ "required": true
3555
+ }
3556
+ ]
3557
+ },
3558
+ {
3559
+ "name": "--incident",
3560
+ "required": true,
3561
+ "description": "Incident id to unify (repeatable).",
3562
+ "arguments": [
3563
+ {
3564
+ "name": "ID",
3565
+ "required": true
3566
+ }
3567
+ ]
3568
+ },
3569
+ {
3570
+ "name": "--phase",
3571
+ "required": true,
3572
+ "description": "Timeline phase of the first step.",
3573
+ "arguments": [
3574
+ {
3575
+ "name": "PHASE",
3576
+ "required": true
3577
+ }
3578
+ ]
3579
+ },
3580
+ {
3581
+ "name": "--body",
3582
+ "description": "Text of the first narration step.",
3583
+ "arguments": [
3584
+ {
3585
+ "name": "TEXT"
3586
+ }
3587
+ ]
3588
+ }
3589
+ ],
3590
+ "examples": [
3591
+ "closeyourit monitors incidents group <monitor-id> --project acme-api --incident <id-a> --incident <id-b> --phase investigating --body \"Looking into it\""
3592
+ ]
3593
+ },
3594
+ {
3595
+ "name": "ungroup",
3596
+ "description": "Dissolve an incident grouping (grouped windows become separate again).",
3597
+ "arguments": [
3598
+ {
3599
+ "name": "MONITOR",
3600
+ "required": true,
3601
+ "description": "Monitor id."
3602
+ },
3603
+ {
3604
+ "name": "INCIDENT",
3605
+ "required": true,
3606
+ "description": "Incident id (primary)."
3607
+ }
3608
+ ],
3609
+ "options": [
3610
+ {
3611
+ "name": "--project",
3612
+ "aliases": [
3613
+ "-p"
3614
+ ],
3615
+ "required": true,
3616
+ "description": "Project id (UUID) or key.",
3617
+ "arguments": [
3618
+ {
3619
+ "name": "PROJECT",
3620
+ "required": true
3621
+ }
3622
+ ]
3623
+ },
3624
+ {
3625
+ "name": "--keep",
3626
+ "description": "Id of the window that keeps the narration status.",
3627
+ "arguments": [
3628
+ {
3629
+ "name": "ID"
3630
+ }
3631
+ ]
3632
+ }
3633
+ ],
3634
+ "examples": [
3635
+ "closeyourit monitors incidents ungroup <monitor-id> <incident-id> --project acme-api",
3636
+ "closeyourit monitors incidents ungroup <monitor-id> <incident-id> -p acme-api --keep <window-id>"
3637
+ ]
3638
+ },
3639
+ {
3640
+ "name": "update-add",
3641
+ "description": "Add a timeline step to a narrated incident.",
3642
+ "arguments": [
3643
+ {
3644
+ "name": "MONITOR",
3645
+ "required": true,
3646
+ "description": "Monitor id."
3647
+ },
3648
+ {
3649
+ "name": "INCIDENT",
3650
+ "required": true,
3651
+ "description": "Incident id (primary)."
3652
+ }
3653
+ ],
3654
+ "options": [
3655
+ {
3656
+ "name": "--project",
3657
+ "aliases": [
3658
+ "-p"
3659
+ ],
3660
+ "required": true,
3661
+ "description": "Project id (UUID) or key.",
3662
+ "arguments": [
3663
+ {
3664
+ "name": "PROJECT",
3665
+ "required": true
3666
+ }
3667
+ ]
3668
+ },
3669
+ {
3670
+ "name": "--phase",
3671
+ "required": true,
3672
+ "description": "Timeline phase of the step.",
3673
+ "arguments": [
3674
+ {
3675
+ "name": "PHASE",
3676
+ "required": true
3677
+ }
3678
+ ]
3679
+ },
3680
+ {
3681
+ "name": "--body",
3682
+ "description": "Text of the step.",
3683
+ "arguments": [
3684
+ {
3685
+ "name": "TEXT"
3686
+ }
3687
+ ]
3688
+ }
3689
+ ],
3690
+ "examples": [
3691
+ "closeyourit monitors incidents update-add <monitor-id> <incident-id> --project acme-api --phase monitoring --body \"Recovering\""
3692
+ ]
3693
+ },
3694
+ {
3695
+ "name": "update-delete",
3696
+ "description": "Delete a timeline step from a narrated incident (irreversible).",
3697
+ "arguments": [
3698
+ {
3699
+ "name": "MONITOR",
3700
+ "required": true,
3701
+ "description": "Monitor id."
3702
+ },
3703
+ {
3704
+ "name": "INCIDENT",
3705
+ "required": true,
3706
+ "description": "Incident id (primary)."
3707
+ },
3708
+ {
3709
+ "name": "UPDATE_ID",
3710
+ "required": true,
3711
+ "description": "Timeline step id."
3712
+ }
3713
+ ],
3714
+ "options": [
3715
+ {
3716
+ "name": "--project",
3717
+ "aliases": [
3718
+ "-p"
3719
+ ],
3720
+ "required": true,
3721
+ "description": "Project id (UUID) or key.",
3722
+ "arguments": [
3723
+ {
3724
+ "name": "PROJECT",
3725
+ "required": true
3726
+ }
3727
+ ]
3728
+ },
3729
+ {
3730
+ "name": "--confirm",
3731
+ "description": "Required: confirm the deletion."
3732
+ }
3733
+ ],
3734
+ "examples": [
3735
+ "closeyourit monitors incidents update-delete <monitor-id> <incident-id> <update-id> --project acme-api --confirm"
3736
+ ]
3737
+ }
3738
+ ]
3739
+ }
3740
+ ]
3741
+ },
3742
+ {
3743
+ "name": "members",
3744
+ "description": "Organization members: access, profile, removal.",
3745
+ "commands": [
3746
+ {
3747
+ "name": "set-access",
3748
+ "description": "Set a member's access: group/project scope, direct roles, and permission overrides.",
3749
+ "arguments": [
3750
+ {
3751
+ "name": "ID",
3752
+ "required": true,
3753
+ "description": "Membership id."
3754
+ }
3755
+ ],
3756
+ "options": [
3757
+ {
3758
+ "name": "--group",
3759
+ "description": "Group id or name to grant access to (repeatable; omit to clear group access).",
3760
+ "arguments": [
3761
+ {
3762
+ "name": "REF"
3763
+ }
3764
+ ]
3765
+ },
3766
+ {
3767
+ "name": "--project",
3768
+ "description": "Project id or key to grant access to (repeatable; omit to clear project access).",
3769
+ "arguments": [
3770
+ {
3771
+ "name": "REF"
3772
+ }
3773
+ ]
3774
+ },
3775
+ {
3776
+ "name": "--role-id",
3777
+ "description": "Direct role id or name (repeatable; when passed, replaces the direct roles set).",
3778
+ "arguments": [
3779
+ {
3780
+ "name": "REF"
3781
+ }
3782
+ ]
3783
+ },
3784
+ {
3785
+ "name": "--override",
3786
+ "description": "Permission override \"permission.key=allow|deny|inherit\" (repeatable; when passed, replaces the overrides).",
3787
+ "arguments": [
3788
+ {
3789
+ "name": "ENTRY"
3790
+ }
3791
+ ]
3792
+ }
3793
+ ],
3794
+ "examples": [
3795
+ "closeyourit members set-access <membership-id> --project acme-api --project acme-web",
3796
+ "closeyourit members set-access <membership-id> --group DriverOne --role-id Maintainer",
3797
+ "closeyourit members set-access <membership-id> --override tickets.edit=allow --override errors.triage=deny",
3798
+ "closeyourit members set-access <membership-id>"
3799
+ ]
3800
+ },
3801
+ {
3802
+ "name": "update",
3803
+ "description": "Update a member's profile: name, email, handle (requires members.edit).",
3804
+ "arguments": [
3805
+ {
3806
+ "name": "ID",
3807
+ "required": true,
3808
+ "description": "Membership id."
3809
+ }
3810
+ ],
3811
+ "options": [
3812
+ {
3813
+ "name": "--name",
3814
+ "description": "New display name.",
3815
+ "arguments": [
3816
+ {
3817
+ "name": "NAME"
3818
+ }
3819
+ ]
3820
+ },
3821
+ {
3822
+ "name": "--email",
3823
+ "description": "New email (global credential).",
3824
+ "arguments": [
3825
+ {
3826
+ "name": "EMAIL"
3827
+ }
3828
+ ]
3829
+ },
3830
+ {
3831
+ "name": "--handle",
3832
+ "description": "New handle (global; a-z, 0-9, underscore).",
3833
+ "arguments": [
3834
+ {
3835
+ "name": "HANDLE"
3836
+ }
3837
+ ]
3838
+ }
3839
+ ],
3840
+ "examples": [
3841
+ "closeyourit members update <membership-id> --name \"Ada Lovelace\"",
3842
+ "closeyourit members update <membership-id> --email ada@acme.test --handle ada"
3843
+ ]
3844
+ },
3845
+ {
3846
+ "name": "remove",
3847
+ "description": "Remove a member from your organization (irreversible; requires members.manage).",
3848
+ "arguments": [
3849
+ {
3850
+ "name": "ID",
3851
+ "required": true,
3852
+ "description": "Membership id."
3853
+ }
3854
+ ],
3855
+ "options": [
3856
+ {
3857
+ "name": "--confirm",
3858
+ "description": "Required: confirm the irreversible removal."
3859
+ }
3860
+ ],
3861
+ "examples": [
3862
+ "closeyourit members remove <membership-id> --confirm"
3863
+ ]
3864
+ }
3865
+ ]
3866
+ },
3867
+ {
3868
+ "name": "logs",
3869
+ "description": "Structured log entries: show, link, unlink.",
3870
+ "commands": [
3871
+ {
3872
+ "name": "show",
3873
+ "description": "Show a single log entry (attributes, trace id, correlation).",
3874
+ "arguments": [
3875
+ {
3876
+ "name": "ID",
3877
+ "required": true,
3878
+ "description": "Log entry id."
3879
+ }
3880
+ ],
3881
+ "examples": [
3882
+ "closeyourit logs show <log-entry-id>"
3883
+ ]
3884
+ },
3885
+ {
3886
+ "name": "link",
3887
+ "description": "Manually link a log entry to an error group or a ticket.",
3888
+ "arguments": [
3889
+ {
3890
+ "name": "ID",
3891
+ "required": true,
3892
+ "description": "Log entry id."
3893
+ }
3894
+ ],
3895
+ "options": [
3896
+ {
3897
+ "name": "--to",
3898
+ "required": true,
3899
+ "description": "Target to link: \"Errors::Group:<uuid>\" or \"Ticketing::Ticket:<uuid>\".",
3900
+ "arguments": [
3901
+ {
3902
+ "name": "TARGET",
3903
+ "required": true
3904
+ }
3905
+ ]
3906
+ }
3907
+ ],
3908
+ "examples": [
3909
+ "closeyourit logs link <log-entry-id> --to \"Errors::Group:<uuid>\"",
3910
+ "closeyourit logs link <log-entry-id> --to \"Ticketing::Ticket:<uuid>\""
3911
+ ]
3912
+ },
3913
+ {
3914
+ "name": "unlink",
3915
+ "description": "Remove a manual log-to-target link (irreversible).",
3916
+ "arguments": [
3917
+ {
3918
+ "name": "ID",
3919
+ "required": true,
3920
+ "description": "Log entry id."
3921
+ },
3922
+ {
3923
+ "name": "LINK_ID",
3924
+ "required": true,
3925
+ "description": "Link id to remove."
3926
+ }
3927
+ ],
3928
+ "options": [
3929
+ {
3930
+ "name": "--confirm",
3931
+ "description": "Required: confirm the irreversible deletion."
3932
+ }
3933
+ ],
3934
+ "examples": [
3935
+ "closeyourit logs unlink <log-entry-id> <link-id> --confirm"
3936
+ ]
3937
+ }
3938
+ ]
3939
+ },
3940
+ {
3941
+ "name": "alerts",
3942
+ "description": "Alert notifications and personal preferences.",
3943
+ "commands": [
3944
+ {
3945
+ "name": "notifications",
3946
+ "description": "Your in-app alert inbox.",
3947
+ "commands": [
3948
+ {
3949
+ "name": "list",
3950
+ "description": "List your in-app alert notifications (your own inbox).",
3951
+ "options": [
3952
+ {
3953
+ "name": "--page",
3954
+ "description": "Page number.",
3955
+ "arguments": [
3956
+ {
3957
+ "name": "N"
3958
+ }
3959
+ ]
3960
+ }
3961
+ ],
3962
+ "examples": [
3963
+ "closeyourit alerts notifications list",
3964
+ "closeyourit alerts notifications list --page 2 --json"
3965
+ ]
3966
+ },
3967
+ {
3968
+ "name": "read",
3969
+ "description": "Mark a single notification as read (idempotent).",
3970
+ "arguments": [
3971
+ {
3972
+ "name": "ID",
3973
+ "required": true,
3974
+ "description": "Notification id."
3975
+ }
3976
+ ],
3977
+ "examples": [
3978
+ "closeyourit alerts notifications read <notification-id>"
3979
+ ]
3980
+ },
3981
+ {
3982
+ "name": "read-all",
3983
+ "description": "Mark all your unread notifications as read.",
3984
+ "examples": [
3985
+ "closeyourit alerts notifications read-all"
3986
+ ]
3987
+ },
3988
+ {
3989
+ "name": "delete",
3990
+ "description": "Delete one of your notifications (irreversible).",
3991
+ "arguments": [
3992
+ {
3993
+ "name": "ID",
3994
+ "required": true,
3995
+ "description": "Notification id."
3996
+ }
3997
+ ],
3998
+ "options": [
3999
+ {
4000
+ "name": "--confirm",
4001
+ "description": "Required: confirm the irreversible deletion."
4002
+ }
4003
+ ],
4004
+ "examples": [
4005
+ "closeyourit alerts notifications delete <notification-id> --confirm"
4006
+ ]
4007
+ }
4008
+ ]
4009
+ },
4010
+ {
4011
+ "name": "preferences",
4012
+ "description": "Your personal alert preferences.",
4013
+ "commands": [
4014
+ {
4015
+ "name": "show",
4016
+ "description": "Show your personal alert preferences (per organization).",
4017
+ "examples": [
4018
+ "closeyourit alerts preferences show"
4019
+ ]
4020
+ },
4021
+ {
4022
+ "name": "update",
4023
+ "description": "Update your personal alert preferences (send only the fields you want to change).",
4024
+ "options": [
4025
+ {
4026
+ "name": "--in-app-enabled",
4027
+ "description": "Deliver notifications in-app."
4028
+ },
4029
+ {
4030
+ "name": "--email-enabled",
4031
+ "description": "Deliver notifications by email."
4032
+ },
4033
+ {
4034
+ "name": "--errors-enabled",
4035
+ "description": "Receive error alerts."
4036
+ },
4037
+ {
4038
+ "name": "--uptime-enabled",
4039
+ "description": "Receive uptime alerts."
4040
+ },
4041
+ {
4042
+ "name": "--tickets-enabled",
4043
+ "description": "Receive ticket notifications."
4044
+ },
4045
+ {
4046
+ "name": "--chat-enabled",
4047
+ "description": "Receive chat notifications."
4048
+ },
4049
+ {
4050
+ "name": "--servers-enabled",
4051
+ "description": "Receive server alerts."
4052
+ },
4053
+ {
4054
+ "name": "--min-level",
4055
+ "description": "Minimum error level that notifies you.",
4056
+ "arguments": [
4057
+ {
4058
+ "name": "LEVEL"
4059
+ }
4060
+ ]
4061
+ },
4062
+ {
4063
+ "name": "--quiet-hours-enabled",
4064
+ "description": "Enable the quiet-hours window."
4065
+ },
4066
+ {
4067
+ "name": "--quiet-hours-start",
4068
+ "description": "Quiet-hours start (HH:MM).",
4069
+ "arguments": [
4070
+ {
4071
+ "name": "HH:MM"
4072
+ }
4073
+ ]
4074
+ },
4075
+ {
4076
+ "name": "--quiet-hours-end",
4077
+ "description": "Quiet-hours end (HH:MM).",
4078
+ "arguments": [
4079
+ {
4080
+ "name": "HH:MM"
4081
+ }
4082
+ ]
4083
+ },
4084
+ {
4085
+ "name": "--quiet-hours-tz",
4086
+ "description": "Quiet-hours timezone (IANA, e.g. Europe/Rome).",
4087
+ "arguments": [
4088
+ {
4089
+ "name": "TZ"
4090
+ }
4091
+ ]
4092
+ }
4093
+ ],
4094
+ "examples": [
4095
+ "closeyourit alerts preferences update --no-email-enabled --min-level error",
4096
+ "closeyourit alerts preferences update --quiet-hours-enabled --quiet-hours-start 22:00 --quiet-hours-end 07:00 --quiet-hours-tz Europe/Rome"
4097
+ ]
4098
+ }
4099
+ ]
4100
+ }
4101
+ ]
4102
+ },
4103
+ {
4104
+ "name": "groups",
4105
+ "description": "Project groups (macro-projects).",
4106
+ "commands": [
4107
+ {
4108
+ "name": "create",
4109
+ "description": "Create a group (a container of related projects, e.g. \"DriverOne\").",
4110
+ "arguments": [
4111
+ {
4112
+ "name": "NAME",
4113
+ "required": true,
4114
+ "description": "Group name."
4115
+ }
4116
+ ],
4117
+ "options": [
4118
+ {
4119
+ "name": "--color",
4120
+ "description": "Color label.",
4121
+ "arguments": [
4122
+ {
4123
+ "name": "COLOR"
4124
+ }
4125
+ ]
4126
+ },
4127
+ {
4128
+ "name": "--roadmap-enabled",
4129
+ "description": "Enable the roadmap and cascade it to the projects in this group."
4130
+ }
4131
+ ],
4132
+ "examples": [
4133
+ "closeyourit groups create DriverOne",
4134
+ "closeyourit groups create DriverOne --color indigo",
4135
+ "closeyourit groups create DriverOne --roadmap-enabled"
4136
+ ]
4137
+ },
4138
+ {
4139
+ "name": "update",
4140
+ "description": "Update a group (rename, recolor, toggle roadmap).",
4141
+ "arguments": [
4142
+ {
4143
+ "name": "GROUP",
4144
+ "required": true,
4145
+ "description": "Group id (UUID) or name."
4146
+ }
4147
+ ],
4148
+ "options": [
4149
+ {
4150
+ "name": "--name",
4151
+ "description": "New name.",
4152
+ "arguments": [
4153
+ {
4154
+ "name": "NAME"
4155
+ }
4156
+ ]
4157
+ },
4158
+ {
4159
+ "name": "--color",
4160
+ "description": "Color label.",
4161
+ "arguments": [
4162
+ {
4163
+ "name": "COLOR"
4164
+ }
4165
+ ]
4166
+ },
4167
+ {
4168
+ "name": "--roadmap-enabled",
4169
+ "description": "Enable/disable the roadmap and cascade it to the projects in this group."
4170
+ }
4171
+ ],
4172
+ "examples": [
4173
+ "closeyourit groups update Backend --name \"Backend services\"",
4174
+ "closeyourit groups update Backend --color indigo",
4175
+ "closeyourit groups update Backend --roadmap-enabled"
4176
+ ]
4177
+ }
4178
+ ]
4179
+ },
4180
+ {
4181
+ "name": "org",
4182
+ "description": "Organization settings.",
4183
+ "commands": [
4184
+ {
4185
+ "name": "update",
4186
+ "description": "Update your organization settings (requires organization.manage).",
4187
+ "options": [
4188
+ {
4189
+ "name": "--name",
4190
+ "description": "New organization name.",
4191
+ "arguments": [
4192
+ {
4193
+ "name": "NAME"
4194
+ }
4195
+ ]
4196
+ },
4197
+ {
4198
+ "name": "--slug",
4199
+ "description": "New organization slug (lowercase, a-z 0-9 and hyphens).",
4200
+ "arguments": [
4201
+ {
4202
+ "name": "SLUG"
4203
+ }
4204
+ ]
4205
+ },
4206
+ {
4207
+ "name": "--projects-view",
4208
+ "description": "Default projects list view.",
4209
+ "arguments": [
4210
+ {
4211
+ "name": "VIEW"
4212
+ }
4213
+ ]
4214
+ },
4215
+ {
4216
+ "name": "--logs-retention-days",
4217
+ "description": "Org-level log retention in days (blank inherits the god default).",
4218
+ "arguments": [
4219
+ {
4220
+ "name": "N"
4221
+ }
4222
+ ]
4223
+ },
4224
+ {
4225
+ "name": "--analytics-retention-days",
4226
+ "description": "Org-level analytics retention in days (blank inherits the god default).",
4227
+ "arguments": [
4228
+ {
4229
+ "name": "N"
4230
+ }
4231
+ ]
4232
+ }
4233
+ ],
4234
+ "examples": [
4235
+ "closeyourit org update --name \"Acme Inc\"",
4236
+ "closeyourit org update --slug acme-inc",
4237
+ "closeyourit org update --projects-view table",
4238
+ "closeyourit org update --logs-retention-days 30 --analytics-retention-days 365"
4239
+ ]
4240
+ }
4241
+ ]
4242
+ },
4243
+ {
4244
+ "name": "platforms",
4245
+ "description": "Platforms (devices/systems your projects run on).",
4246
+ "commands": [
4247
+ {
4248
+ "name": "create",
4249
+ "description": "Create a platform (a device/system your projects run on).",
4250
+ "arguments": [
4251
+ {
4252
+ "name": "CODE",
4253
+ "required": true,
4254
+ "description": "Platform code (e.g. \"ios\", \"android\", \"web\")."
4255
+ }
4256
+ ],
4257
+ "options": [
4258
+ {
4259
+ "name": "--label",
4260
+ "required": true,
4261
+ "description": "Human-readable label.",
4262
+ "arguments": [
4263
+ {
4264
+ "name": "LABEL",
4265
+ "required": true
4266
+ }
4267
+ ]
4268
+ },
4269
+ {
4270
+ "name": "--color",
4271
+ "description": "Color label.",
4272
+ "arguments": [
4273
+ {
4274
+ "name": "COLOR"
4275
+ }
4276
+ ]
4277
+ },
4278
+ {
4279
+ "name": "--position",
4280
+ "description": "Sort position.",
4281
+ "arguments": [
4282
+ {
4283
+ "name": "N"
4284
+ }
4285
+ ]
4286
+ },
4287
+ {
4288
+ "name": "--active",
4289
+ "description": "Whether the platform is active."
4290
+ },
4291
+ {
4292
+ "name": "--supports-uptime",
4293
+ "description": "Whether projects declaring this platform can enable uptime monitoring."
4294
+ }
4295
+ ],
4296
+ "examples": [
4297
+ "closeyourit platforms create ios --label iOS",
4298
+ "closeyourit platforms create android --label Android --color emerald --position 2",
4299
+ "closeyourit platforms create web --label Web --supports-uptime"
4300
+ ]
4301
+ },
4302
+ {
4303
+ "name": "update",
4304
+ "description": "Update a platform (relabel, recolor, reorder, activate/deactivate, toggle uptime support).",
4305
+ "arguments": [
4306
+ {
4307
+ "name": "PLATFORM",
4308
+ "required": true,
4309
+ "description": "Platform id (UUID) or code."
4310
+ }
4311
+ ],
4312
+ "options": [
4313
+ {
4314
+ "name": "--code",
4315
+ "description": "New code.",
4316
+ "arguments": [
4317
+ {
4318
+ "name": "CODE"
4319
+ }
4320
+ ]
4321
+ },
4322
+ {
4323
+ "name": "--label",
4324
+ "description": "New label.",
4325
+ "arguments": [
4326
+ {
4327
+ "name": "LABEL"
4328
+ }
4329
+ ]
4330
+ },
4331
+ {
4332
+ "name": "--color",
4333
+ "description": "Color label.",
4334
+ "arguments": [
4335
+ {
4336
+ "name": "COLOR"
4337
+ }
4338
+ ]
4339
+ },
4340
+ {
4341
+ "name": "--position",
4342
+ "description": "Sort position.",
4343
+ "arguments": [
4344
+ {
4345
+ "name": "N"
4346
+ }
4347
+ ]
4348
+ },
4349
+ {
4350
+ "name": "--active",
4351
+ "description": "Whether the platform is active."
4352
+ },
4353
+ {
4354
+ "name": "--supports-uptime",
4355
+ "description": "Whether projects declaring this platform can enable uptime monitoring."
4356
+ }
4357
+ ],
4358
+ "examples": [
4359
+ "closeyourit platforms update ios --label \"iOS / iPadOS\"",
4360
+ "closeyourit platforms update web --color indigo --position 1",
4361
+ "closeyourit platforms update legacy --no-active",
4362
+ "closeyourit platforms update web --supports-uptime"
1317
4363
  ]
1318
4364
  }
1319
4365
  ]