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