Skip to content

AsyncITDClient

PARAMETER DESCRIPTION
refresh_token

refresh токен, если не указан, можно отправить запрос только на ендпоинты, не требующие авторизации

TYPE: str DEFAULT: ''

timeout

таймаут запросов

TYPE: int DEFAULT: 10

file_upload_timeout

таймаут на загрузку файла

TYPE: int DEFAULT: 60

client

Если нужно создать несколько AsyncITDClient с одним клиентом httpx.AsyncClient. Если указан: AsyncITDClient.close() не будет закрывать httpx.AsyncClient

TYPE: AsyncClient DEFAULT: None

domain

Домен запросов

TYPE: str DEFAULT: 'xn--d1ah4a.com'

Examples:

refresh_token = "ВАШ ТОКЕН"
async with AsyncITDClient(refresh_token) as client:
    await client.get_posts()
    has_more, notifications = await client.get_notifications()

Без токена:

async with AsyncITDClient() as client:
    hashtags = await client.search_hashtags('1')

Без with:

client = AsyncITDClient("ВАШ ТОКЕН")
...
await client.close()

timeout

timeout = timeout

file_upload_timeout

file_upload_timeout = file_upload_timeout

client

client = client

refresh_token

refresh_token = refresh_token

domain

domain = domain

close

close() -> None

Закрывает httpx сессию.

Examples:

client = AsyncITDClient(...)
...
await client.close()

hashtag_ref

hashtag_ref(hashtag_name: str) -> HashtagRef

file_ref

file_ref(file_id: UUID | str) -> FileRef

notification_ref

notification_ref(
    notification_id: UUID | str,
) -> NotificationRef

post_ref

post_ref(post_id: UUID | str) -> PostRef

comment_ref

comment_ref(comment_id: UUID | str) -> CommentRef

user_ref

user_ref(username_or_id: UUID | str) -> UserRef

refresh

refresh(**kwargs) -> None

Обновить access_token

RAISES DESCRIPTION
TokenNotFoundError

Такого токена не существует

TokenRevokedError

Токен отозван

TokenMissingError

Токен не указан (равен пустой строке)

TokenExpiredError

Токен истёк

is_token_expired

is_token_expired() -> bool

Просрочен ли access токен

auth_required

auth_required(
    func: Callable[P, Awaitable[T]],
) -> Callable[P, Awaitable[T]]

logout

logout(**kwargs) -> None

Выйти из аккаунта, отозвать refresh токен. Работает при любом токене: просроченном, не существующим, пустой строкой.

change_password

change_password(
    old_password: str, new_password: str, **kwargs
) -> None

Поменять пароль. При успешной смене пароля refresh_token отзывается.

PARAMETER DESCRIPTION
old_password

старый пароль

TYPE: str

new_password

новый пароль

TYPE: str

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

InvalidPasswordError

Пароль не подходит под условия

InvalidOldPasswordError

Указан неверный старый пароль

SomePasswordError

Новый пароль должен отличать от старого

get_me_uuid

get_me_uuid() -> UUID

Получить uuid из access токена

search_hashtags

search_hashtags(
    query: str, limit: int = 20, **kwargs
) -> list[Hashtag]

Поиск хештегов.

PARAMETER DESCRIPTION
query

текст запроса (len(query) <= 100)

TYPE: str

limit

максимальное количество выданных хештегов (1 <= limit <= 100)

TYPE: int DEFAULT: 20

RETURNS DESCRIPTION
list[Hashtag]

Список найденных хештегов

get_trending_hashtags(
    limit: int = 10, **kwargs
) -> list[Hashtag]

Получить самые популярные хештеги.

PARAMETER DESCRIPTION
limit

максимальное количество выданных хештегов (1 <= limit <= 50)

TYPE: int DEFAULT: 10

RETURNS DESCRIPTION
list[Hashtag]

Список самых популярных хештегов

get_posts_by_hashtag

get_posts_by_hashtag(
    hashtag_name: Union[str, HashtagRef],
    cursor: str | None = None,
    limit: int = 20,
    **kwargs,
) -> tuple[
    Hashtag, Pagination, list[tuple[list[Comment], Post]]
]

Посты по хештегу.

PARAMETER DESCRIPTION
hashtag_name

текст хештега или HashtagRef

TYPE: Union[str, HashtagRef]

cursor

next_cursor предыдущей страницы

TYPE: str | None DEFAULT: None

limit

максимальное количество выданных постов (1 <= limit <= 50)

TYPE: int DEFAULT: 20

RETURNS DESCRIPTION
tuple[Hashtag, Pagination, list[tuple[list[Comment], Post]]]

хештег, пагинация, список из постов и их комментариев

