◆ Sapport для разработчиков Справочник API Каталог ошибок OpenAPI
Разделы

Аккаунт

Методов в разделе: 2. Все методы

МетодПутьОписаниеОбластиСтатус
GET/meКто я—Доступно
GET/walletКошелёк и состояние обмена—Доступно
GET /me Доступно

#Кто я

Возвращает арендатора, интеграцию, ключ с действующими областями, пределы частоты и состояние кошелька. Областей не требует: нужен лишь действующий ключ. Удобно для проверки подключения и для выбора ячейки.

Области
не требуются, нужен действующий ключ
Предел частоты
чтение
Идемпотентность
не требуется
Успешный ответ
200 Описание ключа и аккаунта.

Тело ответа

ПолеТипОписание
tenantobject
обязательное
Арендатор — владелец ключа.
tenant.idstring
обязательное
tenant.namestring
обязательное
cellstring
обязательное
Ячейка платформы: ru, en или id.
Значения: ru en id
base_urlstring
обязательное
Базовый адрес API этой ячейки.
integrationobject
обязательное
Интеграция (служебная учётная запись), которой принадлежит ключ.
integration.idstring
обязательное
integration.namestring
обязательное
channel_idstring
обязательное, может быть null
Канал "api" интеграции; null — канал ещё не создан.
keyobject
обязательное
key.key_idstring
обязательное
Публичный идентификатор ключа (не секрет).
key.modestring
обязательное

Значения: live test
key.scopesarray<string>
обязательное
Действующие области: область интеграции ∩ текущие права владельца ∩ лицензия.
Значения: conversations:read conversations:write ai_seller:invoke leads:read leads:write leads:score analytics:read analytics:write dashboards:read articles:read articles:write articles:generate strategist:read strategist:write strategist:chat webhooks:manage
key.expires_atstring
обязательное
Срок действия ключа, ISO 8601 UTC.
key.ip_allowlistarray<string>
обязательное, может быть null
Разрешённые адреса и сети (CIDR); null — любой адрес.
limitsobject
обязательное
Пределы частоты запросов.
limits.read_per_mininteger
обязательное
limits.write_per_mininteger
обязательное
limits.paid_per_mininteger
обязательное
limits.paid_concurrencyinteger
обязательное
Одновременных платных операций на арендатора.
walletobject
обязательное
Кошелёк арендатора (ИИ-операции).
wallet.balanceMoney
обязательное, может быть null
Остаток кошелька в рублях; null — состояние неизвестно или арендатор не тарифицируется.
wallet.statestring
обязательное
ok — достаточно; low — мало средств; negative — остаток ниже нуля; blocked — кошелёк заблокирован; unknown — состояние получить не удалось. Подробности — GET /wallet.
Значения: ok low negative blocked unknown
wallet.exchangestring
обязательное
suspended при negative и blocked: все маршруты, кроме /me и /wallet, отвечают 402 wallet_suspended.
Значения: active suspended
wallet.topup_urlstring
обязательное
Адрес кабинета, где пополняется кошелёк.
wallet.daily_spendobject
обязательное
wallet.daily_spend.limitMoney
обязательное, может быть null
Суточный предел трат интеграции; null — не задан.
wallet.daily_spend.usedMoney
обязательное
crm_modestring
обязательное
Режим CRM арендатора: "internal" (наша CRM) или внешняя система.

Примеры

Запрос
curl -X GET 'https://wfacademy.org/api/public/v1/me' \
  -H 'Authorization: Bearer '"$SAPPORT_API_KEY"
