Go
Типизированный клиент для Pachca API на Go. Синхронный, с контекстами (context.Context), автопагинацией и обработкой retry. Требуется Go 1.24+.
Быстрый старт
Установка
Создание клиента
Получите API-токен в интерфейсе Пачки: Настройки → Автоматизации → API (подробнее — Авторизация).
Первый запрос
Инициализация
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
token | string | — | Bearer-токен для авторизации |
baseURL | ...string | https://api.pachca.com/api/shared/v1 | Базовый URL API (необязательный) |
Все методы принимают context.Context первым аргументом — используйте его для таймаутов и отмены:
Все методы
| Метод | Метод API |
|---|---|
client.Common.RequestExport() | POSTЭкспорт сообщений |
client.Common.UploadFile() | POSTЗагрузка файла |
client.Common.GetUploadParams() | POSTПолучение подписи, ключа и других параметров |
client.Common.DownloadExport() | GETСкачать архив экспорта |
client.Common.ListProperties() | GETСписок дополнительных полей |
client.Profile.GetTokenInfo() | GETИнформация о токене |
client.Profile.GetProfile() | GETИнформация о профиле |
client.Profile.GetStatus() | GETТекущий статус |
client.Profile.UpdateStatus() | PUTНовый статус |
client.Profile.DeleteStatus() | DELETEУдаление статуса |
client.Users.CreateUser() | POSTСоздать сотрудника |
client.Users.ListUsers() | GETСписок сотрудников |
client.Users.GetUser() | GETИнформация о сотруднике |
client.Users.GetUserStatus() | GETСтатус сотрудника |
client.Users.UpdateUser() | PUTРедактирование сотрудника |
client.Users.UpdateUserStatus() | PUTНовый статус сотрудника |
client.Users.DeleteUser() | DELETEУдаление сотрудника |
client.Users.DeleteUserStatus() | DELETEУдаление статуса сотрудника |
client.GroupTags.CreateTag() | POSTНовый тег |
client.GroupTags.ListTags() | GETСписок тегов сотрудников |
client.GroupTags.GetTag() | GETИнформация о теге |
client.GroupTags.GetTagUsers() | GETСписок сотрудников тега |
client.GroupTags.UpdateTag() | PUTРедактирование тега |
client.GroupTags.DeleteTag() | DELETEУдаление тега |
client.Chats.CreateChat() | POSTНовый чат |
client.Chats.ListChats() | GETСписок чатов |
client.Chats.GetChat() | GETИнформация о чате |
client.Chats.UpdateChat() | PUTОбновление чата |
client.Chats.ArchiveChat() | PUTАрхивация чата |
client.Chats.UnarchiveChat() | PUTРазархивация чата |
client.Members.AddTags() | POSTДобавление тегов |
client.Members.AddMembers() | POSTДобавление пользователей |
client.Members.ListMembers() | GETСписок участников чата |
client.Members.UpdateMemberRole() | PUTРедактирование роли |
client.Members.RemoveTag() | DELETEИсключение тега |
client.Members.LeaveChat() | DELETEВыход из беседы или канала |
client.Members.RemoveMember() | DELETEИсключение пользователя |
client.Threads.CreateThread() | POSTНовый тред |
client.Threads.GetThread() | GETИнформация о треде |
client.Messages.CreateMessage() | POSTНовое сообщение |
client.Messages.PinMessage() | POSTЗакрепление сообщения |
client.Messages.ListChatMessages() | GETСписок сообщений чата |
client.Messages.GetMessage() | GETИнформация о сообщении |
client.Messages.UpdateMessage() | PUTРедактирование сообщения |
client.Messages.DeleteMessage() | DELETEУдаление сообщения |
client.Messages.UnpinMessage() | DELETEОткрепление сообщения |
client.ReadMembers.ListReadMembers() | GETСписок прочитавших сообщение |
client.Reactions.AddReaction() | POSTДобавление реакции |
client.Reactions.ListReactions() | GETСписок реакций |
client.Reactions.RemoveReaction() | DELETEУдаление реакции |
client.LinkPreviews.CreateLinkPreviews() | POSTUnfurl (разворачивание ссылок) |
client.Search.SearchChats() | GETПоиск чатов |
client.Search.SearchMessages() | GETПоиск сообщений |
client.Search.SearchUsers() | GETПоиск сотрудников |
client.Tasks.CreateTask() | POSTНовое напоминание |
client.Tasks.ListTasks() | GETСписок напоминаний |
client.Tasks.GetTask() | GETИнформация о напоминании |
client.Tasks.UpdateTask() | PUTРедактирование напоминания |
client.Tasks.DeleteTask() | DELETEУдаление напоминания |
client.Views.OpenView() | POSTОткрытие представления |
client.Bots.GetWebhookEvents() | GETИстория событий |
client.Bots.UpdateBot() | PUTРедактирование бота |
client.Bots.DeleteWebhookEvent() | DELETEУдаление события |
client.Security.GetAuditEvents() | GETЖурнал аудита событий |
Запросы
Все методы — синхронные и возвращают (*T, error).
GET с параметрами:
POST с телом запроса:
Простой вызов по ID:
Указатели для необязательных полей
Для необязательных полей используйте функцию Ptr():
Пагинация
Методы, возвращающие списки, используют cursor-based пагинацию. Ответ содержит Meta.Paginate.NextPage — курсор для следующей страницы.
Ручная пагинация
Автопагинация
Для каждого метода с пагинацией есть *All() вариант:
Доступные методы автопагинации:
| Метод | Возвращает |
|---|---|
Security.GetAuditEventsAll() | []AuditEvent |
Bots.GetWebhookEventsAll() | []WebhookEvent |
Chats.ListChatsAll() | []Chat |
GroupTags.ListTagsAll() | []GroupTag |
GroupTags.GetTagUsersAll() | []User |
Members.ListMembersAll() | []User |
Messages.ListChatMessagesAll() | []Message |
Reactions.ListReactionsAll() | []Reaction |
Search.SearchChatsAll() | []Chat |
Search.SearchMessagesAll() | []Message |
Search.SearchUsersAll() | []User |
Tasks.ListTasksAll() | []Task |
Users.ListUsersAll() | []User |
Обработка ошибок
SDK возвращает два типа ошибок (реализуют интерфейс error):
ApiError
Возникает при ошибках 400, 403, 404, 409, 410, 422:
Поля ApiErrorItem:
| Поле | Тип | Описание |
|---|---|---|
Key | string | Поле, вызвавшее ошибку |
Value | *string | Переданное значение |
Message | string | Текст ошибки |
Code | ValidationErrorCode | Код валидации |
Payload | *string | Дополнительные данные |
OAuthError
Возникает при ошибке авторизации (401):
Повторные запросы
SDK автоматически повторяет запрос при получении 429 Too Many Requests:
- До 3 повторов на каждый запрос
- Если сервер вернул заголовок
Retry-After— ждёт указанное время - Иначе — экспоненциальный backoff: 1 сек, 2 сек, 4 сек
- Тело запроса пересоздаётся через
req.GetBody()при каждой попытке
Типы
Все типы экспортируются из пакета:
Доступные перечисления: AuditEventKey, ChatAvailability, ChatMemberRole, ChatMemberRoleFilter, ChatSubtype, CustomPropertyDataType, FileType, InviteStatus, MemberEventType, MessageEntityType, OAuthScope, ReactionEventType, SearchEntityType, SearchSortOrder, SortOrder, TaskKind, TaskStatus, UserEventType, UserRole, ValidationErrorCode, WebhookEventType.