@pachca/cli 2026.7.0 → 2026.7.1

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 (54) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +1 -0
  3. package/dist/commands/bots/create.js +14 -5
  4. package/dist/commands/bots/delete.js +0 -1
  5. package/dist/commands/bots/get.js +0 -4
  6. package/dist/commands/bots/list.js +0 -2
  7. package/dist/commands/bots/update.js +14 -5
  8. package/dist/commands/chats/create.js +9 -3
  9. package/dist/commands/chats/get.js +0 -3
  10. package/dist/commands/chats/list.js +3 -3
  11. package/dist/commands/chats/update.js +8 -1
  12. package/dist/commands/group-tags/create.js +9 -3
  13. package/dist/commands/group-tags/list.js +0 -1
  14. package/dist/commands/group-tags/update.js +8 -1
  15. package/dist/commands/members/add.js +2 -2
  16. package/dist/commands/members/list.js +1 -3
  17. package/dist/commands/members/remove.js +0 -1
  18. package/dist/commands/members/update.js +1 -2
  19. package/dist/commands/messages/delete.js +1 -3
  20. package/dist/commands/messages/get.js +2 -2
  21. package/dist/commands/messages/list.js +1 -3
  22. package/dist/commands/messages/pin.js +1 -2
  23. package/dist/commands/messages/unpin.js +0 -1
  24. package/dist/commands/messages/update.js +2 -2
  25. package/dist/commands/profile/delete-avatar.js +0 -1
  26. package/dist/commands/profile/delete-status.js +0 -1
  27. package/dist/commands/profile/get-status.js +0 -4
  28. package/dist/commands/profile/update-avatar.js +1 -2
  29. package/dist/commands/profile/update-status.js +5 -3
  30. package/dist/commands/reactions/add.js +1 -2
  31. package/dist/commands/reactions/list.js +0 -4
  32. package/dist/commands/reactions/remove.js +0 -1
  33. package/dist/commands/security/list.js +1 -1
  34. package/dist/commands/tasks/create.js +1 -1
  35. package/dist/commands/tasks/delete.js +1 -3
  36. package/dist/commands/tasks/get.js +1 -3
  37. package/dist/commands/tasks/list.js +0 -2
  38. package/dist/commands/tasks/update.js +0 -1
  39. package/dist/commands/threads/create.js +23 -0
  40. package/dist/commands/users/create.js +31 -9
  41. package/dist/commands/users/delete.js +1 -3
  42. package/dist/commands/users/get-status.js +1 -3
  43. package/dist/commands/users/get.js +1 -3
  44. package/dist/commands/users/list.js +1 -1
  45. package/dist/commands/users/remove-avatar.js +0 -1
  46. package/dist/commands/users/remove-status.js +0 -2
  47. package/dist/commands/users/update-avatar.js +1 -2
  48. package/dist/commands/users/update-status.js +5 -4
  49. package/dist/commands/users/update.js +28 -7
  50. package/dist/data/alternatives.json +1 -0
  51. package/dist/data/changelog.json +16 -0
  52. package/dist/data/endpoints.json +1 -1
  53. package/oclif.manifest.json +1 -1
  54. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.7.1 (24 июля 2026)
4
+
5
+ - **Добавлено** (threads create): Новая команда — создание самостоятельного треда без привязки к сообщению
6
+ - **Удалено**: Примеры в `--help` больше не смешиваются между командами с общим путём (например, create и list одного ресурса показывали примеры друг друга)
7
+
3
8
  ## 2026.7.0 (7 июля 2026)
4
9
 
5
10
  - **Добавлено** (bots list): Новая команда — список ботов с поиском по имени (`--query`)
package/README.md CHANGED
@@ -170,6 +170,7 @@ pachca guide # список всех сценариев
170
170
  | Команда | Описание |
171
171
  |---------|---------|
172
172
  | `pachca threads add` | Новый тред |
173
+ | `pachca threads create` | Новый самостоятельный тред |
173
174
  | `pachca threads list` | Список тредов |
174
175
  | `pachca threads get` | Информация о треде |
175
176
 