RAISES DESCRIPTION
NotFoundError

Хештег не найден

get_notifications

get_notifications(
    offset: int = 0, limit: int = 30, **kwargs
) -> tuple[bool, list[Notification]]

Получить уведомления.

PARAMETER DESCRIPTION
offset

сдвиг

TYPE: int DEFAULT: 0

limit

максимально количество уведомлений в ответе

TYPE: int DEFAULT: 30

RETURNS DESCRIPTION
tuple[bool, list[Notification]]

bool есть ли ещё уведомления, list[Notification] список уведомлений

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

ITDError

offset >= 0

read_batch_notifications

read_batch_notifications(
    notifications_ids: list[
        Union[UUID, str, NotificationRef]
    ],
    **kwargs,
) -> int

Пометить прочитанными несколько уведомлений.

PARAMETER DESCRIPTION
notifications_ids

список UUID уведомлений (можно передавать как UUID, так и строки, а также NotificationRef) (len(notifications_ids) <= 20)

TYPE: list[Union[UUID, str, NotificationRef]]

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

RETURNS DESCRIPTION
int

Количество прочитанных уведомлений

read_notification

read_notification(
    notification_id: Union[UUID, str, NotificationRef],
    **kwargs,
) -> bool

Пометить сообщение прочитанным.

PARAMETER DESCRIPTION
notification_id

UUID уведомления (можно передавать как UUID, так и строку, а также NotificationRef)

TYPE: Union[UUID, str, NotificationRef]

RETURNS DESCRIPTION
bool

Успешна ли операция

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

get_notifications_count

get_notifications_count(**kwargs) -> int

Получить количество непрочитанных уведомлений.

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

RETURNS DESCRIPTION
int

Количество непрочитанных уведомлений.

read_all_notifications

read_all_notifications(**kwargs) -> bool

Пометить все уведомления прочитанными.

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

RETURNS DESCRIPTION
bool

Успешна ли операция

get_notification_settings

get_notification_settings(
    **kwargs,
) -> NotificationsSettings

Получить настройки уведомлений.

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

RETURNS DESCRIPTION
NotificationsSettings

Настройки уведомлений

update_notification_settings

update_notification_settings(
    comments: bool | None = None,
    enabled: bool | None = None,
    follows: bool | None = None,
    mentions: bool | None = None,
    sound: bool | None = None,
    likes: bool | None = None,
    wall_posts: bool | None = None,
    **kwargs,
) -> NotificationsSettings

Настроить уведомления

PARAMETER DESCRIPTION
comments

комментарии

TYPE: bool | None DEFAULT: None

enabled

включены ли уведомления

TYPE: bool | None DEFAULT: None

follows

подписки

TYPE: bool | None DEFAULT: None

mentions

упоминания

TYPE: bool | None DEFAULT: None

sound

звуки при уведомлениях

TYPE: bool | None DEFAULT: None

likes

лайки

TYPE: bool | None DEFAULT: None

wall_posts

посты на стене

TYPE: bool | None DEFAULT: None

RETURNS DESCRIPTION
NotificationsSettings

Новые настройки уведомлений

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

get_file

get_file(
    file_id: Union[UUID, str, FileRef], **kwargs
) -> GetFile

Получить файл.

PARAMETER DESCRIPTION
file_id

UUID файла (можно передавать как UUID, так и строку, а также FileRef)

TYPE: Union[UUID, str, FileRef]

RETURNS DESCRIPTION
GetFile

Файл с датой создания

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

upload_file

upload_file(file: IO[bytes], **kwargs) -> File

Загрузить файл.

PARAMETER DESCRIPTION
file

файл

TYPE: IO[bytes]

RETURNS DESCRIPTION
File

Файл

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

ValidationError

недопустимый тип файла

TooLargeError

размер запроса слишком большой

UploadError

ошибка загрузки файла

ContentModerationError

Не удалось проверить файл

delete_file

delete_file(
    file_id: Union[UUID, str, FileRef], **kwargs
) -> None

Удалить файл.

PARAMETER DESCRIPTION
file_id

UUID файла (можно передавать как UUID, так и строку, а также FileRef)

TYPE: Union[UUID, str, FileRef]

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Файл не найден, или нет прав доступа к нему

report

report(
    target_id: Union[
        UUID, str, PostRef, CommentRef, UserRef
    ],
    target_type: ReportTargetType
    | Literal["post", "comment", "user"] = USER,
    reason: Reason
    | Literal[
        "spam",
        "violence",
        "hate",
        "adult",
        "misinfo",
        "other",
    ] = OTHER,
    description: str = "",
    **kwargs,
) -> Report

Пожаловаться

PARAMETER DESCRIPTION
target_id

