Шопинг — чаты (tbank.shopping)¶
Чаты магазина с покупателями: список чатов, история сообщений, отправка сообщений и обмен файлами.
Хост:
secured-openapi.tbank.ru(mTLS,cert) по Bearer-токену.Файлы: загрузка —
application/octet-stream, скачивание — «сырые» байты.Клиенты:
tbank.shopping.ShoppingClient(async) иtbank.shopping.sync.ShoppingClient(sync).
from tbank.shopping import ShoppingClient
from tbank.shopping.models import SendMessageRequest
client = ShoppingClient(
token="business-token",
cert=("client.pem", "client-key.pem"),
)
chats = await client.list_chats(shop_id="SHOP-1")
chat_id = chats.chats[0].chat_id
messages = await client.list_messages("SHOP-1", chat_id, limit=50)
# отправить файл, затем сообщение с этим файлом
uploaded = await client.upload_chat_file(
"SHOP-1", chat_id, pdf_bytes, file_name="invoice.pdf", file_type="application/pdf",
)
await client.send_message("SHOP-1", chat_id, SendMessageRequest(
partner_message_id="pm-1", file_id=uploaded.file_id,
))
# скачать файл из сообщения
content = await client.download_chat_file("SHOP-1", chat_id, uploaded.file_id)
partner_message_id — ключ идемпотентности сообщения на стороне партнёра.
Клиент¶
- class tbank.shopping.aio.ShoppingClient(token, *, base_url=None, sandbox=False, cert=None, verify=True, retry=None, transport=None)[исходный код]¶
Базовые классы:
BaseAsyncClientАсинхронный клиент шопинга (чаты магазина): чаты, сообщения и файлы.
Домен работает на secured-хосте (mTLS, cert) по Bearer-токену. Провод — camelCase.
- Параметры:
token (str)
base_url (Optional[str])
sandbox (bool)
cert (Optional[CertTypes])
verify (VerifyTypes)
retry (Optional[RetryPolicy])
transport (Optional[AsyncTransport])
- async list_chats(shop_id)[исходный код]¶
Список чатов магазина.
- async get_chat(shop_id, chat_id)[исходный код]¶
Карточка чата.
- async list_messages(shop_id, chat_id, *, limit=None, message_id_from=None)[исходный код]¶
Сообщения чата.
- Параметры:
- Тип результата:
- async send_message(shop_id, chat_id, request)[исходный код]¶
Отправить сообщение в чат.
- Параметры:
shop_id (str)
chat_id (str)
request (SendMessageRequest)
- Тип результата:
- async upload_chat_file(shop_id, chat_id, content, *, file_name, file_type)[исходный код]¶
Загрузить файл в чат (octet-stream). Возвращает идентификатор файла.
Модели¶
- class tbank.shopping.models.ShoppingModel[исходный код]¶
Базовые классы:
BaseModelБазовая модель домена: 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.shopping.models.Chat(*, chatId, createdAt, description=None)[исходный код]¶
Базовые классы:
ShoppingModel- 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.shopping.models.ChatList(*, chats=<factory>)[исходный код]¶
Базовые классы:
ShoppingModel- 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.shopping.models.MessageFile(*, id, name, size, mimeType)[исходный код]¶
Базовые классы:
ShoppingModel- 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.shopping.models.MessageAuthor(*, name)[исходный код]¶
Базовые классы:
ShoppingModel- Параметры:
name (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.shopping.models.ChatMessage(*, messageId, author, createdAt, message=None, files=None)[исходный код]¶
Базовые классы:
ShoppingModel- Параметры:
messageId (str)
author (MessageAuthor)
createdAt (datetime)
message (str | None)
files (List[MessageFile] | 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.shopping.models.MessageList(*, messages=<factory>)[исходный код]¶
Базовые классы:
ShoppingModel- Параметры:
messages (List[ChatMessage])
- 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.shopping.models.SendMessageRequest(*, partnerMessageId, text=None, fileId=None)[исходный код]¶
Базовые классы:
ShoppingModelСообщение в чат. Требуется text либо file_id. partner_message_id — ключ идемпотентности на стороне партнёра.
- 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.shopping.models.SendMessageResult(*, messageId, partnerMessageId)[исходный код]¶
Базовые классы:
ShoppingModel- 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.shopping.models.ChatFileUploadResult(*, fileId)[исходный код]¶
Базовые классы:
ShoppingModel- Параметры:
fileId (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].