Для разработчиков

Обзор

Два способа работать с Pachca API типизированно:

  • Готовые SDK — установите пакет и пишите код с автодополнением
  • Генератор — сгенерируйте клиент прямо в своём проекте

Оба варианта автоматически генерируются из одной OpenAPI-спецификации: типизированные методы, retry, пагинация, обработка ошибок.

Готовые SDK

Автоматически обновляются при каждом обновлении спецификации. Исходный код на GitHub.

Генератор

Генерирует типы и клиент из OpenAPI-спецификации прямо в вашем проекте. Сгенерированный код можно закоммитить в репозиторий и добавить генерацию в CI как проверку совместимости с актуальным API. Исходный код на GitHub.

# Генерация из Pachca API (спецификация загружается автоматически)npx -y @pachca/generator --output ./generated --lang typescript # Несколько языковnpx -y @pachca/generator --output ./generated --lang typescript,python,go,kotlin,swift,csharp # Из локального файла или произвольного URLnpx -y @pachca/generator --spec openapi.yaml --output ./generated --lang typescriptnpx -y @pachca/generator --spec https://example.com/openapi.yaml --output ./generated --lang go
ПараметрОписание
--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-токен передаётся один раз при создании клиента

Пример

Получение профиля
import { PachcaClient } from "@pachca/sdk" const client = new PachcaClient("YOUR_TOKEN") const response = await client.profile.getProfile()// → User({ id: number, firstName: string | null, lastName: string | null, nickname: string, email: string | null, phoneNumber: string | null, department: string | null, title: string | null, role: UserRole, suspended: boolean, inviteStatus: InviteStatus, inviterId: number | null, listTags: string[], customProperties: CustomProperty({ id: number, name: string, dataType: CustomPropertyDataType, value: string | null })[], userStatus: UserStatus({ emoji: string, title: string, expiresAt: string | null, isAway: boolean, awayMessage: UserStatusAwayMessage({ text: string }) | null }) | null, bot: boolean, sso: boolean, createdAt: string, lastActivityAt: string | null, timeZone: string | null, imageUrl: string | null })

Токен сотрудника

Бот, который действует от имени сотрудника, получает его токен по OAuth: схема по шагам — в разделе Получение токена. Обмен кода на токен и отзыв токена — методы exchangeToken и revokeToken сервиса oauth, а ссылку для кнопки и пару PKCE собирают функции SDK:

ЯзыкСсылка авторизацииПара PKCE
TypeScriptbuildAuthorizeUrl()await createPkce()
Pythonbuild_authorize_url()create_pkce()
Gopachca.BuildAuthorizeURL()pachca.CreatePKCE()
KotlinPachcaOAuth.buildAuthorizeUrl()PachcaOAuth.createPkce()
SwiftPachcaOAuth.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+ и в браузере.

Сравнение языков

TypeScriptPythonGoKotlinSwiftC#
Пакет@pachca/sdkpachca-sdkgo get ...com.github.pachca:openapiPachcaSDKPachca.Sdk
МенеджерnpmPyPIGo modulesJitPack (Gradle)SPMNuGet
Asyncawaitawait (asyncio)синхронныйsuspend (coroutines)try awaitawait
HTTPfetchhttpxnet/httpKtorURLSessionHttpClient
NamingcamelCasesnake_casePascalCasecamelCasecamelCasePascalCase
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+