# 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 UpdateDrivePublicPermissionV1OldReq(object):
    token: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 文件的 token，获取方式见 [对接前说明](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN)的第 4 项
    type: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 文档类型  "doc"  or  "sheet"
    copy_print_export_status: bool = attr.ib(
        default=None, metadata={"req_type": "json"}
    )  # 可创建副本/打印/导出/复制设置（不传则保持原值）：<br>true - 所有可访问此文档的用户<br>false - 有编辑权限的用户
    comment: bool = attr.ib(
        default=None, metadata={"req_type": "json"}
    )  # 可评论设置（不传则保持原值）：<br>true - 所有可访问此文档的用户<br>false - 有编辑权限的用户
    tenant_shareable: bool = attr.ib(
        default=None, metadata={"req_type": "json"}
    )  # 租户内用户是否有共享权限（不传则保持原值）
    link_share_entity: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 链接共享（不传则保持原值）：<br>"tenant_readable" - 组织内获得链接的人可阅读<br>"tenant_editable" - 组织内获得链接的人可编辑<br>"anyone_readable" - 获得链接的任何人可阅读<br>"anyone_editable" - 获得链接的任何人可编辑
    external_access: bool = attr.ib(
        default=None, metadata={"req_type": "json"}
    )  # 是否允许分享到租户外开关（不传则保持原值）
    invite_external: bool = attr.ib(
        default=None, metadata={"req_type": "json"}
    )  # 非owner是否允许邀请外部人（不传则保持原值）


@attr.s
class UpdateDrivePublicPermissionV1OldResp(object):
    is_success: bool = attr.ib(
        factory=lambda: bool(), metadata={"req_type": "json"}
    )  # 是否成功


def _gen_update_drive_public_permission_v1_old_req(request, options) -> RawRequestReq:
    return RawRequestReq(
        dataclass=UpdateDrivePublicPermissionV1OldResp,
        scope="Drive",
        api="UpdateDrivePublicPermissionV1Old",
        method="POST",
        url="https://open.feishu.cn/open-apis/drive/permission/public/update",
        body=request,
        method_option=_new_method_option(options),
        need_tenant_access_token=True,
        need_user_access_token=True,
    )
