# 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 GetApprovalReq(object):
    approval_code: str = attr.ib(default="", metadata={"req_type": "json"})  # 审批定义 Code
    locale: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # zh-CN - 中文<br>en-US - 英文  <br>ja-JP - 日文


@attr.s
class GetApprovalRespViewer(object):
    type: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 可见人类型，分别有：<br>TENANT：租户内可见<br>DEPARTMENT：指定部门<br> USER：指定用户<br>NONE：任何人都不可见
    open_id: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 在可见人类型为DEPARTMENT时，open_id为部门的open_id<br>在可见人类型为USER时，open_id为用户的open_id
    user_id: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 在可见人类型为USER时，表示可见人用户id


@attr.s
class GetApprovalRespNode(object):
    name: str = attr.ib(default="", metadata={"req_type": "json"})  # 节点名称
    need_approver: bool = attr.ib(
        factory=lambda: bool(), metadata={"req_type": "json"}
    )  # 是否发起人自选节点<br>true - 发起审批时需要提交审批人
    node_id: str = attr.ib(default="", metadata={"req_type": "json"})  # 节点 ID
    custom_node_id: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 节点自定义 ID，如果没有设置则不返回
    node_type: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 审批方式<br>AND -会签<br>OR - 或签


@attr.s
class GetApprovalRespForm(object):
    id: str = attr.ib(default="", metadata={"req_type": "json"})  # 控件 ID
    custom_id: str = attr.ib(default="", metadata={"req_type": "json"})  # 控件自定义 ID
    name: str = attr.ib(default="", metadata={"req_type": "json"})  # 控件名称
    type: str = attr.ib(default="", metadata={"req_type": "json"})  # 控件类型


@attr.s
class GetApprovalResp(object):
    approval_name: str = attr.ib(default="", metadata={"req_type": "json"})  # 审批名称
    form: GetApprovalRespForm = attr.ib(
        factory=lambda: GetApprovalRespForm(), metadata={"req_type": "json"}
    )  # json 数组，**控件信息**
    node_list: typing.List[GetApprovalRespNode] = attr.ib(
        factory=lambda: [], metadata={"req_type": "json"}
    )  # 节点信息
    viewers: typing.List[GetApprovalRespViewer] = attr.ib(
        factory=lambda: [], metadata={"req_type": "json"}
    )  # 可见人列表


def _gen_get_approval_req(request, options) -> RawRequestReq:
    return RawRequestReq(
        dataclass=GetApprovalResp,
        scope="Approval",
        api="GetApproval",
        method="POST",
        url="https://www.feishu.cn/approval/openapi/v2/approval/get",
        body=request,
        method_option=_new_method_option(options),
        need_tenant_access_token=True,
    )
