# Code generated by lark_sdk_gen. DO NOT EDIT.

from pylark.lark_request import RawRequestReq, _new_method_option
import attr
import typing
import io


@attr.s
class GetApplicationAppVisibilityReq(object):
    app_id: str = attr.ib(default="", metadata={"req_type": "query"})  # 目标应用的 ID
    user_page_token: str = attr.ib(
        default="", metadata={"req_type": "query"}
    )  # 分页拉取用户列表起始位置标示，不填表示从头开始
    user_page_size: int = attr.ib(
        default=0, metadata={"req_type": "query"}
    )  # 本次拉取用户列表最大个数(最大值 1000 ，0 自动最大个数 )


@attr.s
class GetApplicationAppVisibilityRespUsers(object):
    user_id: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 用户的 user_id，只返回给申请了 user_id 权限的企业自建应用
    open_id: str = attr.ib(default="", metadata={"req_type": "json"})  # 用户的 open_id


@attr.s
class GetApplicationAppVisibilityRespDepartments(object):
    id: str = attr.ib(default="", metadata={"req_type": "json"})  # 自定义 department_id


@attr.s
class GetApplicationAppVisibilityResp(object):
    departments: GetApplicationAppVisibilityRespDepartments = attr.ib(
        default=None, metadata={"req_type": "json"}
    )  # 可用部门列表
    users: GetApplicationAppVisibilityRespUsers = attr.ib(
        default=None, metadata={"req_type": "json"}
    )  # 可用用户列表（仅包含单独设置的用户，可用部门、用户组中的用户未展开）
    is_visible_to_all: int = attr.ib(
        default=0, metadata={"req_type": "json"}
    )  # 是否全员可见，1：是，0：否
    has_more_users: int = attr.ib(
        default=0, metadata={"req_type": "json"}
    )  # 是否还有更多可见用户，1：是，0：否
    user_page_token: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 拉取下一页用户列表时使用的 user_page_token


def _gen_get_application_app_visibility_req(request, options) -> RawRequestReq:
    return RawRequestReq(
        dataclass=GetApplicationAppVisibilityResp,
        scope="Application",
        api="GetApplicationAppVisibility",
        method="GET",
        url="https://open.feishu.cn/open-apis/application/v2/app/visibility",
        body=request,
        method_option=_new_method_option(options),
        need_tenant_access_token=True,
    )