UUID цели (можно передавать как UUID, так и строку, а также PostRef/CommentRef/UserRef в котором указан id)

TYPE: Union[UUID, str, PostRef, CommentRef, UserRef]

target_type

тип цели

TYPE: ReportTargetType | Literal['post', 'comment', 'user'] DEFAULT: USER

reason

причина

TYPE: Reason | Literal['spam', 'violence', 'hate', 'adult', 'misinfo', 'other'] DEFAULT: OTHER

description

текст репорта

TYPE: str DEFAULT: ''

RETURNS DESCRIPTION
Report

Донос

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

ValidationError

не найден пост, пользователь или комментарий по target_id

ValidationError

нельзя отправить жалобу на один и тот же контент

search

search(
    query: str,
    user_limit: int | None = 20,
    hashtag_limit: int | None = 20,
    **kwargs,
) -> tuple[list[Hashtag], list[UserWithFollowersCount]]

Поиск

PARAMETER DESCRIPTION
query

запрос

TYPE: str

user_limit

максимальное количество выданных пользователей (1 <= user_limit <= 20)

TYPE: int | None DEFAULT: 20

hashtag_limit

максимальное количество выданных хештегов (1 <= hashtag_limit <= 20)

TYPE: int | None DEFAULT: 20

RETURNS DESCRIPTION
tuple[list[Hashtag], list[UserWithFollowersCount]]

найденные хештеги, найденные пользователи

get_verification_status

get_verification_status(**kwargs) -> str

Получить статус верификации

RETURNS DESCRIPTION
str

Статус верификации

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

submit_verification

submit_verification(video_url: str, **kwargs) -> dict

Подать запрос на галочку

PARAMETER DESCRIPTION
video_url

url видео, загруженного на itd

TYPE: str

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

get_user

get_user(
    username_or_id: Union[str, UUID, UserRef], **kwargs
) -> FullUser | UserBlockedByMe | UserBlockMe | PrivateUser

Получить данные пользователя.

PARAMETER DESCRIPTION
username_or_id

имя пользователя или его UUID, или UserRef

TYPE: Union[str, UUID, UserRef]

RAISES DESCRIPTION
UnauthorizedError

необходима авторизация

NotFoundError

пользователь не найден

UserBlockedError

пользователь заблокирован

get_me

get_me(**kwargs) -> FullMe | DeletedMe

Получить текущего пользователя.

RETURNS DESCRIPTION
FullMe

данные пользователя

TYPE: FullMe | DeletedMe

DeletedMe

при удалённом аккаунте

TYPE: FullMe | DeletedMe

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

ProfileNotFoundError

аккаунт не создан

follow

follow(
    username_or_id: Union[str, UUID, UserRef], **kwargs
) -> int

Подписаться на пользователя

PARAMETER DESCRIPTION
username_or_id

имя пользователя или его UUID, или UserRef

TYPE: Union[str, UUID, UserRef]

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Пользователь не найден

ConflictError

Вы уже подписаны на этого пользователя

ValidationError

Нельзя подписаться на себя

UserBlockedError

пользователь заблокирован

RETURNS DESCRIPTION
int

Количество подписчиков пользователя

unfollow

unfollow(
    username_or_id: Union[str, UUID, UserRef], **kwargs
) -> int

Отписаться от пользователя

PARAMETER DESCRIPTION
username_or_id

имя пользователя или его UUID, или UserRef

TYPE: Union[str, UUID, UserRef]

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Пользователь не найден

RETURNS DESCRIPTION
int

Количество подписчиков пользователя

get_followers

get_followers(
    username_or_id: Union[str, UUID, UserRef],
    page: int = 1,
    limit: int = 30,
    **kwargs,
) -> tuple[PagePagination, list[UserWithFollowing]]

Получить подписчиков пользователя.

PARAMETER DESCRIPTION
username_or_id

имя пользователя или его UUID, или UserRef

TYPE: Union[str, UUID, UserRef]

page

страница (page >= 1)

TYPE: int DEFAULT: 1

limit

максимальное количество пользователей на странице (1 <= limit <= 100)

TYPE: int DEFAULT: 30

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Пользователь не найден

UserBlockedError

пользователь заблокирован

get_following

get_following(
    username_or_id: Union[str, UUID, UserRef],
    page: int = 1,
    limit: int = 30,
    **kwargs,
) -> tuple[PagePagination, list[UserWithFollowing]]

Получить подписки пользователя.

PARAMETER DESCRIPTION
username_or_id

имя пользователя или его UUID, или UserRef

TYPE: Union[str, UUID, UserRef]

page

страница (page >= 1)

TYPE: int DEFAULT: 1

limit

