@pachca/cli 2026.10.2 → 2026.10.3

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 (99) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +24 -24
  3. package/README.template.md +14 -23
  4. package/dist/base-command.js +1 -1
  5. package/dist/client.js +56 -32
  6. package/dist/commands/api.js +1 -1
  7. package/dist/commands/auth/logout.js +23 -12
  8. package/dist/commands/bots/create-token.js +0 -3
  9. package/dist/commands/bots/create.js +0 -4
  10. package/dist/commands/bots/delete.js +0 -3
  11. package/dist/commands/bots/get-stream.js +23 -0
  12. package/dist/commands/bots/list-company.js +0 -3
  13. package/dist/commands/bots/list-events.js +0 -3
  14. package/dist/commands/bots/list-scopes.js +0 -3
  15. package/dist/commands/bots/list.js +0 -3
  16. package/dist/commands/bots/recreate-token-self.js +0 -3
  17. package/dist/commands/bots/recreate-token.js +0 -3
  18. package/dist/commands/bots/reissue-token.js +0 -3
  19. package/dist/commands/bots/remove-event.js +0 -3
  20. package/dist/commands/bots/update-webhook.js +0 -3
  21. package/dist/commands/bots/update.js +0 -5
  22. package/dist/commands/chats/archive.js +0 -4
  23. package/dist/commands/chats/create.js +3 -6
  24. package/dist/commands/chats/download-export.js +0 -3
  25. package/dist/commands/chats/list-company.js +0 -3
  26. package/dist/commands/chats/list.js +1 -6
  27. package/dist/commands/chats/remove-avatar.js +0 -3
  28. package/dist/commands/chats/request-export.js +0 -3
  29. package/dist/commands/chats/unarchive.js +0 -3
  30. package/dist/commands/chats/update-avatar.js +0 -3
  31. package/dist/commands/chats/update.js +0 -3
  32. package/dist/commands/custom-properties/list.js +0 -3
  33. package/dist/commands/drafts/create.js +1 -4
  34. package/dist/commands/drafts/delete.js +0 -3
  35. package/dist/commands/drafts/update.js +1 -1
  36. package/dist/commands/files/uploads.js +0 -3
  37. package/dist/commands/group-tags/create.js +0 -3
  38. package/dist/commands/group-tags/list-users.js +0 -3
  39. package/dist/commands/group-tags/list.js +0 -3
  40. package/dist/commands/important-messages/create.js +64 -0
  41. package/dist/commands/important-messages/delete.js +42 -0
  42. package/dist/commands/important-messages/list.js +89 -0
  43. package/dist/commands/members/add.js +0 -5
  44. package/dist/commands/members/leave.js +0 -3
  45. package/dist/commands/members/list.js +0 -4
  46. package/dist/commands/members/remove.js +0 -3
  47. package/dist/commands/members/update.js +0 -3
  48. package/dist/commands/messages/create.js +3 -8
  49. package/dist/commands/messages/delete.js +0 -3
  50. package/dist/commands/messages/get.js +0 -5
  51. package/dist/commands/messages/list.js +1 -5
  52. package/dist/commands/messages/pin.js +0 -3
  53. package/dist/commands/messages/unfurl.js +0 -3
  54. package/dist/commands/messages/unpin.js +0 -3
  55. package/dist/commands/messages/update.js +2 -7
  56. package/dist/commands/oauth/token-info.js +0 -3
  57. package/dist/commands/profile/delete-avatar.js +0 -3
  58. package/dist/commands/profile/delete-status.js +0 -3
  59. package/dist/commands/profile/get.js +0 -4
  60. package/dist/commands/profile/update-avatar.js +0 -3
  61. package/dist/commands/profile/update-status.js +1 -4
  62. package/dist/commands/reactions/add.js +3 -6
  63. package/dist/commands/reactions/remove.js +3 -6
  64. package/dist/commands/read-member/list-readers.js +0 -3
  65. package/dist/commands/search/list-chats.js +0 -5
  66. package/dist/commands/search/list-messages.js +0 -3
  67. package/dist/commands/search/list-users.js +0 -5
  68. package/dist/commands/security/list.js +0 -5
  69. package/dist/commands/tasks/create.js +1 -6
  70. package/dist/commands/tasks/delete.js +0 -3
  71. package/dist/commands/tasks/get.js +0 -3
  72. package/dist/commands/tasks/list.js +0 -5
  73. package/dist/commands/tasks/update.js +2 -6
  74. package/dist/commands/threads/add.js +0 -4
  75. package/dist/commands/threads/list.js +0 -4
  76. package/dist/commands/users/create.js +0 -5
  77. package/dist/commands/users/delete.js +0 -3
  78. package/dist/commands/users/get-status.js +0 -3
  79. package/dist/commands/users/get.js +0 -3
  80. package/dist/commands/users/list.js +0 -5
  81. package/dist/commands/users/remove-avatar.js +0 -3
  82. package/dist/commands/users/remove-status.js +0 -3
  83. package/dist/commands/users/update-avatar.js +0 -3
  84. package/dist/commands/users/update-status.js +1 -4
  85. package/dist/commands/users/update.js +4 -4
  86. package/dist/commands/views/open.js +0 -5
  87. package/dist/commands/views/submit-response.js +0 -3
  88. package/dist/data/alternatives.json +5 -9
  89. package/dist/data/changelog.json +66 -0
  90. package/dist/data/endpoints.json +1 -1
  91. package/dist/help.js +0 -1
  92. package/dist/hooks/command-not-found.js +0 -1
  93. package/dist/hooks/init.js +5 -1
  94. package/dist/oauth.js +9 -4
  95. package/dist/token-refresh.js +61 -14
  96. package/oclif.manifest.json +1 -1
  97. package/package.json +1 -1
  98. package/dist/commands/guide.js +0 -90
  99. package/dist/data/workflows.json +0 -1058
