T-ID (tbank.tid)

T-ID — единая точка входа и идентификации Т-Банка. Пакет закрывает две части:

  1. OAuth 2.0 / OIDC (TidOAuth) — «Войти через Т-Банк»: страница согласия, обмен кода на токены, refresh, introspect, revoke и userinfo на id.tbank.ru.

  2. Data-эндпоинты (TidClient) — учётные данные, документы, адреса, счета, статусы (идентификация, самозанятость, иноагент, ПДЛ, чёрные списки), информация о компании (T-Business ID) и делегированная идентификация на business.tbank.ru/openapi.

  • Хосты: https://id.tbank.ru (OAuth) и https://business.tbank.ru/openapi (данные).

  • Аутентификация: client_secret_basic для OAuth; Bearer self-service токен (скоупы opensme/..., опционально mTLS) для data-эндпоинтов.

  • Провод: snake_case (OAuth, по RFC/OIDC) и camelCase (данные T-API).

  • Клиенты: tbank.tid.TidOAuth / tbank.tid.TidClient (async) и их аналоги в tbank.tid.sync.

Вход через Т-Банк (OAuth 2.0)

from tbank.tid import TidOAuth

oauth = TidOAuth(client_id="...", client_secret="...")

# 1) отправляем пользователя на страницу согласия (можно с PKCE):
url = oauth.build_authorization_url(
    redirect_uri="https://myapp.ru/auth/complete",
    scope=["openid", "phone", "profile"],
    state="csrf-token",
    code_challenge="...",           # опционально, метод по умолчанию S256
)

# 2) на redirect_uri прилетают code и state → меняем код на токены:
token = await oauth.fetch_token("the-code", "https://myapp.ru/auth/complete")
print(token.access_token, token.refresh_token, token.expires_in)

# 3) проверяем выданные скоупы и получаем данные пользователя:
intro = await oauth.introspect(token.access_token)
assert intro.active and "phone" in intro.scopes
user = await oauth.get_userinfo(token.access_token)
print(user.sub, user.phone_number)

# обновление и отзыв:
fresh = await oauth.refresh_token(token.refresh_token)
await oauth.revoke(token.refresh_token)

client_credentials-поток (сервис-сервис) — fetch_client_credentials_token(scope=...).

Учётные данные и документы

from tbank.tid import TidClient
from tbank.tid.enums import IdDocumentType

async with TidClient(token="self-service-token") as client:
    user = await client.get_userinfo()          # ФИО, телефон, пол, дата рождения
    inn = await client.get_inn()
    snils = await client.get_snils()
    passport = await client.get_passport([IdDocumentType.PASSPORT])
    licenses = await client.get_driver_licenses()
    addresses = await client.get_addresses("REGISTRATION_ADDRESS")
    accounts = await client.get_debit_accounts()

Статусы физлица

await client.get_identification_status()   # is_identified
await client.get_self_employed_status()    # is_self_employed
await client.get_foreign_agent_status()    # is_foreign_agent
await client.get_pdl_status()              # публичное должностное лицо
await client.get_blacklist_status()        # чёрные списки

Компания (T-Business ID)

company = await client.get_company()               # реквизиты, банк, статус, СНО
signer = await client.get_signer_status()          # is_signer

Кобренд, счётчики и подписки

await client.get_cobrand(program_id=42)
await client.get_detail_counters()
await client.set_detail_counters(SetCounterRequest(count=5))
await client.get_subscription()                    # тип активной подписки
await client.get_subscription_grade()              # код подписки + грейд

Делегированная идентификация

await client.get_delegated_identification()                 # паспорт, адрес, флаги
await client.get_personal_data("request-uuid")              # app-сценарий
await client.get_remote_identification_result("res-secret") # web-сценарий

Примечание

Data-эндпоинты вызываются в максимальной доступной версии (v2 там, где она есть; иначе v1). Схемы v1 и v2 идентичны.

Клиенты

class tbank.tid.aio.TidOAuth(client_id, client_secret, *, client=None, timeout=30.0)[исходный код]