@@ -6,8 +6,7 @@ export default class BotsCreate extends BaseCommand {
6
6
  static description = "Новый бот";
7
7
  static examples = [
8
8
  "Создать бота через API и получить токен:\n $ pachca bots create",
9
- "Настроить бота с исходящим вебхуком:\n $ pachca bots create",
10
- "Найти и удалить бота:\n $ pachca bots list"
9
+ "Настроить бота с исходящим вебхуком:\n $ pachca bots create"
11
10
  ];
12
11
  static scope = "bots:write";
13
12
  static apiMethod = "POST";
@@ -18,10 +17,10 @@ export default class BotsCreate extends BaseCommand {
18
17
  static flags = {
19
18
  ...BaseCommand.baseFlags,
20
19
  'name': Flags.string({
21
- description: "Имя бота",
20
+ description: "Имя бота (макс. 255 символов)",
22
21
  }),
23
22
  'nickname': Flags.string({
24
- description: "Никнейм бота. Должен заканчиваться на `_bot`.",
23
+ description: "Никнейм бота. Должен заканчиваться на `_bot`. (макс. 255 символов)",
25
24
  }),
26
25
  'outgoing-url': Flags.string({
27
26
  description: "URL исходящего вебхука",
@@ -33,7 +32,7 @@ export default class BotsCreate extends BaseCommand {
33
32
  description: "Условие срабатывания исходящего вебхука",
34
33
  }),
35
34
  'commands': Flags.string({
36
- description: "Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands",
35
+ description: "Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.",
37
36
  }),
38
37
  'scopes': Flags.string({
39
38
  description: "Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию.",
@@ -99,6 +98,16 @@ export default class BotsCreate extends BaseCommand {
99
98
  this.validationError(missingRequired.map((f) => ({ message: `Обязательный флаг --${f.flag} не передан`, flag: f.flag })), { hint: "Обязательные: --name <string>. pachca introspect bots create" });
100
99
  }
101
100
  }
101
+ const validationErrors = [];
102
+ if (flags['name'] && String(flags['name']).length > 255) {
103
+ validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' });
104
+ }
105
+ if (flags['nickname'] && String(flags['nickname']).length > 255) {
106
+ validationErrors.push({ message: `--nickname: максимум 255 символов (передано: ${String(flags['nickname']).length})`, flag: 'nickname' });
107
+ }
108
+ if (validationErrors.length > 0) {
109
+ this.validationError(validationErrors);
110
+ }
102
111
  const body = { webhook: {
103
112
  name: flags['name'],
104
113
  nickname: flags['nickname'],
@@ -5,7 +5,6 @@ import * as clack from '@clack/prompts';
5
5
  export default class BotsDelete extends BaseCommand {
6
6
  static description = "Удаление бота";
7
7
  static examples = [
8
- "Обновить Webhook URL бота:\n $ pachca bots update",
9
8
  "Найти и удалить бота:\n $ pachca bots delete"
10
9
  ];
11
10
  static scope = "bots:write";
@@ -3,10 +3,6 @@ import { Args } from '@oclif/core';
3
3
  import { BaseCommand } from '../../base-command.js';
4
4
  export default class BotsGet extends BaseCommand {
5
5
  static description = "Информация о боте";
6
- static examples = [
7
- "Обновить Webhook URL бота:\n $ pachca bots update",
8
- "Найти и удалить бота:\n $ pachca bots delete"
9
- ];
10
6
  static scope = "bots:read";
11
7
  static apiMethod = "GET";
12
8
  static apiPath = "/bots/{id}";
@@ -4,8 +4,6 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class BotsList extends BaseCommand {
5
5
  static description = "Список ботов";
6
6
  static examples = [
7
- "Создать бота через API и получить токен:\n $ pachca bots create",
8
- "Настроить бота с исходящим вебхуком:\n $ pachca bots create",
9
7
  "Найти и удалить бота:\n $ pachca bots list"
10
8
  ];
11
9
  static scope = "bots:read";
@@ -4,8 +4,7 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class BotsUpdate extends BaseCommand {
5
5
  static description = "Редактирование бота";
6
6
  static examples = [
7
- "Обновить Webhook URL бота:\n $ pachca bots update",
8
- "Найти и удалить бота:\n $ pachca bots delete"
7
+ "Обновить Webhook URL бота:\n $ pachca bots update"
9
8
  ];
10
9
  static scope = "bots:write";
11
10
  static apiMethod = "PUT";
@@ -20,10 +19,10 @@ export default class BotsUpdate extends BaseCommand {
20
19
  static flags = {
21
20
  ...BaseCommand.baseFlags,
22
21
  'name': Flags.string({
23
- description: "Имя бота",
22
+ description: "Имя бота (макс. 255 символов)",
24
23
  }),
25
24
  'nickname': Flags.string({
26
- description: "Никнейм бота. Должен заканчиваться на `_bot`.",
25
+ description: "Никнейм бота. Должен заканчиваться на `_bot`. (макс. 255 символов)",
27
26
  }),
28
27
  'outgoing-url': Flags.string({
29
28
  description: "URL исходящего вебхука",
@@ -35,7 +34,7 @@ export default class BotsUpdate extends BaseCommand {
35
34
  description: "Условие срабатывания исходящего вебхука",
36
35
  }),
37
36
  'commands': Flags.string({
38
- description: "Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands",
37
+ description: "Команды бота (триггер-слова), на которые он реагирует при trigger_on = commands. Суммарная длина команд, объединённых через запятую, не должна превышать 255 символов.",
39
38
  }),
40
39
  'scopes': Flags.string({
41
40
  description: "Скоупы (права доступа) токена бота. Если не указано, бот получает набор по умолчанию.",
@@ -71,6 +70,16 @@ export default class BotsUpdate extends BaseCommand {
71
70
  async run() {
72
71
  const { args, flags } = await this.parse(BotsUpdate);
73
72
  this.parsedFlags = flags;
73
+ const validationErrors = [];
74
+ if (flags['name'] && String(flags['name']).length > 255) {
75
+ validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' });
76
+ }
77
+ if (flags['nickname'] && String(flags['nickname']).length > 255) {
78
+ validationErrors.push({ message: `--nickname: максимум 255 символов (передано: ${String(flags['nickname']).length})`, flag: 'nickname' });
79
+ }
80
+ if (validationErrors.length > 0) {
81
+ this.validationError(validationErrors);
82
+ }
74
83
  const body = { webhook: {
75
84
  name: flags['name'],
76
85
  nickname: flags['nickname'],
@@ -6,8 +6,7 @@ export default class ChatsCreate extends BaseCommand {
6
6
  static description = "Новый чат";
7
7
  static examples = [
8
8
  "Создать канал и пригласить участников:\n $ pachca chats create",
9
- "Создать проектную беседу из шаблона:\n $ pachca chats create",
10
- "Найти активные чаты за период:\n $ pachca chats list"
9
+ "Создать проектную беседу из шаблона:\n $ pachca chats create"
11
10
  ];
12
11
  static scope = "chats:create";
13
12
  static apiMethod = "POST";
@@ -18,7 +17,7 @@ export default class ChatsCreate extends BaseCommand {
18
17
  static flags = {
19
18
  ...BaseCommand.baseFlags,
20
19
  'name': Flags.string({
21
- description: "Название",
20
+ description: "Название (макс. 255 символов)",
22
21
  }),
23
22
  'member-ids': Flags.string({
24
23
  description: "Массив идентификаторов пользователей, которые станут участниками",
@@ -64,6 +63,13 @@ export default class ChatsCreate extends BaseCommand {
64
63
  this.validationError(missingRequired.map((f) => ({ message: `Обязательный флаг --${f.flag} не передан`, flag: f.flag })), { hint: "Обязательные: --name <string>. pachca introspect chats create" });
65
64
  }
66
65
  }
66
+ const validationErrors = [];
67
+ if (flags['name'] && String(flags['name']).length > 255) {
68
+ validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' });
69
+ }
70
+ if (validationErrors.length > 0) {
71
+ this.validationError(validationErrors);
72
+ }
67
73
  const body = { chat: {
68
74
  name: flags['name'],
69
75
  member_ids: flags['member-ids'] ? this.parseJSON(flags['member-ids'], 'member-ids') : undefined,
@@ -3,9 +3,6 @@ import { Args } from '@oclif/core';
3
3
  import { BaseCommand } from '../../base-command.js';
4
4
  export default class ChatsGet extends BaseCommand {
5
5
  static description = "Информация о чате";
6
- static examples = [
7
- "Переименовать или обновить чат:\n $ pachca chats update"
8
- ];
9
6
  static scope = "chats:read";
10
7
  static apiMethod = "GET";
11
8
  static apiPath = "/chats/{id}";
@@ -4,9 +4,9 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class ChatsList extends BaseCommand {
5
5
  static description = "Список чатов";
6
6
  static examples = [
7
- "Создать канал и пригласить участников:\n $ pachca chats create",
8
- "Создать проектную беседу из шаблона:\n $ pachca chats create",
9
- "Найти активные чаты за период:\n $ pachca chats list"
7
+ "Найти активные чаты за период:\n $ pachca chats list",
8
+ "Найти и заархивировать неактивные чаты:\n $ pachca chats list",
9
+ "Создать гостя в чат:\n $ pachca chats list"
10
10
  ];
11
11
  static scope = "chats:read";
12
12
  static apiMethod = "GET";
@@ -19,7 +19,7 @@ export default class ChatsUpdate extends BaseCommand {
19
19
  static flags = {
20
20
  ...BaseCommand.baseFlags,
21
21
  'name': Flags.string({
22
- description: "Название",
22
+ description: "Название (макс. 255 символов)",
23
23
  }),
24
24
  'public': Flags.boolean({
25
25
  description: "Открытый доступ",
@@ -29,6 +29,13 @@ export default class ChatsUpdate extends BaseCommand {
29
29
  async run() {
30
30
  const { args, flags } = await this.parse(ChatsUpdate);
31
31
  this.parsedFlags = flags;
32
+ const validationErrors = [];
33
+ if (flags['name'] && String(flags['name']).length > 255) {
34
+ validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' });
35
+ }
36
+ if (validationErrors.length > 0) {
37
+ this.validationError(validationErrors);
38
+ }
32
39
  const body = { chat: {
33
40
  name: flags['name'],
34
41
  public: flags['public'],
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class GroupTagsCreate extends BaseCommand {
6
6
  static description = "Новый тег";
7
7
  static examples = [
8
- "Массовое создание сотрудников с тегами:\n $ pachca group-tags create",
9
- "Получить всех сотрудников тега/департамента:\n $ pachca group-tags list"
8
+ "Массовое создание сотрудников с тегами:\n $ pachca group-tags create"
10
9
  ];
11
10
  static scope = "group_tags:write";
12
11
  static apiMethod = "POST";
@@ -17,7 +16,7 @@ export default class GroupTagsCreate extends BaseCommand {
17
16
  static flags = {
18
17
  ...BaseCommand.baseFlags,
19
18
  'name': Flags.string({
20
- description: "Название тега",
19
+ description: "Название тега (макс. 255 символов)",
21
20
  }),
22
21
  };
23
22
  async run() {
@@ -49,6 +48,13 @@ export default class GroupTagsCreate extends BaseCommand {
49
48
  this.validationError(missingRequired.map((f) => ({ message: `Обязательный флаг --${f.flag} не передан`, flag: f.flag })), { hint: "Обязательные: --name <string>. pachca introspect group-tags create" });
50
49
  }
51
50
  }
51
+ const validationErrors = [];
52
+ if (flags['name'] && String(flags['name']).length > 255) {
53
+ validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' });
54
+ }
55
+ if (validationErrors.length > 0) {
56
+ this.validationError(validationErrors);
57
+ }
52
58
  const body = { group_tag: {
53
59
  name: flags['name'],
54
60
  } };
@@ -4,7 +4,6 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class GroupTagsList extends BaseCommand {
5
5
  static description = "Список тегов сотрудников";
6
6
  static examples = [
7
- "Массовое создание сотрудников с тегами:\n $ pachca group-tags create",
8
7
  "Получить всех сотрудников тега/департамента:\n $ pachca group-tags list"
9
8
  ];
10
9
  static scope = "group_tags:read";
@@ -18,7 +18,7 @@ export default class GroupTagsUpdate extends BaseCommand {
18
18
  static flags = {
19
19
  ...BaseCommand.baseFlags,
20
20
  'name': Flags.string({
21
- description: "Название тега",
21
+ description: "Название тега (макс. 255 символов)",
22
22
  }),
23
23
  };
24
24
  async run() {
@@ -50,6 +50,13 @@ export default class GroupTagsUpdate extends BaseCommand {
50
50
  this.validationError(missingRequired.map((f) => ({ message: `Обязательный флаг --${f.flag} не передан`, flag: f.flag })), { hint: "Обязательные: --name <string>. pachca introspect group-tags update" });
51
51
  }
52
52
  }
53
+ const validationErrors = [];
54
+ if (flags['name'] && String(flags['name']).length > 255) {
55
+ validationErrors.push({ message: `--name: максимум 255 символов (передано: ${String(flags['name']).length})`, flag: 'name' });
56
+ }
57
+ if (validationErrors.length > 0) {
58
+ this.validationError(validationErrors);
59
+ }
53
60
  const body = { group_tag: {
54
61
  name: flags['name'],
55
62
  } };
@@ -6,8 +6,8 @@ export default class MembersAdd extends BaseCommand {
6
6
  static description = "Добавление пользователей";
7
7
  static examples = [
8
8
  "Подписаться на тред сообщения:\n $ pachca members add",
9
- "Упомянуть пользователя:\n $ pachca members list",
10
- "Создать канал и пригласить участников:\n $ pachca members add"
9
+ "Создать канал и пригласить участников:\n $ pachca members add",
10
+ "Онбординг нового сотрудника:\n $ pachca members add"
11
11
  ];
12
12
  static scope = "chat_members:write";
13
13
  static apiMethod = "POST";
@@ -4,9 +4,7 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class MembersList extends BaseCommand {
5
5
  static description = "Список участников чата";
6
6
  static examples = [
7
- "Подписаться на тред сообщения:\n $ pachca members add",
8
- "Упомянуть пользователя:\n $ pachca members list",
9
- "Создать канал и пригласить участников:\n $ pachca members add"
7
+ "Упомянуть пользователя:\n $ pachca members list"
10
8
  ];
11
9
  static scope = "chat_members:read";
12
10
  static apiMethod = "GET";
@@ -5,7 +5,6 @@ import * as clack from '@clack/prompts';
5
5
  export default class MembersRemove extends BaseCommand {
6
6
  static description = "Исключение пользователя";
7
7
  static examples = [
8
- "Архивация и управление чатом:\n $ pachca members update",
9
8
  "Архивация и управление чатом:\n $ pachca members remove"
10
9
  ];
11
10
  static scope = "chat_members:write";
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class MembersUpdate extends BaseCommand {
6
6
  static description = "Редактирование роли";
7
7
  static examples = [
8
- "Архивация и управление чатом:\n $ pachca members update",
9
- "Архивация и управление чатом:\n $ pachca members remove"
8
+ "Архивация и управление чатом:\n $ pachca members update"
10
9
  ];
11
10
  static scope = "chat_members:write";
12
11
  static apiMethod = "PUT";
@@ -5,9 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class MessagesDelete extends BaseCommand {
6
6
  static description = "Удаление сообщения";
7
7
  static examples = [
8
- "Получить вложения из сообщения:\n $ pachca messages get",
9
- "Отредактировать сообщение:\n $ pachca messages update",
10
- "Изменить вложения сообщения:\n $ pachca messages get"
8
+ "Удалить сообщение:\n $ pachca messages delete"
11
9
  ];
12
10
  static scope = "messages:delete";
13
11
  static apiMethod = "DELETE";
@@ -5,8 +5,8 @@ export default class MessagesGet extends BaseCommand {
5
5
  static description = "Информация о сообщении";
6
6
  static examples = [
7
7
  "Получить вложения из сообщения:\n $ pachca messages get",
8
- "Отредактировать сообщение:\n $ pachca messages update",
9
- "Изменить вложения сообщения:\n $ pachca messages get"
8
+ "Изменить вложения сообщения:\n $ pachca messages get",
9
+ "Обработать входящий вебхук-событие:\n $ pachca messages get"
10
10
  ];
11
11
  static scope = "messages:read";
12
12
  static apiMethod = "GET";
@@ -5,9 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class MessagesList extends BaseCommand {
6
6
  static description = "Список сообщений чата";
7
7
  static examples = [
8
- "Найти чат по имени и отправить сообщение:\n $ pachca messages create",
9
- "Отправить сообщение в канал или беседу (если chat_id известен):\n $ pachca messages create",
10
- "Отправить личное сообщение пользователю:\n $ pachca messages create"
8
+ "Получить историю сообщений чата:\n $ pachca messages list"
11
9
  ];
12
10
  static scope = "messages:read";
13
11
  static apiMethod = "GET";
@@ -4,8 +4,7 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class MessagesPin extends BaseCommand {
5
5
  static description = "Закрепление сообщения";
6
6
  static examples = [
7
- "Закрепить/открепить сообщение:\n $ pachca messages pin",
8
- "Закрепить/открепить сообщение:\n $ pachca messages unpin"
7
+ "Закрепить/открепить сообщение:\n $ pachca messages pin"
9
8
  ];
10
9
  static scope = "pins:write";
11
10
  static apiMethod = "POST";
@@ -5,7 +5,6 @@ import * as clack from '@clack/prompts';
5
5
  export default class MessagesUnpin extends BaseCommand {
6
6
  static description = "Открепление сообщения";
7
7
  static examples = [
8
- "Закрепить/открепить сообщение:\n $ pachca messages pin",
9
8
  "Закрепить/открепить сообщение:\n $ pachca messages unpin"
10
9
  ];
11
10
  static scope = "pins:write";
@@ -4,9 +4,9 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class MessagesUpdate extends BaseCommand {
5
5
  static description = "Редактирование сообщения";
6
6
  static examples = [
7
- "Получить вложения из сообщения:\n $ pachca messages get",
8
7
  "Отредактировать сообщение:\n $ pachca messages update",
9
- "Изменить вложения сообщения:\n $ pachca messages get"
8
+ "Изменить вложения сообщения:\n $ pachca messages update",
9
+ "Обработать нажатие кнопки (callback):\n $ pachca messages update"
10
10
  ];
11
11
  static scope = "messages:update";
12
12
  static apiMethod = "PUT";
@@ -5,7 +5,6 @@ import * as clack from '@clack/prompts';
5
5
  export default class ProfileDeleteAvatar extends BaseCommand {
6
6
  static description = "Удаление своего аватара";
7
7
  static examples = [
8
- "Загрузить аватар профиля:\n $ pachca profile update-avatar",
9
8
  "Удалить аватар профиля:\n $ pachca profile delete-avatar"
10
9
  ];
11
10
  static scope = "profile_avatar:write";
@@ -5,7 +5,6 @@ import * as clack from '@clack/prompts';
5
5
  export default class ProfileDeleteStatus extends BaseCommand {
6
6
  static description = "Удаление своего статуса";
7
7
  static examples = [
8
- "Установить статус:\n $ pachca profile update-status",
9
8
  "Сбросить статус:\n $ pachca profile delete-status"
10
9
  ];
11
10
  static scope = "profile_status:write";
@@ -1,10 +1,6 @@
1
1
  import { BaseCommand } from '../../base-command.js';
2
2
  export default class ProfileGetStatus extends BaseCommand {
3
3
  static description = "Свой статус";
4
- static examples = [
5
- "Установить статус:\n $ pachca profile update-status",
6
- "Сбросить статус:\n $ pachca profile delete-status"
7
- ];
8
4
  static scope = "profile_status:read";
9
5
  static apiMethod = "GET";
10
6
  static apiPath = "/profile/status";
@@ -6,8 +6,7 @@ import * as path from 'node:path';
6
6
  export default class ProfileUpdateAvatar extends BaseCommand {
7
7
  static description = "Загрузка своего аватара";
8
8
  static examples = [
9
- "Загрузить аватар профиля:\n $ pachca profile update-avatar",
10
- "Удалить аватар профиля:\n $ pachca profile delete-avatar"
9
+ "Загрузить аватар профиля:\n $ pachca profile update-avatar"
11
10
  ];
12
11
  static scope = "profile_avatar:write";
13
12
  static apiMethod = "PUT";
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class ProfileUpdateStatus extends BaseCommand {
6
6
  static description = "Новый свой статус";
7
7
  static examples = [
8
- "Установить статус:\n $ pachca profile update-status",
9
- "Сбросить статус:\n $ pachca profile delete-status"
8
+ "Установить статус:\n $ pachca profile update-status"
10
9
  ];
11
10
  static scope = "profile_status:write";
12
11
  static apiMethod = "PUT";
@@ -20,7 +19,7 @@ export default class ProfileUpdateStatus extends BaseCommand {
20
19
  description: "Emoji символ статуса",
21
20
  }),
22
21
  'title': Flags.string({
23
- description: "Текст статуса",
22
+ description: "Текст статуса (макс. 50 символов)",
24
23
  }),
25
24
  'expires-at': Flags.string({
26
25
  description: "Срок жизни статуса (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ",
@@ -64,6 +63,9 @@ export default class ProfileUpdateStatus extends BaseCommand {
64
63
  }
65
64
  }
66
65
  const validationErrors = [];
66
+ if (flags['title'] && String(flags['title']).length > 50) {
67
+ validationErrors.push({ message: `--title: максимум 50 символов (передано: ${String(flags['title']).length})`, flag: 'title' });
68
+ }
67
69
  if (flags['away-message'] && String(flags['away-message']).length > 1024) {
68
70
  validationErrors.push({ message: `--away-message: максимум 1024 символов (передано: ${String(flags['away-message']).length})`, flag: 'away-message' });
69
71
  }
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class ReactionsAdd extends BaseCommand {
6
6
  static description = "Добавление реакции";
7
7
  static examples = [
8
- "Добавить реакцию на сообщение:\n $ pachca reactions add",
9
- "Добавить реакцию на сообщение:\n $ pachca reactions remove"
8
+ "Добавить реакцию на сообщение:\n $ pachca reactions add"
10
9
  ];
11
10
  static scope = "reactions:write";
12
11
  static apiMethod = "POST";
@@ -3,10 +3,6 @@ import { Args, Flags } from '@oclif/core';
3
3
  import { BaseCommand } from '../../base-command.js';
4
4
  export default class ReactionsList extends BaseCommand {
5
5
  static description = "Список реакций";
6
- static examples = [
7
- "Добавить реакцию на сообщение:\n $ pachca reactions add",
8
- "Добавить реакцию на сообщение:\n $ pachca reactions remove"
9
- ];
10
6
  static scope = "reactions:read";
11
7
  static apiMethod = "GET";
12
8
  static apiPath = "/messages/{id}/reactions";
@@ -5,7 +5,6 @@ import * as clack from '@clack/prompts';
5
5
  export default class ReactionsRemove extends BaseCommand {
6
6
  static description = "Удаление реакции";
7
7
  static examples = [
8
- "Добавить реакцию на сообщение:\n $ pachca reactions add",
9
8
  "Добавить реакцию на сообщение:\n $ pachca reactions remove"
10
9
  ];
11
10
  static scope = "reactions:write";
@@ -24,7 +24,7 @@ export default class SecurityList extends BaseCommand {
24
24
  }),
25
25
  'event-key': Flags.string({
26
26
  description: "Фильтр по конкретному типу события",
27
- options: ["user_login", "user_logout", "user_2fa_fail", "user_2fa_success", "user_created", "user_deleted", "user_role_changed", "user_updated", "tag_created", "tag_deleted", "user_added_to_tag", "user_removed_from_tag", "chat_created", "chat_renamed", "chat_permission_changed", "user_chat_join", "user_chat_leave", "tag_added_to_chat", "tag_removed_from_chat", "message_updated", "message_deleted", "message_created", "reaction_created", "reaction_deleted", "thread_created", "access_token_created", "access_token_updated", "access_token_destroy", "kms_encrypt", "kms_decrypt", "audit_events_accessed", "dlp_violation_detected", "search_users_api", "search_chats_api", "search_messages_api", "bot_scopes_updated", "bot_webhook_settings_updated", "bot_token_recreated", "bot_deleted"],
27
+ options: ["user_login", "user_logout", "user_2fa_fail", "user_2fa_success", "user_created", "user_deleted", "user_role_changed", "user_updated", "tag_created", "tag_deleted", "user_added_to_tag", "user_removed_from_tag", "chat_created", "chat_renamed", "chat_permission_changed", "user_chat_join", "user_chat_leave", "tag_added_to_chat", "tag_removed_from_chat", "message_updated", "message_deleted", "message_created", "reaction_created", "reaction_deleted", "thread_created", "access_token_created", "access_token_updated", "access_token_destroy", "kms_encrypt", "kms_decrypt", "audit_events_accessed", "dlp_violation_detected", "search_users_api", "search_chats_api", "search_messages_api", "bot_scopes_updated", "bot_webhook_settings_updated", "bot_token_recreated", "bot_deleted", "video_call_started", "video_call_finished", "video_call_recording_ready"],
28
28
  }),
29
29
  'actor-id': Flags.string({
30
30
  description: "Идентификатор пользователя, выполнившего действие",
@@ -7,7 +7,7 @@ export default class TasksCreate extends BaseCommand {
7
7
  static examples = [
8
8
  "Форма заявки/запроса:\n $ pachca tasks create",
9
9
  "Создать напоминание:\n $ pachca tasks create",
10
- "Получить список предстоящих задач:\n $ pachca tasks list"
10
+ "Создать серию напоминаний:\n $ pachca tasks create"
11
11
  ];
12
12
  static scope = "tasks:create";
13
13
  static apiMethod = "POST";
@@ -5,9 +5,7 @@ import * as clack from '@clack/prompts';
5
5
  export default class TasksDelete extends BaseCommand {
6
6
  static description = "Удаление напоминания";
7
7
  static examples = [
8
- "Получить задачу по ID:\n $ pachca tasks get",
9
- "Отметить задачу выполненной:\n $ pachca tasks update",
10
- "Обновить задачу (перенести срок, сменить ответственных):\n $ pachca tasks update"
8
+ "Удалить задачу:\n $ pachca tasks delete"
11
9
  ];
12
10
  static scope = "tasks:delete";
13
11
  static apiMethod = "DELETE";
@@ -4,9 +4,7 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class TasksGet extends BaseCommand {
5
5
  static description = "Информация о напоминании";
6
6
  static examples = [
7
- "Получить задачу по ID:\n $ pachca tasks get",
8
- "Отметить задачу выполненной:\n $ pachca tasks update",
9
- "Обновить задачу (перенести срок, сменить ответственных):\n $ pachca tasks update"
7
+ "Получить задачу по ID:\n $ pachca tasks get"
10
8
  ];
11
9
  static scope = "tasks:read";
12
10
  static apiMethod = "GET";
@@ -4,8 +4,6 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class TasksList extends BaseCommand {
5
5
  static description = "Список напоминаний";
6
6
  static examples = [
7
- "Форма заявки/запроса:\n $ pachca tasks create",
8
- "Создать напоминание:\n $ pachca tasks create",
9
7
  "Получить список предстоящих задач:\n $ pachca tasks list"
10
8
  ];
11
9
  static scope = "tasks:read";
@@ -4,7 +4,6 @@ import { BaseCommand } from '../../base-command.js';
4
4
  export default class TasksUpdate extends BaseCommand {
5
5
  static description = "Редактирование напоминания";
6
6
  static examples = [
7
- "Получить задачу по ID:\n $ pachca tasks get",
8
7
  "Отметить задачу выполненной:\n $ pachca tasks update",
9
8
  "Обновить задачу (перенести срок, сменить ответственных):\n $ pachca tasks update"
10
9
  ];
@@ -0,0 +1,23 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class ThreadsCreate extends BaseCommand {
3
+ static description = "Новый самостоятельный тред";
4
+ static scope = "threads:create";
5
+ static apiMethod = "POST";
6
+ static apiPath = "/threads";
7
+ static defaultColumns = ["id", "chat_id", "message_id", "message_chat_id", "updated_at"];
8
+ static args = {};
9
+ static flags = {
10
+ ...BaseCommand.baseFlags,
11
+ };
12
+ async run() {
13
+ const { args, flags } = await this.parse(ThreadsCreate);
14
+ this.parsedFlags = flags;
15
+ const { data } = await this.apiRequest({
16
+ method: 'POST',
17
+ path: '/threads',
18
+ });
19
+ const responseBody = data;
20
+ const result = responseBody.data ?? responseBody;
21
+ this.output(result);
22
+ }
23
+ }