@pachca/cli 2026.7.0 → 2026.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +2 -1
- package/README.template.md +1 -1
- package/dist/base-command.js +2 -0
- package/dist/client.js +51 -17
- package/dist/commands/bots/create.js +17 -8
- package/dist/commands/bots/delete.js +1 -2
- package/dist/commands/bots/get.js +1 -5
- package/dist/commands/bots/list-events.js +2 -2
- package/dist/commands/bots/list.js +2 -4
- package/dist/commands/bots/recreate-token-self.js +2 -2
- package/dist/commands/bots/recreate-token.js +2 -2
- package/dist/commands/bots/remove-event.js +1 -1
- package/dist/commands/bots/update-webhook.js +2 -2
- package/dist/commands/bots/update.js +16 -7
- package/dist/commands/chats/archive.js +3 -3
- package/dist/commands/chats/create.js +11 -5
- package/dist/commands/chats/download-export.js +2 -2
- package/dist/commands/chats/get.js +1 -4
- package/dist/commands/chats/list.js +4 -4
- package/dist/commands/chats/request-export.js +2 -2
- package/dist/commands/chats/unarchive.js +2 -2
- package/dist/commands/chats/update.js +10 -3
- package/dist/commands/custom-properties/list.js +2 -2
- package/dist/commands/files/direct-url.js +12 -12
- package/dist/commands/files/uploads.js +2 -2
- package/dist/commands/group-tags/create.js +10 -4
- package/dist/commands/group-tags/get.js +1 -1
- package/dist/commands/group-tags/list-users.js +2 -2
- package/dist/commands/group-tags/list.js +2 -3
- package/dist/commands/group-tags/update.js +9 -2
- package/dist/commands/members/add-group-tags.js +1 -1
- package/dist/commands/members/add.js +4 -4
- package/dist/commands/members/leave.js +1 -1
- package/dist/commands/members/list.js +3 -4
- package/dist/commands/members/remove.js +1 -2
- package/dist/commands/members/update.js +2 -3
- package/dist/commands/messages/create.js +4 -4
- package/dist/commands/messages/delete.js +1 -3
- package/dist/commands/messages/get.js +4 -4
- package/dist/commands/messages/list.js +2 -4
- package/dist/commands/messages/pin.js +2 -3
- package/dist/commands/messages/unfurl.js +4 -4
- package/dist/commands/messages/unpin.js +1 -2
- package/dist/commands/messages/update.js +4 -4
- package/dist/commands/oauth/token-info.js +2 -2
- package/dist/commands/profile/delete-avatar.js +1 -2
- package/dist/commands/profile/delete-status.js +1 -2
- package/dist/commands/profile/get-status.js +1 -5
- package/dist/commands/profile/get.js +3 -3
- package/dist/commands/profile/update-avatar.js +2 -3
- package/dist/commands/profile/update-status.js +6 -4
- package/dist/commands/reactions/add.js +2 -3
- package/dist/commands/reactions/list.js +1 -5
- package/dist/commands/reactions/remove.js +1 -2
- package/dist/commands/read-member/list-readers.js +2 -2
- package/dist/commands/search/list-chats.js +3 -3
- package/dist/commands/search/list-messages.js +2 -2
- package/dist/commands/search/list-users.js +4 -4
- package/dist/commands/security/list.js +6 -6
- package/dist/commands/tasks/create.js +5 -5
- package/dist/commands/tasks/delete.js +1 -3
- package/dist/commands/tasks/get.js +2 -4
- package/dist/commands/tasks/list.js +2 -4
- package/dist/commands/tasks/update.js +4 -5
- package/dist/commands/threads/add.js +3 -3
- package/dist/commands/threads/create.js +23 -0
- package/dist/commands/threads/get.js +1 -1
- package/dist/commands/threads/list.js +3 -2
- package/dist/commands/users/create.js +32 -10
- package/dist/commands/users/delete.js +1 -3
- package/dist/commands/users/get-status.js +2 -4
- package/dist/commands/users/get.js +2 -4
- package/dist/commands/users/list.js +4 -4
- package/dist/commands/users/remove-avatar.js +1 -2
- package/dist/commands/users/remove-status.js +1 -3
- package/dist/commands/users/update-avatar.js +2 -3
- package/dist/commands/users/update-status.js +6 -5
- package/dist/commands/users/update.js +31 -10
- package/dist/commands/views/open.js +4 -4
- package/dist/data/alternatives.json +1 -0
- package/dist/data/changelog.json +67 -0
- package/dist/data/endpoints.json +1 -1
- package/dist/data/workflows.json +2 -2
- package/dist/output.js +10 -2
- package/dist/profiles.js +7 -3
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
|
@@ -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
|
}
|
|
@@ -91,7 +93,7 @@ export default class ProfileUpdateStatus extends BaseCommand {
|
|
|
91
93
|
path: '/profile/status',
|
|
92
94
|
body,
|
|
93
95
|
});
|
|
94
|
-
const responseBody = data;
|
|
96
|
+
const responseBody = (data ?? {});
|
|
95
97
|
const result = responseBody.data ?? responseBody;
|
|
96
98
|
this.output(result);
|
|
97
99
|
}
|
|
@@ -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
|
-
"Добавить реакцию на
|
|
9
|
-
"Добавить реакцию на сообщение:\n $ pachca reactions remove"
|
|
8
|
+
"Добавить реакцию на сообщение — Добавь реакцию:\n $ pachca reactions add"
|
|
10
9
|
];
|
|
11
10
|
static scope = "reactions:write";
|
|
12
11
|
static apiMethod = "POST";
|
|
@@ -71,7 +70,7 @@ export default class ReactionsAdd extends BaseCommand {
|
|
|
71
70
|
path: `/messages/${args.id}/reactions`,
|
|
72
71
|
body,
|
|
73
72
|
});
|
|
74
|
-
const responseBody = data;
|
|
73
|
+
const responseBody = (data ?? {});
|
|
75
74
|
const result = responseBody.data ?? responseBody;
|
|
76
75
|
this.output(result);
|
|
77
76
|
}
|
|
@@ -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";
|
|
@@ -91,7 +87,7 @@ export default class ReactionsList extends BaseCommand {
|
|
|
91
87
|
cursor: flags.cursor,
|
|
92
88
|
},
|
|
93
89
|
});
|
|
94
|
-
const responseBody = data;
|
|
90
|
+
const responseBody = (data ?? {});
|
|
95
91
|
const items = responseBody.data ?? responseBody;
|
|
96
92
|
this.output(items);
|
|
97
93
|
}
|
|
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
|
|
|
5
5
|
export default class ReactionsRemove extends BaseCommand {
|
|
6
6
|
static description = "Удаление реакции";
|
|
7
7
|
static examples = [
|
|
8
|
-
"Добавить реакцию на
|
|
9
|
-
"Добавить реакцию на сообщение:\n $ pachca reactions remove"
|
|
8
|
+
"Добавить реакцию на сообщение — Убрать реакцию:\n $ pachca reactions remove"
|
|
10
9
|
];
|
|
11
10
|
static scope = "reactions:write";
|
|
12
11
|
static apiMethod = "DELETE";
|
|
@@ -4,7 +4,7 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class ReadMemberListReaders extends BaseCommand {
|
|
5
5
|
static description = "Список прочитавших сообщение";
|
|
6
6
|
static examples = [
|
|
7
|
-
"Проверить, кто прочитал
|
|
7
|
+
"Проверить, кто прочитал сообщение — Получи массив `user_id` прочитавших:\n $ pachca read-member list-readers"
|
|
8
8
|
];
|
|
9
9
|
static scope = "messages:read";
|
|
10
10
|
static apiMethod = "GET";
|
|
@@ -89,7 +89,7 @@ export default class ReadMemberListReaders extends BaseCommand {
|
|
|
89
89
|
cursor: flags.cursor,
|
|
90
90
|
},
|
|
91
91
|
});
|
|
92
|
-
const responseBody = data;
|
|
92
|
+
const responseBody = (data ?? {});
|
|
93
93
|
const items = responseBody.data ?? responseBody;
|
|
94
94
|
this.output(items);
|
|
95
95
|
}
|
|
@@ -4,8 +4,8 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class SearchListChats extends BaseCommand {
|
|
5
5
|
static description = "Поиск чатов";
|
|
6
6
|
static examples = [
|
|
7
|
-
"Найти чат по имени и отправить
|
|
8
|
-
"Найти чат по
|
|
7
|
+
"Найти чат по имени и отправить сообщение — Найди чат по названию через поиск:\n $ pachca search list-chats",
|
|
8
|
+
"Найти чат по названию — Полнотекстовый поиск по чатам:\n $ pachca search list-chats"
|
|
9
9
|
];
|
|
10
10
|
static scope = "search:chats";
|
|
11
11
|
static apiMethod = "GET";
|
|
@@ -125,7 +125,7 @@ export default class SearchListChats extends BaseCommand {
|
|
|
125
125
|
cursor: flags.cursor,
|
|
126
126
|
},
|
|
127
127
|
});
|
|
128
|
-
const responseBody = data;
|
|
128
|
+
const responseBody = (data ?? {});
|
|
129
129
|
const items = responseBody.data ?? responseBody;
|
|
130
130
|
this.output(items);
|
|
131
131
|
}
|
|
@@ -4,7 +4,7 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class SearchListMessages extends BaseCommand {
|
|
5
5
|
static description = "Поиск сообщений";
|
|
6
6
|
static examples = [
|
|
7
|
-
"Найти сообщение по
|
|
7
|
+
"Найти сообщение по тексту — Полнотекстовый поиск по сообщениям:\n $ pachca search list-messages"
|
|
8
8
|
];
|
|
9
9
|
static scope = "search:messages";
|
|
10
10
|
static apiMethod = "GET";
|
|
@@ -129,7 +129,7 @@ export default class SearchListMessages extends BaseCommand {
|
|
|
129
129
|
cursor: flags.cursor,
|
|
130
130
|
},
|
|
131
131
|
});
|
|
132
|
-
const responseBody = data;
|
|
132
|
+
const responseBody = (data ?? {});
|
|
133
133
|
const items = responseBody.data ?? responseBody;
|
|
134
134
|
this.output(items);
|
|
135
135
|
}
|
|
@@ -4,9 +4,9 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class SearchListUsers extends BaseCommand {
|
|
5
5
|
static description = "Поиск сотрудников";
|
|
6
6
|
static examples = [
|
|
7
|
-
"Отправить личное сообщение
|
|
8
|
-
"Упомянуть
|
|
9
|
-
"Найти сотрудника по
|
|
7
|
+
"Отправить личное сообщение пользователю — Определи `user_id` получателя:\n $ pachca search list-users",
|
|
8
|
+
"Упомянуть пользователя — Не нашёл — ищи по всей компании:\n $ pachca search list-users",
|
|
9
|
+
"Найти сотрудника по имени — Полнотекстовый поиск по сотрудникам:\n $ pachca search list-users"
|
|
10
10
|
];
|
|
11
11
|
static scope = "search:users";
|
|
12
12
|
static apiMethod = "GET";
|
|
@@ -119,7 +119,7 @@ export default class SearchListUsers extends BaseCommand {
|
|
|
119
119
|
cursor: flags.cursor,
|
|
120
120
|
},
|
|
121
121
|
});
|
|
122
|
-
const responseBody = data;
|
|
122
|
+
const responseBody = (data ?? {});
|
|
123
123
|
const items = responseBody.data ?? responseBody;
|
|
124
124
|
this.output(items);
|
|
125
125
|
}
|
|
@@ -4,9 +4,9 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class SecurityList extends BaseCommand {
|
|
5
5
|
static description = "Журнал аудита событий";
|
|
6
6
|
static examples = [
|
|
7
|
-
"Получить журнал аудита
|
|
8
|
-
"Мониторинг подозрительных
|
|
9
|
-
"Экспорт логов за
|
|
7
|
+
"Получить журнал аудита событий — Получи журнал аудита:\n $ pachca security list",
|
|
8
|
+
"Мониторинг подозрительных входов — Получи события неудачных 2FA за период:\n $ pachca security list",
|
|
9
|
+
"Экспорт логов за период — Получи все события за период с пагинацией:\n $ pachca security list"
|
|
10
10
|
];
|
|
11
11
|
static scope = "audit_events:read";
|
|
12
12
|
static plan = "corporation";
|
|
@@ -20,11 +20,11 @@ export default class SecurityList extends BaseCommand {
|
|
|
20
20
|
description: "Начальная метка времени (включительно)",
|
|
21
21
|
}),
|
|
22
22
|
'end-time': Flags.string({
|
|
23
|
-
description: "Конечная метка времени (
|
|
23
|
+
description: "Конечная метка времени (включительно)",
|
|
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: "Идентификатор пользователя, выполнившего действие",
|
|
@@ -124,7 +124,7 @@ export default class SecurityList extends BaseCommand {
|
|
|
124
124
|
cursor: flags.cursor,
|
|
125
125
|
},
|
|
126
126
|
});
|
|
127
|
-
const responseBody = data;
|
|
127
|
+
const responseBody = (data ?? {});
|
|
128
128
|
const items = responseBody.data ?? responseBody;
|
|
129
129
|
this.output(items);
|
|
130
130
|
}
|
|
@@ -5,9 +5,9 @@ import * as clack from '@clack/prompts';
|
|
|
5
5
|
export default class TasksCreate extends BaseCommand {
|
|
6
6
|
static description = "Новое напоминание";
|
|
7
7
|
static examples = [
|
|
8
|
-
"Форма
|
|
9
|
-
"Создать
|
|
10
|
-
"
|
|
8
|
+
"Форма заявки/запроса — При submit: создай задачу или отправь уведомление ответственному:\n $ pachca tasks create",
|
|
9
|
+
"Создать напоминание — Создай задачу:\n $ pachca tasks create",
|
|
10
|
+
"Создать серию напоминаний — Для каждой даты: создай задачу:\n $ pachca tasks create"
|
|
11
11
|
];
|
|
12
12
|
static scope = "tasks:create";
|
|
13
13
|
static apiMethod = "POST";
|
|
@@ -27,7 +27,7 @@ export default class TasksCreate extends BaseCommand {
|
|
|
27
27
|
description: "Срок выполнения напоминания (ISO-8601) в формате YYYY-MM-DDThh:mm:ss.sssTZD. Если указано время 23:59:59.000, то напоминание будет создано на весь день (без указания времени).",
|
|
28
28
|
}),
|
|
29
29
|
'priority': Flags.integer({
|
|
30
|
-
description: "Приоритет: 1, 2 (важно) или 3 (очень важно)
|
|
30
|
+
description: "Приоритет: 1, 2 (важно) или 3 (очень важно)",
|
|
31
31
|
}),
|
|
32
32
|
'performer-ids': Flags.string({
|
|
33
33
|
description: "Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные» (по умолчанию ответственным назначается вы)",
|
|
@@ -101,7 +101,7 @@ export default class TasksCreate extends BaseCommand {
|
|
|
101
101
|
path: '/tasks',
|
|
102
102
|
body,
|
|
103
103
|
});
|
|
104
|
-
const responseBody = data;
|
|
104
|
+
const responseBody = (data ?? {});
|
|
105
105
|
const result = responseBody.data ?? responseBody;
|
|
106
106
|
this.output(result);
|
|
107
107
|
}
|
|
@@ -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
|
-
"
|
|
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
|
|
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";
|
|
@@ -28,7 +26,7 @@ export default class TasksGet extends BaseCommand {
|
|
|
28
26
|
method: 'GET',
|
|
29
27
|
path: `/tasks/${args.id}`,
|
|
30
28
|
});
|
|
31
|
-
const responseBody = data;
|
|
29
|
+
const responseBody = (data ?? {});
|
|
32
30
|
const result = responseBody.data ?? responseBody;
|
|
33
31
|
this.output(result);
|
|
34
32
|
}
|
|
@@ -4,9 +4,7 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class TasksList extends BaseCommand {
|
|
5
5
|
static description = "Список напоминаний";
|
|
6
6
|
static examples = [
|
|
7
|
-
"
|
|
8
|
-
"Создать напоминание:\n $ pachca tasks create",
|
|
9
|
-
"Получить список предстоящих задач:\n $ pachca tasks list"
|
|
7
|
+
"Получить список предстоящих задач — Получи все задачи, фильтруй по `status` на клиенте:\n $ pachca tasks list"
|
|
10
8
|
];
|
|
11
9
|
static scope = "tasks:read";
|
|
12
10
|
static apiMethod = "GET";
|
|
@@ -87,7 +85,7 @@ export default class TasksList extends BaseCommand {
|
|
|
87
85
|
cursor: flags.cursor,
|
|
88
86
|
},
|
|
89
87
|
});
|
|
90
|
-
const responseBody = data;
|
|
88
|
+
const responseBody = (data ?? {});
|
|
91
89
|
const items = responseBody.data ?? responseBody;
|
|
92
90
|
this.output(items);
|
|
93
91
|
}
|
|
@@ -4,9 +4,8 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class TasksUpdate extends BaseCommand {
|
|
5
5
|
static description = "Редактирование напоминания";
|
|
6
6
|
static examples = [
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"Обновить задачу (перенести срок, сменить ответственных):\n $ pachca tasks update"
|
|
7
|
+
"Отметить задачу выполненной — Обнови статус задачи:\n $ pachca tasks update",
|
|
8
|
+
"Обновить задачу (перенести срок, сменить ответственных) — Обнови нужные поля задачи:\n $ pachca tasks update"
|
|
10
9
|
];
|
|
11
10
|
static scope = "tasks:update";
|
|
12
11
|
static apiMethod = "PUT";
|
|
@@ -30,7 +29,7 @@ export default class TasksUpdate extends BaseCommand {
|
|
|
30
29
|
description: "Срок выполнения напоминания (ISO-8601) в формате YYYY-MM-DDThh:mm:ss.sssTZD. Если указано время 23:59:59.000, то напоминание будет создано на весь день (без указания времени).",
|
|
31
30
|
}),
|
|
32
31
|
'priority': Flags.integer({
|
|
33
|
-
description: "Приоритет: 1, 2 (важно) или 3 (очень важно)
|
|
32
|
+
description: "Приоритет: 1, 2 (важно) или 3 (очень важно)",
|
|
34
33
|
}),
|
|
35
34
|
'performer-ids': Flags.string({
|
|
36
35
|
description: "Массив идентификаторов пользователей, привязываемых к напоминанию как «ответственные»",
|
|
@@ -85,7 +84,7 @@ export default class TasksUpdate extends BaseCommand {
|
|
|
85
84
|
path: `/tasks/${args.id}`,
|
|
86
85
|
body,
|
|
87
86
|
});
|
|
88
|
-
const responseBody = data;
|
|
87
|
+
const responseBody = (data ?? {});
|
|
89
88
|
const result = responseBody.data ?? responseBody;
|
|
90
89
|
this.output(result);
|
|
91
90
|
}
|
|
@@ -4,8 +4,8 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class ThreadsAdd extends BaseCommand {
|
|
5
5
|
static description = "Новый тред";
|
|
6
6
|
static examples = [
|
|
7
|
-
"Ответить в тред (комментарий к сообщению)
|
|
8
|
-
"Подписаться на тред
|
|
7
|
+
"Ответить в тред (комментарий к сообщению) — Получи или создай тред, возьми `thread.id` из ответа:\n $ pachca threads add",
|
|
8
|
+
"Подписаться на тред сообщения — Получи или создай тред, возьми `chat_id` из ответа:\n $ pachca threads add"
|
|
9
9
|
];
|
|
10
10
|
static scope = "threads:create";
|
|
11
11
|
static apiMethod = "POST";
|
|
@@ -27,7 +27,7 @@ export default class ThreadsAdd extends BaseCommand {
|
|
|
27
27
|
method: 'POST',
|
|
28
28
|
path: `/messages/${args.id}/thread`,
|
|
29
29
|
});
|
|
30
|
-
const responseBody = data;
|
|
30
|
+
const responseBody = (data ?? {});
|
|
31
31
|
const result = responseBody.data ?? responseBody;
|
|
32
32
|
this.output(result);
|
|
33
33
|
}
|
|
@@ -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
|
+
}
|
|
@@ -23,7 +23,7 @@ export default class ThreadsGet extends BaseCommand {
|
|
|
23
23
|
method: 'GET',
|
|
24
24
|
path: `/threads/${args.id}`,
|
|
25
25
|
});
|
|
26
|
-
const responseBody = data;
|
|
26
|
+
const responseBody = (data ?? {});
|
|
27
27
|
const result = responseBody.data ?? responseBody;
|
|
28
28
|
this.output(result);
|
|
29
29
|
}
|
|
@@ -4,7 +4,8 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class ThreadsList extends BaseCommand {
|
|
5
5
|
static description = "Список тредов";
|
|
6
6
|
static examples = [
|
|
7
|
-
"Получить список активных тредов за
|
|
7
|
+
"Получить список активных тредов за период — Запроси список тредов с фильтром по времени последнего сообщения и нужным `--limit`:\n $ pachca threads list",
|
|
8
|
+
"Получить список активных тредов за период — Если в ответе `meta.paginate.next_page` — пройди по страницам через `--cursor`:\n $ pachca threads list"
|
|
8
9
|
];
|
|
9
10
|
static scope = "threads:read";
|
|
10
11
|
static apiMethod = "GET";
|
|
@@ -95,7 +96,7 @@ export default class ThreadsList extends BaseCommand {
|
|
|
95
96
|
cursor: flags.cursor,
|
|
96
97
|
},
|
|
97
98
|
});
|
|
98
|
-
const responseBody = data;
|
|
99
|
+
const responseBody = (data ?? {});
|
|
99
100
|
const items = responseBody.data ?? responseBody;
|
|
100
101
|
this.output(items);
|
|
101
102
|
}
|
|
@@ -5,9 +5,9 @@ import * as clack from '@clack/prompts';
|
|
|
5
5
|
export default class UsersCreate extends BaseCommand {
|
|
6
6
|
static description = "Новый сотрудник";
|
|
7
7
|
static examples = [
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
8
|
+
"Массовое создание сотрудников с тегами — Для каждого сотрудника: создай аккаунт с тегами:\n $ pachca users create",
|
|
9
|
+
"Создать гостя в чат — Создай гостя: роль `guest` и ровно один чат в `--chat-ids`:\n $ pachca users create",
|
|
10
|
+
"Онбординг нового сотрудника — Создай аккаунт:\n $ pachca users create"
|
|
11
11
|
];
|
|
12
12
|
static scope = "users:create";
|
|
13
13
|
static apiMethod = "POST";
|
|
@@ -18,22 +18,22 @@ export default class UsersCreate extends BaseCommand {
|
|
|
18
18
|
static flags = {
|
|
19
19
|
...BaseCommand.baseFlags,
|
|
20
20
|
'first-name': Flags.string({
|
|
21
|
-
description: "Имя",
|
|
21
|
+
description: "Имя (макс. 255 символов)",
|
|
22
22
|
}),
|
|
23
23
|
'last-name': Flags.string({
|
|
24
|
-
description: "Фамилия",
|
|
24
|
+
description: "Фамилия (макс. 255 символов)",
|
|
25
25
|
}),
|
|
26
26
|
'email': Flags.string({
|
|
27
|
-
description: "Электронная почта",
|
|
27
|
+
description: "Электронная почта (макс. 255 символов)",
|
|
28
28
|
}),
|
|
29
29
|
'phone-number': Flags.string({
|
|
30
|
-
description: "Телефон",
|
|
30
|
+
description: "Телефон (макс. 255 символов)",
|
|
31
31
|
}),
|
|
32
32
|
'nickname': Flags.string({
|
|
33
|
-
description: "Имя пользователя",
|
|
33
|
+
description: "Имя пользователя (макс. 255 символов)",
|
|
34
34
|
}),
|
|
35
35
|
'department': Flags.string({
|
|
36
|
-
description: "Департамент",
|
|
36
|
+
description: "Департамент (макс. 255 символов)",
|
|
37
37
|
}),
|
|
38
38
|
'title': Flags.string({
|
|
39
39
|
description: "Должность",
|
|
@@ -88,6 +88,28 @@ export default class UsersCreate extends BaseCommand {
|
|
|
88
88
|
this.validationError(missingRequired.map((f) => ({ message: `Обязательный флаг --${f.flag} не передан`, flag: f.flag })), { hint: "Обязательные: --email <string>. pachca introspect users create" });
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
+
const validationErrors = [];
|
|
92
|
+
if (flags['first-name'] && String(flags['first-name']).length > 255) {
|
|
93
|
+
validationErrors.push({ message: `--first-name: максимум 255 символов (передано: ${String(flags['first-name']).length})`, flag: 'first-name' });
|
|
94
|
+
}
|
|
95
|
+
if (flags['last-name'] && String(flags['last-name']).length > 255) {
|
|
96
|
+
validationErrors.push({ message: `--last-name: максимум 255 символов (передано: ${String(flags['last-name']).length})`, flag: 'last-name' });
|
|
97
|
+
}
|
|
98
|
+
if (flags['email'] && String(flags['email']).length > 255) {
|
|
99
|
+
validationErrors.push({ message: `--email: максимум 255 символов (передано: ${String(flags['email']).length})`, flag: 'email' });
|
|
100
|
+
}
|
|
101
|
+
if (flags['phone-number'] && String(flags['phone-number']).length > 255) {
|
|
102
|
+
validationErrors.push({ message: `--phone-number: максимум 255 символов (передано: ${String(flags['phone-number']).length})`, flag: 'phone-number' });
|
|
103
|
+
}
|
|
104
|
+
if (flags['nickname'] && String(flags['nickname']).length > 255) {
|
|
105
|
+
validationErrors.push({ message: `--nickname: максимум 255 символов (передано: ${String(flags['nickname']).length})`, flag: 'nickname' });
|
|
106
|
+
}
|
|
107
|
+
if (flags['department'] && String(flags['department']).length > 255) {
|
|
108
|
+
validationErrors.push({ message: `--department: максимум 255 символов (передано: ${String(flags['department']).length})`, flag: 'department' });
|
|
109
|
+
}
|
|
110
|
+
if (validationErrors.length > 0) {
|
|
111
|
+
this.validationError(validationErrors);
|
|
112
|
+
}
|
|
91
113
|
const body = {
|
|
92
114
|
user: {
|
|
93
115
|
first_name: flags['first-name'],
|
|
@@ -120,7 +142,7 @@ export default class UsersCreate extends BaseCommand {
|
|
|
120
142
|
path: '/users',
|
|
121
143
|
body,
|
|
122
144
|
});
|
|
123
|
-
const responseBody = data;
|
|
145
|
+
const responseBody = (data ?? {});
|
|
124
146
|
const result = responseBody.data ?? responseBody;
|
|
125
147
|
this.output(result);
|
|
126
148
|
}
|
|
@@ -5,9 +5,7 @@ import * as clack from '@clack/prompts';
|
|
|
5
5
|
export default class UsersDelete extends BaseCommand {
|
|
6
6
|
static description = "Удаление сотрудника";
|
|
7
7
|
static examples = [
|
|
8
|
-
"
|
|
9
|
-
"Массовое создание сотрудников с тегами:\n $ pachca users update",
|
|
10
|
-
"Offboarding сотрудника:\n $ pachca users update"
|
|
8
|
+
"Offboarding сотрудника — Опционально: удалить аккаунт полностью:\n $ pachca users delete"
|
|
11
9
|
];
|
|
12
10
|
static scope = "users:delete";
|
|
13
11
|
static apiMethod = "DELETE";
|
|
@@ -4,9 +4,7 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class UsersGetStatus extends BaseCommand {
|
|
5
5
|
static description = "Статус сотрудника";
|
|
6
6
|
static examples = [
|
|
7
|
-
"Управление статусом
|
|
8
|
-
"Управление статусом сотрудника:\n $ pachca users update-status",
|
|
9
|
-
"Управление статусом сотрудника:\n $ pachca users remove-status"
|
|
7
|
+
"Управление статусом сотрудника — Получить текущий статус:\n $ pachca users get-status"
|
|
10
8
|
];
|
|
11
9
|
static scope = "user_status:read";
|
|
12
10
|
static apiMethod = "GET";
|
|
@@ -28,7 +26,7 @@ export default class UsersGetStatus extends BaseCommand {
|
|
|
28
26
|
method: 'GET',
|
|
29
27
|
path: `/users/${args.user_id}/status`,
|
|
30
28
|
});
|
|
31
|
-
const responseBody = data;
|
|
29
|
+
const responseBody = (data ?? {});
|
|
32
30
|
const result = responseBody.data ?? responseBody;
|
|
33
31
|
this.output(result);
|
|
34
32
|
}
|
|
@@ -4,9 +4,7 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class UsersGet extends BaseCommand {
|
|
5
5
|
static description = "Информация о сотруднике";
|
|
6
6
|
static examples = [
|
|
7
|
-
"Получить сотрудника по ID
|
|
8
|
-
"Массовое создание сотрудников с тегами:\n $ pachca users update",
|
|
9
|
-
"Offboarding сотрудника:\n $ pachca users update"
|
|
7
|
+
"Получить сотрудника по ID — Получи информацию о сотруднике:\n $ pachca users get"
|
|
10
8
|
];
|
|
11
9
|
static scope = "users:read";
|
|
12
10
|
static apiMethod = "GET";
|
|
@@ -28,7 +26,7 @@ export default class UsersGet extends BaseCommand {
|
|
|
28
26
|
method: 'GET',
|
|
29
27
|
path: `/users/${args.id}`,
|
|
30
28
|
});
|
|
31
|
-
const responseBody = data;
|
|
29
|
+
const responseBody = (data ?? {});
|
|
32
30
|
const result = responseBody.data ?? responseBody;
|
|
33
31
|
this.output(result);
|
|
34
32
|
}
|
|
@@ -4,9 +4,9 @@ import { BaseCommand } from '../../base-command.js';
|
|
|
4
4
|
export default class UsersList extends BaseCommand {
|
|
5
5
|
static description = "Список сотрудников";
|
|
6
6
|
static examples = [
|
|
7
|
-
"Проверить, кто прочитал
|
|
8
|
-
"Разослать уведомление нескольким
|
|
9
|
-
"
|
|
7
|
+
"Проверить, кто прочитал сообщение — При необходимости сопоставь с именами сотрудников:\n $ pachca users list",
|
|
8
|
+
"Разослать уведомление нескольким пользователям — Определи список `user_id` получателей:\n $ pachca users list",
|
|
9
|
+
"Найти сотрудника по имени или email — Поиск по имени/email (частичное совпадение):\n $ pachca users list"
|
|
10
10
|
];
|
|
11
11
|
static scope = "users:read";
|
|
12
12
|
static apiMethod = "GET";
|
|
@@ -92,7 +92,7 @@ export default class UsersList extends BaseCommand {
|
|
|
92
92
|
cursor: flags.cursor,
|
|
93
93
|
},
|
|
94
94
|
});
|
|
95
|
-
const responseBody = data;
|
|
95
|
+
const responseBody = (data ?? {});
|
|
96
96
|
const items = responseBody.data ?? responseBody;
|
|
97
97
|
this.output(items);
|
|
98
98
|
}
|
|
@@ -5,8 +5,7 @@ import * as clack from '@clack/prompts';
|
|
|
5
5
|
export default class UsersRemoveAvatar extends BaseCommand {
|
|
6
6
|
static description = "Удаление аватара сотрудника";
|
|
7
7
|
static examples = [
|
|
8
|
-
"
|
|
9
|
-
"Удалить аватар сотрудника:\n $ pachca users remove-avatar"
|
|
8
|
+
"Удалить аватар сотрудника — Удали аватар сотрудника:\n $ pachca users remove-avatar"
|
|
10
9
|
];
|
|
11
10
|
static scope = "user_avatar:write";
|
|
12
11
|
static apiMethod = "DELETE";
|
|
@@ -5,9 +5,7 @@ import * as clack from '@clack/prompts';
|
|
|
5
5
|
export default class UsersRemoveStatus extends BaseCommand {
|
|
6
6
|
static description = "Удаление статуса сотрудника";
|
|
7
7
|
static examples = [
|
|
8
|
-
"Управление статусом
|
|
9
|
-
"Управление статусом сотрудника:\n $ pachca users update-status",
|
|
10
|
-
"Управление статусом сотрудника:\n $ pachca users remove-status"
|
|
8
|
+
"Управление статусом сотрудника — Удалить статус:\n $ pachca users remove-status"
|
|
11
9
|
];
|
|
12
10
|
static scope = "user_status:write";
|
|
13
11
|
static apiMethod = "DELETE";
|
|
@@ -6,8 +6,7 @@ import * as path from 'node:path';
|
|
|
6
6
|
export default class UsersUpdateAvatar extends BaseCommand {
|
|
7
7
|
static description = "Загрузка аватара сотрудника";
|
|
8
8
|
static examples = [
|
|
9
|
-
"Загрузить аватар
|
|
10
|
-
"Удалить аватар сотрудника:\n $ pachca users remove-avatar"
|
|
9
|
+
"Загрузить аватар сотрудника — Загрузи аватар сотруднику:\n $ pachca users update-avatar"
|
|
11
10
|
];
|
|
12
11
|
static scope = "user_avatar:write";
|
|
13
12
|
static apiMethod = "PUT";
|
|
@@ -48,7 +47,7 @@ export default class UsersUpdateAvatar extends BaseCommand {
|
|
|
48
47
|
path: `/users/${args.user_id}/avatar`,
|
|
49
48
|
formData,
|
|
50
49
|
});
|
|
51
|
-
const responseBody = data;
|
|
50
|
+
const responseBody = (data ?? {});
|
|
52
51
|
const result = responseBody.data ?? responseBody;
|
|
53
52
|
this.output(result);
|
|
54
53
|
}
|