Базовые классы: _OAuthBase

Асинхронный OAuth 2.0 / OIDC клиент T-ID (id.tbank.ru): вход и токены.

Параметры:
  • client_id (str)

  • client_secret (str)

  • client (Optional[httpx.AsyncClient])

  • timeout (float)

async fetch_token(code, redirect_uri, *, code_verifier=None)[исходный код]

Обменять authorization code на access/refresh токены.

Параметры:
  • code (str)

  • redirect_uri (str)

  • code_verifier (str | None)

Тип результата:

TokenResponse

async refresh_token(refresh_token)[исходный код]

Обновить access-токен по refresh-токену.

Параметры:

refresh_token (str)

Тип результата:

TokenResponse

async fetch_client_credentials_token(scope=None)[исходный код]

Получить токен по client_credentials (сервис-сервис).

Параметры:

scope (str | Sequence[str] | None)

Тип результата:

TokenResponse

async introspect(token)[исходный код]

Проверить токен и получить его скоупы/claim’ы (RFC 7662).

Параметры:

token (str)

Тип результата:

IntrospectionResponse

async revoke(token, *, token_type_hint=None)[исходный код]

Отозвать access- или refresh-токен (RFC 7009).

Параметры:
Тип результата:

None

async get_userinfo(access_token)[исходный код]

Claim’ы пользователя из userinfo-эндпоинта по access-токену.

Параметры:

access_token (str)

Тип результата:

OidcUserInfo

class tbank.tid.aio.TidClient(token, *, base_url=None, cert=None, verify=True, retry=None, transport=None)[исходный код]

Базовые классы: BaseAsyncClient

Асинхронный клиент data-эндпоинтов T-ID (business.tbank.ru/openapi).

Аутентификация — Bearer self-service токен со скоупами opensme/... (опционально mTLS-сертификат передаётся в cert). Для OAuth-потока входа используйте TidOAuth.

Параметры:
async get_company()[исходный код]

Информация о компании: реквизиты, банк, статус.

Тип результата:

CompanyInfo

async get_signer_status()[исходный код]

Является ли пользователь подписантом компании.

Тип результата:

SignerStatus

async get_userinfo()[исходный код]

Учётные данные пользователя (ФИО, телефон, пол, дата рождения).

Тип результата:

UserAccountInfo

async get_inn()[исходный код]

ИНН физлица.

Тип результата:

InnResponse

async get_snils()[исходный код]

СНИЛС физлица.

Тип результата:

SnilsResponse

async get_passport(id_type=None)[исходный код]

Паспортные данные (опционально фильтр по типам документа).

Параметры:

id_type (List[IdDocumentType] | None)

Тип результата:

PassportData

async get_driver_licenses()[исходный код]

Водительские удостоверения.

Тип результата:

DriverLicensesResponse

async get_addresses(address_type=None)[исходный код]

Адреса физлица (опционально фильтр по типу адреса).

Параметры:

address_type (str | None)

Тип результата:

AddressesResponse

async get_debit_accounts()[исходный код]

Активные дебетовые счета клиента.

Тип результата:

DebitAccountsResponse

async get_identification_status()[исходный код]

Идентифицирован ли пользователь.

Тип результата:

IdentificationStatus

async get_self_employed_status()[исходный код]

Статус самозанятого.

Тип результата:

SelfEmployedStatus

async get_foreign_agent_status()[исходный код]

Признак иностранного агента.

Тип результата:

ForeignAgentStatus

async get_pdl_status()[исходный код]

Признак публичного должностного лица.

Тип результата:

PdlStatus

async get_blacklist_status()[исходный код]

Наличие в чёрных списках.

Тип результата:

BlacklistStatus

async get_cobrand(program_id)[исходный код]

Признак кобренда по идентификатору программы.

Параметры:

program_id (int)

Тип результата:

CobrandResponse

async get_detail_counters()[исходный код]

Значение счётчика услуги клиента.

Тип результата:

DetailCounters

async set_detail_counters(request)[исходный код]

Изменить значение счётчика услуги клиента.

Параметры:

request (SetCounterRequest)

Тип результата:

SetCounterResponse

async get_subscription()[исходный код]

Активная подписка клиента.

Тип результата:

SubscriptionResponse

async get_subscription_grade()[исходный код]

Код активной главной подписки и грейд клиента.

Тип результата:

SubscriptionGrade

async get_delegated_identification()[исходный код]

Провести делегированную идентификацию (паспорт, адрес, флаги).

Тип результата:

DelegatedIdentification

async get_personal_data(request_id)[исходный код]

Результат удалённой идентификации в app-сценарии по requestId.

Параметры:

request_id (str)

Тип результата:

IdentificationData

async get_remote_identification_result(res_secret)[исходный код]

Результат удалённой идентификации в web-сценарии по resSecret.

Параметры:

res_secret (str)

Тип результата:

IdentificationData

Модели

class tbank.tid.models.TidModel[исходный код]

Базовые классы: BaseModel

Базовая модель данных T-ID: snake_case в Python, camelCase на проводе.

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.CompanyRequisites(*, fullName, foreignName=None, address, legalAddress, inn, kpp=None, ogrn=None)[исходный код]

Базовые классы: TidModel

Параметры:
  • fullName (str)

  • foreignName (str | None)

  • address (str)

  • legalAddress (str)

  • inn (str)

  • kpp (str | None)

  • ogrn (str | None)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.CompanyBank(*, bankName, bankAddress, corrAccount, bankInn, bankBic)[исходный код]

Базовые классы: TidModel

Параметры:
  • bankName (str)

  • bankAddress (str)

  • corrAccount (str)

  • bankInn (str)

  • bankBic (str)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.CompanyInfo(*, name, city, requisites, bank, legalStatus, registrationDate=None, opf=None, taxationScheme=None)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.SignerStatus(*, isSigner)[исходный код]

Базовые классы: TidModel

Параметры:

isSigner (bool)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.UserAccountInfo(*, sub, phoneNumber=None, givenName=None, middleName=None, familyName=None, gender=None, birthDate=None)[исходный код]

Базовые классы: TidModel

Учётные данные пользователя (userinfo T-ID data endpoint).

Параметры:
  • sub (str)

  • phoneNumber (str | None)

  • givenName (str | None)

  • middleName (str | None)

  • familyName (str | None)

  • gender (str | None)

  • birthDate (date | None)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.InnResponse(*, inn=None)[исходный код]

Базовые классы: TidModel

Параметры:

inn (str | None)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.SnilsResponse(*, snils=None)[исходный код]

Базовые классы: TidModel

Параметры:

snils (str | None)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.PassportData(*, birthDate=None, birthPlace=None, citizenship=None, issueDate=None, maritalStatus=None, marriageDate=None, numberOfChildren=None, resident=None, serialNumber=None, unitCode=None, unitName=None, validTo=None, idType=None)[исходный код]

Базовые классы: TidModel

Параметры:
  • birthDate (date | None)

  • birthPlace (str | None)

  • citizenship (str | None)

  • issueDate (date | None)

  • maritalStatus (str | None)

  • marriageDate (date | None)

  • numberOfChildren (int | None)

  • resident (bool | None)

  • serialNumber (str | None)

  • unitCode (str | None)

  • unitName (str | None)

  • validTo (date | None)

  • idType (IdDocumentType | None)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.DriverLicense(*, docNumber, issueDate=None)[исходный код]

Базовые классы: TidModel

Параметры:
  • docNumber (str)

  • issueDate (date | None)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.DriverLicensesResponse(*, licenses=<factory>)[исходный код]

Базовые классы: TidModel

Параметры:

licenses (List[DriverLicense])

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.Address(*, addressType, primary, apartment=None, building=None, city=None, claddrCode=None, country=None, district=None, fiasCode=None, house=None, housing=None, latitude=None, longitude=None, region=None, settlement=None, street=None, zipCode=None)[исходный код]

Базовые классы: TidModel

Параметры:
  • addressType (AddressType)

  • primary (bool)

  • apartment (str | None)

  • building (str | None)

  • city (str | None)

  • claddrCode (str | None)

  • country (str | None)

  • district (str | None)

  • fiasCode (str | None)

  • house (str | None)

  • housing (str | None)

  • latitude (float | None)

  • longitude (float | None)

  • region (str | None)

  • settlement (str | None)

  • street (str | None)

  • zipCode (str | None)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.AddressesResponse(*, addresses=<factory>)[исходный код]

Базовые классы: TidModel

Параметры:

addresses (List[Address])

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.DebitAccountBank(*, bik, corAccount, name)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.DebitAccount(*, name, accountNumber, bank)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.DebitAccountsResponse(*, accounts=<factory>)[исходный код]

Базовые классы: TidModel

Параметры:

accounts (List[DebitAccount])

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.IdentificationStatus(*, isIdentified)[исходный код]

Базовые классы: TidModel

Параметры:

isIdentified (bool)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.SelfEmployedStatus(*, isSelfEmployed)[исходный код]

Базовые классы: TidModel

Параметры:

isSelfEmployed (bool)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.ForeignAgentStatus(*, isForeignAgent)[исходный код]

Базовые классы: TidModel

Параметры:

isForeignAgent (bool)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.PdlStatus(*, isPublicOfficialPerson)[исходный код]

Базовые классы: TidModel

Параметры:

isPublicOfficialPerson (bool)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.BlacklistStatus(*, isBlacklisted)[исходный код]

Базовые классы: TidModel

Параметры:

isBlacklisted (bool)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.CobrandAccount(*, cardType, loyaltyId=None)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.CobrandResponse(*, programStatus, accounts=<factory>)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.CounterClientInfo(*, grade, isFulfillConditions)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.CounterPeriod(*, validFrom, validUntil, repeatability)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.CounterInfo(*, count, isInfinity, period)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.DetailCounters(*, clientInfo, counterInfo)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.SetCounterExtraFields(*, description)[исходный код]

Базовые классы: TidModel

Параметры:

description (str)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.SetCounterRequest(*, count, extraFields=None, requestId=None)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.SetCounterResponse(*, count, isInfinity)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.SubscriptionResponse(*, type)[исходный код]

Базовые классы: TidModel

Параметры:

type (BundleCode)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.SubscriptionGrade(*, bundleCode=None, gradeCode=None)[исходный код]

Базовые классы: TidModel

Параметры:
  • bundleCode (str | None)

  • gradeCode (str | None)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.DelegatedIdentification(*, dateTimeDelegatedIdentified, sub, phoneNumber, familyName, givenName, passportBirthDate, issueDate, serialNumber, unitCode, unitName, idType, addressType, middleName=None, apartment=None, city=None, claddrCode=None, country=None, fiasCode=None, house=None, latitude=None, longitude=None, isPrimary=None, region=None, street=None, zipCode=None, inn=None, snils=None, isForeignAgent=None, isPublicOfficialPerson=None, isBlacklisted=None)[исходный код]

Базовые классы: TidModel

Параметры:
  • dateTimeDelegatedIdentified (datetime)

  • sub (str)

  • phoneNumber (str)

  • familyName (str)

  • givenName (str)

  • passportBirthDate (date)

  • issueDate (date)

  • serialNumber (str)

  • unitCode (str)

  • unitName (str)

  • idType (str)

  • addressType (str)

  • middleName (str | None)

  • apartment (str | None)

  • city (str | None)

  • claddrCode (str | None)

  • country (str | None)

  • fiasCode (str | None)

  • house (str | None)

  • latitude (float | None)

  • longitude (float | None)

  • isPrimary (bool | None)

  • region (str | None)

  • street (str | None)

  • zipCode (str | None)

  • inn (str | None)

  • snils (str | None)

  • isForeignAgent (bool | None)

  • isPublicOfficialPerson (bool | None)

  • isBlacklisted (bool | None)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.IdentificationAddress(*, addressType=None, country=None, region=None, district=None, city=None, settlement=None, street=None, house=None, housing=None, building=None, apartment=None, zipCode=None, claddrCode=None, fiasCode=None, latitude=None, longitude=None, isPrimary=None)[исходный код]

Базовые классы: TidModel

Параметры:
  • addressType (AddressType | None)

  • country (str | None)

  • region (str | None)

  • district (str | None)

  • city (str | None)

  • settlement (str | None)

  • street (str | None)

  • house (str | None)

  • housing (str | None)

  • building (str | None)

  • apartment (str | None)

  • zipCode (str | None)

  • claddrCode (str | None)

  • fiasCode (str | None)

  • latitude (float | None)

  • longitude (float | None)

  • isPrimary (bool | None)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.IdentificationDocument(*, documentType=None, serNo=None, issuedBy=None, issueDate=None, subdivisionCode=None, documentCheckStatus=None)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.PersonalInfo(*, firstName=None, lastName=None, middleName=None, birthDate=None, address=None, document=<factory>, phone=None, inn=None, snils=None, sub=None)[исходный код]

Базовые классы: TidModel

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.IdentificationData(*, result=None, personalInfo=None)[исходный код]

Базовые классы: TidModel

Результат удалённой идентификации (web/app сценарии).

Параметры:
model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.RemoteIdentificationRequest(*, resSecret)[исходный код]

Базовые классы: TidModel

Параметры:

resSecret (str)

model_config = {'alias_generator': <function to_camel>, 'extra': 'ignore', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.OAuthModel(*, raw=<factory>)[исходный код]

Базовые классы: BaseModel

Базовая модель OAuth-ответа: snake_case; полный сырой ответ — в raw.

Параметры:

raw (Dict[str, Any])

model_config = {'extra': 'ignore'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.TokenResponse(*, raw=<factory>, access_token, token_type, expires_in=None, refresh_token=None, refresh_expires_in=None, id_token=None, scope=None)[исходный код]

Базовые классы: OAuthModel

Параметры:
  • raw (Dict[str, Any])

  • access_token (str)

  • token_type (str)

  • expires_in (int | None)

  • refresh_token (str | None)

  • refresh_expires_in (int | None)

  • id_token (str | None)

  • scope (str | None)

model_config = {'extra': 'ignore'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.IntrospectionResponse(*, raw=<factory>, active, scope=None, client_id=None, token_type=None, exp=None, iat=None, sub=None, aud=None, iss=None, jti=None)[исходный код]

Базовые классы: OAuthModel

Ответ /auth/introspect (RFC 7662). Кастомные claim’ы — в model_extra.

Параметры:
property scopes: List[str]

Скоупы токена списком (пусто, если токен неактивен).

model_config = {'extra': 'ignore'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class tbank.tid.models.OidcUserInfo(*, raw=<factory>, sub, name=None, given_name=None, family_name=None, middle_name=None, phone_number=None, email=None, birthdate=None, gender=None)[исходный код]

Базовые классы: OAuthModel

Claim’ы пользователя из userinfo-эндпоинта id.tbank.ru.

Параметры:
  • raw (Dict[str, Any])

  • sub (str)

  • name (str | None)

  • given_name (str | None)

  • family_name (str | None)

  • middle_name (str | None)

  • phone_number (str | None)

  • email (str | None)

  • birthdate (str | None)

  • gender (str | None)

model_config = {'extra': 'ignore'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Перечисления

class tbank.tid.enums.AddressType(*values)[исходный код]

Базовые классы: str, Enum

Тип адреса физлица.

RESIDENCE = 'RESIDENCE_ADDRESS'
REGISTRATION = 'REGISTRATION_ADDRESS'
WORK = 'WORK_ADDRESS'
DELIVERY = 'DELIVERY_ADDRESS'
class tbank.tid.enums.IdDocumentType(*values)[исходный код]

Базовые классы: str, Enum

Тип документа, удостоверяющего личность.

PASSPORT = 'PASSPORT'
FOREIGN_PASSPORT = 'FOREIGN_PASSPORT'
FOREIGN_INTERNATIONAL_PASSPORT = 'FOREIGN_INTERNATIONAL_PASSPORT'
RF_INTERNATIONAL_PASSPORT = 'RF_INTERNATIONAL_PASSPORT'
BIRTH_CERTIFICATE = 'BIRTH_CERTIFICATE'
RF_RESIDENCE_PERMIT = 'RF_RESIDENCE_PERMIT'
class tbank.tid.enums.DocumentCheckStatus(*values)[исходный код]

Базовые классы: str, Enum

Результат проверки документа при удалённой идентификации.

NOT_CHECKED = 'NOT_CHECKED'
VALID = 'VALID'
INVALID = 'INVALID'
class tbank.tid.enums.IdentificationResult(*values)[исходный код]

Базовые классы: str, Enum

Итог удалённой идентификации.

SUCCESS = 'SUCCESS'
FAILED = 'FAILED'
class tbank.tid.enums.TaxationScheme(*values)[исходный код]

Базовые классы: str, Enum

Система налогообложения компании.

USN_INCOMES = 'USN_INCOMES'
USN_INCOMES_MINUS_EXPENSES = 'USN_INCOMES_MINUS_EXPENSES'
AUSN_INCOMES_MINUS_EXPENSES = 'AUSN_INCOMES_MINUS_EXPENSES'
AUSN_INCOMES = 'AUSN_INCOMES'
OSNO = 'OSNO'
NPD = 'NPD'
ESHN = 'ESHN'
ENVD = 'ENVD'
class tbank.tid.enums.LegalStatus(*values)[исходный код]

Базовые классы: str, Enum

Правовой статус компании.

ACTIVE = 'active'
LIQUIDATING = 'liquidating'
LIQUIDATED = 'liquidated'
BANKRUPTING = 'bankrupting'
BANKRUPTED = 'bankrupted'
UNKNOWN = 'unknown'
class tbank.tid.enums.Grade(*values)[исходный код]

Базовые классы: str, Enum

Грейд клиента (уровень программы привилегий).

NONE = 'NONE'
FIRST = 'FIRST'
SECOND = 'SECOND'
THIRD = 'THIRD'
FOURTH = 'FOURTH'
class tbank.tid.enums.CounterRepeatability(*values)[исходный код]

Базовые классы: str, Enum

Периодичность обнуления счётчика услуги.

MONTH = 'MONTH'
YEAR = 'YEAR'
class tbank.tid.enums.BundleCode(*values)[исходный код]

Базовые классы: str, Enum

Тип активной подписки.

PRO = 'PRO'
PREMIUM = 'PREMIUM'
PRIVATE = 'PRIVATE'
TEAM_PRO = 'TEAM_PRO'
TEAM_SELECT = 'TEAM_SELECT'
TEAM_PREMIUM = 'TEAM_PREMIUM'
TEAM_PRIVATE = 'TEAM_PRIVATE'
DEFAULT = 'DEFAULT'
class tbank.tid.enums.CardType(*values)[исходный код]

Базовые классы: str, Enum

Тип карты — кредитная или дебетовая.

CREDIT = 'CREDIT'
DEBIT = 'DEBIT'
class tbank.tid.enums.GrantType(*values)[исходный код]

Базовые классы: str, Enum

Тип OAuth 2.0 grant при обмене на токен.

AUTHORIZATION_CODE = 'authorization_code'
REFRESH_TOKEN = 'refresh_token'
CLIENT_CREDENTIALS = 'client_credentials'
class tbank.tid.enums.TokenTypeHint(*values)[исходный код]

Базовые классы: str, Enum

Подсказка серверу о типе отзываемого токена (RFC 7009).

ACCESS_TOKEN = 'access_token'
REFRESH_TOKEN = 'refresh_token'