максимальное количество пользователей на странице (1 <= limit <= 100)

TYPE: int DEFAULT: 30

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Пользователь не найден

UserBlockedError

пользователь заблокирован

get_top_clans

get_top_clans(**kwargs) -> list[Clan]

Получить топ кланов.

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

get_who_to_follow

get_who_to_follow(**kwargs) -> list[UserWithFollowersCount]

Получить топ по подпискам (кого можно подписаться).

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

search_users

search_users(
    query: str, limit: int = 20, **kwargs
) -> list[UserWithFollowersCount]

Поиск пользователей.

PARAMETER DESCRIPTION
query

текст запроса

TYPE: str

limit

максимальное количество выданных пользователей (1 <= limit <= 50)

TYPE: int DEFAULT: 20

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

get_pins

get_pins(
    **kwargs,
) -> tuple[PinSlug | None, list[PinWithDate]]

Получить список пинов и текущий пин.

RETURNS DESCRIPTION
tuple[PinSlug | None, list[PinWithDate]]

(активный пин, список доступных пинов) Если пина нет в enum PinSlug, то его в списке не будет

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

set_pin

set_pin(pin_slug: PinSlug, **kwargs) -> PinSlug

Изменить пин.

PARAMETER DESCRIPTION
pin_slug

slug пина

TYPE: PinSlug

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

PinNotOwnedError

вы не обладаете этим пином

delete_pin

delete_pin(**kwargs) -> None

Убрать пин.

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

get_privacy

get_privacy(**kwargs) -> Privacy

Получить настройки приватности текущего пользователя.

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

update_privacy

update_privacy(
    is_private: bool | None = None,
    likes_visibility: Visibility | None = None,
    wall_access: Visibility | None = None,
    show_last_seen: bool | None = None,
    **kwargs,
) -> Privacy

Изменить настройки приватности текущего пользователя.

PARAMETER DESCRIPTION
is_private

приватный ли пользователь

TYPE: bool | None DEFAULT: None

likes_visibility

кто может видеть лайкнутые посты

TYPE: Visibility | None DEFAULT: None

wall_access

кто может писать на стене

TYPE: Visibility | None DEFAULT: None

show_last_seen

показывать время последнего посещения

TYPE: bool | None DEFAULT: None

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

get_profile

get_profile(
    **kwargs,
) -> Profile | BannedProfile | NotCreatedProfile

Профиль текущего пользователя.

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

update_profile

update_profile(
    bio: str | None = None,
    display_name: str | None = None,
    username: str | None = None,
    banner_id: Union[UUID, str, FileRef] | None = None,
    **kwargs,
) -> Me

Обновить профиль.

PARAMETER DESCRIPTION
bio

о себе

TYPE: str | None DEFAULT: None

display_name

имя

TYPE: str | None DEFAULT: None

username

имя пользователя

TYPE: str | None DEFAULT: None

banner_id

UUID файла нового баннера (можно передавать как UUID, так и строку, а также FileRef)

TYPE: Union[UUID, str, FileRef] | None DEFAULT: None

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

ITDError

Био максимум 160 символов

ITDError

Имя от 1 до 50 символов

ITDError

Юзернейм 3-50 символов, только буквы, цифры и _

ForbiddenError

На баннер можно поставить только свой файл

ValidationError

Баннер может быть только изображением

UsernameTakenError

Имя пользователя уже занято

GIFRequiresVerificationError

Только верефицированные пользователи могут поставить гифку на баннер

create_profile

create_profile(
    avatar: str, display_name: str, username: str, **kwargs
) -> CreateUserResponse

Создать профиль

PARAMETER DESCRIPTION
avatar

эмоджи профиля

TYPE: str

display_name

имя

TYPE: str

username

имя пользователя

TYPE: str

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

InvalidAAvatarError

Неправильный эмоджи

UsernameTakenError

имя пользователя занято

ParamsValidationError

Неправильное имя пользователя

delete_banner

delete_banner(**kwargs) -> Me

Удалить баннер.

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

block

block(
    username_or_id: Union[str, UUID, UserRef], **kwargs
) -> None

Заблокировать пользователя.

PARAMETER DESCRIPTION
username_or_id

имя пользователя или UUID, или UserRef

TYPE: Union[str, UUID, UserRef]

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

NotFoundError

пользователь не найден

ConflictError

пользователь уже заблокирован

ValidationError

нельзя заблокировать себя

unblock

unblock(
    username_or_id: Union[str, UUID, UserRef], **kwargs
) -> None

Разблокировать пользователя.

PARAMETER DESCRIPTION
username_or_id

имя пользователя или UUID, или UserRef

TYPE: Union[str, UUID, UserRef]

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

NotFoundError

