CSharp
Типизированный клиент для Pachca API. Работает в .NET 8+ с поддержкой async/await и CancellationToken.
Быстрый старт
Установка
Создание клиента
Получите API-токен в интерфейсе Пачки: Настройки > Автоматизации > API (подробнее — Авторизация).
Первый запрос
Инициализация
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
token | string | — | Bearer-токен для авторизации |
baseUrl | string | https://api.pachca.com/api/shared/v1 | Базовый URL API |
Клиент реализует IDisposable — рекомендуется использовать using для автоматического освобождения ресурсов.
Все методы
| Метод | Метод API |
|---|---|
client.Common.RequestExportAsync() | POSTЭкспорт сообщений |
client.Common.UploadFileAsync() | POSTЗагрузка файла |
client.Common.GetUploadParamsAsync() | POSTПолучение подписи, ключа и других параметров |
client.Common.DownloadExportAsync() | GETСкачать архив экспорта |
client.Common.ListPropertiesAsync() | GETСписок дополнительных полей |
client.Profile.GetTokenInfoAsync() | GETИнформация о токене |
client.Profile.GetProfileAsync() | GETИнформация о профиле |
client.Profile.GetStatusAsync() | GETТекущий статус |
client.Profile.UpdateStatusAsync() | PUTНовый статус |
client.Profile.DeleteStatusAsync() | DELETEУдаление статуса |
client.Users.CreateUserAsync() | POSTСоздать сотрудника |
client.Users.ListUsersAsync() | GETСписок сотрудников |
client.Users.GetUserAsync() | GETИнформация о сотруднике |
client.Users.GetUserStatusAsync() | GETСтатус сотрудника |
client.Users.UpdateUserAsync() | PUTРедактирование сотрудника |
client.Users.UpdateUserStatusAsync() | PUTНовый статус сотрудника |
client.Users.DeleteUserAsync() | DELETEУдаление сотрудника |
client.Users.DeleteUserStatusAsync() | DELETEУдаление статуса сотрудника |
client.GroupTags.CreateTagAsync() | POSTНовый тег |
client.GroupTags.ListTagsAsync() | GETСписок тегов сотрудников |
client.GroupTags.GetTagAsync() | GETИнформация о теге |
client.GroupTags.GetTagUsersAsync() | GETСписок сотрудников тега |
client.GroupTags.UpdateTagAsync() | PUTРедактирование тега |
client.GroupTags.DeleteTagAsync() | DELETEУдаление тега |
client.Chats.CreateChatAsync() | POSTНовый чат |
client.Chats.ListChatsAsync() | GETСписок чатов |
client.Chats.GetChatAsync() | GETИнформация о чате |
client.Chats.UpdateChatAsync() | PUTОбновление чата |
client.Chats.ArchiveChatAsync() | PUTАрхивация чата |
client.Chats.UnarchiveChatAsync() | PUTРазархивация чата |
client.Members.AddTagsAsync() | POSTДобавление тегов |
client.Members.AddMembersAsync() | POSTДобавление пользователей |
client.Members.ListMembersAsync() | GETСписок участников чата |
client.Members.UpdateMemberRoleAsync() | PUTРедактирование роли |
client.Members.RemoveTagAsync() | DELETEИсключение тега |
client.Members.LeaveChatAsync() | DELETEВыход из беседы или канала |
client.Members.RemoveMemberAsync() | DELETEИсключение пользователя |
client.Threads.CreateThreadAsync() | POSTНовый тред |
client.Threads.GetThreadAsync() | GETИнформация о треде |
client.Messages.CreateMessageAsync() | POSTНовое сообщение |
client.Messages.PinMessageAsync() | POSTЗакрепление сообщения |
client.Messages.ListChatMessagesAsync() | GETСписок сообщений чата |
client.Messages.GetMessageAsync() | GETИнформация о сообщении |
client.Messages.UpdateMessageAsync() | PUTРедактирование сообщения |
client.Messages.DeleteMessageAsync() | DELETEУдаление сообщения |
client.Messages.UnpinMessageAsync() | DELETEОткрепление сообщения |
client.ReadMembers.ListReadMembersAsync() | GETСписок прочитавших сообщение |
client.Reactions.AddReactionAsync() | POSTДобавление реакции |
client.Reactions.ListReactionsAsync() | GETСписок реакций |
client.Reactions.RemoveReactionAsync() | DELETEУдаление реакции |
client.LinkPreviews.CreateLinkPreviewsAsync() | POSTUnfurl (разворачивание ссылок) |
client.Search.SearchChatsAsync() | GETПоиск чатов |
client.Search.SearchMessagesAsync() | GETПоиск сообщений |
client.Search.SearchUsersAsync() | GETПоиск сотрудников |
client.Tasks.CreateTaskAsync() | POSTНовое напоминание |
client.Tasks.ListTasksAsync() | GETСписок напоминаний |
client.Tasks.GetTaskAsync() | GETИнформация о напоминании |
client.Tasks.UpdateTaskAsync() | PUTРедактирование напоминания |
client.Tasks.DeleteTaskAsync() | DELETEУдаление напоминания |
client.Views.OpenViewAsync() | POSTОткрытие представления |
client.Bots.GetWebhookEventsAsync() | GETИстория событий |
client.Bots.UpdateBotAsync() | PUTРедактирование бота |
client.Bots.DeleteWebhookEventAsync() | DELETEУдаление события |
client.Security.GetAuditEventsAsync() | GETЖурнал аудита событий |
Запросы
Все методы — асинхронные и возвращают Task<T>.
GET с параметрами:
POST с телом запроса:
Простой вызов по ID:
Пагинация
Методы, возвращающие списки, используют cursor-based пагинацию. Ответ содержит поле Meta.Paginate.NextPage — курсор для следующей страницы.
Ручная пагинация
Автопагинация
Для каждого метода с пагинацией есть *AllAsync() вариант, который автоматически обходит все страницы и возвращает плоский список:
Доступные методы автопагинации:
| Метод | Возвращает |
|---|---|
Security.GetAuditEventsAllAsync() | List<AuditEvent> |
Bots.GetWebhookEventsAllAsync() | List<WebhookEvent> |
Chats.ListChatsAllAsync() | List<Chat> |
GroupTags.ListTagsAllAsync() | List<GroupTag> |
GroupTags.GetTagUsersAllAsync() | List<User> |
Members.ListMembersAllAsync() | List<User> |
Messages.ListChatMessagesAllAsync() | List<Message> |
Reactions.ListReactionsAllAsync() | List<Reaction> |
Search.SearchChatsAllAsync() | List<Chat> |
Search.SearchMessagesAllAsync() | List<Message> |
Search.SearchUsersAllAsync() | List<User> |
Tasks.ListTasksAllAsync() | List<Task> |
Users.ListUsersAllAsync() | List<User> |
Обработка ошибок
SDK выбрасывает два типа исключений:
ApiError
Возникает при ошибках 400, 403, 404, 409, 410, 422:
Поля ApiErrorItem:
| Поле | Тип | Описание |
|---|---|---|
Key | string | Поле, вызвавшее ошибку |
Value | string? | Переданное значение |
Message | string | Текст ошибки |
Code | ValidationErrorCode | Код валидации (Blank, Invalid, Taken, ...) |
Payload | string? | Дополнительные данные |
OAuthError
Возникает при ошибке авторизации (401):
Повторные запросы
SDK автоматически повторяет запрос при получении 429 Too Many Requests и ошибок сервера 5xx:
- До 3 повторов на каждый запрос
- Если сервер вернул заголовок
Retry-After— ждёт указанное время - Иначе — экспоненциальный backoff: 1 сек, 2 сек, 4 сек
- Ошибки клиента (4xx, кроме 429) возвращаются сразу без повторов
Отмена запросов
Все асинхронные методы поддерживают CancellationToken:
Загрузка файлов
Загрузка файла — трёхшаговый процесс:
Сериализация
SDK автоматически конвертирует имена полей между PascalCase (C#) и snake_case (API):
Типы
Все типы доступны из пространства имён Pachca.Sdk: