from typing import List, Literal, Optional
from pydantic import BaseModel, Field
[docs]
class ShortUser(BaseModel):
"""Short user information model
Details https://yandex.ru/dev/api360/doc/ru/ref/GroupService/GroupService_DeleteMembers#v1shortuser
Attributes:
uid (str): User ID
nickname (str): User nickname
department_id (int): Department ID
email (str): User email
gender (str): User gender
position (str): User position
"""
uid: str = Field(alias="id")
nickname: str
department_id: int = Field(alias="departmentId")
email: str
gender: str
position: str
avatar_id: str = Field(alias="avatarId")
[docs]
class Name(BaseModel):
"""User Name model
Attributes:
first (str): User first name
last (str): User last name
middle (str): User middle name
"""
first: str
last: str
middle: str
name: Name
[docs]
class User(ShortUser):
"""User information model
Details https://yandex.ru/dev/api360/doc/ru/ref/UserService/UserService_List#v1user
Attributes:
is_enabled (bool): Is user enabled
about (str): User description
birthday (str): User birthday
external_id (str): User external ID
is_admin (bool): Is user admin
is_robot (bool): Is user robot
is_dismissed (bool): Is user dismissed
timezone (str): User timezone
language (str): User language
created_at (str): User creation date
updated_at (str): User update date
display_name (str): User display name
groups (List[int]): User groups
contacts (List[Contact]): User contacts
aliases (List[str]): User aliases
"""
is_enabled: bool = Field(alias="isEnabled")
is_enabled_updated_at: Optional[str] = Field(default=None, alias="isEnabledUpdatedAt")
about: str
birthday: str
external_id: str = Field(alias="externalId")
is_admin: bool = Field(alias="isAdmin")
is_robot: bool = Field(alias="isRobot")
is_dismissed: bool = Field(alias="isDismissed")
timezone: str
language: str
created_at: str = Field(alias="createdAt")
updated_at: str = Field(alias="updatedAt")
display_name: str = Field(default='', alias="displayName")
groups: List[int]
contacts: List[Contact]
aliases: List[str]
[docs]
class UsersPage(BaseModel):
"""List of users
Attributes:
page (int): Current page
pages (int): Total pages
per_page (int): Users per page
total (int): Total users in organization
users (List[User]): List of users
"""
page: int
pages: int
per_page: int = Field(alias="perPage")
total: int
users: List[User]
[docs]
class ShortGroup(BaseModel):
"""Short Group model
Details https://yandex.ru/dev/api360/doc/ru/ref/GroupService/GroupService_DeleteMembers#v1shortgroup
Attributes:
group_id (int): Group ID
name (str): Group name
members_count (int): Group members count
"""
group_id: int = Field(alias="id")
name: str
members_count: int= Field(alias="membersCount")
[docs]
class GroupMember(BaseModel):
"""Group member model
Details https://yandex.ru/dev/api360/doc/ru/ref/GroupService/GroupService_Get#v1groupmember
Attributes:
member_id (str): Group member ID
type (str): Member type (user, group, department)
"""
member_id: str = Field(alias="id")
type: Literal['user', 'group', 'department']
[docs]
class Group(ShortGroup):
"""Group model
Details https://yandex.ru/dev/api360/doc/ru/ref/GroupService/GroupService_List#v1group
Attributes:
type (str): Group type name
description (str): Group description
label (str): Group label
email (str): Group email
aliases (List[str]): Group email aliases
external_id (str): Group external ID
removed (bool): Is group deleted
members (List[GroupMember]): Group members
member_of (List[int]): Group member of
created_at (str): Group creation date
"""
type: str
description: str
label: str
email: str
aliases: List[str]
external_id: str = Field(alias="externalId")
removed: bool
members: List[GroupMember]
member_of: List[int] = Field(alias="memberOf")
created_at: str= Field(alias="createdAt")
[docs]
class GroupsPage(BaseModel):
"""List of Groups
Attributes:
groups (List[Group]): List of groups
page (int): Current page
pages (int): Total pages
per_page (int): Groups per page
total (int): Total groups in org
"""
groups: list[Group]
page: int
pages: int
per_page: int = Field(alias="perPage")
total: int
[docs]
class GroupMembers2(BaseModel):
"""Group members v2 model
Details https://yandex.ru/dev/api360/doc/ru/ref/GroupV2Service/GroupService_ListMembers
Attributes:
groups (List[ShortGroup]): List of groups
users (List[ShortUser]): List of users
"""
groups: List[ShortGroup]
users: List[ShortUser]
class User2fa(BaseModel):
"""User 2fa details model
Details https://yandex.ru/dev/api360/doc/ru/ref/UserService/UserService_Get2fa
Attributes:
user_id (str): User ID
has2fa (bool): Is user has personally configured any 2fa methods
has_security_phone (bool): Is user has set 2fa phone
"""
user_id: str = Field(alias="userId")
has2fa: bool
has_security_phone: bool = Field(alias="hasSecurityPhone")