пользователь не найден

ConflictError

пользователь не заблокирован

get_blocked

get_blocked(
    page: int = 1, limit: int = 20, **kwargs
) -> tuple[PagePagination, list[BlockedAuthor]]

Получить заблокированных пользователей.

PARAMETER DESCRIPTION
page

страница (page >= 1)

TYPE: int DEFAULT: 1

limit

максимальное количество пользователей на странице (1 <= limit <= 100)

TYPE: int DEFAULT: 20

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

get_follow_status

get_follow_status(
    user_ids: list[Union[UUID, str, UserRef]], **kwargs
) -> dict[UUID, bool]

Подписаны ли вы на пользователей.

PARAMETER DESCRIPTION
user_ids

список UUID пользователей (можно передавать как UUID, так и строки, а также UserRef, в котором указан id) (len(user_ids) <= 20)

TYPE: list[Union[UUID, str, UserRef]]

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

delete_account

delete_account(**kwargs) -> datetime

Удалить аккаунт. После удаления аккаунта все остальные эндпоинт, требущие авторизации будут выбрасывать AccountDeletedError, кроме get_me и get_me_uuid

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

RETURNS DESCRIPTION
datetime

Время, до которого можно восстановить аккаунт

restore_account

restore_account(**kwargs) -> bool

Восстановать аккаунт

RAISES DESCRIPTION
UnauthorizedError

неверный access токен

NotDeletedError

аккаунт не удалён

RETURNS DESCRIPTION
bool

Успешна ли операция

check_username

check_username(username: str, **kwargs) -> bool

Не зянято ли это имя

PARAMETER DESCRIPTION
username

имя пользовтеля

TYPE: str

RAISES DESCRIPTION
InvalidInputError

len(username) >= 1

RETURNS DESCRIPTION
bool

Не зянято ли это имя

get_post

get_post(
    post_id: Union[UUID, str, PostRef], **kwargs
) -> tuple[list[Comment], Post]

Получить пост.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

RETURNS DESCRIPTION
tuple[list[Comment], Post]

Кортеж (список комментариев, пост)

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

пост не существует, удалён, владелец поста забанил, пост принадлежит пользователю с is_private=True, на которого вы не подписаны

delete_post

delete_post(
    post_id: Union[UUID, str, PostRef], **kwargs
) -> None

Удалить пост.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

ForbiddenError

Нет прав для удаления поста

NotFoundError

Пост не найден

restore_post

restore_post(
    post_id: Union[UUID, str, PostRef], **kwargs
) -> None

Восстановить пост.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

ForbiddenError

Нет прав для восстановления поста

NotFoundError

Пост не найден

like_post

like_post(
    post_id: Union[UUID, str, PostRef], **kwargs
) -> int

Лайкнуть пост.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

RETURNS DESCRIPTION
int

Новое количество лайков

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Пост не найден

unlike_post

unlike_post(
    post_id: Union[UUID, str, PostRef], **kwargs
) -> int

Убрать лайк с поста.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

RETURNS DESCRIPTION
int

Новое количество лайков

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Пост не найден

view_post

view_post(
    post_id: Union[UUID, str, PostRef], **kwargs
) -> None

Зафиксировать просмотр поста.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

pin_post

pin_post(
    post_id: Union[UUID, str, PostRef], **kwargs
) -> bool

Закрепить пост на своей стене.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

RETURNS DESCRIPTION
bool

Успешность операции

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Пост не найден

ForbiddenError

Можно прикреплять посты только на своей стене

unpin_post

unpin_post(
    post_id: Union[UUID, str, PostRef], **kwargs
) -> bool

Открепить пост со своей стены.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

RETURNS DESCRIPTION
bool

Успешность операции

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotPinedError

Пост не прикреплён

get_posts_by_user

get_posts_by_user(
    username_or_id: Union[str, UUID, UserRef],
    cursor: str | None = None,
    limit: int = 20,
    sort: PostSort | Literal["new", "popular"] = NEW,
    **kwargs,
) -> tuple[Pagination, list[Post]]

Посты на стене пользователя (включая его собственные).

PARAMETER DESCRIPTION
username_or_id

имя пользователя или его UUID, или UserRef

TYPE: Union[str, UUID, UserRef]

cursor

курсор следующей страницы (из предыдущего ответа)

TYPE: str | None DEFAULT: None

limit

максимальное количество постов (1 <= limit <= 50)

TYPE: int DEFAULT: 20

sort

сортировка ("new" или "popular")

TYPE: PostSort | Literal['new', 'popular'] DEFAULT: NEW

RETURNS DESCRIPTION
tuple[Pagination, list[Post]]

Кортеж (пагинация, список постов)

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

пользователь не найден