@@ -1,1058 +0,0 @@
1
- [
2
- {
3
- "title": "Найти чат по имени и отправить сообщение",
4
- "skill": "pachca-messages",
5
- "steps": [
6
- {
7
- "description": "Найди чат по названию через поиск",
8
- "command": "pachca search list-chats --query=\"название\"",
9
- "notes": "Если результатов несколько — выбери наиболее подходящий по `name`"
10
- },
11
- {
12
- "description": "Отправь сообщение в найденный чат",
13
- "command": "pachca messages create --entity-id=<chat_id> --content=\"Текст сообщения\""
14
- }
15
- ]
16
- },
17
- {
18
- "title": "Отправить сообщение в канал или беседу (если chat_id известен)",
19
- "skill": "pachca-messages",
20
- "steps": [
21
- {
22
- "description": "Отправь сообщение в чат",
23
- "command": "pachca messages create --entity-id=<chat_id> --content=\"Текст сообщения\""
24
- }
25
- ]
26
- },
27
- {
28
- "title": "Отправить личное сообщение пользователю",
29
- "skill": "pachca-messages",
30
- "steps": [
31
- {
32
- "description": "Определи `user_id` получателя",
33
- "command": "pachca search list-users --query=\"имя\"",
34
- "notes": "Или возьми user_id из контекста (вебхук, предыдущий запрос)"
35
- },
36
- {
37
- "description": "Отправь личное сообщение",
38
- "command": "pachca messages create --entity-type=user --entity-id=<user_id> --content=\"Привет!\""
39
- }
40
- ]
41
- },
42
- {
43
- "title": "Ответить в тред (комментарий к сообщению)",
44
- "skill": "pachca-messages",
45
- "steps": [
46
- {
47
- "description": "Получи или создай тред, возьми `thread.id` из ответа",
48
- "command": "pachca threads add <ID>",
49
- "notes": "Если тред уже существует, вернётся существующий"
50
- },
51
- {
52
- "description": "Отправь сообщение в тред",
53
- "command": "pachca messages create --entity-type=thread --entity-id=<thread_id> --content=\"Ответ в тред\""
54
- }
55
- ]
56
- },
57
- {
58
- "title": "Ответить пользователю, который написал боту",
59
- "skill": "pachca-messages",
60
- "steps": [
61
- {
62
- "description": "DM (`entity_type: \"user\"`): ответь личным сообщением",
63
- "command": "pachca messages create --entity-type=user --entity-id=<user_id> --content=\"Ответ\""
64
- },
65
- {
66
- "description": "Тред (`entity_type: \"thread\"`): ответь в тот же тред",
67
- "command": "pachca messages create --entity-type=thread --entity-id=<entity_id> --parent-message-id=<id> --content=\"Ответ\"",
68
- "notes": "Вложенных тредов нет — ответ идёт в тот же тред"
69
- },
70
- {
71
- "description": "Беседа/канал (`entity_type: \"discussion\"`): inline-ответ или тред",
72
- "command": "pachca messages create --entity-id=<entity_id> --parent-message-id=<id> --content=\"Ответ\"",
73
- "notes": "`parent_message_id` визуально привязывает ответ к сообщению"
74
- }
75
- ]
76
- },
77
- {
78
- "title": "Отправить сообщение с файлами",
79
- "skill": "pachca-messages",
80
- "steps": [
81
- {
82
- "description": "Загрузи каждый файл — команда вернёт `key`",
83
- "command": "pachca upload report.pdf",
84
- "notes": "Команда автоматически получает подпись и загружает файл на S3"
85
- },
86
- {
87
- "description": "Отправь сообщение со всеми файлами",
88
- "command": "pachca messages create --entity-id=<chat_id> --content=\"Смотри файл\" --files='[{\"key\":\"attaches/files/.../report.pdf\",\"name\":\"report.pdf\",\"file_type\":\"file\",\"size\":12345}]'"
89
- }
90
- ]
91
- },
92
- {
93
- "title": "Отправить сообщение с кнопками",
94
- "skill": "pachca-messages",
95
- "steps": [
96
- {
97
- "description": "Отправь сообщение с кнопками",
98
- "command": "pachca messages create --entity-id=<chat_id> --content=\"Выбери действие\" --buttons='[[{\"text\":\"Подробнее\",\"url\":\"https://example.com\"},{\"text\":\"Отлично!\",\"data\":\"awesome\"}]]'"
99
- }
100
- ]
101
- },
102
- {
103
- "title": "Получить историю сообщений чата",
104
- "skill": "pachca-messages",
105
- "steps": [
106
- {
107
- "description": "Получи сообщения чата с пагинацией",
108
- "command": "pachca messages list --chat-id=<chat_id>",
109
- "notes": "`limit` (1-50), `cursor`, `sort[id]=asc` или `desc` (по умолчанию)"
110
- }
111
- ]
112
- },
113
- {
114
- "title": "Получить вложения из сообщения",
115
- "skill": "pachca-messages",
116
- "steps": [
117
- {
118
- "description": "Получи сообщение — в `files[]` каждый объект содержит `url`, `name`, `file_type`, `size`",
119
- "command": "pachca messages get <ID>"
120
- }
121
- ]
122
- },
123
- {
124
- "title": "Закрепить/открепить сообщение",
125
- "skill": "pachca-messages",
126
- "steps": [
127
- {
128
- "description": "Закрепить сообщение",
129
- "command": "pachca messages pin <ID>"
130
- },
131
- {
132
- "description": "Открепить сообщение",
133
- "command": "pachca messages unpin <ID> --force"
134
- }
135
- ]
136
- },
137
- {
138
- "title": "Подписаться на тред сообщения",
139
- "skill": "pachca-messages",
140
- "steps": [
141
- {
142
- "description": "Получи или создай тред, возьми `chat_id` из ответа",
143
- "command": "pachca threads add <ID>"
144
- },
145
- {
146
- "description": "Добавь бота в участники чата треда",
147
- "command": "pachca members add <thread_chat_id> --member-ids='[<bot_user_id>]'"
148
- }
149
- ]
150
- },
151
- {
152
- "title": "Получить список активных тредов за период",
153
- "skill": "pachca-messages",
154
- "steps": [
155
- {
156
- "description": "Запроси список тредов с фильтром по времени последнего сообщения и нужным `--limit`",
157
- "command": "pachca threads list --last-message-at-after=2026-05-19T00:00:00.000Z --last-message-at-before=2026-05-20T00:00:00.000Z --limit=50",
158
- "notes": "`last_message_at_after`/`last_message_at_before` — ISO-8601, UTC+0. `limit` 1-50 (по умолчанию 50). Сортировка — по убыванию времени последнего сообщения."
159
- },
160
- {
161
- "description": "Пока `meta.paginate.has_next` равен `true`, бери следующую страницу через `--cursor=<next_page>`",
162
- "command": "pachca threads list --last-message-at-after=2026-05-19T00:00:00.000Z --cursor=<next_page>"
163
- },
164
- {
165
- "description": "Для каждого треда возьми `chat_id` и подтяни сообщения",
166
- "command": "pachca messages list --chat-id=<thread.chat_id>"
167
- }
168
- ]
169
- },
170
- {
171
- "title": "Упомянуть пользователя",
172
- "skill": "pachca-messages",
173
- "steps": [
174
- {
175
- "description": "Ищи среди участников целевого чата",
176
- "command": "pachca members list <chat_id>",
177
- "notes": "Фильтруй по имени на клиенте"
178
- },
179
- {
180
- "description": "Если пишешь в тред: также проверь участников родительского чата",
181
- "command": "pachca members list <parent_chat_id>"
182
- },
183
- {
184
- "description": "Не нашёл — ищи по всей компании",
185
- "command": "pachca search list-users --query=<запрос>"
186
- }
187
- ]
188
- },
189
- {
190
- "title": "Отредактировать сообщение",
191
- "skill": "pachca-messages",
192
- "steps": [
193
- {
194
- "description": "Обнови сообщение",
195
- "command": "pachca messages update <ID> --content=\"Обновлённый текст\""
196
- }
197
- ]
198
- },
199
- {
200
- "title": "Изменить вложения сообщения",
201
- "skill": "pachca-messages",
202
- "steps": [
203
- {
204
- "description": "Получи текущие вложения из `files[]`",
205
- "command": "pachca messages get <ID>",
206
- "notes": "Сохрани нужные объекты (`key`, `name`, `file_type`, `size`)"
207
- },
208
- {
209
- "description": "Если нужно добавить новый файл — загрузи его",
210
- "command": "pachca files uploads"
211
- },
212
- {
213
- "description": "Обнови сообщение с новым массивом `files`",
214
- "command": "pachca messages update <ID> --files='[...]'",
215
- "notes": "`files` при редактировании — replace-all: присылаемый массив полностью заменяет текущие"
216
- }
217
- ]
218
- },
219
- {
220
- "title": "Удалить сообщение",
221
- "skill": "pachca-messages",
222
- "steps": [
223
- {
224
- "description": "Удали сообщение",
225
- "command": "pachca messages delete <ID> --force"
226
- }
227
- ]
228
- },
229
- {
230
- "title": "Добавить реакцию на сообщение",
231
- "skill": "pachca-messages",
232
- "steps": [
233
- {
234
- "description": "Добавь реакцию",
235
- "command": "pachca reactions add <ID> --code=\"👍\""
236
- },
237
- {
238
- "description": "Убрать реакцию",
239
- "command": "pachca reactions remove <ID> --code=\"👍\" --force"
240
- }
241
- ]
242
- },
243
- {
244
- "title": "Проверить, кто прочитал сообщение",
245
- "skill": "pachca-messages",
246
- "steps": [
247
- {
248
- "description": "Получи массив `user_id` прочитавших",
249
- "command": "pachca read-member list-readers <ID>"
250
- },
251
- {
252
- "description": "При необходимости сопоставь с именами сотрудников",
253
- "command": "pachca users list"
254
- }
255
- ]
256
- },
257
- {
258
- "title": "Разослать уведомление нескольким пользователям",
259
- "skill": "pachca-messages",
260
- "steps": [
261
- {
262
- "description": "Определи список `user_id` получателей",
263
- "command": "pachca users list --all",
264
- "notes": "Или получи user_id из тега — см. «Получить всех сотрудников тега/департамента»"
265
- },
266
- {
267
- "description": "Для каждого: отправь личное сообщение",
268
- "command": "pachca messages create --entity-type=user --entity-id=<user_id> --content=\"Уведомление\"",
269
- "notes": "Для каждого получателя"
270
- }
271
- ]
272
- },
273
- {
274
- "title": "Отправить сообщение позже или по расписанию",
275
- "skill": "pachca-messages",
276
- "steps": [
277
- {
278
- "description": "Найди чат, в который нужно написать",
279
- "command": "pachca search list-chats --query=\"название\""
280
- },
281
- {
282
- "description": "Создай отложенное сообщение: `schedule.start_date` — когда отправить, `schedule.repetition.interval` — как повторять (`once`, если один раз)",
283
- "command": "pachca drafts create --entity-type=discussion --entity-id=<chat_id> --content=\"Текст\" --schedule='{\"start_date\":\"2026-09-17T09:00:00Z\",\"repetition\":{\"interval\":\"once\"}}'",
284
- "notes": "Время без смещения считается UTC: переведи местное время сотрудника сами или пришли со смещением. Повтор по дням недели — `interval: \"weekly\"` и `days` (0 — воскресенье). В ответе `next_send_at` — ближайшая отправка, сверься с ней."
285
- },
286
- {
287
- "description": "Чтобы отменить отправку — удали отложенное сообщение",
288
- "command": "pachca drafts delete <ID>",
289
- "notes": "Другого способа отменить нет: снять расписание правкой нельзя"
290
- }
291
- ]
292
- },
293
- {
294
- "title": "Создать канал и пригласить участников",
295
- "skill": "pachca-chats",
296
- "steps": [
297
- {
298
- "description": "Создай канал с участниками",
299
- "command": "pachca chats create --name=\"Новый канал\" --channel --member-ids='[1,2,3]'",
300
- "notes": "`\"channel\": true` для канала, `false` (по умолчанию) для беседы. Участников можно передать сразу: `member_ids` и/или `group_tag_ids`"
301
- },
302
- {
303
- "description": "Или добавь участников позже",
304
- "command": "pachca members add <chat_id> --member-ids='[1,2,3]'"
305
- }
306
- ]
307
- },
308
- {
309
- "title": "Архивация и управление чатом",
310
- "skill": "pachca-chats",
311
- "steps": [
312
- {
313
- "description": "Архивировать чат",
314
- "command": "pachca chats archive <ID>"
315
- },
316
- {
317
- "description": "Разархивировать чат",
318
- "command": "pachca chats unarchive <ID>"
319
- },
320
- {
321
- "description": "Изменить роль участника",
322
- "command": "pachca members update <chat_id> <user_id> --role=admin",
323
- "notes": "`role`: `\"admin\"` | `\"member\"` | `\"editor\"` (только каналы). Роль создателя изменить нельзя."
324
- },
325
- {
326
- "description": "Удалить участника",
327
- "command": "pachca members remove <chat_id> <user_id> --force"
328
- },
329
- {
330
- "description": "Покинуть чат",
331
- "command": "pachca members leave <chat_id> --force"
332
- }
333
- ]
334
- },
335
- {
336
- "title": "Переименовать или обновить чат",
337
- "skill": "pachca-chats",
338
- "steps": [
339
- {
340
- "description": "Обнови чат",
341
- "command": "pachca chats update <ID> --name=\"Новое название\"",
342
- "notes": "Доступные поля: `name`, `public`"
343
- }
344
- ]
345
- },
346
- {
347
- "title": "Поставить или убрать аватар чата",
348
- "skill": "pachca-chats",
349
- "steps": [
350
- {
351
- "description": "Загрузи аватар беседы или канала",
352
- "command": "pachca chats update-avatar <ID> --file=<путь_к_файлу>",
353
- "notes": "Файл передается в формате multipart/form-data: jpg, jpeg, png или gif. У личного чата и треда аватара нет — ответ 403"
354
- },
355
- {
356
- "description": "Чтобы убрать аватар, удали его",
357
- "command": "pachca chats remove-avatar <ID> --force"
358
- }
359
- ]
360
- },
361
- {
362
- "title": "Создать проектную беседу из шаблона",
363
- "skill": "pachca-chats",
364
- "steps": [
365
- {
366
- "description": "Создай беседу с участниками из тега",
367
- "command": "pachca chats create --name=\"Проект Alpha\" --group-tag-ids='[42]' --member-ids='[186,187]'"
368
- },
369
- {
370
- "description": "Отправь приветственное сообщение",
371
- "command": "pachca messages create --entity-id=<chat_id> --content=\"Добро пожаловать в проект!\""
372
- }
373
- ]
374
- },
375
- {
376
- "title": "Экспорт истории чата",
377
- "skill": "pachca-chats",
378
- "steps": [
379
- {
380
- "description": "Запроси экспорт и возьми номер выгрузки из `data.id`",
381
- "command": "pachca chats request-export --start-at=<YYYY-MM-DD> --end-at=<YYYY-MM-DD>",
382
- "notes": "`start_at`, `end_at` (YYYY-MM-DD). Номер приходит с заголовком `Prefer: return=representation` и ответом `202`, CLI и SDK шлют его сами. Без заголовка ответ `204` без тела"
383
- },
384
- {
385
- "description": "Скачай файл экспорта",
386
- "command": "pachca chats download-export <id>",
387
- "notes": "Сервер вернёт 302, HTTP-клиент скачает файл автоматически"
388
- }
389
- ]
390
- },
391
- {
392
- "title": "Найти активные чаты за период",
393
- "skill": "pachca-chats",
394
- "steps": [
395
- {
396
- "description": "Получи чаты с активностью после указанной даты",
397
- "command": "pachca chats list --last-message-at-after=<дата> --all",
398
- "notes": "Для диапазона добавь `--last-message-at-before`. Дата в ISO-8601 UTC+0"
399
- }
400
- ]
401
- },
402
- {
403
- "title": "Найти и заархивировать неактивные чаты",
404
- "skill": "pachca-chats",
405
- "steps": [
406
- {
407
- "description": "Получи чаты без активности с нужной даты",
408
- "command": "pachca chats list --last-message-at-before=<порог> --all",
409
- "notes": "Архивные чаты в выдачу не попадают, поэтому отсеивать уже заархивированные не нужно. Чтобы получить их вместе с активными, добавь `--archived` и смотри поле `archived` каждого чата"
410
- },
411
- {
412
- "description": "Для каждого чата: архивируй",
413
- "command": "pachca chats archive <ID>",
414
- "notes": "Проверяй `\"channel\": false` — архивация каналов может быть нежелательной"
415
- }
416
- ]
417
- },
418
- {
419
- "title": "Выгрузить все чаты пространства, включая закрытые",
420
- "skill": "pachca-chats",
421
- "steps": [
422
- {
423
- "description": "Получи беседы и каналы всего пространства, включая закрытые, где владелец токена не состоит",
424
- "command": "pachca chats list-company --all",
425
- "notes": "Возвращаются и активные, и архивные чаты. Оставить одно состояние можно флагом `--activity` со значением `active` или `archived`. Личные переписки и треды метод не отдаёт"
426
- },
427
- {
428
- "description": "Если метод ответил `403` — у токена нет скоупа `company_chats:read`, либо владелец токена не владелец пространства, либо у пространства нет тарифа «Корпорация». Тогда возьми открытые чаты обычным списком",
429
- "command": "pachca chats list --availability=public --archived --all",
430
- "notes": "Закрытые чаты, где токен не участник, в такую выдачу не попадут"
431
- }
432
- ]
433
- },
434
- {
435
- "title": "Создать бота через API и получить токен",
436
- "skill": "pachca-bots",
437
- "steps": [
438
- {
439
- "description": "Создай бота. Только пользовательским токеном (не токеном бота); `nickname` обязан заканчиваться на `_bot`. Параметры вебхука (Webhook URL, события, команды) можно задать сразу или позже. Скоупы токена бота можно ограничить флагом `--scopes` (если не указать — бот получит набор по умолчанию)",
440
- "command": "pachca bots create --name=\"Бот задач\" --nickname=\"tasks_bot\" --scopes='[\"messages:create\"]'"
441
- }
442
- ]
443
- },
444
- {
445
- "title": "Настроить бота с исходящим вебхуком",
446
- "skill": "pachca-bots",
447
- "steps": [
448
- {
449
- "description": "Создай бота, сразу указав Webhook URL и события в одном вызове (детали создания и работы с токеном — в сценарии «Создать бота через API и получить токен»)",
450
- "command": "pachca bots create --name=\"Бот задач\" --nickname=\"tasks_bot\" --outgoing-url=\"https://example.com/webhook\" --events='[\"message_new\"]' --trigger-on=commands --commands='[\"/task\"]'"
451
- }
452
- ]
453
- },
454
- {
455
- "title": "Обновить Webhook URL бота",
456
- "skill": "pachca-bots",
457
- "steps": [
458
- {
459
- "description": "Пользовательским токеном (с правом редактировать бота) — обнови URL по `id` бота. Пустая строка отключает вебхук",
460
- "command": "pachca bots update <bot_id> --outgoing-url=\"https://example.com/webhook\"",
461
- "notes": "`id` бота можно узнать методом `pachca bots list`"
462
- },
463
- {
464
- "description": "Или: бот сам обновляет свой webhook своим же токеном — без `id` и без участия администратора (нужен скоуп `bot_self:webhook:write`)",
465
- "command": "pachca bots update-webhook --outgoing-url=\"https://example.com/webhook\""
466
- }
467
- ]
468
- },
469
- {
470
- "title": "Ротация токена бота",
471
- "skill": "pachca-bots",
472
- "steps": [
473
- {
474
- "description": "Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) — перевыпусти основной токен по `id` бота: тот, что без имени, а если такого нет, самый старый. Прежнее значение инвалидируется сразу",
475
- "command": "pachca bots recreate-token <bot_id>"
476
- },
477
- {
478
- "description": "Или: бот перевыпускает свой основной токен сам (скоуп `bot_self:write`). Если запрос сделан основным токеном, он инвалидируется сразу — обязательно сохрани новый `access_token` из ответа, иначе бот потеряет доступ к API",
479
- "command": "pachca bots recreate-token-self"
480
- },
481
- {
482
- "description": "Отдельный токен бота перевыпускай по его `id` из `pachca bots list-tokens`: значение меняется, имя и права остаются",
483
- "command": "pachca bots reissue-token <bot_id> <token_id>"
484
- }
485
- ]
486
- },
487
- {
488
- "title": "Выпустить боту отдельный токен",
489
- "skill": "pachca-bots",
490
- "steps": [
491
- {
492
- "description": "Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) получи каталог прав, которые можно выдать этому боту",
493
- "command": "pachca bots list-scopes <bot_id>"
494
- },
495
- {
496
- "description": "Выпусти токен с именем и правами из каталога. Без `--scopes` токен выпускается без прав, право не из каталога отклоняется с `400`",
497
- "command": "pachca bots create-token <bot_id> --name=\"Сервер уведомлений\" --scopes='[\"messages:create\"]'"
498
- }
499
- ]
500
- },
501
- {
502
- "title": "Включить боту авторизацию от имени сотрудника",
503
- "skill": "pachca-bots",
504
- "steps": [
505
- {
506
- "description": "Пользовательским токеном (создатель бота или администратор, если бот открыт администраторам) включи авторизацию: где хранится секрет, адреса возврата и права, которые бот попросит у сотрудника. Права бери из `pachca bots list-scopes`",
507
- "command": "pachca bots update <bot_id> --oauth-client='{\"confidential\":true,\"redirect_uris\":[\"https://example.com/oauth/callback\"],\"scopes\":[\"messages:read\",\"messages:create\"]}'"
508
- },
509
- {
510
- "description": "Чтобы бот появился в витрине, добавь описание и опубликуй страницу",
511
- "command": "pachca bots update <bot_id> --promo='{\"description\":\"Собирает сводку по задачам\",\"published\":true}'"
512
- }
513
- ]
514
- },
515
- {
516
- "title": "Найти и удалить бота",
517
- "skill": "pachca-bots",
518
- "steps": [
519
- {
520
- "description": "Пользовательским токеном (скоуп `bots:read`) получи список ботов, доступных тебе для редактирования: созданных тобой и тех, чьи настройки открывают тебе доступ. Фильтруй по имени параметром `query`. Пока `meta.paginate.has_next` равен `true`, следующую страницу бери из `meta.paginate.next_page`",
521
- "command": "pachca bots list --query=\"задач\""
522
- },
523
- {
524
- "description": "Возьми `id` нужного бота из списка и удали его (скоуп `bots:write`). Доступно создателю бота и администратору, если бот открыт администраторам, — владельцы чатов удалять бота не могут. Все токены бота инвалидируются сразу, бот исключается из всех чатов, его вебхуки удаляются",
525
- "command": "pachca bots delete <bot_id>"
526
- }
527
- ]
528
- },
529
- {
530
- "title": "Обработать входящий вебхук-событие",
531
- "skill": "pachca-bots",
532
- "steps": [
533
- {
534
- "description": "Для полной информации запроси сообщение — особенно для вложений (`files[]`)",
535
- "command": "pachca messages get <message_id>",
536
- "notes": "Вебхук НЕ содержит файлов — `files` отсутствует"
537
- }
538
- ]
539
- },
540
- {
541
- "title": "Разворачивание ссылок (unfurling)",
542
- "skill": "pachca-bots",
543
- "steps": [
544
- {
545
- "description": "Отправь превью-данные",
546
- "command": "pachca messages unfurl <message_id> --link-previews='{\"https://example.com\":{\"title\":\"Example\",\"description\":\"Description\"}}'"
547
- }
548
- ]
549
- },
550
- {
551
- "title": "Обработать нажатие кнопки (callback)",
552
- "skill": "pachca-bots",
553
- "steps": [
554
- {
555
- "description": "Ответь пользователю",
556
- "command": "pachca messages create --entity-type=user --entity-id=<user_id> --content=\"Принято!\""
557
- },
558
- {
559
- "description": "Опционально: обнови исходное сообщение",
560
- "command": "pachca messages update <message_id> --buttons='[]' --content=\"Обработано\"",
561
- "notes": "`\"buttons\": []` убирает кнопки"
562
- }
563
- ]
564
- },
565
- {
566
- "title": "Периодический дайджест/отчёт",
567
- "skill": "pachca-bots",
568
- "steps": [
569
- {
570
- "description": "Отправь сообщение в канал",
571
- "command": "pachca messages create --entity-id=<chat_id> --content=\"Дайджест за сегодня: ...\""
572
- }
573
- ]
574
- },
575
- {
576
- "title": "Мониторинг и алерты",
577
- "skill": "pachca-bots",
578
- "steps": [
579
- {
580
- "description": "Отправь алерт с кнопками в канал",
581
- "command": "pachca messages create --entity-id=<alert_chat_id> --content=\"Алерт: ...\" --buttons='[[{\"text\":\"Взять в работу\",\"data\":\"take\"},{\"text\":\"Игнорировать\",\"data\":\"ignore\"}]]'"
582
- }
583
- ]
584
- },
585
- {
586
- "title": "Обработка событий через историю (polling)",
587
- "skill": "pachca-bots",
588
- "steps": [
589
- {
590
- "description": "Включи историю событий флагом `--events-history-enabled` (Webhook URL для этого не нужен) или настройкой «Сохранять историю событий» на вкладке «Исходящий вебхук» — в интерфейсе она появляется после включения вебхука",
591
- "command": "pachca bots update <bot_id> --events-history-enabled"
592
- },
593
- {
594
- "description": "Получи накопленные события",
595
- "command": "pachca bots list-events --all"
596
- },
597
- {
598
- "description": "Удали обработанное событие",
599
- "command": "pachca bots remove-event <event_id> --force",
600
- "notes": "Удаляй, чтобы не обработать повторно"
601
- }
602
- ]
603
- },
604
- {
605
- "title": "Инвентаризация всех ботов пространства",
606
- "skill": "pachca-bots",
607
- "steps": [
608
- {
609
- "description": "Получи всех ботов пространства, а не только доступных для редактирования",
610
- "command": "pachca bots list-company --all",
611
- "notes": "Нужен скоуп `company_bots:read`, роль владельца пространства и тариф «Корпорация», иначе метод отвечает `403`. Фильтр по имени — флаг `--query`"
612
- }
613
- ]
614
- },
615
- {
616
- "title": "Показать интерактивную форму пользователю",
617
- "skill": "pachca-forms",
618
- "steps": [
619
- {
620
- "description": "Отправь сообщение с кнопкой",
621
- "command": "pachca messages create --entity-id=<chat_id> --content=\"Заполните форму\" --buttons='[[{\"text\":\"Открыть форму\",\"data\":\"open_form\"}]]'"
622
- },
623
- {
624
- "description": "Немедленно открой форму",
625
- "command": "pachca views open --type=modal --trigger-id=<trigger_id> --title=\"Заявка\" --blocks='[...]'",
626
- "notes": "`trigger_id` живёт 3 секунды — формируй объект формы заранее"
627
- }
628
- ]
629
- },
630
- {
631
- "title": "Обработать отправку формы (view_submission)",
632
- "skill": "pachca-forms",
633
- "steps": [
634
- {
635
- "description": "Если адрес исходящего вебхука не задан → ответь методом по `view_id` и `submit_id` из события: пустой `errors` закрывает форму, заполненный показывает ошибки полей",
636
- "command": "pachca views submit-response <view_id> --submit-id=<submit_id> --errors='{\"date_end\":\"Дата окончания меньше даты начала\"}'",
637
- "notes": "Окно ответа — 5 секунд. Повторный ответ на ту же отправку возвращает уже принятый результат, а после истечения окна метод отвечает 410 с кодом `submit_expired`"
638
- }
639
- ]
640
- },
641
- {
642
- "title": "Опрос сотрудников через форму",
643
- "skill": "pachca-forms",
644
- "steps": [
645
- {
646
- "description": "Отправь сообщение с кнопкой «Пройти опрос»",
647
- "command": "pachca messages create --entity-id=<chat_id> --content=\"Пройди опрос\" --buttons='[[{\"text\":\"Пройти опрос\",\"data\":\"survey_start\"}]]'"
648
- },
649
- {
650
- "description": "Открой форму с полями опроса",
651
- "command": "pachca views open --type=modal --trigger-id=<trigger_id> --title=\"Опрос\" --blocks='[...]'"
652
- }
653
- ]
654
- },
655
- {
656
- "title": "Форма заявки/запроса",
657
- "skill": "pachca-forms",
658
- "steps": [
659
- {
660
- "description": "Размести сообщение с кнопкой «Создать заявку»",
661
- "command": "pachca messages create --entity-id=<chat_id> --content=\"Создать заявку\" --buttons='[[{\"text\":\"Создать заявку\",\"data\":\"new_request\"}]]'"
662
- },
663
- {
664
- "description": "При нажатии открой форму с полями: тема, описание, приоритет",
665
- "command": "pachca views open --type=modal --trigger-id=<trigger_id> --title=\"Заявка\" --blocks='[...]'"
666
- },
667
- {
668
- "description": "При submit: создай задачу или отправь уведомление ответственному",
669
- "command": "pachca tasks create --kind=reminder --content=\"Заявка: ...\" --due-at=<дата>"
670
- },
671
- {
672
- "description": "Отправь подтверждение автору",
673
- "command": "pachca messages create --entity-type=user --entity-id=<user_id> --content=\"Заявка принята\""
674
- }
675
- ]
676
- },
677
- {
678
- "title": "Получить сотрудника по ID",
679
- "skill": "pachca-users",
680
- "steps": [
681
- {
682
- "description": "Получи информацию о сотруднике",
683
- "command": "pachca users get <ID>"
684
- }
685
- ]
686
- },
687
- {
688
- "title": "Массовое создание сотрудников с тегами",
689
- "skill": "pachca-users",
690
- "steps": [
691
- {
692
- "description": "Создай тег (если нужен)",
693
- "command": "pachca group-tags create --name=\"Backend\""
694
- },
695
- {
696
- "description": "Для каждого сотрудника: создай аккаунт с тегами",
697
- "command": "pachca users create --first-name=\"Иван\" --last-name=\"Петров\" --email=\"ivan@example.com\" --list-tags='[{\"name\":\"Backend\"}]'",
698
- "notes": "Теги назначаются через поле `list_tags` в теле запроса"
699
- },
700
- {
701
- "description": "Или обнови существующего",
702
- "command": "pachca users update <ID> --list-tags='[{\"name\":\"Backend\"}]'"
703
- }
704
- ]
705
- },
706
- {
707
- "title": "Создать гостя в чат",
708
- "skill": "pachca-users",
709
- "steps": [
710
- {
711
- "description": "Выбери активный чат, в который добавить гостя — узнай его ID",
712
- "command": "pachca chats list",
713
- "notes": "Чат должен быть активным (не архивным) и принадлежать вашей компании. У токена должно быть право добавлять в него участников."
714
- },
715
- {
716
- "description": "Создай гостя: роль `guest` и ровно один чат в `--chat-ids`",
717
- "command": "pachca users create --email=\"guest@example.com\" --role=guest --chat-ids='[12345]'",
718
- "notes": "Для роли `guest` `chat_ids` обязателен и должен содержать ровно один чат. Нарушение (не передан, пусто, больше одного, чат не существует, архивный или нет прав) → `400` с элементом `errors`, где `key` — `chat_ids`."
719
- }
720
- ]
721
- },
722
- {
723
- "title": "Найти сотрудника по имени или email",
724
- "skill": "pachca-users",
725
- "steps": [
726
- {
727
- "description": "Поиск по имени/email (частичное совпадение)",
728
- "command": "pachca users list --query=Иван"
729
- }
730
- ]
731
- },
732
- {
733
- "title": "Онбординг нового сотрудника",
734
- "skill": "pachca-users",
735
- "steps": [
736
- {
737
- "description": "Создай аккаунт",
738
- "command": "pachca users create --email=\"new@example.com\" --first-name=\"Иван\" --last-name=\"Петров\""
739
- },
740
- {
741
- "description": "Добавь в нужные каналы",
742
- "command": "pachca members add <chat_id> --member-ids='[<user_id>]'"
743
- },
744
- {
745
- "description": "Отправь welcome-сообщение",
746
- "command": "pachca messages create --entity-type=user --entity-id=<user_id> --content=\"Добро пожаловать!\""
747
- }
748
- ]
749
- },
750
- {
751
- "title": "Offboarding сотрудника",
752
- "skill": "pachca-users",
753
- "steps": [
754
- {
755
- "description": "Заблокировать доступ",
756
- "command": "pachca users update <ID> --suspended"
757
- },
758
- {
759
- "description": "Опционально: удалить аккаунт полностью",
760
- "command": "pachca users delete <ID> --force"
761
- }
762
- ]
763
- },
764
- {
765
- "title": "Получить всех сотрудников тега/департамента",
766
- "skill": "pachca-users",
767
- "steps": [
768
- {
769
- "description": "Найди тег по названию, возьми `id`",
770
- "command": "pachca group-tags list --names='[\"Backend\"]'",
771
- "notes": "Фильтр `names` — серверная фильтрация по названию тега"
772
- },
773
- {
774
- "description": "Получи всех участников тега",
775
- "command": "pachca group-tags list-users <tag_id> --all"
776
- }
777
- ]
778
- },
779
- {
780
- "title": "Управление статусом сотрудника",
781
- "skill": "pachca-users",
782
- "steps": [
783
- {
784
- "description": "Получить текущий статус",
785
- "command": "pachca users get-status <user_id>"
786
- },
787
- {
788
- "description": "Установить статус",
789
- "command": "pachca users update-status <user_id> --emoji=\"🏖️\" --title=\"В отпуске\" --is-away",
790
- "notes": "`is_away: true` — режим «Нет на месте». `away_message` — макс 1024 символа"
791
- },
792
- {
793
- "description": "Удалить статус",
794
- "command": "pachca users remove-status <user_id> --force"
795
- }
796
- ]
797
- },
798
- {
799
- "title": "Загрузить аватар сотрудника",
800
- "skill": "pachca-users",
801
- "steps": [
802
- {
803
- "description": "Загрузи аватар сотруднику",
804
- "command": "pachca users update-avatar <user_id> --file=<путь_к_файлу>",
805
- "notes": "Требует прав администратора. Файл передается в формате multipart/form-data"
806
- }
807
- ]
808
- },
809
- {
810
- "title": "Удалить аватар сотрудника",
811
- "skill": "pachca-users",
812
- "steps": [
813
- {
814
- "description": "Удали аватар сотрудника",
815
- "command": "pachca users remove-avatar <user_id> --force",
816
- "notes": "Требует прав администратора"
817
- }
818
- ]
819
- },
820
- {
821
- "title": "Создать напоминание",
822
- "skill": "pachca-tasks",
823
- "steps": [
824
- {
825
- "description": "Создай задачу",
826
- "command": "pachca tasks create --kind=reminder --content=\"Позвонить клиенту\" --due-at=<дата> --chat-id=<chat_id>",
827
- "notes": "`chat_id` для привязки к чату, `custom_properties` для дополнительных полей"
828
- }
829
- ]
830
- },
831
- {
832
- "title": "Получить список предстоящих задач",
833
- "skill": "pachca-tasks",
834
- "steps": [
835
- {
836
- "description": "Получи невыполненные задачи",
837
- "command": "pachca tasks list --status=undone --all",
838
- "notes": "`status`: `\"undone\"` — не выполнена, `\"done\"` — выполнена. Без параметра возвращаются задачи в любом состоянии. Ещё фильтры: `--author-id`, `--performer-ids`, `--chat-ids`"
839
- }
840
- ]
841
- },
842
- {
843
- "title": "Собрать задачи по чатам проекта",
844
- "skill": "pachca-tasks",
845
- "steps": [
846
- {
847
- "description": "Запроси задачи нужных чатов",
848
- "command": "pachca tasks list --chat-ids=198,334 --all",
849
- "notes": "С `--chat-ids` выдача перестаёт ограничиваться своими задачами и отдаёт все задачи указанных чатов. Недоступные чаты игнорируются без ошибки, не более 100 идентификаторов"
850
- },
851
- {
852
- "description": "Сузь выборку по автору, ответственным и состоянию",
853
- "command": "pachca tasks list --chat-ids=198,334 --author-id=12 --performer-ids=185,186 --status=undone --all",
854
- "notes": "Фильтры комбинируются между собой"
855
- }
856
- ]
857
- },
858
- {
859
- "title": "Получить задачу по ID",
860
- "skill": "pachca-tasks",
861
- "steps": [
862
- {
863
- "description": "Получи информацию о задаче",
864
- "command": "pachca tasks get <ID>"
865
- }
866
- ]
867
- },
868
- {
869
- "title": "Отметить задачу выполненной",
870
- "skill": "pachca-tasks",
871
- "steps": [
872
- {
873
- "description": "Обнови статус задачи",
874
- "command": "pachca tasks update <ID> --status=done"
875
- }
876
- ]
877
- },
878
- {
879
- "title": "Обновить задачу (перенести срок, сменить ответственных)",
880
- "skill": "pachca-tasks",
881
- "steps": [
882
- {
883
- "description": "Обнови нужные поля задачи",
884
- "command": "pachca tasks update <ID> --due-at=<дата> --priority=2 --performer-ids='[186,187]'",
885
- "notes": "`performer_ids` заменяет весь список. `priority`: 1 (обычный), 2 (важно), 3 (очень важно)"
886
- }
887
- ]
888
- },
889
- {
890
- "title": "Удалить задачу",
891
- "skill": "pachca-tasks",
892
- "steps": [
893
- {
894
- "description": "Удали задачу",
895
- "command": "pachca tasks delete <ID> --force"
896
- }
897
- ]
898
- },
899
- {
900
- "title": "Создать серию напоминаний",
901
- "skill": "pachca-tasks",
902
- "steps": [
903
- {
904
- "description": "Для каждой даты: создай задачу",
905
- "command": "pachca tasks create --kind=reminder --content=\"Напоминание\" --due-at=<дата>"
906
- }
907
- ]
908
- },
909
- {
910
- "title": "Получить свой профиль",
911
- "skill": "pachca-profile",
912
- "steps": [
913
- {
914
- "description": "Получи информацию о текущем пользователе",
915
- "command": "pachca profile get"
916
- }
917
- ]
918
- },
919
- {
920
- "title": "Проверить свой токен",
921
- "skill": "pachca-profile",
922
- "steps": [
923
- {
924
- "description": "Получи информацию о токене: скоупы, дату создания, срок жизни",
925
- "command": "pachca oauth token-info"
926
- }
927
- ]
928
- },
929
- {
930
- "title": "Установить статус",
931
- "skill": "pachca-profile",
932
- "steps": [
933
- {
934
- "description": "Установи статус",
935
- "command": "pachca profile update-status --emoji=\"🏖️\" --title=\"В отпуске\" --is-away --away-message=\"Я в отпуске до 10 марта\" --expires-at=\"2025-03-10T23:59:59.000Z\"",
936
- "notes": "`is_away: true` — режим «Нет на месте». `expires_at` — автосброс (ISO-8601, UTC+0). `away_message` — макс 1024 символа"
937
- }
938
- ]
939
- },
940
- {
941
- "title": "Сбросить статус",
942
- "skill": "pachca-profile",
943
- "steps": [
944
- {
945
- "description": "Удали статус",
946
- "command": "pachca profile delete-status --force"
947
- }
948
- ]
949
- },
950
- {
951
- "title": "Получить кастомные поля профиля",
952
- "skill": "pachca-profile",
953
- "steps": [
954
- {
955
- "description": "Получи список дополнительных полей для сотрудников",
956
- "command": "pachca custom-properties list --entity-type=User",
957
- "notes": "Добавь `entity_type=User` для фильтрации"
958
- },
959
- {
960
- "description": "Получи профиль — в `custom_properties` содержатся значения полей",
961
- "command": "pachca profile get"
962
- }
963
- ]
964
- },
965
- {
966
- "title": "Загрузить аватар профиля",
967
- "skill": "pachca-profile",
968
- "steps": [
969
- {
970
- "description": "Загрузи аватар из файла",
971
- "command": "pachca profile update-avatar --file=<путь_к_файлу>",
972
- "notes": "Файл изображения передается в формате multipart/form-data"
973
- }
974
- ]
975
- },
976
- {
977
- "title": "Удалить аватар профиля",
978
- "skill": "pachca-profile",
979
- "steps": [
980
- {
981
- "description": "Удали аватар",
982
- "command": "pachca profile delete-avatar --force"
983
- }
984
- ]
985
- },
986
- {
987
- "title": "Найти сообщение по тексту",
988
- "skill": "pachca-search",
989
- "steps": [
990
- {
991
- "description": "Полнотекстовый поиск по сообщениям",
992
- "command": "pachca search list-messages --query=\"текст\"",
993
- "notes": "`limit` (до 200), `cursor`. Фильтры: `chat_ids[]`, `user_ids[]`, `active`, `created_from`/`created_to`"
994
- }
995
- ]
996
- },
997
- {
998
- "title": "Найти чат по названию",
999
- "skill": "pachca-search",
1000
- "steps": [
1001
- {
1002
- "description": "Полнотекстовый поиск по чатам",
1003
- "command": "pachca search list-chats --query=\"название\"",
1004
- "notes": "`limit` (до 100), `cursor`. Фильтры: `active`, `chat_subtype`, `personal`, `created_from`/`created_to`"
1005
- }
1006
- ]
1007
- },
1008
- {
1009
- "title": "Найти сотрудника по имени",
1010
- "skill": "pachca-search",
1011
- "steps": [
1012
- {
1013
- "description": "Полнотекстовый поиск по сотрудникам",
1014
- "command": "pachca search list-users --query=\"имя\"",
1015
- "notes": "`sort=alphabetical` для алфавитного порядка, `sort=by_score` (по умолчанию). Фильтры: `company_roles[]`, `created_from`/`created_to`"
1016
- }
1017
- ]
1018
- },
1019
- {
1020
- "title": "Получить журнал аудита событий",
1021
- "skill": "pachca-security",
1022
- "steps": [
1023
- {
1024
- "description": "Получи журнал аудита",
1025
- "command": "pachca security list --start-time=<ISO-8601> --end-time=<ISO-8601>",
1026
- "notes": "`start_time` и `end_time` необязательны (ISO-8601, время без смещения считается UTC), без них приходят все события по страницам. Фильтры: `event_key`, `actor_id`, `actor_type`, `entity_id`, `entity_type`"
1027
- }
1028
- ]
1029
- },
1030
- {
1031
- "title": "Мониторинг подозрительных входов",
1032
- "skill": "pachca-security",
1033
- "steps": [
1034
- {
1035
- "description": "Получи события неудачных 2FA за период",
1036
- "command": "pachca security list --start-time=<ISO-8601> --end-time=<ISO-8601> --event-key=user_2fa_fail --all"
1037
- },
1038
- {
1039
- "description": "Повтори запрос с `--event-key=user_2fa_disabled` — отключение второго фактора у сотрудника",
1040
- "command": "pachca security list --start-time=<ISO-8601> --end-time=<ISO-8601> --event-key=user_2fa_disabled --all"
1041
- },
1042
- {
1043
- "description": "Если найдены аномалии — отправь уведомление администратору",
1044
- "command": "pachca messages create --entity-type=user --entity-id=<admin_id> --content=\"Обнаружены подозрительные входы\""
1045
- }
1046
- ]
1047
- },
1048
- {
1049
- "title": "Экспорт логов за период",
1050
- "skill": "pachca-security",
1051
- "steps": [
1052
- {
1053
- "description": "Получи все события за период с пагинацией",
1054
- "command": "pachca security list --start-time=<ISO-8601> --end-time=<ISO-8601> --all"
1055
- }
1056
- ]
1057
- }
1058
- ]