Ответ 200
{
  "tenant": {
    "id": "EXAMPLE_ID",
    "name": "string"
  },
  "cell": "ru",
  "base_url": "https://example.com/hooks/sapport",
  "integration": {
    "id": "EXAMPLE_ID",
    "name": "string"
  },
  "channel_id": "EXAMPLE_ID",
  "key": {
    "key_id": "EXAMPLE_ID",
    "mode": "live",
    "scopes": [
      "conversations:read"
    ],
    "expires_at": "2026-10-11T09:00:00Z",
    "ip_allowlist": [
      "string"
    ]
  },
  "limits": {
    "read_per_min": 0,
    "write_per_min": 0,
    "paid_per_min": 0,
    "paid_concurrency": 0
  },
  "wallet": {
    "balance": {
      "amount": null,
      "currency": null
    },
    "state": "ok",
    "exchange": "active",
    "topup_url": "https://example.com/hooks/sapport",
    "daily_spend": {
      "limit": null,
      "used": {
        "amount": null,
        "currency": null
      }
    }
  },
  "crm_mode": "string"
}
Пример ошибки
{
  "type": "https://wfacademy.org/developers/errors#invalid_api_key",
  "title": "Invalid API key",
  "status": 401,
  "code": "invalid_api_key",
  "detail": "EXAMPLE",
  "request_id": "req_EXAMPLE"
}

Примеры иллюстративны: ключ в них условный (EXAMPLE), значения полей выдуманы.

Возможные ошибки

invalid_api_key wrong_cell integration_inactive tenant_inactive ip_not_allowed feature_not_in_plan rate_limited service_unavailable internal_error

GET /wallet Доступно

#Кошелёк и состояние обмена

Возвращает остаток кошелька арендатора, его состояние (ok, low, negative, blocked, unknown), признак остановки обмена и адрес пополнения. Областей не требует и работает даже при остановленном обмене: именно здесь видно, почему остальные маршруты отвечают 402 wallet_suspended. Остаток меньше нуля или заблокированный кошелёк останавливают обмен; после пополнения он возобновляется сам в течение 30 секунд.

Области
не требуются, нужен действующий ключ
Предел частоты
чтение
Идемпотентность
не требуется
Успешный ответ
200 Состояние кошелька.

Тело ответа

ПолеТипОписание
balanceMoney
обязательное, может быть null
Остаток кошелька в рублях (кошелёк ведётся в RUB на любой ячейке); null — состояние неизвестно или арендатор не тарифицируется.
statestring
обязательное
ok — достаточно; low — мало средств (обмен идёт); negative — остаток ниже нуля; blocked — кошелёк заблокирован; unknown — состояние получить не удалось.
Значения: ok low negative blocked unknown
exchangestring
обязательное
suspended при negative и blocked: все маршруты, кроме /me и /wallet, отвечают 402 wallet_suspended, вебхуки откладываются. При unknown остаётся active: бесплатное чтение идёт с заголовком Sapport-Wallet-State: unknown, платные операции закрыты (503).
Значения: active suspended
topup_urlstring
обязательное
Адрес кабинета, где пополняется кошелёк (нужен вход сотрудника с правом пополнения).
daily_spendobject
обязательное, может быть null
Суточные траты интеграции; null, пока расход по интеграции не учитывается.
daily_spend.limitMoney
обязательное, может быть null
Суточный предел трат интеграции; null — не задан.
daily_spend.usedMoney
обязательное

Примеры

Запрос
curl -X GET 'https://wfacademy.org/api/public/v1/wallet' \
  -H 'Authorization: Bearer '"$SAPPORT_API_KEY"
Ответ 200
{
  "balance": {
    "amount": "123.45",
    "currency": "GBP"
  },
  "state": "ok",
  "exchange": "active",
  "topup_url": "https://example.com/hooks/sapport",
  "daily_spend": {
    "limit": null,
    "used": {
      "amount": null,
      "currency": null
    }
  }
}
Пример ошибки
{
  "type": "https://wfacademy.org/developers/errors#invalid_api_key",
  "title": "Invalid API key",
  "status": 401,
  "code": "invalid_api_key",
  "detail": "EXAMPLE",
  "request_id": "req_EXAMPLE"
}

Примеры иллюстративны: ключ в них условный (EXAMPLE), значения полей выдуманы.

Возможные ошибки

invalid_api_key wrong_cell integration_inactive tenant_inactive ip_not_allowed feature_not_in_plan rate_limited service_unavailable internal_error