UserBlockedError

пользователь заблокирован

get_liked_posts

get_liked_posts(
    username_or_id: Union[str, UUID, UserRef],
    cursor: str | None = None,
    sort: PostSort | Literal["new", "popular"] = NEW,
    limit: int = 20,
    **kwargs,
) -> tuple[Pagination, list[Post]]

Посты, которые лайкнул пользователь.

PARAMETER DESCRIPTION
username_or_id

имя пользователя или его UUID, или UserRef

TYPE: Union[str, UUID, UserRef]

cursor

курсор следующей страницы

TYPE: str | None DEFAULT: None

limit

максимальное количество постов (1 <= limit <= 50)

TYPE: int DEFAULT: 20

sort

сортировка ("new" или "popular")

TYPE: PostSort | Literal['new', 'popular'] DEFAULT: NEW

RETURNS DESCRIPTION
tuple[Pagination, list[Post]]

Кортеж (пагинация, список постов)

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

пользователь не найден

UserBlockedError

пользователь заблокирован

get_wall_posts

get_wall_posts(
    username_or_id: Union[str, UUID, UserRef],
    cursor: str | None = None,
    limit: int = 20,
    sort: PostSort | Literal["new", "popular"] = NEW,
    **kwargs,
) -> tuple[Pagination, list[Post]]

Посты на стене пользователя, сделанные другими пользователями.

PARAMETER DESCRIPTION
username_or_id

имя пользователя или его UUID, или UserRef

TYPE: Union[str, UUID, UserRef]

cursor

курсор следующей страницы

TYPE: str | None DEFAULT: None

limit

максимальное количество постов (1 <= limit <= 50)

TYPE: int DEFAULT: 20

sort

сортировка ("new" или "popular")

TYPE: PostSort | Literal['new', 'popular'] DEFAULT: NEW

RETURNS DESCRIPTION
tuple[Pagination, list[Post]]

Кортеж (пагинация, список постов)

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

пользователь не найден

UserBlockedError

пользователь заблокирован

get_posts

get_posts(
    cursor: str | None = None,
    limit: int = 20,
    tab: Tab
    | Literal["popular", "following", "clan"] = POPULAR,
    **kwargs,
) -> tuple[Pagination, list[Post]]

Лента постов.

PARAMETER DESCRIPTION
cursor

курсор следующей страницы

TYPE: str | None DEFAULT: None

limit

максимальное количество постов (1 <= limit <= 50)

TYPE: int DEFAULT: 20

tab

вкладка ("popular", "following", "clan")

TYPE: Tab | Literal['popular', 'following', 'clan'] DEFAULT: POPULAR

RETURNS DESCRIPTION
tuple[Pagination, list[Post]]

Кортеж (пагинация, список постов)

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

get_post_comments

get_post_comments(
    post_id: Union[UUID, str, PostRef],
    cursor: str | None = None,
    limit: int = 20,
    sort: CommentSort
    | Literal["popular", "newest", "oldest"] = POPULAR,
    **kwargs,
) -> tuple[TotalPagination, list[Comment]]

Получить комментарии под постом.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

cursor

курсор следующей страницы

TYPE: str | None DEFAULT: None

sort

сортировка ("popular", "newest", "oldest")

TYPE: CommentSort | Literal['popular', 'newest', 'oldest'] DEFAULT: POPULAR

limit

максимальное количество комментариев (1 <= limit <= 500)

TYPE: int DEFAULT: 20

RETURNS DESCRIPTION
tuple[TotalPagination, list[Comment]]

Кортеж (пагинация с общим количеством, список комментариев)

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Пост не найден

vote_poll

vote_poll(
    post_id: Union[UUID, str, PostRef],
    option_ids: list[Union[UUID, str, OptionRef]],
    **kwargs,
) -> Poll

Проголосовать в опросе.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

option_ids

список UUID выбранных вариантов (можно передавать как UUID, так и строки, а также OptionRef)

TYPE: list[Union[UUID, str, OptionRef]]

RETURNS DESCRIPTION
Poll

Обновлённый опрос

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

пост не найден

ValidationError

Один или несколько вариантов не принадлежат этому опросу

ValidationError

В этом опросе можно выбрать только один вариант

ValidationError

len(option_ids) > 0

create_post

create_post(
    content: str = "",
    attachment_ids: list[Union[UUID, str, FileRef]]
    | None = None,
    wall_recipient_id: Union[UUID, str, UserRef]
    | None = None,
    multiple_choice: bool = False,
    question: str | None = None,
    options: list[str] | None = None,
    spans: list[
        Monospace
        | Strike
        | Underline
        | Bold
        | Italic
        | Spoiler
        | Link
    ]
    | None = None,
    **kwargs,
) -> Post

