// Code generated by lark_sdk_gen. DO NOT EDIT.
/**
 * Copyright 2022 chyroc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package lark

import (
	"context"
)

// CreateTask 该接口可以创建一个任务, 在创建任务时, 支持填写任务的基本信息（如标题、描述、负责人等）, 此外, 还可以设置任务的开始时间、截止时间提醒等条件, 此外, 还可以通过传入 tasklists 字段将新任务加到多个清单中。
//
// 创建任务时, 可以通过设置`members`字段来设置任务的负责人和关注人。关于member的格式, 详见[功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/overview)中的“ 如何表示任务和清单的成员？ ”章节。
// 如果要设置任务的开始时间和截止时间, 需要遵守任务时间的格式和约束。详见[功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/overview)中的“ 如何使用开始时间和截止时间？”章节。
// 如要设置自定义字段值, 可以设置`custom_fields`字段。但因为自定义字段归属于清单, 因此要填写的自定义字段的guid必须归属于要添加的清单(通过`tasklists`设置）。详见[自定义字段概览](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/custom_field/custom-field-overview)。
// 通过设置`client_token`实现幂等调用。详见[功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/overview)中的“ 幂等调用 ”章节。
// 如要创建一个任务的子任务, 需要使用[创建子任务](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/task-subtask/create)接口。
// 创建任务时可以一并设置自定义字段值。但根据自定义字段的权限关系, 任务只能添加`tasklists`字段设置的清单中关联的自定义字段的值。详见[自定义字段功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/custom_field/custom-field-overview)中的介绍。
// 如果创建任务时要将任务加入到多个清单中, 调用身份必须对所有清单有可编辑权限。详情见[清单功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/tasklist/overview)中的“清单是如何鉴权的？“章节。
//
// doc: https://open.larkoffice.com/document/uAjLw4CM/ukTMukTMukTM/task-v2/task/create
func (r *TaskService) CreateTask(ctx context.Context, request *CreateTaskReq, options ...MethodOptionFunc) (*CreateTaskResp, *Response, error) {
	if r.cli.mock.mockTaskCreateTask != nil {
		r.cli.Log(ctx, LogLevelDebug, "[lark] Task#CreateTask mock enable")
		return r.cli.mock.mockTaskCreateTask(ctx, request, options...)
	}

	req := &RawRequestReq{
		Scope:                 "Task",
		API:                   "CreateTask",
		Method:                "POST",
		URL:                   r.cli.openBaseURL + "/open-apis/task/v2/tasks",
		Body:                  request,
		MethodOption:          newMethodOption(options),
		NeedTenantAccessToken: true,
		NeedUserAccessToken:   true,
	}
	resp := new(createTaskResp)

	response, err := r.cli.RawRequest(ctx, req, resp)
	return resp.Data, response, err
}

// MockTaskCreateTask mock TaskCreateTask method
func (r *Mock) MockTaskCreateTask(f func(ctx context.Context, request *CreateTaskReq, options ...MethodOptionFunc) (*CreateTaskResp, *Response, error)) {
	r.mockTaskCreateTask = f
}

// UnMockTaskCreateTask un-mock TaskCreateTask method
func (r *Mock) UnMockTaskCreateTask() {
	r.mockTaskCreateTask = nil
}

// CreateTaskReq ...
type CreateTaskReq struct {
	UserIDType     *IDType                      `query:"user_id_type" json:"-"`    // 用户 ID 类型, 示例值: open_id, 默认值: `open_id`
	Summary        string                       `json:"summary,omitempty"`         // 任务标题。不能为空, 支持最大3000个utf8字符, 示例值: "针对全年销售进行一次复盘"
	Description    *string                      `json:"description,omitempty"`     // 任务摘要。支持最大3000个utf8字符, 示例值: "需要事先阅读复盘总结文档"
	Due            *CreateTaskReqDue            `json:"due,omitempty"`             // 任务截止时间。详见[功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/overview)中的“ 如何使用开始时间和截止时间？”章节, 示例值: 1675742789470
	Origin         *CreateTaskReqOrigin         `json:"origin,omitempty"`          // 任务关联的第三方平台来源信息, 用于来源信息在飞书任务界面的展示。只能创建任务时设置, 一旦设置后就不可变更。详见[功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/overview)中的“ 如何使用Origin? ”章节。
	Extra          *string                      `json:"extra,omitempty"`           // 调用者可以传入的任意附带到任务上的数据。在获取任务详情时会原样返回。如果是二进制数据可以使用Base64编码, 示例值: "dGVzdA[", 最大长度: `65536` 字符
	CompletedAt    *string                      `json:"completed_at,omitempty"`    // 任务的完成时刻时间戳(ms)。不填写或者设为0表示创建一个未完成任务；填写一个具体的时间戳表示创建一个已完成任务, 示例值: "1675742789470", 默认值: `0`, 最大长度: `20` 字符
	Members        []*CreateTaskReqMember       `json:"members,omitempty"`         // 任务成员列表, 包括负责人和关注人。不填写表示任务无成员。单次请求支持最大50个成员（去重后）, 详见[功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/overview)中的“ 如何表示任务和清单的成员？ ”章节, 示例值: [ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f]
	RepeatRule     *string                      `json:"repeat_rule,omitempty"`     // 重复任务规则。如果设置, 则该任务为“重复任务”。详见[任务功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/task/overview)中的“如何使用重复任务？”章节, 示例值: "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO, TU, WE, TH, FR", 最大长度: `1000` 字符
	CustomComplete *CreateTaskReqCustomComplete `json:"custom_complete,omitempty"` // 任务自定义完成配置。详见[任务功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/task/overview)中的“ 如何使用任务自定义完成？”章节。
	Tasklists      []*CreateTaskReqTasklist     `json:"tasklists,omitempty"`       // 任务所在清单的信息
	ClientToken    *string                      `json:"client_token,omitempty"`    // 幂等token。如果提供则触发后端实现幂等行为。详见[功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/overview)中的“ 幂等调用 ”章节, 示例值: "daa2237f-8310-4707-a83b-52c8a81e0fb7", 长度范围: `10` ～ `100` 字符
	Start          *CreateTaskReqStart          `json:"start,omitempty"`           // 任务的开始时间(ms), 详见[功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/overview)中的“ 如何使用开始时间和截止时间？”章节。
	Reminders      []*CreateTaskReqReminder     `json:"reminders,omitempty"`       // 任务提醒。要设置提醒必须同时设置任务的截止时间。一个任务最多只能设置1个提醒。
	Mode           *int64                       `json:"mode,omitempty"`            // 任务完成模式, 1 - 会签任务; 2 - 或签任务, 示例值: 2, 默认值: `2`, 取值范围: `1` ～ `2`
	IsMilestone    *bool                        `json:"is_milestone,omitempty"`    // 是否是里程碑任务, 示例值: false, 默认值: `false`
	CustomFields   []*CreateTaskReqCustomField  `json:"custom_fields,omitempty"`   // 自定义字段值。可以在创建任务的同时设置一个或多个自定义字段的值。要设置值的自定义字段必须关联于任务要加入的清单(通过`tasklists`字段设置）, 否则将无法设置, 每个字段的值根据字段类型填写相应的字段, * 当`type`为"number"时, 应使用`number_value`字段, 表示数字类型自定义字段的值；, * 当`type`为"member"时, 应使用`member_value`字段, 表示人员类型自定义字段的值；, * 当`type`为"datetime"时, 应使用`datetime_value`字段, 表示日期类型自定义字段的值；, * 当`type`为"single_select"时, 应使用`single_select_value`字段, 表示单选类型自定义字段的值；, * 当`type`为"multi_select"时, 应使用`multi_select_value`字段, 表示多选类型自定义字段的值；, * 当`type`为“text”时, 应使用`text_value`字段, 表示文本字段类型的值。
}

// CreateTaskReqCustomComplete ...
type CreateTaskReqCustomComplete struct {
	Pc      *CreateTaskReqCustomCompletePc      `json:"pc,omitempty"`      // pc客户端自定义完成配置（含mac和windows）
	Ios     *CreateTaskReqCustomCompleteIos     `json:"ios,omitempty"`     // ios端的自定义完成配置
	Android *CreateTaskReqCustomCompleteAndroid `json:"android,omitempty"` // android端的自定义完成配置
}

// CreateTaskReqCustomCompleteAndroid ...
type CreateTaskReqCustomCompleteAndroid struct {
	Href *string                                `json:"href,omitempty"` // 自定义完成的跳转url, 示例值: "https://www.example.com"
	Tip  *CreateTaskReqCustomCompleteAndroidTip `json:"tip,omitempty"`  // 自定义完成的弹出提示为
}

// CreateTaskReqCustomCompleteAndroidTip ...
type CreateTaskReqCustomCompleteAndroidTip struct {
	EnUs *string `json:"en_us,omitempty"` // 英文, 示例值: "workbench", 最大长度: `1000` 字符
	ZhCn *string `json:"zh_cn,omitempty"` // 中文, 示例值: "工作台", 最大长度: `1000` 字符
	ZhHk *string `json:"zh_hk,omitempty"` // 中文（香港地区）, 示例值: "工作臺", 最大长度: `1000` 字符
	ZhTw *string `json:"zh_tw,omitempty"` // 中文（台湾地区）, 示例值: "工作臺", 最大长度: `1000` 字符
	JaJp *string `json:"ja_jp,omitempty"` // 日语, 示例值: "作業台", 最大长度: `1000` 字符
	FrFr *string `json:"fr_fr,omitempty"` // 法语, 示例值: "Table de travail"
	ItIt *string `json:"it_it,omitempty"` // 意大利语, 示例值: "banco di lavoro"
	DeDe *string `json:"de_de,omitempty"` // 德语, 示例值: "Werkbank"
	RuRu *string `json:"ru_ru,omitempty"` // 俄语, 示例值: "верстак"
	ThTh *string `json:"th_th,omitempty"` // 泰语, 示例值: "โต๊ะทำงาน"
	EsEs *string `json:"es_es,omitempty"` // 西班牙语, 示例值: "banco de trabajo"
	KoKr *string `json:"ko_kr,omitempty"` // 韩语, 示例值: "작업대"
}

// CreateTaskReqCustomCompleteIos ...
type CreateTaskReqCustomCompleteIos struct {
	Href *string                            `json:"href,omitempty"` // 自定义完成的跳转url, 示例值: "https://www.example.com"
	Tip  *CreateTaskReqCustomCompleteIosTip `json:"tip,omitempty"`  // 自定义完成的弹出提示为
}

// CreateTaskReqCustomCompleteIosTip ...
type CreateTaskReqCustomCompleteIosTip struct {
	EnUs *string `json:"en_us,omitempty"` // 英文, 示例值: "workbench", 最大长度: `1000` 字符
	ZhCn *string `json:"zh_cn,omitempty"` // 中文, 示例值: "工作台", 最大长度: `1000` 字符
	ZhHk *string `json:"zh_hk,omitempty"` // 中文（香港地区）, 示例值: "工作臺", 最大长度: `1000` 字符
	ZhTw *string `json:"zh_tw,omitempty"` // 中文（台湾地区）, 示例值: "工作臺", 最大长度: `1000` 字符
	JaJp *string `json:"ja_jp,omitempty"` // 日语, 示例值: "作業台", 最大长度: `1000` 字符
	FrFr *string `json:"fr_fr,omitempty"` // 法语, 示例值: "Table de travail"
	ItIt *string `json:"it_it,omitempty"` // 意大利语, 示例值: "banco di lavoro"
	DeDe *string `json:"de_de,omitempty"` // 德语, 示例值: "Werkbank"
	RuRu *string `json:"ru_ru,omitempty"` // 俄语, 示例值: "верстак"
	ThTh *string `json:"th_th,omitempty"` // 泰语, 示例值: "โต๊ะทำงาน"
	EsEs *string `json:"es_es,omitempty"` // 西班牙语, 示例值: "banco de trabajo"
	KoKr *string `json:"ko_kr,omitempty"` // 韩语, 示例值: "작업대"
}

// CreateTaskReqCustomCompletePc ...
type CreateTaskReqCustomCompletePc struct {
	Href *string                           `json:"href,omitempty"` // 自定义完成的跳转url, 示例值: "https://www.example.com"
	Tip  *CreateTaskReqCustomCompletePcTip `json:"tip,omitempty"`  // 自定义完成的弹出提示
}

// CreateTaskReqCustomCompletePcTip ...
type CreateTaskReqCustomCompletePcTip struct {
	EnUs *string `json:"en_us,omitempty"` // 英文, 示例值: "workbench", 最大长度: `1000` 字符
	ZhCn *string `json:"zh_cn,omitempty"` // 中文, 示例值: "工作台", 最大长度: `1000` 字符
	ZhHk *string `json:"zh_hk,omitempty"` // 中文（香港地区）, 示例值: "工作臺", 最大长度: `1000` 字符
	ZhTw *string `json:"zh_tw,omitempty"` // 中文（台湾地区）, 示例值: "工作臺", 最大长度: `1000` 字符
	JaJp *string `json:"ja_jp,omitempty"` // 日语, 示例值: "作業台", 最大长度: `1000` 字符
	FrFr *string `json:"fr_fr,omitempty"` // 法语, 示例值: "Table de travail"
	ItIt *string `json:"it_it,omitempty"` // 意大利语, 示例值: "banco di lavoro"
	DeDe *string `json:"de_de,omitempty"` // 德语, 示例值: "Werkbank"
	RuRu *string `json:"ru_ru,omitempty"` // 俄语, 示例值: "верстак"
	ThTh *string `json:"th_th,omitempty"` // 泰语, 示例值: "โต๊ะทำงาน"
	EsEs *string `json:"es_es,omitempty"` // 西班牙语, 示例值: "banco de trabajo"
	KoKr *string `json:"ko_kr,omitempty"` // 韩语, 示例值: "작업대"
}

// CreateTaskReqCustomField ...
type CreateTaskReqCustomField struct {
	Guid              string                                 `json:"guid,omitempty"`                // 自定义字段guid, 示例值: "73b21903-0041-4796-a11e-f8be919a7063"
	NumberValue       *string                                `json:"number_value,omitempty"`        // 数字类型的自定义字段值, 填写一个合法数字的字符串表示, 空字符串表示设为空, 示例值: "10.23", 最大长度: `20` 字符
	MemberValue       []*CreateTaskReqCustomFieldMemberValue `json:"member_value,omitempty"`        // 人员类型的自定义字段值。可以设置1个或多个用户的id（遵循member格式, 只支持user类型）。当字段设为只不能多选时只能输入一个值。设为空数组表示设为空, 最大长度: `50`
	DatetimeValue     *string                                `json:"datetime_value,omitempty"`      // 日期类型自定义字段值, 可以输入一个表示日期的以毫秒为单位的时间戳字符串。设为空字符串表示设为空, 示例值: "1698192000000"
	SingleSelectValue *string                                `json:"single_select_value,omitempty"` // 单选类型字段值, 填写一个字段选项的option_guid。设置为空字符串表示设为空, 示例值: "73b21903-0041-4796-a11e-f8be919a7063", 最大长度: `100` 字符
	MultiSelectValue  []string                               `json:"multi_select_value,omitempty"`  // 多选类型字段值, 可以填写一个或多个本字段的option_guid。设为空数组表示设为空, 示例值: ["73b21903-0041-4796-a11e-f8be919a7063"], 最大长度: `50`
	TextValue         *string                                `json:"text_value,omitempty"`          // 文本类型字段值。可以填写最多3000字符。使用空字符串表示设为空, 示例值: "这是一段文本描述。"
}

// CreateTaskReqCustomFieldMemberValue ...
type CreateTaskReqCustomFieldMemberValue struct {
	ID   *string `json:"id,omitempty"`   // 表示member的id, 示例值: "ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f", 最大长度: `100` 字符
	Type *string `json:"type,omitempty"` // 成员类型（默认user, 可不填写）, 示例值: "user", 默认值: `user`
}

// CreateTaskReqDue ...
type CreateTaskReqDue struct {
	Timestamp *string `json:"timestamp,omitempty"`  // 截止时间/日期的时间戳, 距1970-01-01 00:00:00 UTC的毫秒数。如果截止时间是一个日期, 需要把日期转换成时间戳, 并设置 is_all_day=true, 示例值: "1675454764000"
	IsAllDay  *bool   `json:"is_all_day,omitempty"` // 是否截止到一个日期。如果设为true, timestamp中只有日期的部分会被解析和存储, 示例值: true
}

// CreateTaskReqMember ...
type CreateTaskReqMember struct {
	ID   string  `json:"id,omitempty"`   // 表示member的id, 示例值: "ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f", 最大长度: `100` 字符
	Type *string `json:"type,omitempty"` // 成员的类型, 可以是user或者app, 示例值: "user", 默认值: `user`
	Role string  `json:"role,omitempty"` // 成员角色, 可以是"assignee"或者"follower", 示例值: "assignee", 最大长度: `20` 字符
}

// CreateTaskReqOrigin ...
type CreateTaskReqOrigin struct {
	PlatformI18nName *CreateTaskReqOriginPlatformI18nName `json:"platform_i18n_name,omitempty"` // 任务导入来源的名称, 用于在任务中心详情页展示。需提供多语言版本。
	Href             *CreateTaskReqOriginHref             `json:"href,omitempty"`               // 任务关联的来源平台详情页链接
}

// CreateTaskReqOriginHref ...
type CreateTaskReqOriginHref struct {
	URL   *string `json:"url,omitempty"`   // 来源链接对应的地址, 如填写必须以https://或者http://开头, 示例值: "https://www.example.com", 长度范围: `0` ～ `1024` 字符
	Title *string `json:"title,omitempty"` // 来源链接对应的标题, 示例值: "反馈一个问题, 需要协助排查", 最大长度: `512` 字符
}

// CreateTaskReqOriginPlatformI18nName ...
type CreateTaskReqOriginPlatformI18nName struct {
	EnUs *string `json:"en_us,omitempty"` // 英文, 示例值: "workbench", 最大长度: `1000` 字符
	ZhCn *string `json:"zh_cn,omitempty"` // 中文, 示例值: "工作台", 最大长度: `1000` 字符
	ZhHk *string `json:"zh_hk,omitempty"` // 中文（香港地区）, 示例值: "工作臺", 最大长度: `1000` 字符
	ZhTw *string `json:"zh_tw,omitempty"` // 中文（台湾地区）, 示例值: "工作臺", 最大长度: `1000` 字符
	JaJp *string `json:"ja_jp,omitempty"` // 日语, 示例值: "作業台", 最大长度: `1000` 字符
	FrFr *string `json:"fr_fr,omitempty"` // 法语, 示例值: "Table de travail"
	ItIt *string `json:"it_it,omitempty"` // 意大利语, 示例值: "banco di lavoro"
	DeDe *string `json:"de_de,omitempty"` // 德语, 示例值: "Werkbank"
	RuRu *string `json:"ru_ru,omitempty"` // 俄语, 示例值: "верстак"
	ThTh *string `json:"th_th,omitempty"` // 泰语, 示例值: "โต๊ะทำงาน"
	EsEs *string `json:"es_es,omitempty"` // 西班牙语, 示例值: "banco de trabajo"
	KoKr *string `json:"ko_kr,omitempty"` // 韩语, 示例值: "작업대"
}

// CreateTaskReqReminder ...
type CreateTaskReqReminder struct {
	RelativeFireMinute int64 `json:"relative_fire_minute,omitempty"` // 相对于截止时间的提醒时间分钟数。例如30表示截止时间前30分钟提醒；0表示截止时提醒, 示例值: 30
}

// CreateTaskReqStart ...
type CreateTaskReqStart struct {
	Timestamp *string `json:"timestamp,omitempty"`  // 开始时间/日期的时间戳, 距1970-01-01 00:00:00的毫秒数。如果开始时间是一个日期, 需要把日期转换成时间戳, 并设置 is_all_day=true, 如果同时设置任务的开始时间和截止时间, 开始时间必须<=截止时间, 并且开始/截止时间的is_all_day设置必须相同, 示例值: "1675454764000"
	IsAllDay  *bool   `json:"is_all_day,omitempty"` // 是否开始于一个日期。如果设为true, timestamp中只有日期的部分会被解析和存储, 示例值: true
}

// CreateTaskReqTasklist ...
type CreateTaskReqTasklist struct {
	TasklistGuid *string `json:"tasklist_guid,omitempty"` // 指定在某个清单中创建任务, 需要该清单的可编辑权限。不填写表示不在清单中创建任务, 示例值: "cc371766-6584-cf50-a222-c22cd9055004", 最大长度: `100` 字符
	SectionGuid  *string `json:"section_guid,omitempty"`  // 清单中自定义分组的GUID, 用于指定在某个清单中创建任务的同时把任务加入到某个具体的分组中。如果填写了清单的GUID, 却没填写分组的GUID, 则自动加入该清单的默认分组中, 示例值: "e6e37dcc-f75a-5936-f589-12fb4b5c80c2"
}

// CreateTaskResp ...
type CreateTaskResp struct {
	Task *CreateTaskRespTask `json:"task,omitempty"` // 产生的任务
}

// CreateTaskRespTask ...
type CreateTaskRespTask struct {
	Guid           string                            `json:"guid,omitempty"`             // 任务guid, 任务的唯一ID
	Summary        string                            `json:"summary,omitempty"`          // 任务标题
	Description    string                            `json:"description,omitempty"`      // 任务备注
	Due            *CreateTaskRespTaskDue            `json:"due,omitempty"`              // 任务截止时间。详见[功能概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/task-v2/overview)中的“ 如何使用开始时间和截止时间？”章节。
	Reminders      []*CreateTaskRespTaskReminder     `json:"reminders,omitempty"`        // 任务的提醒配置列表。目前每个任务最多有1个。
	Creator        *CreateTaskRespTaskCreator        `json:"creator,omitempty"`          // 任务创建者
	Members        []*CreateTaskRespTaskMember       `json:"members,omitempty"`          // 任务成员列表
	CompletedAt    string                            `json:"completed_at,omitempty"`     // 任务完成的时间戳(ms)
	Attachments    []*CreateTaskRespTaskAttachment   `json:"attachments,omitempty"`      // 任务的附件列表
	Origin         *CreateTaskRespTaskOrigin         `json:"origin,omitempty"`           // 任务关联的第三方平台来源信息。创建是设置后就不可更改。
	Extra          string                            `json:"extra,omitempty"`            // 任务附带的自定义数据。
	Tasklists      []*CreateTaskRespTaskTasklist     `json:"tasklists,omitempty"`        // 任务所属清单的名字。调用者只能看到有权限访问的清单的列表。
	RepeatRule     string                            `json:"repeat_rule,omitempty"`      // 任务的重复规则。
	ParentTaskGuid string                            `json:"parent_task_guid,omitempty"` // 如果当前任务为某个任务的子任务, 返回父任务的guid
	Mode           int64                             `json:"mode,omitempty"`             // 任务的模式。1 - 会签任务；2 - 或签任务
	Source         int64                             `json:"source,omitempty"`           // 任务创建的来源, 可选值有: 0: 未知来源, 1: 任务中心, 2: 群组任务/消息转任务, 6: 通过开放平台以tenant_access_token授权创建的任务, 7: 通过开放平台以user_access_token授权创建的任务, 8: 文档任务
	CustomComplete *CreateTaskRespTaskCustomComplete `json:"custom_complete,omitempty"`  // 任务的自定义完成配置
	TaskID         string                            `json:"task_id,omitempty"`          // 任务界面上的代码
	CreatedAt      string                            `json:"created_at,omitempty"`       // 任务创建时间戳(ms)
	UpdatedAt      string                            `json:"updated_at,omitempty"`       // 任务最后一次更新的时间戳(ms)
	Status         string                            `json:"status,omitempty"`           // 任务的状态, 支持"todo"和"done"两种状态
	URL            string                            `json:"url,omitempty"`              // 任务的分享链接。飞书中点击该链接可以直接打开任务详情。
	Start          *CreateTaskRespTaskStart          `json:"start,omitempty"`            // 任务的开始时间
	SubtaskCount   int64                             `json:"subtask_count,omitempty"`    // 该任务的子任务的个数。
	IsMilestone    bool                              `json:"is_milestone,omitempty"`     // 是否是里程碑任务
	CustomFields   []*CreateTaskRespTaskCustomField  `json:"custom_fields,omitempty"`    // 任务的自定义字段值
	Dependencies   []*CreateTaskRespTaskDependencie  `json:"dependencies,omitempty"`     // 任务依赖
}

// CreateTaskRespTaskAttachment ...
type CreateTaskRespTaskAttachment struct {
	Guid       string                                `json:"guid,omitempty"`        // 附件guid
	FileToken  string                                `json:"file_token,omitempty"`  // 附件在云文档系统中的token
	Name       string                                `json:"name,omitempty"`        // 附件名
	Size       int64                                 `json:"size,omitempty"`        // 附件的字节大小
	Resource   *CreateTaskRespTaskAttachmentResource `json:"resource,omitempty"`    // 附件归属的资源
	Uploader   *CreateTaskRespTaskAttachmentUploader `json:"uploader,omitempty"`    // 附件上传者
	IsCover    bool                                  `json:"is_cover,omitempty"`    // 是否是封面图
	UploadedAt string                                `json:"uploaded_at,omitempty"` // 上传时间戳(ms)
}

// CreateTaskRespTaskAttachmentResource ...
type CreateTaskRespTaskAttachmentResource struct {
	Type string `json:"type,omitempty"` // 资源类型
	ID   string `json:"id,omitempty"`   // 资源ID
}

// CreateTaskRespTaskAttachmentUploader ...
type CreateTaskRespTaskAttachmentUploader struct {
	ID   string `json:"id,omitempty"`   // 表示member的id
	Type string `json:"type,omitempty"` // 成员的类型
	Role string `json:"role,omitempty"` // 角色, 可以是负责人（assginee）或者关注人（follower）
}

// CreateTaskRespTaskCreator ...
type CreateTaskRespTaskCreator struct {
	ID   string `json:"id,omitempty"`   // 表示member的id
	Type string `json:"type,omitempty"` // 成员的类型
	Role string `json:"role,omitempty"` // 成员角色
}

// CreateTaskRespTaskCustomComplete ...
type CreateTaskRespTaskCustomComplete struct {
	Pc      *CreateTaskRespTaskCustomCompletePc      `json:"pc,omitempty"`      // pc客户端自定义完成配置（含mac和windows）
	Ios     *CreateTaskRespTaskCustomCompleteIos     `json:"ios,omitempty"`     // ios端的自定义完成配置
	Android *CreateTaskRespTaskCustomCompleteAndroid `json:"android,omitempty"` // android端的自定义完成配置
}

// CreateTaskRespTaskCustomCompleteAndroid ...
type CreateTaskRespTaskCustomCompleteAndroid struct {
	Href string                                      `json:"href,omitempty"` // 自定义完成的跳转url
	Tip  *CreateTaskRespTaskCustomCompleteAndroidTip `json:"tip,omitempty"`  // 自定义完成的弹出提示为
}

// CreateTaskRespTaskCustomCompleteAndroidTip ...
type CreateTaskRespTaskCustomCompleteAndroidTip struct {
	EnUs string `json:"en_us,omitempty"` // 英文
	ZhCn string `json:"zh_cn,omitempty"` // 中文
	ZhHk string `json:"zh_hk,omitempty"` // 中文（香港地区）
	ZhTw string `json:"zh_tw,omitempty"` // 中文（台湾地区）
	JaJp string `json:"ja_jp,omitempty"` // 日语
	FrFr string `json:"fr_fr,omitempty"` // 法语
	ItIt string `json:"it_it,omitempty"` // 意大利语
	DeDe string `json:"de_de,omitempty"` // 德语
	RuRu string `json:"ru_ru,omitempty"` // 俄语
	ThTh string `json:"th_th,omitempty"` // 泰语
	EsEs string `json:"es_es,omitempty"` // 西班牙语
	KoKr string `json:"ko_kr,omitempty"` // 韩语
}

// CreateTaskRespTaskCustomCompleteIos ...
type CreateTaskRespTaskCustomCompleteIos struct {
	Href string                                  `json:"href,omitempty"` // 自定义完成的跳转url
	Tip  *CreateTaskRespTaskCustomCompleteIosTip `json:"tip,omitempty"`  // 自定义完成的弹出提示为
}

// CreateTaskRespTaskCustomCompleteIosTip ...
type CreateTaskRespTaskCustomCompleteIosTip struct {
	EnUs string `json:"en_us,omitempty"` // 英文
	ZhCn string `json:"zh_cn,omitempty"` // 中文
	ZhHk string `json:"zh_hk,omitempty"` // 中文（香港地区）
	ZhTw string `json:"zh_tw,omitempty"` // 中文（台湾地区）
	JaJp string `json:"ja_jp,omitempty"` // 日语
	FrFr string `json:"fr_fr,omitempty"` // 法语
	ItIt string `json:"it_it,omitempty"` // 意大利语
	DeDe string `json:"de_de,omitempty"` // 德语
	RuRu string `json:"ru_ru,omitempty"` // 俄语
	ThTh string `json:"th_th,omitempty"` // 泰语
	EsEs string `json:"es_es,omitempty"` // 西班牙语
	KoKr string `json:"ko_kr,omitempty"` // 韩语
}

// CreateTaskRespTaskCustomCompletePc ...
type CreateTaskRespTaskCustomCompletePc struct {
	Href string                                 `json:"href,omitempty"` // 自定义完成的跳转url
	Tip  *CreateTaskRespTaskCustomCompletePcTip `json:"tip,omitempty"`  // 自定义完成的弹出提示为
}

// CreateTaskRespTaskCustomCompletePcTip ...
type CreateTaskRespTaskCustomCompletePcTip struct {
	EnUs string `json:"en_us,omitempty"` // 英文
	ZhCn string `json:"zh_cn,omitempty"` // 中文
	ZhHk string `json:"zh_hk,omitempty"` // 中文（香港地区）
	ZhTw string `json:"zh_tw,omitempty"` // 中文（台湾地区）
	JaJp string `json:"ja_jp,omitempty"` // 日语
	FrFr string `json:"fr_fr,omitempty"` // 法语
	ItIt string `json:"it_it,omitempty"` // 意大利语
	DeDe string `json:"de_de,omitempty"` // 德语
	RuRu string `json:"ru_ru,omitempty"` // 俄语
	ThTh string `json:"th_th,omitempty"` // 泰语
	EsEs string `json:"es_es,omitempty"` // 西班牙语
	KoKr string `json:"ko_kr,omitempty"` // 韩语
}

// CreateTaskRespTaskCustomField ...
type CreateTaskRespTaskCustomField struct {
	Guid              string                                      `json:"guid,omitempty"`                // 字段GUID
	Type              string                                      `json:"type,omitempty"`                // 自定义字段类型, 支持"member", "datetime", "number", "single_select", "multi_select"五种类型
	NumberValue       string                                      `json:"number_value,omitempty"`        // 数字类型的自定义字段值, 填写一个合法数字的字符串表示, 空字符串表示设为空。
	DatetimeValue     string                                      `json:"datetime_value,omitempty"`      // 日期类型自定义字段值。可以输入一个表示日期的以毫秒为单位的字符串。设为空字符串表示设为空。
	MemberValue       []*CreateTaskRespTaskCustomFieldMemberValue `json:"member_value,omitempty"`        // 人员类型的自定义字段值, 可以设置1个或多个用户的id（遵循member格式, 只支持user类型）。当该字段的设置为“不能多选”时只能输入一个值。设为空数组表示设为空。
	SingleSelectValue string                                      `json:"single_select_value,omitempty"` // 单选类型字段值, 填写一个字段选项的option_guid。设置为空字符串表示设为空。
	MultiSelectValue  []string                                    `json:"multi_select_value,omitempty"`  // 多选类型字段值, 可以填写一个或多个本字段的option_guid。设为空数组表示设为空。
	Name              string                                      `json:"name,omitempty"`                // 自定义字段名
	TextValue         string                                      `json:"text_value,omitempty"`          // 文本类型字段值。可以输入一段文本。空字符串表示清空。
}

// CreateTaskRespTaskCustomFieldMemberValue ...
type CreateTaskRespTaskCustomFieldMemberValue struct {
	ID   string `json:"id,omitempty"`   // 表示member的id
	Type string `json:"type,omitempty"` // 成员的类型
	Role string `json:"role,omitempty"` // 成员角色
}

// CreateTaskRespTaskDependencie ...
type CreateTaskRespTaskDependencie struct {
	Type     string `json:"type,omitempty"`      // 依赖类型, 可选值有: prev: 前置依赖, next: 后置依赖
	TaskGuid string `json:"task_guid,omitempty"` // 依赖任务的GUID
}

// CreateTaskRespTaskDue ...
type CreateTaskRespTaskDue struct {
	Timestamp string `json:"timestamp,omitempty"`  // 截止时间/日期的时间戳, 距1970-01-01 00:00:00的毫秒数。如果截止时间是一个日期, 需要把日期转换成时间戳, 并设置 is_all_day=true
	IsAllDay  bool   `json:"is_all_day,omitempty"` // 是否截止到一个日期。如果设为true, timestamp中只有日期的部分会被解析和存储。
}

// CreateTaskRespTaskMember ...
type CreateTaskRespTaskMember struct {
	ID   string `json:"id,omitempty"`   // 表示member的id
	Type string `json:"type,omitempty"` // 成员的类型
	Role string `json:"role,omitempty"` // 成员角色
}

// CreateTaskRespTaskOrigin ...
type CreateTaskRespTaskOrigin struct {
	PlatformI18nName *CreateTaskRespTaskOriginPlatformI18nName `json:"platform_i18n_name,omitempty"` // 任务导入来源的名称, 用于在任务中心详情页展示。需提供多语言版本。
	Href             *CreateTaskRespTaskOriginHref             `json:"href,omitempty"`               // 任务关联的来源平台详情页链接
}

// CreateTaskRespTaskOriginHref ...
type CreateTaskRespTaskOriginHref struct {
	URL   string `json:"url,omitempty"`   // 链接对应的地址
	Title string `json:"title,omitempty"` // 链接对应的标题
}

// CreateTaskRespTaskOriginPlatformI18nName ...
type CreateTaskRespTaskOriginPlatformI18nName struct {
	EnUs string `json:"en_us,omitempty"` // 英文
	ZhCn string `json:"zh_cn,omitempty"` // 中文
	ZhHk string `json:"zh_hk,omitempty"` // 中文（香港地区）
	ZhTw string `json:"zh_tw,omitempty"` // 中文（台湾地区）
	JaJp string `json:"ja_jp,omitempty"` // 日语
	FrFr string `json:"fr_fr,omitempty"` // 法语
	ItIt string `json:"it_it,omitempty"` // 意大利语
	DeDe string `json:"de_de,omitempty"` // 德语
	RuRu string `json:"ru_ru,omitempty"` // 俄语
	ThTh string `json:"th_th,omitempty"` // 泰语
	EsEs string `json:"es_es,omitempty"` // 西班牙语
	KoKr string `json:"ko_kr,omitempty"` // 韩语
}

// CreateTaskRespTaskReminder ...
type CreateTaskRespTaskReminder struct {
	ID                 string `json:"id,omitempty"`                   // 提醒时间设置的 ID
	RelativeFireMinute int64  `json:"relative_fire_minute,omitempty"` // 相对于截止时间的提醒分钟数, 是一个非负整数。例如, 设为30表示“截止时间前30分钟提醒”。设为0表示“截止时间时提醒”。
}

// CreateTaskRespTaskStart ...
type CreateTaskRespTaskStart struct {
	Timestamp string `json:"timestamp,omitempty"`  // 开始时间/日期的时间戳, 距1970-01-01 00:00:00的毫秒数。如果开始时间是一个日期, 需要把日期转换成时间戳, 并设置 is_all_day=true
	IsAllDay  bool   `json:"is_all_day,omitempty"` // 是否开始于一个日期。如果设为true, timestamp中只有日期的部分会被解析和存储。
}

// CreateTaskRespTaskTasklist ...
type CreateTaskRespTaskTasklist struct {
	TasklistGuid string `json:"tasklist_guid,omitempty"` // 任务所在清单的guid
	SectionGuid  string `json:"section_guid,omitempty"`  // 任务所在清单的自定义分组guid
}

// createTaskResp ...
type createTaskResp struct {
	Code  int64           `json:"code,omitempty"` // 错误码, 非 0 表示失败
	Msg   string          `json:"msg,omitempty"`  // 错误描述
	Data  *CreateTaskResp `json:"data,omitempty"`
	Error *ErrorDetail    `json:"error,omitempty"`
}
