// Package authen code generated by oapi sdk gen
/*
 * MIT License
 *
 * Copyright (c) 2022 Lark Technologies Pte. Ltd.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package larkauthen

import (
	"github.com/larksuite/oapi-sdk-go/v3/core"
)

type DepartmentId struct {
	DepartmentId *string `json:"department_id,omitempty"` //

	OpenDepartmentId *string `json:"open_department_id,omitempty"` //
}

type DepartmentIdBuilder struct {
	departmentId     string //
	departmentIdFlag bool

	openDepartmentId     string //
	openDepartmentIdFlag bool
}

func NewDepartmentIdBuilder() *DepartmentIdBuilder {
	builder := &DepartmentIdBuilder{}
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) DepartmentId(departmentId string) *DepartmentIdBuilder {
	builder.departmentId = departmentId
	builder.departmentIdFlag = true
	return builder
}

//
//
// 示例值：
func (builder *DepartmentIdBuilder) OpenDepartmentId(openDepartmentId string) *DepartmentIdBuilder {
	builder.openDepartmentId = openDepartmentId
	builder.openDepartmentIdFlag = true
	return builder
}

func (builder *DepartmentIdBuilder) Build() *DepartmentId {
	req := &DepartmentId{}
	if builder.departmentIdFlag {
		req.DepartmentId = &builder.departmentId

	}
	if builder.openDepartmentIdFlag {
		req.OpenDepartmentId = &builder.openDepartmentId

	}
	return req
}

type TokenInfo struct {
	AccessToken *string `json:"access_token,omitempty"` // user_access_token，用于获取用户资源和访问某些open api

	RefreshToken *string `json:"refresh_token,omitempty"` // 刷新用户 `access_token` 时使用的 token

	TokenType *string `json:"token_type,omitempty"` // token 类型，固定值

	ExpiresIn *int `json:"expires_in,omitempty"` // `access_token`的有效期，单位: 秒，一般是两个小时左右，需要以返回结果为准

	RefreshExpiresIn *int `json:"refresh_expires_in,omitempty"` // `refresh_token` 的有效期，单位: 秒，一般是30天左右，需要以返回结果为准

	Scope *string `json:"scope,omitempty"` // 用户授予app的权限全集
}

type TokenInfoBuilder struct {
	accessToken     string // user_access_token，用于获取用户资源和访问某些open api
	accessTokenFlag bool

	refreshToken     string // 刷新用户 `access_token` 时使用的 token
	refreshTokenFlag bool

	tokenType     string // token 类型，固定值
	tokenTypeFlag bool

	expiresIn     int // `access_token`的有效期，单位: 秒，一般是两个小时左右，需要以返回结果为准
	expiresInFlag bool

	refreshExpiresIn     int // `refresh_token` 的有效期，单位: 秒，一般是30天左右，需要以返回结果为准
	refreshExpiresInFlag bool

	scope     string // 用户授予app的权限全集
	scopeFlag bool
}

func NewTokenInfoBuilder() *TokenInfoBuilder {
	builder := &TokenInfoBuilder{}
	return builder
}

// user_access_token，用于获取用户资源和访问某些open api
//
// 示例值：u-5Dak9ZAxJ9tFUn8MaTD_BFM51FNdg5xzO0y010000HWb
func (builder *TokenInfoBuilder) AccessToken(accessToken string) *TokenInfoBuilder {
	builder.accessToken = accessToken
	builder.accessTokenFlag = true
	return builder
}

// 刷新用户 `access_token` 时使用的 token
//
// 示例值：ur-6EyFQZyplb9URrOx5NtT_HM53zrJg59HXwy040400G.e
func (builder *TokenInfoBuilder) RefreshToken(refreshToken string) *TokenInfoBuilder {
	builder.refreshToken = refreshToken
	builder.refreshTokenFlag = true
	return builder
}

// token 类型，固定值
//
// 示例值：Bearer
func (builder *TokenInfoBuilder) TokenType(tokenType string) *TokenInfoBuilder {
	builder.tokenType = tokenType
	builder.tokenTypeFlag = true
	return builder
}

// `access_token`的有效期，单位: 秒，一般是两个小时左右，需要以返回结果为准
//
// 示例值：7199
func (builder *TokenInfoBuilder) ExpiresIn(expiresIn int) *TokenInfoBuilder {
	builder.expiresIn = expiresIn
	builder.expiresInFlag = true
	return builder
}

// `refresh_token` 的有效期，单位: 秒，一般是30天左右，需要以返回结果为准
//
// 示例值：2591999
func (builder *TokenInfoBuilder) RefreshExpiresIn(refreshExpiresIn int) *TokenInfoBuilder {
	builder.refreshExpiresIn = refreshExpiresIn
	builder.refreshExpiresInFlag = true
	return builder
}

// 用户授予app的权限全集
//
// 示例值：auth:user.id:read bitable:app
func (builder *TokenInfoBuilder) Scope(scope string) *TokenInfoBuilder {
	builder.scope = scope
	builder.scopeFlag = true
	return builder
}

func (builder *TokenInfoBuilder) Build() *TokenInfo {
	req := &TokenInfo{}
	if builder.accessTokenFlag {
		req.AccessToken = &builder.accessToken

	}
	if builder.refreshTokenFlag {
		req.RefreshToken = &builder.refreshToken

	}
	if builder.tokenTypeFlag {
		req.TokenType = &builder.tokenType

	}
	if builder.expiresInFlag {
		req.ExpiresIn = &builder.expiresIn

	}
	if builder.refreshExpiresInFlag {
		req.RefreshExpiresIn = &builder.refreshExpiresIn

	}
	if builder.scopeFlag {
		req.Scope = &builder.scope

	}
	return req
}

type UserAccessTokenInfo struct {
	AccessToken *string `json:"access_token,omitempty"` // user_access_token，用于获取用户资源

	TokenType *string `json:"token_type,omitempty"` // token 类型

	ExpiresIn *int `json:"expires_in,omitempty"` // `access_token`的有效期，单位: 秒

	Name *string `json:"name,omitempty"` // 用户姓名

	EnName *string `json:"en_name,omitempty"` // 用户英文名称

	AvatarUrl *string `json:"avatar_url,omitempty"` // 用户头像

	AvatarThumb *string `json:"avatar_thumb,omitempty"` // 用户头像 72x72

	AvatarMiddle *string `json:"avatar_middle,omitempty"` // 用户头像 240x240

	AvatarBig *string `json:"avatar_big,omitempty"` // 用户头像 640x640

	OpenId *string `json:"open_id,omitempty"` // 用户在应用内的唯一标识

	UnionId *string `json:"union_id,omitempty"` // 用户统一ID

	Email *string `json:"email,omitempty"` // 用户邮箱

	EnterpriseEmail *string `json:"enterprise_email,omitempty"` // 企业邮箱，请先确保已在管理后台启用飞书邮箱服务

	UserId *string `json:"user_id,omitempty"` // 用户 user_id

	Mobile *string `json:"mobile,omitempty"` // 用户手机号

	TenantKey *string `json:"tenant_key,omitempty"` // 当前企业标识

	RefreshExpiresIn *int `json:"refresh_expires_in,omitempty"` // `refresh_token` 的有效期，单位: 秒

	RefreshToken *string `json:"refresh_token,omitempty"` // 刷新用户 `access_token` 时使用的 token

	Sid *string `json:"sid,omitempty"` // 用户当前登录态session的唯一标识，为空则不返回
}

type UserAccessTokenInfoBuilder struct {
	accessToken     string // user_access_token，用于获取用户资源
	accessTokenFlag bool

	tokenType     string // token 类型
	tokenTypeFlag bool

	expiresIn     int // `access_token`的有效期，单位: 秒
	expiresInFlag bool

	name     string // 用户姓名
	nameFlag bool

	enName     string // 用户英文名称
	enNameFlag bool

	avatarUrl     string // 用户头像
	avatarUrlFlag bool

	avatarThumb     string // 用户头像 72x72
	avatarThumbFlag bool

	avatarMiddle     string // 用户头像 240x240
	avatarMiddleFlag bool

	avatarBig     string // 用户头像 640x640
	avatarBigFlag bool

	openId     string // 用户在应用内的唯一标识
	openIdFlag bool

	unionId     string // 用户统一ID
	unionIdFlag bool

	email     string // 用户邮箱
	emailFlag bool

	enterpriseEmail     string // 企业邮箱，请先确保已在管理后台启用飞书邮箱服务
	enterpriseEmailFlag bool

	userId     string // 用户 user_id
	userIdFlag bool

	mobile     string // 用户手机号
	mobileFlag bool

	tenantKey     string // 当前企业标识
	tenantKeyFlag bool

	refreshExpiresIn     int // `refresh_token` 的有效期，单位: 秒
	refreshExpiresInFlag bool

	refreshToken     string // 刷新用户 `access_token` 时使用的 token
	refreshTokenFlag bool

	sid     string // 用户当前登录态session的唯一标识，为空则不返回
	sidFlag bool
}

func NewUserAccessTokenInfoBuilder() *UserAccessTokenInfoBuilder {
	builder := &UserAccessTokenInfoBuilder{}
	return builder
}

// user_access_token，用于获取用户资源
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) AccessToken(accessToken string) *UserAccessTokenInfoBuilder {
	builder.accessToken = accessToken
	builder.accessTokenFlag = true
	return builder
}

// token 类型
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) TokenType(tokenType string) *UserAccessTokenInfoBuilder {
	builder.tokenType = tokenType
	builder.tokenTypeFlag = true
	return builder
}

// `access_token`的有效期，单位: 秒
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) ExpiresIn(expiresIn int) *UserAccessTokenInfoBuilder {
	builder.expiresIn = expiresIn
	builder.expiresInFlag = true
	return builder
}

// 用户姓名
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) Name(name string) *UserAccessTokenInfoBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 用户英文名称
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) EnName(enName string) *UserAccessTokenInfoBuilder {
	builder.enName = enName
	builder.enNameFlag = true
	return builder
}

// 用户头像
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) AvatarUrl(avatarUrl string) *UserAccessTokenInfoBuilder {
	builder.avatarUrl = avatarUrl
	builder.avatarUrlFlag = true
	return builder
}

// 用户头像 72x72
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) AvatarThumb(avatarThumb string) *UserAccessTokenInfoBuilder {
	builder.avatarThumb = avatarThumb
	builder.avatarThumbFlag = true
	return builder
}

// 用户头像 240x240
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) AvatarMiddle(avatarMiddle string) *UserAccessTokenInfoBuilder {
	builder.avatarMiddle = avatarMiddle
	builder.avatarMiddleFlag = true
	return builder
}

// 用户头像 640x640
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) AvatarBig(avatarBig string) *UserAccessTokenInfoBuilder {
	builder.avatarBig = avatarBig
	builder.avatarBigFlag = true
	return builder
}

// 用户在应用内的唯一标识
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) OpenId(openId string) *UserAccessTokenInfoBuilder {
	builder.openId = openId
	builder.openIdFlag = true
	return builder
}

// 用户统一ID
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) UnionId(unionId string) *UserAccessTokenInfoBuilder {
	builder.unionId = unionId
	builder.unionIdFlag = true
	return builder
}

// 用户邮箱
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) Email(email string) *UserAccessTokenInfoBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 企业邮箱，请先确保已在管理后台启用飞书邮箱服务
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) EnterpriseEmail(enterpriseEmail string) *UserAccessTokenInfoBuilder {
	builder.enterpriseEmail = enterpriseEmail
	builder.enterpriseEmailFlag = true
	return builder
}

// 用户 user_id
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) UserId(userId string) *UserAccessTokenInfoBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 用户手机号
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) Mobile(mobile string) *UserAccessTokenInfoBuilder {
	builder.mobile = mobile
	builder.mobileFlag = true
	return builder
}

// 当前企业标识
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) TenantKey(tenantKey string) *UserAccessTokenInfoBuilder {
	builder.tenantKey = tenantKey
	builder.tenantKeyFlag = true
	return builder
}

// `refresh_token` 的有效期，单位: 秒
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) RefreshExpiresIn(refreshExpiresIn int) *UserAccessTokenInfoBuilder {
	builder.refreshExpiresIn = refreshExpiresIn
	builder.refreshExpiresInFlag = true
	return builder
}

// 刷新用户 `access_token` 时使用的 token
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) RefreshToken(refreshToken string) *UserAccessTokenInfoBuilder {
	builder.refreshToken = refreshToken
	builder.refreshTokenFlag = true
	return builder
}

// 用户当前登录态session的唯一标识，为空则不返回
//
// 示例值：
func (builder *UserAccessTokenInfoBuilder) Sid(sid string) *UserAccessTokenInfoBuilder {
	builder.sid = sid
	builder.sidFlag = true
	return builder
}

func (builder *UserAccessTokenInfoBuilder) Build() *UserAccessTokenInfo {
	req := &UserAccessTokenInfo{}
	if builder.accessTokenFlag {
		req.AccessToken = &builder.accessToken

	}
	if builder.tokenTypeFlag {
		req.TokenType = &builder.tokenType

	}
	if builder.expiresInFlag {
		req.ExpiresIn = &builder.expiresIn

	}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.enNameFlag {
		req.EnName = &builder.enName

	}
	if builder.avatarUrlFlag {
		req.AvatarUrl = &builder.avatarUrl

	}
	if builder.avatarThumbFlag {
		req.AvatarThumb = &builder.avatarThumb

	}
	if builder.avatarMiddleFlag {
		req.AvatarMiddle = &builder.avatarMiddle

	}
	if builder.avatarBigFlag {
		req.AvatarBig = &builder.avatarBig

	}
	if builder.openIdFlag {
		req.OpenId = &builder.openId

	}
	if builder.unionIdFlag {
		req.UnionId = &builder.unionId

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.enterpriseEmailFlag {
		req.EnterpriseEmail = &builder.enterpriseEmail

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.mobileFlag {
		req.Mobile = &builder.mobile

	}
	if builder.tenantKeyFlag {
		req.TenantKey = &builder.tenantKey

	}
	if builder.refreshExpiresInFlag {
		req.RefreshExpiresIn = &builder.refreshExpiresIn

	}
	if builder.refreshTokenFlag {
		req.RefreshToken = &builder.refreshToken

	}
	if builder.sidFlag {
		req.Sid = &builder.sid

	}
	return req
}

type UserInfo struct {
	Name *string `json:"name,omitempty"` // 用户姓名

	EnName *string `json:"en_name,omitempty"` // 用户英文名称

	AvatarUrl *string `json:"avatar_url,omitempty"` // 用户头像

	AvatarThumb *string `json:"avatar_thumb,omitempty"` // 用户头像 72x72

	AvatarMiddle *string `json:"avatar_middle,omitempty"` // 用户头像 240x240

	AvatarBig *string `json:"avatar_big,omitempty"` // 用户头像 640x640

	OpenId *string `json:"open_id,omitempty"` // 用户在应用内的唯一标识

	UnionId *string `json:"union_id,omitempty"` // 用户统一ID

	Email *string `json:"email,omitempty"` // 用户邮箱

	EnterpriseEmail *string `json:"enterprise_email,omitempty"` // 企业邮箱，请先确保已在管理后台启用飞书邮箱服务

	UserId *string `json:"user_id,omitempty"` // 用户 user_id

	Mobile *string `json:"mobile,omitempty"` // 用户手机号

	TenantKey *string `json:"tenant_key,omitempty"` // 当前企业标识

	EmployeeNo *string `json:"employee_no,omitempty"` // 用户工号
}

type UserInfoBuilder struct {
	name     string // 用户姓名
	nameFlag bool

	enName     string // 用户英文名称
	enNameFlag bool

	avatarUrl     string // 用户头像
	avatarUrlFlag bool

	avatarThumb     string // 用户头像 72x72
	avatarThumbFlag bool

	avatarMiddle     string // 用户头像 240x240
	avatarMiddleFlag bool

	avatarBig     string // 用户头像 640x640
	avatarBigFlag bool

	openId     string // 用户在应用内的唯一标识
	openIdFlag bool

	unionId     string // 用户统一ID
	unionIdFlag bool

	email     string // 用户邮箱
	emailFlag bool

	enterpriseEmail     string // 企业邮箱，请先确保已在管理后台启用飞书邮箱服务
	enterpriseEmailFlag bool

	userId     string // 用户 user_id
	userIdFlag bool

	mobile     string // 用户手机号
	mobileFlag bool

	tenantKey     string // 当前企业标识
	tenantKeyFlag bool

	employeeNo     string // 用户工号
	employeeNoFlag bool
}

func NewUserInfoBuilder() *UserInfoBuilder {
	builder := &UserInfoBuilder{}
	return builder
}

// 用户姓名
//
// 示例值：zhangsan
func (builder *UserInfoBuilder) Name(name string) *UserInfoBuilder {
	builder.name = name
	builder.nameFlag = true
	return builder
}

// 用户英文名称
//
// 示例值：zhangsan
func (builder *UserInfoBuilder) EnName(enName string) *UserInfoBuilder {
	builder.enName = enName
	builder.enNameFlag = true
	return builder
}

// 用户头像
//
// 示例值：www.feishu.cn/avatar/icon
func (builder *UserInfoBuilder) AvatarUrl(avatarUrl string) *UserInfoBuilder {
	builder.avatarUrl = avatarUrl
	builder.avatarUrlFlag = true
	return builder
}

// 用户头像 72x72
//
// 示例值：www.feishu.cn/avatar/icon
func (builder *UserInfoBuilder) AvatarThumb(avatarThumb string) *UserInfoBuilder {
	builder.avatarThumb = avatarThumb
	builder.avatarThumbFlag = true
	return builder
}

// 用户头像 240x240
//
// 示例值：www.feishu.cn/avatar/icon
func (builder *UserInfoBuilder) AvatarMiddle(avatarMiddle string) *UserInfoBuilder {
	builder.avatarMiddle = avatarMiddle
	builder.avatarMiddleFlag = true
	return builder
}

// 用户头像 640x640
//
// 示例值：www.feishu.cn/avatar/icon
func (builder *UserInfoBuilder) AvatarBig(avatarBig string) *UserInfoBuilder {
	builder.avatarBig = avatarBig
	builder.avatarBigFlag = true
	return builder
}

// 用户在应用内的唯一标识
//
// 示例值：ou-caecc734c2e3328a62489fe0648c4b98779515d3
func (builder *UserInfoBuilder) OpenId(openId string) *UserInfoBuilder {
	builder.openId = openId
	builder.openIdFlag = true
	return builder
}

// 用户统一ID
//
// 示例值：on-d89jhsdhjsajkda7828enjdj328ydhhw3u43yjhdj
func (builder *UserInfoBuilder) UnionId(unionId string) *UserInfoBuilder {
	builder.unionId = unionId
	builder.unionIdFlag = true
	return builder
}

// 用户邮箱
//
// 示例值：zhangsan@feishu.cn
func (builder *UserInfoBuilder) Email(email string) *UserInfoBuilder {
	builder.email = email
	builder.emailFlag = true
	return builder
}

// 企业邮箱，请先确保已在管理后台启用飞书邮箱服务
//
// 示例值：zhangsan@feishu.cn
func (builder *UserInfoBuilder) EnterpriseEmail(enterpriseEmail string) *UserInfoBuilder {
	builder.enterpriseEmail = enterpriseEmail
	builder.enterpriseEmailFlag = true
	return builder
}

// 用户 user_id
//
// 示例值：5d9bdxxx
func (builder *UserInfoBuilder) UserId(userId string) *UserInfoBuilder {
	builder.userId = userId
	builder.userIdFlag = true
	return builder
}

// 用户手机号
//
// 示例值：+86130002883xx
func (builder *UserInfoBuilder) Mobile(mobile string) *UserInfoBuilder {
	builder.mobile = mobile
	builder.mobileFlag = true
	return builder
}

// 当前企业标识
//
// 示例值：736588c92lxf175d
func (builder *UserInfoBuilder) TenantKey(tenantKey string) *UserInfoBuilder {
	builder.tenantKey = tenantKey
	builder.tenantKeyFlag = true
	return builder
}

// 用户工号
//
// 示例值：111222333
func (builder *UserInfoBuilder) EmployeeNo(employeeNo string) *UserInfoBuilder {
	builder.employeeNo = employeeNo
	builder.employeeNoFlag = true
	return builder
}

func (builder *UserInfoBuilder) Build() *UserInfo {
	req := &UserInfo{}
	if builder.nameFlag {
		req.Name = &builder.name

	}
	if builder.enNameFlag {
		req.EnName = &builder.enName

	}
	if builder.avatarUrlFlag {
		req.AvatarUrl = &builder.avatarUrl

	}
	if builder.avatarThumbFlag {
		req.AvatarThumb = &builder.avatarThumb

	}
	if builder.avatarMiddleFlag {
		req.AvatarMiddle = &builder.avatarMiddle

	}
	if builder.avatarBigFlag {
		req.AvatarBig = &builder.avatarBig

	}
	if builder.openIdFlag {
		req.OpenId = &builder.openId

	}
	if builder.unionIdFlag {
		req.UnionId = &builder.unionId

	}
	if builder.emailFlag {
		req.Email = &builder.email

	}
	if builder.enterpriseEmailFlag {
		req.EnterpriseEmail = &builder.enterpriseEmail

	}
	if builder.userIdFlag {
		req.UserId = &builder.userId

	}
	if builder.mobileFlag {
		req.Mobile = &builder.mobile

	}
	if builder.tenantKeyFlag {
		req.TenantKey = &builder.tenantKey

	}
	if builder.employeeNoFlag {
		req.EmployeeNo = &builder.employeeNo

	}
	return req
}

type CreateAccessTokenReqBodyBuilder struct {
	grantType     string // 授权类型，**固定值**
	grantTypeFlag bool

	code     string // 登录预授权码，调用[获取登录预授权码](https://open.feishu.cn/document/ukTMukTMukTM/ukzN4UjL5cDO14SO3gTN)接口获取
	codeFlag bool
}

func NewCreateAccessTokenReqBodyBuilder() *CreateAccessTokenReqBodyBuilder {
	builder := &CreateAccessTokenReqBodyBuilder{}
	return builder
}

// 授权类型，**固定值**
//
//示例值：authorization_code
func (builder *CreateAccessTokenReqBodyBuilder) GrantType(grantType string) *CreateAccessTokenReqBodyBuilder {
	builder.grantType = grantType
	builder.grantTypeFlag = true
	return builder
}

// 登录预授权码，调用[获取登录预授权码](https://open.feishu.cn/document/ukTMukTMukTM/ukzN4UjL5cDO14SO3gTN)接口获取
//
//示例值：xMSldislSkdK
func (builder *CreateAccessTokenReqBodyBuilder) Code(code string) *CreateAccessTokenReqBodyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

func (builder *CreateAccessTokenReqBodyBuilder) Build() *CreateAccessTokenReqBody {
	req := &CreateAccessTokenReqBody{}
	if builder.grantTypeFlag {
		req.GrantType = &builder.grantType
	}
	if builder.codeFlag {
		req.Code = &builder.code
	}
	return req
}

type CreateAccessTokenPathReqBodyBuilder struct {
	grantType     string
	grantTypeFlag bool
	code          string
	codeFlag      bool
}

func NewCreateAccessTokenPathReqBodyBuilder() *CreateAccessTokenPathReqBodyBuilder {
	builder := &CreateAccessTokenPathReqBodyBuilder{}
	return builder
}

// 授权类型，**固定值**
//
// 示例值：authorization_code
func (builder *CreateAccessTokenPathReqBodyBuilder) GrantType(grantType string) *CreateAccessTokenPathReqBodyBuilder {
	builder.grantType = grantType
	builder.grantTypeFlag = true
	return builder
}

// 登录预授权码，调用[获取登录预授权码](https://open.feishu.cn/document/ukTMukTMukTM/ukzN4UjL5cDO14SO3gTN)接口获取
//
// 示例值：xMSldislSkdK
func (builder *CreateAccessTokenPathReqBodyBuilder) Code(code string) *CreateAccessTokenPathReqBodyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

func (builder *CreateAccessTokenPathReqBodyBuilder) Build() (*CreateAccessTokenReqBody, error) {
	req := &CreateAccessTokenReqBody{}
	if builder.grantTypeFlag {
		req.GrantType = &builder.grantType
	}
	if builder.codeFlag {
		req.Code = &builder.code
	}
	return req, nil
}

type CreateAccessTokenReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateAccessTokenReqBody
}

func NewCreateAccessTokenReqBuilder() *CreateAccessTokenReqBuilder {
	builder := &CreateAccessTokenReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *CreateAccessTokenReqBuilder) Body(body *CreateAccessTokenReqBody) *CreateAccessTokenReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateAccessTokenReqBuilder) Build() *CreateAccessTokenReq {
	req := &CreateAccessTokenReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type CreateAccessTokenReqBody struct {
	GrantType *string `json:"grant_type,omitempty"` // 授权类型，**固定值**

	Code *string `json:"code,omitempty"` // 登录预授权码，调用[获取登录预授权码](https://open.feishu.cn/document/ukTMukTMukTM/ukzN4UjL5cDO14SO3gTN)接口获取
}

type CreateAccessTokenReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateAccessTokenReqBody `body:""`
}

type CreateAccessTokenRespData struct {
	AccessToken *string `json:"access_token,omitempty"` // user_access_token，用于获取用户资源

	TokenType *string `json:"token_type,omitempty"` // token 类型

	ExpiresIn *int `json:"expires_in,omitempty"` // `access_token`的有效期，单位: 秒

	Name *string `json:"name,omitempty"` // 用户姓名

	EnName *string `json:"en_name,omitempty"` // 用户英文名称

	AvatarUrl *string `json:"avatar_url,omitempty"` // 用户头像

	AvatarThumb *string `json:"avatar_thumb,omitempty"` // 用户头像 72x72

	AvatarMiddle *string `json:"avatar_middle,omitempty"` // 用户头像 240x240

	AvatarBig *string `json:"avatar_big,omitempty"` // 用户头像 640x640

	OpenId *string `json:"open_id,omitempty"` // 用户在应用内的唯一标识

	UnionId *string `json:"union_id,omitempty"` // 用户统一ID

	Email *string `json:"email,omitempty"` // 用户邮箱

	EnterpriseEmail *string `json:"enterprise_email,omitempty"` // 企业邮箱，请先确保已在管理后台启用飞书邮箱服务

	UserId *string `json:"user_id,omitempty"` // 用户 user_id

	Mobile *string `json:"mobile,omitempty"` // 用户手机号

	TenantKey *string `json:"tenant_key,omitempty"` // 当前企业标识

	RefreshExpiresIn *int `json:"refresh_expires_in,omitempty"` // `refresh_token` 的有效期，单位: 秒

	RefreshToken *string `json:"refresh_token,omitempty"` // 刷新用户 `access_token` 时使用的 token

	Sid *string `json:"sid,omitempty"` // 用户当前登录态session的唯一标识，为空则不返回
}

type CreateAccessTokenResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateAccessTokenRespData `json:"data"` // 业务数据
}

func (resp *CreateAccessTokenResp) Success() bool {
	return resp.Code == 0
}

type CreateOidcAccessTokenReqBodyBuilder struct {
	grantType     string // 授权类型，**固定值**
	grantTypeFlag bool

	code     string // 登录预授权码
	codeFlag bool
}

func NewCreateOidcAccessTokenReqBodyBuilder() *CreateOidcAccessTokenReqBodyBuilder {
	builder := &CreateOidcAccessTokenReqBodyBuilder{}
	return builder
}

// 授权类型，**固定值**
//
//示例值：authorization_code
func (builder *CreateOidcAccessTokenReqBodyBuilder) GrantType(grantType string) *CreateOidcAccessTokenReqBodyBuilder {
	builder.grantType = grantType
	builder.grantTypeFlag = true
	return builder
}

// 登录预授权码
//
//示例值：xMSldislSkdK
func (builder *CreateOidcAccessTokenReqBodyBuilder) Code(code string) *CreateOidcAccessTokenReqBodyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

func (builder *CreateOidcAccessTokenReqBodyBuilder) Build() *CreateOidcAccessTokenReqBody {
	req := &CreateOidcAccessTokenReqBody{}
	if builder.grantTypeFlag {
		req.GrantType = &builder.grantType
	}
	if builder.codeFlag {
		req.Code = &builder.code
	}
	return req
}

type CreateOidcAccessTokenPathReqBodyBuilder struct {
	grantType     string
	grantTypeFlag bool
	code          string
	codeFlag      bool
}

func NewCreateOidcAccessTokenPathReqBodyBuilder() *CreateOidcAccessTokenPathReqBodyBuilder {
	builder := &CreateOidcAccessTokenPathReqBodyBuilder{}
	return builder
}

// 授权类型，**固定值**
//
// 示例值：authorization_code
func (builder *CreateOidcAccessTokenPathReqBodyBuilder) GrantType(grantType string) *CreateOidcAccessTokenPathReqBodyBuilder {
	builder.grantType = grantType
	builder.grantTypeFlag = true
	return builder
}

// 登录预授权码
//
// 示例值：xMSldislSkdK
func (builder *CreateOidcAccessTokenPathReqBodyBuilder) Code(code string) *CreateOidcAccessTokenPathReqBodyBuilder {
	builder.code = code
	builder.codeFlag = true
	return builder
}

func (builder *CreateOidcAccessTokenPathReqBodyBuilder) Build() (*CreateOidcAccessTokenReqBody, error) {
	req := &CreateOidcAccessTokenReqBody{}
	if builder.grantTypeFlag {
		req.GrantType = &builder.grantType
	}
	if builder.codeFlag {
		req.Code = &builder.code
	}
	return req, nil
}

type CreateOidcAccessTokenReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateOidcAccessTokenReqBody
}

func NewCreateOidcAccessTokenReqBuilder() *CreateOidcAccessTokenReqBuilder {
	builder := &CreateOidcAccessTokenReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *CreateOidcAccessTokenReqBuilder) Body(body *CreateOidcAccessTokenReqBody) *CreateOidcAccessTokenReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateOidcAccessTokenReqBuilder) Build() *CreateOidcAccessTokenReq {
	req := &CreateOidcAccessTokenReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type CreateOidcAccessTokenReqBody struct {
	GrantType *string `json:"grant_type,omitempty"` // 授权类型，**固定值**

	Code *string `json:"code,omitempty"` // 登录预授权码
}

type CreateOidcAccessTokenReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateOidcAccessTokenReqBody `body:""`
}

type CreateOidcAccessTokenRespData struct {
	AccessToken *string `json:"access_token,omitempty"` // user_access_token，用于获取用户资源和访问某些open api

	RefreshToken *string `json:"refresh_token,omitempty"` // 刷新用户 `access_token` 时使用的 token

	TokenType *string `json:"token_type,omitempty"` // token 类型，固定值

	ExpiresIn *int `json:"expires_in,omitempty"` // `access_token`的有效期，单位: 秒，一般是两个小时左右，需要以返回结果为准

	RefreshExpiresIn *int `json:"refresh_expires_in,omitempty"` // `refresh_token` 的有效期，单位: 秒，一般是30天左右，需要以返回结果为准

	Scope *string `json:"scope,omitempty"` // 用户授予app的权限全集
}

type CreateOidcAccessTokenResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateOidcAccessTokenRespData `json:"data"` // 业务数据
}

func (resp *CreateOidcAccessTokenResp) Success() bool {
	return resp.Code == 0
}

type CreateOidcRefreshAccessTokenReqBodyBuilder struct {
	grantType     string // 授权类型，**固定值**：
	grantTypeFlag bool

	refreshToken     string // 刷新 `user_access_token` 需要的凭证<br>获取user_access_token`接口和本接口均返回 `refresh_token`，**每次请求，请注意使用最新获取到的`refresh_token`**
	refreshTokenFlag bool
}

func NewCreateOidcRefreshAccessTokenReqBodyBuilder() *CreateOidcRefreshAccessTokenReqBodyBuilder {
	builder := &CreateOidcRefreshAccessTokenReqBodyBuilder{}
	return builder
}

// 授权类型，**固定值**：
//
//示例值：refresh_token
func (builder *CreateOidcRefreshAccessTokenReqBodyBuilder) GrantType(grantType string) *CreateOidcRefreshAccessTokenReqBodyBuilder {
	builder.grantType = grantType
	builder.grantTypeFlag = true
	return builder
}

// 刷新 `user_access_token` 需要的凭证<br>获取user_access_token`接口和本接口均返回 `refresh_token`，**每次请求，请注意使用最新获取到的`refresh_token`**
//
//示例值：ur-oQ0mMq6MCcueAv0pwx2fQQhxqv__CbLu6G8ySFwafeKww2Def2BJdOkW3.9gCFM.LBQgFri901QaqeuL
func (builder *CreateOidcRefreshAccessTokenReqBodyBuilder) RefreshToken(refreshToken string) *CreateOidcRefreshAccessTokenReqBodyBuilder {
	builder.refreshToken = refreshToken
	builder.refreshTokenFlag = true
	return builder
}

func (builder *CreateOidcRefreshAccessTokenReqBodyBuilder) Build() *CreateOidcRefreshAccessTokenReqBody {
	req := &CreateOidcRefreshAccessTokenReqBody{}
	if builder.grantTypeFlag {
		req.GrantType = &builder.grantType
	}
	if builder.refreshTokenFlag {
		req.RefreshToken = &builder.refreshToken
	}
	return req
}

type CreateOidcRefreshAccessTokenPathReqBodyBuilder struct {
	grantType        string
	grantTypeFlag    bool
	refreshToken     string
	refreshTokenFlag bool
}

func NewCreateOidcRefreshAccessTokenPathReqBodyBuilder() *CreateOidcRefreshAccessTokenPathReqBodyBuilder {
	builder := &CreateOidcRefreshAccessTokenPathReqBodyBuilder{}
	return builder
}

// 授权类型，**固定值**：
//
// 示例值：refresh_token
func (builder *CreateOidcRefreshAccessTokenPathReqBodyBuilder) GrantType(grantType string) *CreateOidcRefreshAccessTokenPathReqBodyBuilder {
	builder.grantType = grantType
	builder.grantTypeFlag = true
	return builder
}

// 刷新 `user_access_token` 需要的凭证<br>获取user_access_token`接口和本接口均返回 `refresh_token`，**每次请求，请注意使用最新获取到的`refresh_token`**
//
// 示例值：ur-oQ0mMq6MCcueAv0pwx2fQQhxqv__CbLu6G8ySFwafeKww2Def2BJdOkW3.9gCFM.LBQgFri901QaqeuL
func (builder *CreateOidcRefreshAccessTokenPathReqBodyBuilder) RefreshToken(refreshToken string) *CreateOidcRefreshAccessTokenPathReqBodyBuilder {
	builder.refreshToken = refreshToken
	builder.refreshTokenFlag = true
	return builder
}

func (builder *CreateOidcRefreshAccessTokenPathReqBodyBuilder) Build() (*CreateOidcRefreshAccessTokenReqBody, error) {
	req := &CreateOidcRefreshAccessTokenReqBody{}
	if builder.grantTypeFlag {
		req.GrantType = &builder.grantType
	}
	if builder.refreshTokenFlag {
		req.RefreshToken = &builder.refreshToken
	}
	return req, nil
}

type CreateOidcRefreshAccessTokenReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateOidcRefreshAccessTokenReqBody
}

func NewCreateOidcRefreshAccessTokenReqBuilder() *CreateOidcRefreshAccessTokenReqBuilder {
	builder := &CreateOidcRefreshAccessTokenReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *CreateOidcRefreshAccessTokenReqBuilder) Body(body *CreateOidcRefreshAccessTokenReqBody) *CreateOidcRefreshAccessTokenReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateOidcRefreshAccessTokenReqBuilder) Build() *CreateOidcRefreshAccessTokenReq {
	req := &CreateOidcRefreshAccessTokenReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type CreateOidcRefreshAccessTokenReqBody struct {
	GrantType *string `json:"grant_type,omitempty"` // 授权类型，**固定值**：

	RefreshToken *string `json:"refresh_token,omitempty"` // 刷新 `user_access_token` 需要的凭证<br>获取user_access_token`接口和本接口均返回 `refresh_token`，**每次请求，请注意使用最新获取到的`refresh_token`**
}

type CreateOidcRefreshAccessTokenReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateOidcRefreshAccessTokenReqBody `body:""`
}

type CreateOidcRefreshAccessTokenRespData struct {
	AccessToken *string `json:"access_token,omitempty"` // user_access_token，用于获取用户资源和访问某些open api

	RefreshToken *string `json:"refresh_token,omitempty"` // 刷新用户 `access_token` 时使用的 token

	TokenType *string `json:"token_type,omitempty"` // token 类型，固定值

	ExpiresIn *int `json:"expires_in,omitempty"` // `access_token`的有效期，单位: 秒，一般是两个小时左右，需要以返回结果为准

	RefreshExpiresIn *int `json:"refresh_expires_in,omitempty"` // `refresh_token` 的有效期，单位: 秒，一般是30天左右，需要以返回结果为准

	Scope *string `json:"scope,omitempty"` // 用户授予app的权限全集
}

type CreateOidcRefreshAccessTokenResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateOidcRefreshAccessTokenRespData `json:"data"` // 业务数据
}

func (resp *CreateOidcRefreshAccessTokenResp) Success() bool {
	return resp.Code == 0
}

type CreateRefreshAccessTokenReqBodyBuilder struct {
	grantType     string // 授权类型，**固定值**：
	grantTypeFlag bool

	refreshToken     string // 刷新 `user_access_token` 需要的凭证<br>获取user_access_token`接口和本接口均返回 `refresh_token`，**每次请求，请注意使用最新获取到的`refresh_token`**
	refreshTokenFlag bool
}

func NewCreateRefreshAccessTokenReqBodyBuilder() *CreateRefreshAccessTokenReqBodyBuilder {
	builder := &CreateRefreshAccessTokenReqBodyBuilder{}
	return builder
}

// 授权类型，**固定值**：
//
//示例值：refresh_token
func (builder *CreateRefreshAccessTokenReqBodyBuilder) GrantType(grantType string) *CreateRefreshAccessTokenReqBodyBuilder {
	builder.grantType = grantType
	builder.grantTypeFlag = true
	return builder
}

// 刷新 `user_access_token` 需要的凭证<br>获取user_access_token`接口和本接口均返回 `refresh_token`，**每次请求，请注意使用最新获取到的`refresh_token`**
//
//示例值：ur-oQ0mMq6MCcueAv0pwx2fQQhxqv__CbLu6G8ySFwafeKww2Def2BJdOkW3.9gCFM.LBQgFri901QaqeuL
func (builder *CreateRefreshAccessTokenReqBodyBuilder) RefreshToken(refreshToken string) *CreateRefreshAccessTokenReqBodyBuilder {
	builder.refreshToken = refreshToken
	builder.refreshTokenFlag = true
	return builder
}

func (builder *CreateRefreshAccessTokenReqBodyBuilder) Build() *CreateRefreshAccessTokenReqBody {
	req := &CreateRefreshAccessTokenReqBody{}
	if builder.grantTypeFlag {
		req.GrantType = &builder.grantType
	}
	if builder.refreshTokenFlag {
		req.RefreshToken = &builder.refreshToken
	}
	return req
}

type CreateRefreshAccessTokenPathReqBodyBuilder struct {
	grantType        string
	grantTypeFlag    bool
	refreshToken     string
	refreshTokenFlag bool
}

func NewCreateRefreshAccessTokenPathReqBodyBuilder() *CreateRefreshAccessTokenPathReqBodyBuilder {
	builder := &CreateRefreshAccessTokenPathReqBodyBuilder{}
	return builder
}

// 授权类型，**固定值**：
//
// 示例值：refresh_token
func (builder *CreateRefreshAccessTokenPathReqBodyBuilder) GrantType(grantType string) *CreateRefreshAccessTokenPathReqBodyBuilder {
	builder.grantType = grantType
	builder.grantTypeFlag = true
	return builder
}

// 刷新 `user_access_token` 需要的凭证<br>获取user_access_token`接口和本接口均返回 `refresh_token`，**每次请求，请注意使用最新获取到的`refresh_token`**
//
// 示例值：ur-oQ0mMq6MCcueAv0pwx2fQQhxqv__CbLu6G8ySFwafeKww2Def2BJdOkW3.9gCFM.LBQgFri901QaqeuL
func (builder *CreateRefreshAccessTokenPathReqBodyBuilder) RefreshToken(refreshToken string) *CreateRefreshAccessTokenPathReqBodyBuilder {
	builder.refreshToken = refreshToken
	builder.refreshTokenFlag = true
	return builder
}

func (builder *CreateRefreshAccessTokenPathReqBodyBuilder) Build() (*CreateRefreshAccessTokenReqBody, error) {
	req := &CreateRefreshAccessTokenReqBody{}
	if builder.grantTypeFlag {
		req.GrantType = &builder.grantType
	}
	if builder.refreshTokenFlag {
		req.RefreshToken = &builder.refreshToken
	}
	return req, nil
}

type CreateRefreshAccessTokenReqBuilder struct {
	apiReq *larkcore.ApiReq
	body   *CreateRefreshAccessTokenReqBody
}

func NewCreateRefreshAccessTokenReqBuilder() *CreateRefreshAccessTokenReqBuilder {
	builder := &CreateRefreshAccessTokenReqBuilder{}
	builder.apiReq = &larkcore.ApiReq{
		PathParams:  larkcore.PathParams{},
		QueryParams: larkcore.QueryParams{},
	}
	return builder
}

//
func (builder *CreateRefreshAccessTokenReqBuilder) Body(body *CreateRefreshAccessTokenReqBody) *CreateRefreshAccessTokenReqBuilder {
	builder.body = body
	return builder
}

func (builder *CreateRefreshAccessTokenReqBuilder) Build() *CreateRefreshAccessTokenReq {
	req := &CreateRefreshAccessTokenReq{}
	req.apiReq = &larkcore.ApiReq{}
	req.apiReq.Body = builder.body
	return req
}

type CreateRefreshAccessTokenReqBody struct {
	GrantType *string `json:"grant_type,omitempty"` // 授权类型，**固定值**：

	RefreshToken *string `json:"refresh_token,omitempty"` // 刷新 `user_access_token` 需要的凭证<br>获取user_access_token`接口和本接口均返回 `refresh_token`，**每次请求，请注意使用最新获取到的`refresh_token`**
}

type CreateRefreshAccessTokenReq struct {
	apiReq *larkcore.ApiReq
	Body   *CreateRefreshAccessTokenReqBody `body:""`
}

type CreateRefreshAccessTokenRespData struct {
	AccessToken *string `json:"access_token,omitempty"` // user_access_token，用于获取用户资源

	TokenType *string `json:"token_type,omitempty"` // token 类型

	ExpiresIn *int `json:"expires_in,omitempty"` // `access_token`的有效期，单位: 秒

	Name *string `json:"name,omitempty"` // 用户姓名

	EnName *string `json:"en_name,omitempty"` // 用户英文名称

	AvatarUrl *string `json:"avatar_url,omitempty"` // 用户头像

	AvatarThumb *string `json:"avatar_thumb,omitempty"` // 用户头像 72x72

	AvatarMiddle *string `json:"avatar_middle,omitempty"` // 用户头像 240x240

	AvatarBig *string `json:"avatar_big,omitempty"` // 用户头像 640x640

	OpenId *string `json:"open_id,omitempty"` // 用户在应用内的唯一标识

	UnionId *string `json:"union_id,omitempty"` // 用户统一ID

	Email *string `json:"email,omitempty"` // 用户邮箱

	EnterpriseEmail *string `json:"enterprise_email,omitempty"` // 企业邮箱，请先确保已在管理后台启用飞书邮箱服务

	UserId *string `json:"user_id,omitempty"` // 用户 user_id

	Mobile *string `json:"mobile,omitempty"` // 用户手机号

	TenantKey *string `json:"tenant_key,omitempty"` // 当前企业标识

	RefreshExpiresIn *int `json:"refresh_expires_in,omitempty"` // `refresh_token` 的有效期，单位: 秒

	RefreshToken *string `json:"refresh_token,omitempty"` // 刷新用户 `access_token` 时使用的 token

	Sid *string `json:"sid,omitempty"` // 用户当前登录态session的唯一标识，为空则不返回
}

type CreateRefreshAccessTokenResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *CreateRefreshAccessTokenRespData `json:"data"` // 业务数据
}

func (resp *CreateRefreshAccessTokenResp) Success() bool {
	return resp.Code == 0
}

type GetUserInfoRespData struct {
	Name *string `json:"name,omitempty"` // 用户姓名

	EnName *string `json:"en_name,omitempty"` // 用户英文名称

	AvatarUrl *string `json:"avatar_url,omitempty"` // 用户头像

	AvatarThumb *string `json:"avatar_thumb,omitempty"` // 用户头像 72x72

	AvatarMiddle *string `json:"avatar_middle,omitempty"` // 用户头像 240x240

	AvatarBig *string `json:"avatar_big,omitempty"` // 用户头像 640x640

	OpenId *string `json:"open_id,omitempty"` // 用户在应用内的唯一标识

	UnionId *string `json:"union_id,omitempty"` // 用户统一ID

	Email *string `json:"email,omitempty"` // 用户邮箱

	EnterpriseEmail *string `json:"enterprise_email,omitempty"` // 企业邮箱，请先确保已在管理后台启用飞书邮箱服务

	UserId *string `json:"user_id,omitempty"` // 用户 user_id

	Mobile *string `json:"mobile,omitempty"` // 用户手机号

	TenantKey *string `json:"tenant_key,omitempty"` // 当前企业标识

	EmployeeNo *string `json:"employee_no,omitempty"` // 用户工号
}

type GetUserInfoResp struct {
	*larkcore.ApiResp `json:"-"`
	larkcore.CodeError
	Data *GetUserInfoRespData `json:"data"` // 业务数据
}

func (resp *GetUserInfoResp) Success() bool {
	return resp.Code == 0
}