Создать пост.

PARAMETER DESCRIPTION
content

Текст поста

TYPE: str DEFAULT: ''

attachment_ids

Прикреплённые файлы (список UUID, можно передавать строки, а также FileRef)

TYPE: list[Union[UUID, str, FileRef]] | None DEFAULT: None

wall_recipient_id

ID пользователя, на чью стену публикуется пост (если не указан, пост идёт на свою стену) (можно передавать UUID, строку, UserRef)

TYPE: Union[UUID, str, UserRef] | None DEFAULT: None

multiple_choice

Возможен ли множественный выбор в опросе

TYPE: bool DEFAULT: False

question

Заголовок опроса

TYPE: str | None DEFAULT: None

options

Варианты ответов (список строк)

TYPE: list[str] | None DEFAULT: None

spans

Форматирование текста (список объектов форматирования)

TYPE: list[Monospace | Strike | Underline | Bold | Italic | Spoiler | Link] | None DEFAULT: None

RETURNS DESCRIPTION
Post

Созданный пост

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

ValidationError

Нельзя создать пост content="", attachment_ids=[], question=None

ParamsValidationError

len(content) <= 1_000

VideoRequiresVerificationError

Загрузка видео доступна только верифицированным пользователям

ValidationError

len(attachments_ids) <= 10

ForbiddenError

Некоторые файлы из attachment_ids не существуют

ParamsValidationError

len(spans) <= 100

ValidationError

1 <= len(question) <= 128

ValidationError

2 <= len(options) <= 10

ValidationError

1 <= len(options[i]) <= 32

ParamsValidationError

span[i].offset >= 0

ParamsValidationError

span[i].length > 0

ParamsValidationError

len(span[i].url) <= 2048

update_post

update_post(
    post_id: Union[UUID, str, PostRef],
    content: str,
    spans: list[
        Monospace
        | Strike
        | Underline
        | Bold
        | Italic
        | Spoiler
        | Link
    ]
    | None = None,
    **kwargs,
) -> UpdatePostResponse

Изменить текст поста.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

content

Новый текст поста

TYPE: str

spans

Форматирование текста (список объектов форматирования)

TYPE: list[Monospace | Strike | Underline | Bold | Italic | Spoiler | Link] | None DEFAULT: None

RETURNS DESCRIPTION
UpdatePostResponse

Обновлённый пост (содержит дату редактирования)

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Пост не найден

ValidationError

1 <= len(content) <= 1_000

ForbiddenError

Нет прав для редактирования этого поста

EditWindowExpiredError

пост нельзя изменять спустя несколько дней

ParamsValidationError

span[i].offset >= 0

ParamsValidationError

span[i].length > 0

ParamsValidationError

len(span[i].url) <= 2048

repost

repost(
    post_id: Union[UUID, str, PostRef],
    content: str = "",
    **kwargs,
) -> Post

Сделать репост.

PARAMETER DESCRIPTION
post_id

UUID оригинального поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

content

Текст репоста (необязательно)

TYPE: str DEFAULT: ''

RETURNS DESCRIPTION
Post

Созданный репост

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

Пост не найден

ConflictError

Нельзя репостнуть два раза

ValidationError

Нельзя репостить свои посты

ValidationError

len(content) <= 1_000

comment

comment(
    post_id: Union[UUID, str, PostRef],
    content: str = "",
    attachment_ids: list[Union[UUID, str, FileRef]]
    | None = None,
    **kwargs,
) -> Comment

Создать комментарий к посту.

PARAMETER DESCRIPTION
post_id

UUID поста (можно передавать как UUID, так и строку, а также PostRef)

TYPE: Union[UUID, str, PostRef]

content

текст комментария

TYPE: str DEFAULT: ''

attachment_ids

список UUID прикреплённых файлов (максимум 4) (можно передавать как UUID, строку, FileRef)

TYPE: list[Union[UUID, str, FileRef]] | None DEFAULT: None

RETURNS DESCRIPTION
Comment

Созданный комментарий

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

пост не найден

ITDError

файл с указанным UUID не существует

ValidationError

нельзя создать пустой комментарий (без текста и вложений)

ParamsValidationError

len(attachment_ids) <= 4

ParamsValidationError

len(content) <= 1_000

replies

replies(
    comment_id: Union[UUID, str, CommentRef],
    content: str = "",
    replay_to_user_id: Union[UUID, str, UserRef]
    | None = None,
    attachment_ids: list[Union[UUID, str, FileRef]]
    | None = None,
    **kwargs,
) -> Reply

Ответить на комментарий.

PARAMETER DESCRIPTION
comment_id

