Обзор
Два способа работать с Pachca API типизированно:
- Готовые SDK — установите пакет и пишите код с автодополнением
- Генератор — сгенерируйте клиент прямо в своём проекте
Оба варианта автоматически генерируются из одной OpenAPI-спецификации: типизированные методы, retry, пагинация, обработка ошибок.
Готовые SDK
Автоматически обновляются при каждом обновлении спецификации. Исходный код на GitHub.
Генератор
Генерирует типы и клиент из OpenAPI-спецификации прямо в вашем проекте. Сгенерированный код можно закоммитить в репозиторий и добавить генерацию в CI как проверку совместимости с актуальным API. Исходный код на GitHub.
| Параметр | Описание |
|---|---|
--spec <path|url> | Путь или URL к OpenAPI 3.0 YAML (по умолчанию: https://dev.pachca.com/openapi.yaml) |
--output <dir> | Директория для сгенерированного кода |
--lang <langs> | Языки через запятую: typescript, python, go, kotlin, swift, csharp |
--examples | Генерировать examples.json с примерами вызовов. Если у тела запроса есть именованные примеры, код каждого из них лежит в поле examples записи метода по ключу примера. |
Возможности
| Возможность | Описание |
|---|---|
| Все методы API | Типизированный метод на каждый метод API |
| Автопагинация | Методы для автоматического обхода всех страниц: *All() в TypeScript, Go, Kotlin и Swift, *_all() в Python, *AllAsync() в C# |
| Повторные запросы | SDK повторяет запросы сам. Паузы между попытками описаны на странице каждого языка, общие правила — в разделе Повторные запросы. |
| Обработка ошибок | Типизированные ApiError и OAuthError |
| Сериализация | Автоматическая конвертация между форматами (snake_case ↔ camelCase) |
| Авторизация | Bearer-токен передаётся один раз при создании клиента |
Пример
Токен сотрудника
Бот, который действует от имени сотрудника, получает его токен по OAuth: схема по шагам — в разделе Получение токена. Обмен кода на токен и отзыв токена — методы exchangeToken и revokeToken сервиса oauth, а ссылку для кнопки и пару PKCE собирают функции SDK:
| Язык | Ссылка авторизации | Пара PKCE |
|---|---|---|
| TypeScript | buildAuthorizeUrl() | await createPkce() |
| Python | build_authorize_url() | create_pkce() |
| Go | pachca.BuildAuthorizeURL() | pachca.CreatePKCE() |
| Kotlin | PachcaOAuth.buildAuthorizeUrl() | PachcaOAuth.createPkce() |
| Swift | PachcaOAuth.buildAuthorizeURL() | PachcaOAuth.createPKCE() |
| C# | PachcaOAuth.BuildAuthorizeUrl() | PachcaOAuth.CreatePkce() |
Ссылка принимает client_id и адрес возврата бота, state и code_challenge из пары, имена параметров — по правилам языка. Она ведёт на экран согласия https://app.pachca.com/apps/authorize, для on-premise передайте адрес экрана своей установки необязательным параметром authorizeUrl. В Python функции импортируются из pachca.client, в TypeScript createPkce() работает в Node.js 20+ и в браузере.
Сравнение языков
| TypeScript | Python | Go | Kotlin | Swift | C# | |
|---|---|---|---|---|---|---|
| Пакет | @pachca/sdk | pachca-sdk | go get ... | com.github.pachca:openapi | PachcaSDK | Pachca.Sdk |
| Менеджер | npm | PyPI | Go modules | JitPack (Gradle) | SPM | NuGet |
| Async | await | await (asyncio) | синхронный | suspend (coroutines) | try await | await |
| HTTP | fetch | httpx | net/http | Ktor | URLSession | HttpClient |
| Naming | camelCase | snake_case | PascalCase | camelCase | camelCase | PascalCase |
| Cleanup | — | await client.close() | — | client.close() | — | client.Dispose() |
| Требования | Node.js 18+ | Python 3.10+ | Go 1.24+ | Kotlin 2.2+, Java 11+ | Swift 5.9+, macOS 13+, iOS 16+ | .NET 8+ |