# 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 GetApplicationUsageOverviewReqDepartmentIDType(object):
    pass


@attr.s
class GetApplicationUsageOverviewReq(object):
    department_id_type: GetApplicationUsageOverviewReqDepartmentIDType = attr.ib(
        default=None, metadata={"req_type": "query"}
    )  # 调用中使用的部门ID的类型, 示例值："open_department_id", 可选值有: `department_id`：以自定义department_id来标识部门, `open_department_id`：以open_department_id来标识部门, 默认值: `open_department_id`
    app_id: str = attr.ib(
        default="", metadata={"req_type": "path"}
    )  # 目标应用 ID, 示例值："cli_9f115af860f7901b"
    date: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 查询日期，格式为yyyy-mm-dd，若cycle_type为1，date可以为任何自然日；若cycle_type为2，则输入的date必须为周一； 若cycle_type为3，则输入的date必须为每月1号, 示例值："2021-07-08"
    cycle_type: int = attr.ib(
        default=0, metadata={"req_type": "json"}
    )  # 活跃周期的统计类型, 示例值：1, 可选值有: `1`：日活，指自然日，返回当前日期所在日的数据, `2`：周活，指自然周，返回当前日期所在周的数据。若到查询时当周还没结束，则返回周一到当前日期的数值。例如在2021/7/15 查询2021/7/5 这一周的数据，则代表的是2021/7/5 ~ 2021/7/11。但若是在2021/7/8 查询2021/7/5 这一周的数据，则返回的是2021/7/5 ~ 2021/7/7 的数据, `3`：月活，指自然月，返回当前日期所在月的数据。若不满一个月则返回当月1日到截止日期前的数据。例如在2021/8/15 查询 7月的数据，则代表2021/7/1~2021/7/31。 若在2021/8/15 查询8月的数据，则代表2021/8/1~2021/8/14的数据
    department_id: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 查询的部门id，获取方法可参考[部门ID概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/field-overview),  若部门id为空，则返回当前租户的使用数据；若填写部门id，则返回当前部门的使用数据（包含子部门的用户）； ,  若路径参数中department_id_type为空或者为open_department_id，则此处应该填写部门的 open_department_id；若路径参数中department_id_type为department_id，则此处应该填写部门的 department_id。, 示例值："od-4e6ac4d14bcd5071a37a39de902c7141"
    ability: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 能力类型，按能力类型进行筛选，返回对应能力的活跃数据, 示例值："app", 可选值有: `app`：返回应用整体的数据, `mp`：返回小程序能力的数据, `h5`：返回网页能力的数据, `bot`：返回机器人能力的数据


@attr.s
class GetApplicationUsageOverviewRespItem(object):
    metric_name: str = attr.ib(
        default="", metadata={"req_type": "json"}
    )  # 指标名称，uv：活跃用户数，total_users：累计用户数，new_users：新增用户数
    metric_value: int = attr.ib(default=0, metadata={"req_type": "json"})  # 指标值


@attr.s
class GetApplicationUsageOverviewResp(object):
    items: typing.List[GetApplicationUsageOverviewRespItem] = attr.ib(
        factory=lambda: [], metadata={"req_type": "json"}
    )  # 员工使用应用概览数据


def _gen_get_application_usage_overview_req(request, options) -> RawRequestReq:
    return RawRequestReq(
        dataclass=GetApplicationUsageOverviewResp,
        scope="Application",
        api="GetApplicationUsageOverview",
        method="POST",
        url="https://open.feishu.cn/open-apis/application/v6/applications/:app_id/app_usage/overview",
        body=request,
        method_option=_new_method_option(options),
        need_tenant_access_token=True,
    )