UUID комментария, на который отвечаем (можно передавать как UUID, так и строку, а также CommentRef)

TYPE: Union[UUID, str, CommentRef]

content

текст ответа

TYPE: str DEFAULT: ''

replay_to_user_id

UUID пользователя, которому адресован ответ (для упоминания) (можно передавать UUID, строку, UserRef)

TYPE: Union[UUID, str, UserRef] | None DEFAULT: None

attachment_ids

список UUID прикреплённых файлов (максимум 4) (можно передавать UUID, строку, FileRef)

TYPE: list[Union[UUID, str, FileRef]] | None DEFAULT: None

RETURNS DESCRIPTION
Reply

Созданный ответ

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

комментарий не найден

ValidationError

нельзя создать пустой ответ (без текста и вложений)

ITDError

файл с указанным UUID не существует

ParamsValidationError

len(attachment_ids) <= 4

ParamsValidationError

len(content) <= 1_000

edit_comment

edit_comment(
    comment_id: Union[UUID, str, CommentRef],
    content: str,
    **kwargs,
) -> UpdateCommentResponse

Редактировать комментарий.

PARAMETER DESCRIPTION
comment_id

UUID комментария (можно передавать как UUID, так и строку, а также CommentRef)

TYPE: Union[UUID, str, CommentRef]

content

новый текст комментария

TYPE: str

RETURNS DESCRIPTION
UpdateCommentResponse

Обновлённый комментарий (содержит дату редактирования)

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

комментарий не найден

ForbiddenError

нет прав на редактирование этого комментария

ParamsValidationError

1 <= len(content) <= 1_000

delete_comment

delete_comment(
    comment_id: Union[UUID, str, CommentRef], **kwargs
) -> None

Удалить комментарий.

PARAMETER DESCRIPTION
comment_id

UUID комментария (можно передавать как UUID, так и строку, а также CommentRef)

TYPE: Union[UUID, str, CommentRef]

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

комментарий не найден

ForbiddenError

нет прав на удаление комментария

restore_comment

restore_comment(
    comment_id: Union[UUID, str, CommentRef], **kwargs
) -> None

Восстановить удалённый комментарий.

PARAMETER DESCRIPTION
comment_id

UUID комментария (можно передавать как UUID, так и строку, а также CommentRef)

TYPE: Union[UUID, str, CommentRef]

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

комментарий не найден

ForbiddenError

нет прав на восстановление комментария

like_comment

like_comment(
    comment_id: Union[UUID, str, CommentRef], **kwargs
) -> int

Поставить лайк на комментарий.

PARAMETER DESCRIPTION
comment_id

UUID комментария (можно передавать как UUID, так и строку, а также CommentRef)

TYPE: Union[UUID, str, CommentRef]

RETURNS DESCRIPTION
int

Обновлённое количество лайков

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

комментарий не найден

unlike_comment

unlike_comment(
    comment_id: Union[UUID, str, CommentRef], **kwargs
) -> int

Убрать лайк с комментария.

PARAMETER DESCRIPTION
comment_id

UUID комментария (можно передавать как UUID, так и строку, а также CommentRef)

TYPE: Union[UUID, str, CommentRef]

RETURNS DESCRIPTION
int

Обновлённое количество лайков

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

комментарий не найден

get_comment_replies

get_comment_replies(
    comment_id: UUID | str | CommentRef,
    limit: int = 100,
    page: int = 1,
    **kwargs,
) -> tuple[PagePagination, list[Reply]]

Получить ответы на комментарий.

PARAMETER DESCRIPTION
comment_id

UUID комментария

TYPE: UUID | str | CommentRef

limit

максимальное количество ответов на странице (1 <= limit <= 100)

TYPE: int DEFAULT: 100

page

номер страницы (page >= 1)

TYPE: int DEFAULT: 1

RETURNS DESCRIPTION
tuple[PagePagination, list[Reply]]

Ответы на комментарий

RAISES DESCRIPTION
UnauthorizedError

ошибка авторизации

NotFoundError

комментарий не найден

connect_notifications

connect_notifications(
    **kwargs,
) -> AsyncGenerator[
    AsyncIterator[
        ConnectedEvent | NotificationEvent | SSEEvent
    ],
    None,
]

Подключиться к SEE стриму уведомлений.

RAISES DESCRIPTION
SSEError

ошибка SSE

Examples:

refresh_token = "ВАШ ТОКЕН"
async with AsyncITDClient(refresh_token) as client:
    async with client.connect_notifications() as events:
        async for event in events:
            print(event)
            break

get_changelog

get_changelog(**kwargs) -> list[Version]

Получить чейнджлог.

get_portal

get_portal(**kwargs) -> bool

Активен ли портал.