// 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"
)

// EventV2DriveFileBitableFieldChangedV1 多维表格字段变更
//
// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/file/events/bitable_field_changed
// new doc: https://open.feishu.cn/document/server-docs/docs/drive-v1/event/list/bitable_field_changed
func (r *EventCallbackService) HandlerEventV2DriveFileBitableFieldChangedV1(f EventV2DriveFileBitableFieldChangedV1Handler) {
	r.cli.eventHandler.eventV2DriveFileBitableFieldChangedV1Handler = f
}

// EventV2DriveFileBitableFieldChangedV1Handler event EventV2DriveFileBitableFieldChangedV1 handler
type EventV2DriveFileBitableFieldChangedV1Handler func(ctx context.Context, cli *Lark, schema string, header *EventHeaderV2, event *EventV2DriveFileBitableFieldChangedV1) (string, error)

// EventV2DriveFileBitableFieldChangedV1 ...
type EventV2DriveFileBitableFieldChangedV1 struct {
	FileType         FileType                                             `json:"file_type,omitempty"`          // 文档类型
	FileToken        string                                               `json:"file_token,omitempty"`         // 文档token
	TableID          string                                               `json:"table_id,omitempty"`           // 多维表格数据表ID
	OperatorID       *EventV2DriveFileBitableFieldChangedV1OperatorID     `json:"operator_id,omitempty"`        // 用户 ID
	ActionList       []*EventV2DriveFileBitableFieldChangedV1Action       `json:"action_list,omitempty"`        // 字段变更操作列表
	Revision         int64                                                `json:"revision,omitempty"`           // 多维表格数据表的版本号
	SubscriberIDList []*EventV2DriveFileBitableFieldChangedV1SubscriberID `json:"subscriber_id_list,omitempty"` // 订阅用户id列表
	UpdateTime       int64                                                `json:"update_time,omitempty"`        // 字段变更时间
}

// EventV2DriveFileBitableFieldChangedV1Action ...
type EventV2DriveFileBitableFieldChangedV1Action struct {
	Action      string                                                  `json:"action,omitempty"`       // 操作类型, action目前有三种, field_added表示有新增字段操作, field_edited表示有更新字段操作, field_delete表示有删除字段操作
	FieldID     string                                                  `json:"field_id,omitempty"`     // 字段 ID
	BeforeValue *EventV2DriveFileBitableFieldChangedV1ActionBeforeValue `json:"before_value,omitempty"` // 操作前的字段值
	AfterValue  *EventV2DriveFileBitableFieldChangedV1ActionAfterValue  `json:"after_value,omitempty"`  // 操作后的字段值
}

// EventV2DriveFileBitableFieldChangedV1ActionAfterValue ...
type EventV2DriveFileBitableFieldChangedV1ActionAfterValue struct {
	ID          string                                                         `json:"id,omitempty"`          // 字段 ID
	Name        string                                                         `json:"name,omitempty"`        // 字段名字
	Type        int64                                                          `json:"type,omitempty"`        // 字段类型
	Description string                                                         `json:"description,omitempty"` // 字段描述
	Property    *EventV2DriveFileBitableFieldChangedV1ActionAfterValueProperty `json:"property,omitempty"`    // 字段属性
}

// EventV2DriveFileBitableFieldChangedV1ActionAfterValueProperty ...
type EventV2DriveFileBitableFieldChangedV1ActionAfterValueProperty struct {
	Formatter         string                                                                   `json:"formatter,omitempty"`          // 数字、公式字段的显示格式
	DateFormatter     string                                                                   `json:"date_formatter,omitempty"`     // 日期、创建时间、最后更新时间字段的显示格式
	AutoFill          bool                                                                     `json:"auto_fill,omitempty"`          // 日期字段中新纪录自动填写创建时间
	Multiple          bool                                                                     `json:"multiple,omitempty"`           // 人员字段中允许添加多个成员, 单向关联、双向关联中允许添加多个记录
	TableID           string                                                                   `json:"table_id,omitempty"`           // 单向关联、双向关联字段中关联的数据表的ID
	TableName         string                                                                   `json:"table_name,omitempty"`         // 单向关联、双向关联字段中关联的数据表的名字
	BackFieldName     string                                                                   `json:"back_field_name,omitempty"`    // 双向关联字段中关联的数据表中对应的双向关联字段的名字
	InputType         string                                                                   `json:"input_type,omitempty"`         // 地理位置输入限制
	BackFieldID       string                                                                   `json:"back_field_id,omitempty"`      // 双向关联字段中关联的数据表中对应的双向关联字段的id
	AutoSerial        *EventV2DriveFileBitableFieldChangedV1ActionAfterValuePropertyAutoSerial `json:"auto_serial,omitempty"`        // 自动编号类型
	Options           []*EventV2DriveFileBitableFieldChangedV1ActionAfterValuePropertyOption   `json:"options,omitempty"`            // 单选、多选字段的选项信息
	FormulaExpression string                                                                   `json:"formula_expression,omitempty"` // 公式字段的公式表达式
}

// EventV2DriveFileBitableFieldChangedV1ActionAfterValuePropertyAutoSerial ...
type EventV2DriveFileBitableFieldChangedV1ActionAfterValuePropertyAutoSerial struct {
	Type    string                                                                           `json:"type,omitempty"`    // 自动编号类型
	Options []*EventV2DriveFileBitableFieldChangedV1ActionAfterValuePropertyAutoSerialOption `json:"options,omitempty"` // 自动编号规则列表
}

// EventV2DriveFileBitableFieldChangedV1ActionAfterValuePropertyAutoSerialOption ...
type EventV2DriveFileBitableFieldChangedV1ActionAfterValuePropertyAutoSerialOption struct {
	Type  string `json:"type,omitempty"`  // 自动编号的可选规则项类型
	Value string `json:"value,omitempty"` // 与类型相对应的取值
}

// EventV2DriveFileBitableFieldChangedV1ActionAfterValuePropertyOption ...
type EventV2DriveFileBitableFieldChangedV1ActionAfterValuePropertyOption struct {
	Name  string `json:"name,omitempty"`  // 选项名
	ID    string `json:"id,omitempty"`    // 选项ID
	Color int64  `json:"color,omitempty"` // 选项颜色
}

// EventV2DriveFileBitableFieldChangedV1ActionBeforeValue ...
type EventV2DriveFileBitableFieldChangedV1ActionBeforeValue struct {
	ID          string                                                          `json:"id,omitempty"`          // 字段 ID
	Name        string                                                          `json:"name,omitempty"`        // 字段名字
	Type        int64                                                           `json:"type,omitempty"`        // 字段类型
	Description string                                                          `json:"description,omitempty"` // 字段描述
	Property    *EventV2DriveFileBitableFieldChangedV1ActionBeforeValueProperty `json:"property,omitempty"`    // 字段属性
}

// EventV2DriveFileBitableFieldChangedV1ActionBeforeValueProperty ...
type EventV2DriveFileBitableFieldChangedV1ActionBeforeValueProperty struct {
	Formatter         string                                                                    `json:"formatter,omitempty"`          // 数字、公式字段的显示格式
	DateFormatter     string                                                                    `json:"date_formatter,omitempty"`     // 日期、创建时间、最后更新时间字段的显示格式
	AutoFill          bool                                                                      `json:"auto_fill,omitempty"`          // 日期字段中新纪录自动填写创建时间
	Multiple          bool                                                                      `json:"multiple,omitempty"`           // 人员字段中允许添加多个成员, 单向关联、双向关联中允许添加多个记录
	TableID           string                                                                    `json:"table_id,omitempty"`           // 单向关联、双向关联字段中关联的数据表的ID
	TableName         string                                                                    `json:"table_name,omitempty"`         // 单向关联、双向关联字段中关联的数据表的名字
	BackFieldName     string                                                                    `json:"back_field_name,omitempty"`    // 双向关联字段中关联的数据表中对应的双向关联字段的名字
	InputType         string                                                                    `json:"input_type,omitempty"`         // 地理位置输入限制
	BackFieldID       string                                                                    `json:"back_field_id,omitempty"`      // 双向关联字段中关联的数据表中对应的双向关联字段的id
	AutoSerial        *EventV2DriveFileBitableFieldChangedV1ActionBeforeValuePropertyAutoSerial `json:"auto_serial,omitempty"`        // 自动编号类型
	Options           []*EventV2DriveFileBitableFieldChangedV1ActionBeforeValuePropertyOption   `json:"options,omitempty"`            // 单选、多选字段的选项信息
	FormulaExpression string                                                                    `json:"formula_expression,omitempty"` // 公式字段的公式表达式
}

// EventV2DriveFileBitableFieldChangedV1ActionBeforeValuePropertyAutoSerial ...
type EventV2DriveFileBitableFieldChangedV1ActionBeforeValuePropertyAutoSerial struct {
	Type    string                                                                            `json:"type,omitempty"`    // 自动编号类型
	Options []*EventV2DriveFileBitableFieldChangedV1ActionBeforeValuePropertyAutoSerialOption `json:"options,omitempty"` // 自动编号规则列表
}

// EventV2DriveFileBitableFieldChangedV1ActionBeforeValuePropertyAutoSerialOption ...
type EventV2DriveFileBitableFieldChangedV1ActionBeforeValuePropertyAutoSerialOption struct {
	Type  string `json:"type,omitempty"`  // 自动编号的可选规则项类型
	Value string `json:"value,omitempty"` // 与类型相对应的取值
}

// EventV2DriveFileBitableFieldChangedV1ActionBeforeValuePropertyOption ...
type EventV2DriveFileBitableFieldChangedV1ActionBeforeValuePropertyOption struct {
	Name  string `json:"name,omitempty"`  // 选项名
	ID    string `json:"id,omitempty"`    // 选项ID
	Color int64  `json:"color,omitempty"` // 选项颜色
}

// EventV2DriveFileBitableFieldChangedV1OperatorID ...
type EventV2DriveFileBitableFieldChangedV1OperatorID struct {
	UnionID string `json:"union_id,omitempty"` // 用户的 union id
	UserID  string `json:"user_id,omitempty"`  // 用户的 user id, 字段权限要求: 获取用户 user ID
	OpenID  string `json:"open_id,omitempty"`  // 用户的 open id
}

// EventV2DriveFileBitableFieldChangedV1SubscriberID ...
type EventV2DriveFileBitableFieldChangedV1SubscriberID struct {
	UnionID string `json:"union_id,omitempty"` // union id
	UserID  string `json:"user_id,omitempty"`  // user id
	OpenID  string `json:"open_id,omitempty"`  // open id
}
