gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/docx/v1/model.go (about)

     1  // Package docx code generated by oapi sdk gen
     2  /*
     3   * MIT License
     4   *
     5   * Copyright (c) 2022 Lark Technologies Pte. Ltd.
     6   *
     7   * 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:
     8   *
     9   * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
    10   *
    11   * 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.
    12   */
    13  
    14  package larkdocx
    15  
    16  import (
    17  	"fmt"
    18  
    19  	"context"
    20  	"errors"
    21  
    22  	"gitee.com/larksuite/oapi-sdk-go/v3/core"
    23  )
    24  
    25  const (
    26  	LangZH = 0 // 中文
    27  	LangEN = 1 // 英文
    28  	LangJP = 2 // 日文
    29  
    30  )
    31  
    32  const (
    33  	UserIdTypeUserId  = "user_id"  // 以user_id来识别用户
    34  	UserIdTypeUnionId = "union_id" // 以union_id来识别用户
    35  	UserIdTypeOpenId  = "open_id"  // 以open_id来识别用户
    36  )
    37  
    38  const (
    39  	UserIdTypeGetDocumentBlockUserId  = "user_id"  // 以user_id来识别用户
    40  	UserIdTypeGetDocumentBlockUnionId = "union_id" // 以union_id来识别用户
    41  	UserIdTypeGetDocumentBlockOpenId  = "open_id"  // 以open_id来识别用户
    42  )
    43  
    44  const (
    45  	UserIdTypeListDocumentBlockUserId  = "user_id"  // 以user_id来识别用户
    46  	UserIdTypeListDocumentBlockUnionId = "union_id" // 以union_id来识别用户
    47  	UserIdTypeListDocumentBlockOpenId  = "open_id"  // 以open_id来识别用户
    48  )
    49  
    50  const (
    51  	UserIdTypePatchDocumentBlockUserId  = "user_id"  // 以user_id来识别用户
    52  	UserIdTypePatchDocumentBlockUnionId = "union_id" // 以union_id来识别用户
    53  	UserIdTypePatchDocumentBlockOpenId  = "open_id"  // 以open_id来识别用户
    54  )
    55  
    56  const (
    57  	UserIdTypeCreateDocumentBlockChildrenUserId  = "user_id"  // 以user_id来识别用户
    58  	UserIdTypeCreateDocumentBlockChildrenUnionId = "union_id" // 以union_id来识别用户
    59  	UserIdTypeCreateDocumentBlockChildrenOpenId  = "open_id"  // 以open_id来识别用户
    60  )
    61  
    62  const (
    63  	UserIdTypeGetDocumentBlockChildrenUserId  = "user_id"  // 以user_id来识别用户
    64  	UserIdTypeGetDocumentBlockChildrenUnionId = "union_id" // 以union_id来识别用户
    65  	UserIdTypeGetDocumentBlockChildrenOpenId  = "open_id"  // 以open_id来识别用户
    66  )
    67  
    68  type Bitable struct {
    69  	Token    *string `json:"token,omitempty"`     // 多维表格文档 Token
    70  	ViewType *int    `json:"view_type,omitempty"` // 类型
    71  }
    72  
    73  type BitableBuilder struct {
    74  	token        string // 多维表格文档 Token
    75  	tokenFlag    bool
    76  	viewType     int // 类型
    77  	viewTypeFlag bool
    78  }
    79  
    80  func NewBitableBuilder() *BitableBuilder {
    81  	builder := &BitableBuilder{}
    82  	return builder
    83  }
    84  
    85  // 多维表格文档 Token
    86  //
    87  // 示例值:basbcqH9FfRn3sWCCBOtdNVpCsb_tblSAh8fEwhuMXQg
    88  func (builder *BitableBuilder) Token(token string) *BitableBuilder {
    89  	builder.token = token
    90  	builder.tokenFlag = true
    91  	return builder
    92  }
    93  
    94  // 类型
    95  //
    96  // 示例值:1
    97  func (builder *BitableBuilder) ViewType(viewType int) *BitableBuilder {
    98  	builder.viewType = viewType
    99  	builder.viewTypeFlag = true
   100  	return builder
   101  }
   102  
   103  func (builder *BitableBuilder) Build() *Bitable {
   104  	req := &Bitable{}
   105  	if builder.tokenFlag {
   106  		req.Token = &builder.token
   107  
   108  	}
   109  	if builder.viewTypeFlag {
   110  		req.ViewType = &builder.viewType
   111  
   112  	}
   113  	return req
   114  }
   115  
   116  type Block struct {
   117  	BlockId        *string         `json:"block_id,omitempty"`        // Block 唯一标识
   118  	ParentId       *string         `json:"parent_id,omitempty"`       // block 的父亲 id
   119  	Children       []string        `json:"children,omitempty"`        // block 的孩子 id 列表
   120  	BlockType      *int            `json:"block_type,omitempty"`      // block 类型
   121  	Page           *Text           `json:"page,omitempty"`            // 文档 Block
   122  	Text           *Text           `json:"text,omitempty"`            // 文本 Block
   123  	Heading1       *Text           `json:"heading1,omitempty"`        // 一级标题 Block
   124  	Heading2       *Text           `json:"heading2,omitempty"`        // 二级标题 Block
   125  	Heading3       *Text           `json:"heading3,omitempty"`        // 三级标题 Block
   126  	Heading4       *Text           `json:"heading4,omitempty"`        // 四级标题 Block
   127  	Heading5       *Text           `json:"heading5,omitempty"`        // 五级标题 Block
   128  	Heading6       *Text           `json:"heading6,omitempty"`        // 六级标题 Block
   129  	Heading7       *Text           `json:"heading7,omitempty"`        // 七级标题 Block
   130  	Heading8       *Text           `json:"heading8,omitempty"`        // 八级标题 Block
   131  	Heading9       *Text           `json:"heading9,omitempty"`        // 九级标题 Block
   132  	Bullet         *Text           `json:"bullet,omitempty"`          // 无序列表 Block
   133  	Ordered        *Text           `json:"ordered,omitempty"`         // 有序列表 Block
   134  	Code           *Text           `json:"code,omitempty"`            // 代码块 Block
   135  	Quote          *Text           `json:"quote,omitempty"`           // 引用 Block
   136  	Equation       *Text           `json:"equation,omitempty"`        // 公式 Block
   137  	Todo           *Text           `json:"todo,omitempty"`            // 任务 Block
   138  	Bitable        *Bitable        `json:"bitable,omitempty"`         // 多维表格 Block
   139  	Callout        *Callout        `json:"callout,omitempty"`         // 高亮块 Block
   140  	ChatCard       *ChatCard       `json:"chat_card,omitempty"`       // 群聊卡片 Block
   141  	Diagram        *Diagram        `json:"diagram,omitempty"`         // 流程图/UML Block
   142  	Divider        *Divider        `json:"divider,omitempty"`         // 分割线 Block
   143  	File           *File           `json:"file,omitempty"`            // 文件 Block
   144  	Grid           *Grid           `json:"grid,omitempty"`            // 分栏 Block
   145  	GridColumn     *GridColumn     `json:"grid_column,omitempty"`     // 分栏列 Block
   146  	Iframe         *Iframe         `json:"iframe,omitempty"`          // 内嵌 Block
   147  	Image          *Image          `json:"image,omitempty"`           // 图片 Block
   148  	Isv            *Isv            `json:"isv,omitempty"`             // 三方 Block
   149  	Mindnote       *Mindnote       `json:"mindnote,omitempty"`        // 思维笔记 Block
   150  	Sheet          *Sheet          `json:"sheet,omitempty"`           // 电子表格 Block
   151  	Table          *Table          `json:"table,omitempty"`           // 表格 Block
   152  	TableCell      *TableCell      `json:"table_cell,omitempty"`      // 单元格 Block
   153  	View           *View           `json:"view,omitempty"`            // 视图 Block
   154  	Undefined      *Undefined      `json:"undefined,omitempty"`       // 未支持 Block
   155  	QuoteContainer *QuoteContainer `json:"quote_container,omitempty"` // 引用容器 Block
   156  	Task           *Task           `json:"task,omitempty"`            // 任务 Block
   157  	Okr            *Okr            `json:"okr,omitempty"`             // OKR Block
   158  	OkrObjective   *OkrObjective   `json:"okr_objective,omitempty"`   // OKR Objective
   159  	OkrKeyResult   *OkrKeyResult   `json:"okr_key_result,omitempty"`  // OKR Key Result
   160  	OkrProgress    *OkrProgress    `json:"okr_progress,omitempty"`    // OKR 进展信息
   161  }
   162  
   163  type BlockBuilder struct {
   164  	blockId            string // Block 唯一标识
   165  	blockIdFlag        bool
   166  	parentId           string // block 的父亲 id
   167  	parentIdFlag       bool
   168  	children           []string // block 的孩子 id 列表
   169  	childrenFlag       bool
   170  	blockType          int // block 类型
   171  	blockTypeFlag      bool
   172  	page               *Text // 文档 Block
   173  	pageFlag           bool
   174  	text               *Text // 文本 Block
   175  	textFlag           bool
   176  	heading1           *Text // 一级标题 Block
   177  	heading1Flag       bool
   178  	heading2           *Text // 二级标题 Block
   179  	heading2Flag       bool
   180  	heading3           *Text // 三级标题 Block
   181  	heading3Flag       bool
   182  	heading4           *Text // 四级标题 Block
   183  	heading4Flag       bool
   184  	heading5           *Text // 五级标题 Block
   185  	heading5Flag       bool
   186  	heading6           *Text // 六级标题 Block
   187  	heading6Flag       bool
   188  	heading7           *Text // 七级标题 Block
   189  	heading7Flag       bool
   190  	heading8           *Text // 八级标题 Block
   191  	heading8Flag       bool
   192  	heading9           *Text // 九级标题 Block
   193  	heading9Flag       bool
   194  	bullet             *Text // 无序列表 Block
   195  	bulletFlag         bool
   196  	ordered            *Text // 有序列表 Block
   197  	orderedFlag        bool
   198  	code               *Text // 代码块 Block
   199  	codeFlag           bool
   200  	quote              *Text // 引用 Block
   201  	quoteFlag          bool
   202  	equation           *Text // 公式 Block
   203  	equationFlag       bool
   204  	todo               *Text // 任务 Block
   205  	todoFlag           bool
   206  	bitable            *Bitable // 多维表格 Block
   207  	bitableFlag        bool
   208  	callout            *Callout // 高亮块 Block
   209  	calloutFlag        bool
   210  	chatCard           *ChatCard // 群聊卡片 Block
   211  	chatCardFlag       bool
   212  	diagram            *Diagram // 流程图/UML Block
   213  	diagramFlag        bool
   214  	divider            *Divider // 分割线 Block
   215  	dividerFlag        bool
   216  	file               *File // 文件 Block
   217  	fileFlag           bool
   218  	grid               *Grid // 分栏 Block
   219  	gridFlag           bool
   220  	gridColumn         *GridColumn // 分栏列 Block
   221  	gridColumnFlag     bool
   222  	iframe             *Iframe // 内嵌 Block
   223  	iframeFlag         bool
   224  	image              *Image // 图片 Block
   225  	imageFlag          bool
   226  	isv                *Isv // 三方 Block
   227  	isvFlag            bool
   228  	mindnote           *Mindnote // 思维笔记 Block
   229  	mindnoteFlag       bool
   230  	sheet              *Sheet // 电子表格 Block
   231  	sheetFlag          bool
   232  	table              *Table // 表格 Block
   233  	tableFlag          bool
   234  	tableCell          *TableCell // 单元格 Block
   235  	tableCellFlag      bool
   236  	view               *View // 视图 Block
   237  	viewFlag           bool
   238  	undefined          *Undefined // 未支持 Block
   239  	undefinedFlag      bool
   240  	quoteContainer     *QuoteContainer // 引用容器 Block
   241  	quoteContainerFlag bool
   242  	task               *Task // 任务 Block
   243  	taskFlag           bool
   244  	okr                *Okr // OKR Block
   245  	okrFlag            bool
   246  	okrObjective       *OkrObjective // OKR Objective
   247  	okrObjectiveFlag   bool
   248  	okrKeyResult       *OkrKeyResult // OKR Key Result
   249  	okrKeyResultFlag   bool
   250  	okrProgress        *OkrProgress // OKR 进展信息
   251  	okrProgressFlag    bool
   252  }
   253  
   254  func NewBlockBuilder() *BlockBuilder {
   255  	builder := &BlockBuilder{}
   256  	return builder
   257  }
   258  
   259  // Block 唯一标识
   260  //
   261  // 示例值:doxcnSS4ouQkQEouGSUkTg9NJPe
   262  func (builder *BlockBuilder) BlockId(blockId string) *BlockBuilder {
   263  	builder.blockId = blockId
   264  	builder.blockIdFlag = true
   265  	return builder
   266  }
   267  
   268  // block 的父亲 id
   269  //
   270  // 示例值:doxcnePuYufKa49ISjhD8Ih0ikh
   271  func (builder *BlockBuilder) ParentId(parentId string) *BlockBuilder {
   272  	builder.parentId = parentId
   273  	builder.parentIdFlag = true
   274  	return builder
   275  }
   276  
   277  // block 的孩子 id 列表
   278  //
   279  // 示例值:[doxcnO6UW6wAw2qIcYf4hZpFIth]
   280  func (builder *BlockBuilder) Children(children []string) *BlockBuilder {
   281  	builder.children = children
   282  	builder.childrenFlag = true
   283  	return builder
   284  }
   285  
   286  // block 类型
   287  //
   288  // 示例值:1
   289  func (builder *BlockBuilder) BlockType(blockType int) *BlockBuilder {
   290  	builder.blockType = blockType
   291  	builder.blockTypeFlag = true
   292  	return builder
   293  }
   294  
   295  // 文档 Block
   296  //
   297  // 示例值:
   298  func (builder *BlockBuilder) Page(page *Text) *BlockBuilder {
   299  	builder.page = page
   300  	builder.pageFlag = true
   301  	return builder
   302  }
   303  
   304  // 文本 Block
   305  //
   306  // 示例值:
   307  func (builder *BlockBuilder) Text(text *Text) *BlockBuilder {
   308  	builder.text = text
   309  	builder.textFlag = true
   310  	return builder
   311  }
   312  
   313  // 一级标题 Block
   314  //
   315  // 示例值:
   316  func (builder *BlockBuilder) Heading1(heading1 *Text) *BlockBuilder {
   317  	builder.heading1 = heading1
   318  	builder.heading1Flag = true
   319  	return builder
   320  }
   321  
   322  // 二级标题 Block
   323  //
   324  // 示例值:
   325  func (builder *BlockBuilder) Heading2(heading2 *Text) *BlockBuilder {
   326  	builder.heading2 = heading2
   327  	builder.heading2Flag = true
   328  	return builder
   329  }
   330  
   331  // 三级标题 Block
   332  //
   333  // 示例值:
   334  func (builder *BlockBuilder) Heading3(heading3 *Text) *BlockBuilder {
   335  	builder.heading3 = heading3
   336  	builder.heading3Flag = true
   337  	return builder
   338  }
   339  
   340  // 四级标题 Block
   341  //
   342  // 示例值:
   343  func (builder *BlockBuilder) Heading4(heading4 *Text) *BlockBuilder {
   344  	builder.heading4 = heading4
   345  	builder.heading4Flag = true
   346  	return builder
   347  }
   348  
   349  // 五级标题 Block
   350  //
   351  // 示例值:
   352  func (builder *BlockBuilder) Heading5(heading5 *Text) *BlockBuilder {
   353  	builder.heading5 = heading5
   354  	builder.heading5Flag = true
   355  	return builder
   356  }
   357  
   358  // 六级标题 Block
   359  //
   360  // 示例值:
   361  func (builder *BlockBuilder) Heading6(heading6 *Text) *BlockBuilder {
   362  	builder.heading6 = heading6
   363  	builder.heading6Flag = true
   364  	return builder
   365  }
   366  
   367  // 七级标题 Block
   368  //
   369  // 示例值:
   370  func (builder *BlockBuilder) Heading7(heading7 *Text) *BlockBuilder {
   371  	builder.heading7 = heading7
   372  	builder.heading7Flag = true
   373  	return builder
   374  }
   375  
   376  // 八级标题 Block
   377  //
   378  // 示例值:
   379  func (builder *BlockBuilder) Heading8(heading8 *Text) *BlockBuilder {
   380  	builder.heading8 = heading8
   381  	builder.heading8Flag = true
   382  	return builder
   383  }
   384  
   385  // 九级标题 Block
   386  //
   387  // 示例值:
   388  func (builder *BlockBuilder) Heading9(heading9 *Text) *BlockBuilder {
   389  	builder.heading9 = heading9
   390  	builder.heading9Flag = true
   391  	return builder
   392  }
   393  
   394  // 无序列表 Block
   395  //
   396  // 示例值:
   397  func (builder *BlockBuilder) Bullet(bullet *Text) *BlockBuilder {
   398  	builder.bullet = bullet
   399  	builder.bulletFlag = true
   400  	return builder
   401  }
   402  
   403  // 有序列表 Block
   404  //
   405  // 示例值:
   406  func (builder *BlockBuilder) Ordered(ordered *Text) *BlockBuilder {
   407  	builder.ordered = ordered
   408  	builder.orderedFlag = true
   409  	return builder
   410  }
   411  
   412  // 代码块 Block
   413  //
   414  // 示例值:
   415  func (builder *BlockBuilder) Code(code *Text) *BlockBuilder {
   416  	builder.code = code
   417  	builder.codeFlag = true
   418  	return builder
   419  }
   420  
   421  // 引用 Block
   422  //
   423  // 示例值:
   424  func (builder *BlockBuilder) Quote(quote *Text) *BlockBuilder {
   425  	builder.quote = quote
   426  	builder.quoteFlag = true
   427  	return builder
   428  }
   429  
   430  // 公式 Block
   431  //
   432  // 示例值:
   433  func (builder *BlockBuilder) Equation(equation *Text) *BlockBuilder {
   434  	builder.equation = equation
   435  	builder.equationFlag = true
   436  	return builder
   437  }
   438  
   439  // 任务 Block
   440  //
   441  // 示例值:
   442  func (builder *BlockBuilder) Todo(todo *Text) *BlockBuilder {
   443  	builder.todo = todo
   444  	builder.todoFlag = true
   445  	return builder
   446  }
   447  
   448  // 多维表格 Block
   449  //
   450  // 示例值:
   451  func (builder *BlockBuilder) Bitable(bitable *Bitable) *BlockBuilder {
   452  	builder.bitable = bitable
   453  	builder.bitableFlag = true
   454  	return builder
   455  }
   456  
   457  // 高亮块 Block
   458  //
   459  // 示例值:
   460  func (builder *BlockBuilder) Callout(callout *Callout) *BlockBuilder {
   461  	builder.callout = callout
   462  	builder.calloutFlag = true
   463  	return builder
   464  }
   465  
   466  // 群聊卡片 Block
   467  //
   468  // 示例值:
   469  func (builder *BlockBuilder) ChatCard(chatCard *ChatCard) *BlockBuilder {
   470  	builder.chatCard = chatCard
   471  	builder.chatCardFlag = true
   472  	return builder
   473  }
   474  
   475  // 流程图/UML Block
   476  //
   477  // 示例值:
   478  func (builder *BlockBuilder) Diagram(diagram *Diagram) *BlockBuilder {
   479  	builder.diagram = diagram
   480  	builder.diagramFlag = true
   481  	return builder
   482  }
   483  
   484  // 分割线 Block
   485  //
   486  // 示例值:
   487  func (builder *BlockBuilder) Divider(divider *Divider) *BlockBuilder {
   488  	builder.divider = divider
   489  	builder.dividerFlag = true
   490  	return builder
   491  }
   492  
   493  // 文件 Block
   494  //
   495  // 示例值:
   496  func (builder *BlockBuilder) File(file *File) *BlockBuilder {
   497  	builder.file = file
   498  	builder.fileFlag = true
   499  	return builder
   500  }
   501  
   502  // 分栏 Block
   503  //
   504  // 示例值:
   505  func (builder *BlockBuilder) Grid(grid *Grid) *BlockBuilder {
   506  	builder.grid = grid
   507  	builder.gridFlag = true
   508  	return builder
   509  }
   510  
   511  // 分栏列 Block
   512  //
   513  // 示例值:
   514  func (builder *BlockBuilder) GridColumn(gridColumn *GridColumn) *BlockBuilder {
   515  	builder.gridColumn = gridColumn
   516  	builder.gridColumnFlag = true
   517  	return builder
   518  }
   519  
   520  // 内嵌 Block
   521  //
   522  // 示例值:
   523  func (builder *BlockBuilder) Iframe(iframe *Iframe) *BlockBuilder {
   524  	builder.iframe = iframe
   525  	builder.iframeFlag = true
   526  	return builder
   527  }
   528  
   529  // 图片 Block
   530  //
   531  // 示例值:
   532  func (builder *BlockBuilder) Image(image *Image) *BlockBuilder {
   533  	builder.image = image
   534  	builder.imageFlag = true
   535  	return builder
   536  }
   537  
   538  // 三方 Block
   539  //
   540  // 示例值:
   541  func (builder *BlockBuilder) Isv(isv *Isv) *BlockBuilder {
   542  	builder.isv = isv
   543  	builder.isvFlag = true
   544  	return builder
   545  }
   546  
   547  // 思维笔记 Block
   548  //
   549  // 示例值:
   550  func (builder *BlockBuilder) Mindnote(mindnote *Mindnote) *BlockBuilder {
   551  	builder.mindnote = mindnote
   552  	builder.mindnoteFlag = true
   553  	return builder
   554  }
   555  
   556  // 电子表格 Block
   557  //
   558  // 示例值:
   559  func (builder *BlockBuilder) Sheet(sheet *Sheet) *BlockBuilder {
   560  	builder.sheet = sheet
   561  	builder.sheetFlag = true
   562  	return builder
   563  }
   564  
   565  // 表格 Block
   566  //
   567  // 示例值:
   568  func (builder *BlockBuilder) Table(table *Table) *BlockBuilder {
   569  	builder.table = table
   570  	builder.tableFlag = true
   571  	return builder
   572  }
   573  
   574  // 单元格 Block
   575  //
   576  // 示例值:
   577  func (builder *BlockBuilder) TableCell(tableCell *TableCell) *BlockBuilder {
   578  	builder.tableCell = tableCell
   579  	builder.tableCellFlag = true
   580  	return builder
   581  }
   582  
   583  // 视图 Block
   584  //
   585  // 示例值:
   586  func (builder *BlockBuilder) View(view *View) *BlockBuilder {
   587  	builder.view = view
   588  	builder.viewFlag = true
   589  	return builder
   590  }
   591  
   592  // 未支持 Block
   593  //
   594  // 示例值:
   595  func (builder *BlockBuilder) Undefined(undefined *Undefined) *BlockBuilder {
   596  	builder.undefined = undefined
   597  	builder.undefinedFlag = true
   598  	return builder
   599  }
   600  
   601  // 引用容器 Block
   602  //
   603  // 示例值:
   604  func (builder *BlockBuilder) QuoteContainer(quoteContainer *QuoteContainer) *BlockBuilder {
   605  	builder.quoteContainer = quoteContainer
   606  	builder.quoteContainerFlag = true
   607  	return builder
   608  }
   609  
   610  // 任务 Block
   611  //
   612  // 示例值:
   613  func (builder *BlockBuilder) Task(task *Task) *BlockBuilder {
   614  	builder.task = task
   615  	builder.taskFlag = true
   616  	return builder
   617  }
   618  
   619  // OKR Block
   620  //
   621  // 示例值:
   622  func (builder *BlockBuilder) Okr(okr *Okr) *BlockBuilder {
   623  	builder.okr = okr
   624  	builder.okrFlag = true
   625  	return builder
   626  }
   627  
   628  // OKR Objective
   629  //
   630  // 示例值:
   631  func (builder *BlockBuilder) OkrObjective(okrObjective *OkrObjective) *BlockBuilder {
   632  	builder.okrObjective = okrObjective
   633  	builder.okrObjectiveFlag = true
   634  	return builder
   635  }
   636  
   637  // OKR Key Result
   638  //
   639  // 示例值:
   640  func (builder *BlockBuilder) OkrKeyResult(okrKeyResult *OkrKeyResult) *BlockBuilder {
   641  	builder.okrKeyResult = okrKeyResult
   642  	builder.okrKeyResultFlag = true
   643  	return builder
   644  }
   645  
   646  // OKR 进展信息
   647  //
   648  // 示例值:
   649  func (builder *BlockBuilder) OkrProgress(okrProgress *OkrProgress) *BlockBuilder {
   650  	builder.okrProgress = okrProgress
   651  	builder.okrProgressFlag = true
   652  	return builder
   653  }
   654  
   655  func (builder *BlockBuilder) Build() *Block {
   656  	req := &Block{}
   657  	if builder.blockIdFlag {
   658  		req.BlockId = &builder.blockId
   659  
   660  	}
   661  	if builder.parentIdFlag {
   662  		req.ParentId = &builder.parentId
   663  
   664  	}
   665  	if builder.childrenFlag {
   666  		req.Children = builder.children
   667  	}
   668  	if builder.blockTypeFlag {
   669  		req.BlockType = &builder.blockType
   670  
   671  	}
   672  	if builder.pageFlag {
   673  		req.Page = builder.page
   674  	}
   675  	if builder.textFlag {
   676  		req.Text = builder.text
   677  	}
   678  	if builder.heading1Flag {
   679  		req.Heading1 = builder.heading1
   680  	}
   681  	if builder.heading2Flag {
   682  		req.Heading2 = builder.heading2
   683  	}
   684  	if builder.heading3Flag {
   685  		req.Heading3 = builder.heading3
   686  	}
   687  	if builder.heading4Flag {
   688  		req.Heading4 = builder.heading4
   689  	}
   690  	if builder.heading5Flag {
   691  		req.Heading5 = builder.heading5
   692  	}
   693  	if builder.heading6Flag {
   694  		req.Heading6 = builder.heading6
   695  	}
   696  	if builder.heading7Flag {
   697  		req.Heading7 = builder.heading7
   698  	}
   699  	if builder.heading8Flag {
   700  		req.Heading8 = builder.heading8
   701  	}
   702  	if builder.heading9Flag {
   703  		req.Heading9 = builder.heading9
   704  	}
   705  	if builder.bulletFlag {
   706  		req.Bullet = builder.bullet
   707  	}
   708  	if builder.orderedFlag {
   709  		req.Ordered = builder.ordered
   710  	}
   711  	if builder.codeFlag {
   712  		req.Code = builder.code
   713  	}
   714  	if builder.quoteFlag {
   715  		req.Quote = builder.quote
   716  	}
   717  	if builder.equationFlag {
   718  		req.Equation = builder.equation
   719  	}
   720  	if builder.todoFlag {
   721  		req.Todo = builder.todo
   722  	}
   723  	if builder.bitableFlag {
   724  		req.Bitable = builder.bitable
   725  	}
   726  	if builder.calloutFlag {
   727  		req.Callout = builder.callout
   728  	}
   729  	if builder.chatCardFlag {
   730  		req.ChatCard = builder.chatCard
   731  	}
   732  	if builder.diagramFlag {
   733  		req.Diagram = builder.diagram
   734  	}
   735  	if builder.dividerFlag {
   736  		req.Divider = builder.divider
   737  	}
   738  	if builder.fileFlag {
   739  		req.File = builder.file
   740  	}
   741  	if builder.gridFlag {
   742  		req.Grid = builder.grid
   743  	}
   744  	if builder.gridColumnFlag {
   745  		req.GridColumn = builder.gridColumn
   746  	}
   747  	if builder.iframeFlag {
   748  		req.Iframe = builder.iframe
   749  	}
   750  	if builder.imageFlag {
   751  		req.Image = builder.image
   752  	}
   753  	if builder.isvFlag {
   754  		req.Isv = builder.isv
   755  	}
   756  	if builder.mindnoteFlag {
   757  		req.Mindnote = builder.mindnote
   758  	}
   759  	if builder.sheetFlag {
   760  		req.Sheet = builder.sheet
   761  	}
   762  	if builder.tableFlag {
   763  		req.Table = builder.table
   764  	}
   765  	if builder.tableCellFlag {
   766  		req.TableCell = builder.tableCell
   767  	}
   768  	if builder.viewFlag {
   769  		req.View = builder.view
   770  	}
   771  	if builder.undefinedFlag {
   772  		req.Undefined = builder.undefined
   773  	}
   774  	if builder.quoteContainerFlag {
   775  		req.QuoteContainer = builder.quoteContainer
   776  	}
   777  	if builder.taskFlag {
   778  		req.Task = builder.task
   779  	}
   780  	if builder.okrFlag {
   781  		req.Okr = builder.okr
   782  	}
   783  	if builder.okrObjectiveFlag {
   784  		req.OkrObjective = builder.okrObjective
   785  	}
   786  	if builder.okrKeyResultFlag {
   787  		req.OkrKeyResult = builder.okrKeyResult
   788  	}
   789  	if builder.okrProgressFlag {
   790  		req.OkrProgress = builder.okrProgress
   791  	}
   792  	return req
   793  }
   794  
   795  type Callout struct {
   796  	BackgroundColor *int    `json:"background_color,omitempty"` // 高亮块背景色
   797  	BorderColor     *int    `json:"border_color,omitempty"`     // 边框色
   798  	TextColor       *int    `json:"text_color,omitempty"`       // 文字颜色
   799  	EmojiId         *string `json:"emoji_id,omitempty"`         // 高亮块图标
   800  }
   801  
   802  type CalloutBuilder struct {
   803  	backgroundColor     int // 高亮块背景色
   804  	backgroundColorFlag bool
   805  	borderColor         int // 边框色
   806  	borderColorFlag     bool
   807  	textColor           int // 文字颜色
   808  	textColorFlag       bool
   809  	emojiId             string // 高亮块图标
   810  	emojiIdFlag         bool
   811  }
   812  
   813  func NewCalloutBuilder() *CalloutBuilder {
   814  	builder := &CalloutBuilder{}
   815  	return builder
   816  }
   817  
   818  // 高亮块背景色
   819  //
   820  // 示例值:1
   821  func (builder *CalloutBuilder) BackgroundColor(backgroundColor int) *CalloutBuilder {
   822  	builder.backgroundColor = backgroundColor
   823  	builder.backgroundColorFlag = true
   824  	return builder
   825  }
   826  
   827  // 边框色
   828  //
   829  // 示例值:1
   830  func (builder *CalloutBuilder) BorderColor(borderColor int) *CalloutBuilder {
   831  	builder.borderColor = borderColor
   832  	builder.borderColorFlag = true
   833  	return builder
   834  }
   835  
   836  // 文字颜色
   837  //
   838  // 示例值:1
   839  func (builder *CalloutBuilder) TextColor(textColor int) *CalloutBuilder {
   840  	builder.textColor = textColor
   841  	builder.textColorFlag = true
   842  	return builder
   843  }
   844  
   845  // 高亮块图标
   846  //
   847  // 示例值:pushpin
   848  func (builder *CalloutBuilder) EmojiId(emojiId string) *CalloutBuilder {
   849  	builder.emojiId = emojiId
   850  	builder.emojiIdFlag = true
   851  	return builder
   852  }
   853  
   854  func (builder *CalloutBuilder) Build() *Callout {
   855  	req := &Callout{}
   856  	if builder.backgroundColorFlag {
   857  		req.BackgroundColor = &builder.backgroundColor
   858  
   859  	}
   860  	if builder.borderColorFlag {
   861  		req.BorderColor = &builder.borderColor
   862  
   863  	}
   864  	if builder.textColorFlag {
   865  		req.TextColor = &builder.textColor
   866  
   867  	}
   868  	if builder.emojiIdFlag {
   869  		req.EmojiId = &builder.emojiId
   870  
   871  	}
   872  	return req
   873  }
   874  
   875  type ChatCard struct {
   876  	ChatId *string `json:"chat_id,omitempty"` // 群聊天会话 ID
   877  	Align  *int    `json:"align,omitempty"`   // 对齐方式
   878  }
   879  
   880  type ChatCardBuilder struct {
   881  	chatId     string // 群聊天会话 ID
   882  	chatIdFlag bool
   883  	align      int // 对齐方式
   884  	alignFlag  bool
   885  }
   886  
   887  func NewChatCardBuilder() *ChatCardBuilder {
   888  	builder := &ChatCardBuilder{}
   889  	return builder
   890  }
   891  
   892  // 群聊天会话 ID
   893  //
   894  // 示例值:7052227140476993555
   895  func (builder *ChatCardBuilder) ChatId(chatId string) *ChatCardBuilder {
   896  	builder.chatId = chatId
   897  	builder.chatIdFlag = true
   898  	return builder
   899  }
   900  
   901  // 对齐方式
   902  //
   903  // 示例值:1
   904  func (builder *ChatCardBuilder) Align(align int) *ChatCardBuilder {
   905  	builder.align = align
   906  	builder.alignFlag = true
   907  	return builder
   908  }
   909  
   910  func (builder *ChatCardBuilder) Build() *ChatCard {
   911  	req := &ChatCard{}
   912  	if builder.chatIdFlag {
   913  		req.ChatId = &builder.chatId
   914  
   915  	}
   916  	if builder.alignFlag {
   917  		req.Align = &builder.align
   918  
   919  	}
   920  	return req
   921  }
   922  
   923  type DeleteGridColumnRequest struct {
   924  	ColumnIndex *int `json:"column_index,omitempty"` // 删除列索引,从 0 开始,如 0 表示删除第一列(-1表示删除最后一列)
   925  }
   926  
   927  type DeleteGridColumnRequestBuilder struct {
   928  	columnIndex     int // 删除列索引,从 0 开始,如 0 表示删除第一列(-1表示删除最后一列)
   929  	columnIndexFlag bool
   930  }
   931  
   932  func NewDeleteGridColumnRequestBuilder() *DeleteGridColumnRequestBuilder {
   933  	builder := &DeleteGridColumnRequestBuilder{}
   934  	return builder
   935  }
   936  
   937  // 删除列索引,从 0 开始,如 0 表示删除第一列(-1表示删除最后一列)
   938  //
   939  // 示例值:0
   940  func (builder *DeleteGridColumnRequestBuilder) ColumnIndex(columnIndex int) *DeleteGridColumnRequestBuilder {
   941  	builder.columnIndex = columnIndex
   942  	builder.columnIndexFlag = true
   943  	return builder
   944  }
   945  
   946  func (builder *DeleteGridColumnRequestBuilder) Build() *DeleteGridColumnRequest {
   947  	req := &DeleteGridColumnRequest{}
   948  	if builder.columnIndexFlag {
   949  		req.ColumnIndex = &builder.columnIndex
   950  
   951  	}
   952  	return req
   953  }
   954  
   955  type DeleteTableColumnsRequest struct {
   956  	ColumnStartIndex *int `json:"column_start_index,omitempty"` // 列开始索引(区间左闭右开)
   957  	ColumnEndIndex   *int `json:"column_end_index,omitempty"`   // 列结束索引(区间左闭右开)
   958  }
   959  
   960  type DeleteTableColumnsRequestBuilder struct {
   961  	columnStartIndex     int // 列开始索引(区间左闭右开)
   962  	columnStartIndexFlag bool
   963  	columnEndIndex       int // 列结束索引(区间左闭右开)
   964  	columnEndIndexFlag   bool
   965  }
   966  
   967  func NewDeleteTableColumnsRequestBuilder() *DeleteTableColumnsRequestBuilder {
   968  	builder := &DeleteTableColumnsRequestBuilder{}
   969  	return builder
   970  }
   971  
   972  // 列开始索引(区间左闭右开)
   973  //
   974  // 示例值:0
   975  func (builder *DeleteTableColumnsRequestBuilder) ColumnStartIndex(columnStartIndex int) *DeleteTableColumnsRequestBuilder {
   976  	builder.columnStartIndex = columnStartIndex
   977  	builder.columnStartIndexFlag = true
   978  	return builder
   979  }
   980  
   981  // 列结束索引(区间左闭右开)
   982  //
   983  // 示例值:1
   984  func (builder *DeleteTableColumnsRequestBuilder) ColumnEndIndex(columnEndIndex int) *DeleteTableColumnsRequestBuilder {
   985  	builder.columnEndIndex = columnEndIndex
   986  	builder.columnEndIndexFlag = true
   987  	return builder
   988  }
   989  
   990  func (builder *DeleteTableColumnsRequestBuilder) Build() *DeleteTableColumnsRequest {
   991  	req := &DeleteTableColumnsRequest{}
   992  	if builder.columnStartIndexFlag {
   993  		req.ColumnStartIndex = &builder.columnStartIndex
   994  
   995  	}
   996  	if builder.columnEndIndexFlag {
   997  		req.ColumnEndIndex = &builder.columnEndIndex
   998  
   999  	}
  1000  	return req
  1001  }
  1002  
  1003  type DeleteTableRowsRequest struct {
  1004  	RowStartIndex *int `json:"row_start_index,omitempty"` // 行开始索引(区间左闭右开)
  1005  	RowEndIndex   *int `json:"row_end_index,omitempty"`   // 行结束索引(区间左闭右开)
  1006  }
  1007  
  1008  type DeleteTableRowsRequestBuilder struct {
  1009  	rowStartIndex     int // 行开始索引(区间左闭右开)
  1010  	rowStartIndexFlag bool
  1011  	rowEndIndex       int // 行结束索引(区间左闭右开)
  1012  	rowEndIndexFlag   bool
  1013  }
  1014  
  1015  func NewDeleteTableRowsRequestBuilder() *DeleteTableRowsRequestBuilder {
  1016  	builder := &DeleteTableRowsRequestBuilder{}
  1017  	return builder
  1018  }
  1019  
  1020  // 行开始索引(区间左闭右开)
  1021  //
  1022  // 示例值:0
  1023  func (builder *DeleteTableRowsRequestBuilder) RowStartIndex(rowStartIndex int) *DeleteTableRowsRequestBuilder {
  1024  	builder.rowStartIndex = rowStartIndex
  1025  	builder.rowStartIndexFlag = true
  1026  	return builder
  1027  }
  1028  
  1029  // 行结束索引(区间左闭右开)
  1030  //
  1031  // 示例值:1
  1032  func (builder *DeleteTableRowsRequestBuilder) RowEndIndex(rowEndIndex int) *DeleteTableRowsRequestBuilder {
  1033  	builder.rowEndIndex = rowEndIndex
  1034  	builder.rowEndIndexFlag = true
  1035  	return builder
  1036  }
  1037  
  1038  func (builder *DeleteTableRowsRequestBuilder) Build() *DeleteTableRowsRequest {
  1039  	req := &DeleteTableRowsRequest{}
  1040  	if builder.rowStartIndexFlag {
  1041  		req.RowStartIndex = &builder.rowStartIndex
  1042  
  1043  	}
  1044  	if builder.rowEndIndexFlag {
  1045  		req.RowEndIndex = &builder.rowEndIndex
  1046  
  1047  	}
  1048  	return req
  1049  }
  1050  
  1051  type Diagram struct {
  1052  	DiagramType *int `json:"diagram_type,omitempty"` // 绘图类型
  1053  }
  1054  
  1055  type DiagramBuilder struct {
  1056  	diagramType     int // 绘图类型
  1057  	diagramTypeFlag bool
  1058  }
  1059  
  1060  func NewDiagramBuilder() *DiagramBuilder {
  1061  	builder := &DiagramBuilder{}
  1062  	return builder
  1063  }
  1064  
  1065  // 绘图类型
  1066  //
  1067  // 示例值:1
  1068  func (builder *DiagramBuilder) DiagramType(diagramType int) *DiagramBuilder {
  1069  	builder.diagramType = diagramType
  1070  	builder.diagramTypeFlag = true
  1071  	return builder
  1072  }
  1073  
  1074  func (builder *DiagramBuilder) Build() *Diagram {
  1075  	req := &Diagram{}
  1076  	if builder.diagramTypeFlag {
  1077  		req.DiagramType = &builder.diagramType
  1078  
  1079  	}
  1080  	return req
  1081  }
  1082  
  1083  type Divider struct {
  1084  }
  1085  
  1086  type Document struct {
  1087  	DocumentId *string `json:"document_id,omitempty"` // 文档唯一标识
  1088  	RevisionId *int    `json:"revision_id,omitempty"` // 文档版本 ID
  1089  	Title      *string `json:"title,omitempty"`       // 文档标题
  1090  }
  1091  
  1092  type DocumentBuilder struct {
  1093  	documentId     string // 文档唯一标识
  1094  	documentIdFlag bool
  1095  	revisionId     int // 文档版本 ID
  1096  	revisionIdFlag bool
  1097  	title          string // 文档标题
  1098  	titleFlag      bool
  1099  }
  1100  
  1101  func NewDocumentBuilder() *DocumentBuilder {
  1102  	builder := &DocumentBuilder{}
  1103  	return builder
  1104  }
  1105  
  1106  // 文档唯一标识
  1107  //
  1108  // 示例值:doxcni6mOy7jLRWbEylaKKC7K88
  1109  func (builder *DocumentBuilder) DocumentId(documentId string) *DocumentBuilder {
  1110  	builder.documentId = documentId
  1111  	builder.documentIdFlag = true
  1112  	return builder
  1113  }
  1114  
  1115  // 文档版本 ID
  1116  //
  1117  // 示例值:1
  1118  func (builder *DocumentBuilder) RevisionId(revisionId int) *DocumentBuilder {
  1119  	builder.revisionId = revisionId
  1120  	builder.revisionIdFlag = true
  1121  	return builder
  1122  }
  1123  
  1124  // 文档标题
  1125  //
  1126  // 示例值:undefined
  1127  func (builder *DocumentBuilder) Title(title string) *DocumentBuilder {
  1128  	builder.title = title
  1129  	builder.titleFlag = true
  1130  	return builder
  1131  }
  1132  
  1133  func (builder *DocumentBuilder) Build() *Document {
  1134  	req := &Document{}
  1135  	if builder.documentIdFlag {
  1136  		req.DocumentId = &builder.documentId
  1137  
  1138  	}
  1139  	if builder.revisionIdFlag {
  1140  		req.RevisionId = &builder.revisionId
  1141  
  1142  	}
  1143  	if builder.titleFlag {
  1144  		req.Title = &builder.title
  1145  
  1146  	}
  1147  	return req
  1148  }
  1149  
  1150  type Equation struct {
  1151  	Content *string `json:"content,omitempty"` // 符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html
  1152  }
  1153  
  1154  type EquationBuilder struct {
  1155  	content     string // 符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html
  1156  	contentFlag bool
  1157  }
  1158  
  1159  func NewEquationBuilder() *EquationBuilder {
  1160  	builder := &EquationBuilder{}
  1161  	return builder
  1162  }
  1163  
  1164  // 符合 KaTeX 语法的公式内容,语法规则请参考:https://katex.org/docs/supported.html
  1165  //
  1166  // 示例值:E=mc^2\n
  1167  func (builder *EquationBuilder) Content(content string) *EquationBuilder {
  1168  	builder.content = content
  1169  	builder.contentFlag = true
  1170  	return builder
  1171  }
  1172  
  1173  func (builder *EquationBuilder) Build() *Equation {
  1174  	req := &Equation{}
  1175  	if builder.contentFlag {
  1176  		req.Content = &builder.content
  1177  
  1178  	}
  1179  	return req
  1180  }
  1181  
  1182  type File struct {
  1183  	Token *string `json:"token,omitempty"` // 附件 Token
  1184  	Name  *string `json:"name,omitempty"`  // 文件名
  1185  }
  1186  
  1187  type FileBuilder struct {
  1188  	token     string // 附件 Token
  1189  	tokenFlag bool
  1190  	name      string // 文件名
  1191  	nameFlag  bool
  1192  }
  1193  
  1194  func NewFileBuilder() *FileBuilder {
  1195  	builder := &FileBuilder{}
  1196  	return builder
  1197  }
  1198  
  1199  // 附件 Token
  1200  //
  1201  // 示例值:boxbcOj88GDkmWGm2zsTyCBqoLb
  1202  func (builder *FileBuilder) Token(token string) *FileBuilder {
  1203  	builder.token = token
  1204  	builder.tokenFlag = true
  1205  	return builder
  1206  }
  1207  
  1208  // 文件名
  1209  //
  1210  // 示例值:文件名
  1211  func (builder *FileBuilder) Name(name string) *FileBuilder {
  1212  	builder.name = name
  1213  	builder.nameFlag = true
  1214  	return builder
  1215  }
  1216  
  1217  func (builder *FileBuilder) Build() *File {
  1218  	req := &File{}
  1219  	if builder.tokenFlag {
  1220  		req.Token = &builder.token
  1221  
  1222  	}
  1223  	if builder.nameFlag {
  1224  		req.Name = &builder.name
  1225  
  1226  	}
  1227  	return req
  1228  }
  1229  
  1230  type Grid struct {
  1231  	ColumnSize *int `json:"column_size,omitempty"` // 分栏列数量
  1232  }
  1233  
  1234  type GridBuilder struct {
  1235  	columnSize     int // 分栏列数量
  1236  	columnSizeFlag bool
  1237  }
  1238  
  1239  func NewGridBuilder() *GridBuilder {
  1240  	builder := &GridBuilder{}
  1241  	return builder
  1242  }
  1243  
  1244  // 分栏列数量
  1245  //
  1246  // 示例值:2
  1247  func (builder *GridBuilder) ColumnSize(columnSize int) *GridBuilder {
  1248  	builder.columnSize = columnSize
  1249  	builder.columnSizeFlag = true
  1250  	return builder
  1251  }
  1252  
  1253  func (builder *GridBuilder) Build() *Grid {
  1254  	req := &Grid{}
  1255  	if builder.columnSizeFlag {
  1256  		req.ColumnSize = &builder.columnSize
  1257  
  1258  	}
  1259  	return req
  1260  }
  1261  
  1262  type GridColumn struct {
  1263  	WidthRatio *int `json:"width_ratio,omitempty"` // 当前分栏列占整个分栏的比例
  1264  }
  1265  
  1266  type GridColumnBuilder struct {
  1267  	widthRatio     int // 当前分栏列占整个分栏的比例
  1268  	widthRatioFlag bool
  1269  }
  1270  
  1271  func NewGridColumnBuilder() *GridColumnBuilder {
  1272  	builder := &GridColumnBuilder{}
  1273  	return builder
  1274  }
  1275  
  1276  // 当前分栏列占整个分栏的比例
  1277  //
  1278  // 示例值:50
  1279  func (builder *GridColumnBuilder) WidthRatio(widthRatio int) *GridColumnBuilder {
  1280  	builder.widthRatio = widthRatio
  1281  	builder.widthRatioFlag = true
  1282  	return builder
  1283  }
  1284  
  1285  func (builder *GridColumnBuilder) Build() *GridColumn {
  1286  	req := &GridColumn{}
  1287  	if builder.widthRatioFlag {
  1288  		req.WidthRatio = &builder.widthRatio
  1289  
  1290  	}
  1291  	return req
  1292  }
  1293  
  1294  type Iframe struct {
  1295  	Component *IframeComponent `json:"component,omitempty"` // iframe 的组成元素
  1296  }
  1297  
  1298  type IframeBuilder struct {
  1299  	component     *IframeComponent // iframe 的组成元素
  1300  	componentFlag bool
  1301  }
  1302  
  1303  func NewIframeBuilder() *IframeBuilder {
  1304  	builder := &IframeBuilder{}
  1305  	return builder
  1306  }
  1307  
  1308  // iframe 的组成元素
  1309  //
  1310  // 示例值:
  1311  func (builder *IframeBuilder) Component(component *IframeComponent) *IframeBuilder {
  1312  	builder.component = component
  1313  	builder.componentFlag = true
  1314  	return builder
  1315  }
  1316  
  1317  func (builder *IframeBuilder) Build() *Iframe {
  1318  	req := &Iframe{}
  1319  	if builder.componentFlag {
  1320  		req.Component = builder.component
  1321  	}
  1322  	return req
  1323  }
  1324  
  1325  type IframeComponent struct {
  1326  	IframeType *int    `json:"iframe_type,omitempty"` // iframe 类型
  1327  	Url        *string `json:"url,omitempty"`         // iframe 目标 url(需要进行 url_encode)
  1328  }
  1329  
  1330  type IframeComponentBuilder struct {
  1331  	iframeType     int // iframe 类型
  1332  	iframeTypeFlag bool
  1333  	url            string // iframe 目标 url(需要进行 url_encode)
  1334  	urlFlag        bool
  1335  }
  1336  
  1337  func NewIframeComponentBuilder() *IframeComponentBuilder {
  1338  	builder := &IframeComponentBuilder{}
  1339  	return builder
  1340  }
  1341  
  1342  // iframe 类型
  1343  //
  1344  // 示例值:1
  1345  func (builder *IframeComponentBuilder) IframeType(iframeType int) *IframeComponentBuilder {
  1346  	builder.iframeType = iframeType
  1347  	builder.iframeTypeFlag = true
  1348  	return builder
  1349  }
  1350  
  1351  // iframe 目标 url(需要进行 url_encode)
  1352  //
  1353  // 示例值:https%3A%2F%2Fwww.bilibili.com%2Fvideo%2FBV1Hi4y1w7V7
  1354  func (builder *IframeComponentBuilder) Url(url string) *IframeComponentBuilder {
  1355  	builder.url = url
  1356  	builder.urlFlag = true
  1357  	return builder
  1358  }
  1359  
  1360  func (builder *IframeComponentBuilder) Build() *IframeComponent {
  1361  	req := &IframeComponent{}
  1362  	if builder.iframeTypeFlag {
  1363  		req.IframeType = &builder.iframeType
  1364  
  1365  	}
  1366  	if builder.urlFlag {
  1367  		req.Url = &builder.url
  1368  
  1369  	}
  1370  	return req
  1371  }
  1372  
  1373  type Image struct {
  1374  	Width  *int    `json:"width,omitempty"`  // 宽度单位 px
  1375  	Height *int    `json:"height,omitempty"` // 高度
  1376  	Token  *string `json:"token,omitempty"`  // 图片 Token
  1377  }
  1378  
  1379  type ImageBuilder struct {
  1380  	width      int // 宽度单位 px
  1381  	widthFlag  bool
  1382  	height     int // 高度
  1383  	heightFlag bool
  1384  	token      string // 图片 Token
  1385  	tokenFlag  bool
  1386  }
  1387  
  1388  func NewImageBuilder() *ImageBuilder {
  1389  	builder := &ImageBuilder{}
  1390  	return builder
  1391  }
  1392  
  1393  // 宽度单位 px
  1394  //
  1395  // 示例值:4069
  1396  func (builder *ImageBuilder) Width(width int) *ImageBuilder {
  1397  	builder.width = width
  1398  	builder.widthFlag = true
  1399  	return builder
  1400  }
  1401  
  1402  // 高度
  1403  //
  1404  // 示例值:2480
  1405  func (builder *ImageBuilder) Height(height int) *ImageBuilder {
  1406  	builder.height = height
  1407  	builder.heightFlag = true
  1408  	return builder
  1409  }
  1410  
  1411  // 图片 Token
  1412  //
  1413  // 示例值:boxbcVA91JtFgNhaCgy6s6wK4he
  1414  func (builder *ImageBuilder) Token(token string) *ImageBuilder {
  1415  	builder.token = token
  1416  	builder.tokenFlag = true
  1417  	return builder
  1418  }
  1419  
  1420  func (builder *ImageBuilder) Build() *Image {
  1421  	req := &Image{}
  1422  	if builder.widthFlag {
  1423  		req.Width = &builder.width
  1424  
  1425  	}
  1426  	if builder.heightFlag {
  1427  		req.Height = &builder.height
  1428  
  1429  	}
  1430  	if builder.tokenFlag {
  1431  		req.Token = &builder.token
  1432  
  1433  	}
  1434  	return req
  1435  }
  1436  
  1437  type InlineBlock struct {
  1438  	BlockId *string `json:"block_id,omitempty"` // 关联的内联状态的 block 的 block_id
  1439  }
  1440  
  1441  type InlineBlockBuilder struct {
  1442  	blockId     string // 关联的内联状态的 block 的 block_id
  1443  	blockIdFlag bool
  1444  }
  1445  
  1446  func NewInlineBlockBuilder() *InlineBlockBuilder {
  1447  	builder := &InlineBlockBuilder{}
  1448  	return builder
  1449  }
  1450  
  1451  // 关联的内联状态的 block 的 block_id
  1452  //
  1453  // 示例值:doxcnPFi0R56ctbvh2MjkkROFWf
  1454  func (builder *InlineBlockBuilder) BlockId(blockId string) *InlineBlockBuilder {
  1455  	builder.blockId = blockId
  1456  	builder.blockIdFlag = true
  1457  	return builder
  1458  }
  1459  
  1460  func (builder *InlineBlockBuilder) Build() *InlineBlock {
  1461  	req := &InlineBlock{}
  1462  	if builder.blockIdFlag {
  1463  		req.BlockId = &builder.blockId
  1464  
  1465  	}
  1466  	return req
  1467  }
  1468  
  1469  type InlineFile struct {
  1470  	FileToken     *string `json:"file_token,omitempty"`      // 附件 token
  1471  	SourceBlockId *string `json:"source_block_id,omitempty"` // 当前文档中该附件所处的 block 的 id
  1472  }
  1473  
  1474  type InlineFileBuilder struct {
  1475  	fileToken         string // 附件 token
  1476  	fileTokenFlag     bool
  1477  	sourceBlockId     string // 当前文档中该附件所处的 block 的 id
  1478  	sourceBlockIdFlag bool
  1479  }
  1480  
  1481  func NewInlineFileBuilder() *InlineFileBuilder {
  1482  	builder := &InlineFileBuilder{}
  1483  	return builder
  1484  }
  1485  
  1486  // 附件 token
  1487  //
  1488  // 示例值:boxcnOj88GDkmWGm2zsTyCBqoLb
  1489  func (builder *InlineFileBuilder) FileToken(fileToken string) *InlineFileBuilder {
  1490  	builder.fileToken = fileToken
  1491  	builder.fileTokenFlag = true
  1492  	return builder
  1493  }
  1494  
  1495  // 当前文档中该附件所处的 block 的 id
  1496  //
  1497  // 示例值:doxcnM46kSWSkgUMW04ldKsJDsc
  1498  func (builder *InlineFileBuilder) SourceBlockId(sourceBlockId string) *InlineFileBuilder {
  1499  	builder.sourceBlockId = sourceBlockId
  1500  	builder.sourceBlockIdFlag = true
  1501  	return builder
  1502  }
  1503  
  1504  func (builder *InlineFileBuilder) Build() *InlineFile {
  1505  	req := &InlineFile{}
  1506  	if builder.fileTokenFlag {
  1507  		req.FileToken = &builder.fileToken
  1508  
  1509  	}
  1510  	if builder.sourceBlockIdFlag {
  1511  		req.SourceBlockId = &builder.sourceBlockId
  1512  
  1513  	}
  1514  	return req
  1515  }
  1516  
  1517  type InsertGridColumnRequest struct {
  1518  	ColumnIndex *int `json:"column_index,omitempty"` // 插入列索引,从 1 开始,如 1 表示在第一列后插入,注意不允许传 0(-1表示在最后一列后插入)
  1519  }
  1520  
  1521  type InsertGridColumnRequestBuilder struct {
  1522  	columnIndex     int // 插入列索引,从 1 开始,如 1 表示在第一列后插入,注意不允许传 0(-1表示在最后一列后插入)
  1523  	columnIndexFlag bool
  1524  }
  1525  
  1526  func NewInsertGridColumnRequestBuilder() *InsertGridColumnRequestBuilder {
  1527  	builder := &InsertGridColumnRequestBuilder{}
  1528  	return builder
  1529  }
  1530  
  1531  // 插入列索引,从 1 开始,如 1 表示在第一列后插入,注意不允许传 0(-1表示在最后一列后插入)
  1532  //
  1533  // 示例值:1
  1534  func (builder *InsertGridColumnRequestBuilder) ColumnIndex(columnIndex int) *InsertGridColumnRequestBuilder {
  1535  	builder.columnIndex = columnIndex
  1536  	builder.columnIndexFlag = true
  1537  	return builder
  1538  }
  1539  
  1540  func (builder *InsertGridColumnRequestBuilder) Build() *InsertGridColumnRequest {
  1541  	req := &InsertGridColumnRequest{}
  1542  	if builder.columnIndexFlag {
  1543  		req.ColumnIndex = &builder.columnIndex
  1544  
  1545  	}
  1546  	return req
  1547  }
  1548  
  1549  type InsertTableColumnRequest struct {
  1550  	ColumnIndex *int `json:"column_index,omitempty"` // 插入的列在表格中的索引。(-1表示在表格末尾插入一列)
  1551  }
  1552  
  1553  type InsertTableColumnRequestBuilder struct {
  1554  	columnIndex     int // 插入的列在表格中的索引。(-1表示在表格末尾插入一列)
  1555  	columnIndexFlag bool
  1556  }
  1557  
  1558  func NewInsertTableColumnRequestBuilder() *InsertTableColumnRequestBuilder {
  1559  	builder := &InsertTableColumnRequestBuilder{}
  1560  	return builder
  1561  }
  1562  
  1563  // 插入的列在表格中的索引。(-1表示在表格末尾插入一列)
  1564  //
  1565  // 示例值:-1
  1566  func (builder *InsertTableColumnRequestBuilder) ColumnIndex(columnIndex int) *InsertTableColumnRequestBuilder {
  1567  	builder.columnIndex = columnIndex
  1568  	builder.columnIndexFlag = true
  1569  	return builder
  1570  }
  1571  
  1572  func (builder *InsertTableColumnRequestBuilder) Build() *InsertTableColumnRequest {
  1573  	req := &InsertTableColumnRequest{}
  1574  	if builder.columnIndexFlag {
  1575  		req.ColumnIndex = &builder.columnIndex
  1576  
  1577  	}
  1578  	return req
  1579  }
  1580  
  1581  type InsertTableRowRequest struct {
  1582  	RowIndex *int `json:"row_index,omitempty"` // 插入的行在表格中的索引。(-1表示在表格末尾插入一行)
  1583  }
  1584  
  1585  type InsertTableRowRequestBuilder struct {
  1586  	rowIndex     int // 插入的行在表格中的索引。(-1表示在表格末尾插入一行)
  1587  	rowIndexFlag bool
  1588  }
  1589  
  1590  func NewInsertTableRowRequestBuilder() *InsertTableRowRequestBuilder {
  1591  	builder := &InsertTableRowRequestBuilder{}
  1592  	return builder
  1593  }
  1594  
  1595  // 插入的行在表格中的索引。(-1表示在表格末尾插入一行)
  1596  //
  1597  // 示例值:-1
  1598  func (builder *InsertTableRowRequestBuilder) RowIndex(rowIndex int) *InsertTableRowRequestBuilder {
  1599  	builder.rowIndex = rowIndex
  1600  	builder.rowIndexFlag = true
  1601  	return builder
  1602  }
  1603  
  1604  func (builder *InsertTableRowRequestBuilder) Build() *InsertTableRowRequest {
  1605  	req := &InsertTableRowRequest{}
  1606  	if builder.rowIndexFlag {
  1607  		req.RowIndex = &builder.rowIndex
  1608  
  1609  	}
  1610  	return req
  1611  }
  1612  
  1613  type Isv struct {
  1614  	ComponentId     *string `json:"component_id,omitempty"`      // 团队互动应用唯一ID
  1615  	ComponentTypeId *string `json:"component_type_id,omitempty"` // 团队互动应用类型,比如信息收集"blk_5f992038c64240015d280958"
  1616  }
  1617  
  1618  type IsvBuilder struct {
  1619  	componentId         string // 团队互动应用唯一ID
  1620  	componentIdFlag     bool
  1621  	componentTypeId     string // 团队互动应用类型,比如信息收集"blk_5f992038c64240015d280958"
  1622  	componentTypeIdFlag bool
  1623  }
  1624  
  1625  func NewIsvBuilder() *IsvBuilder {
  1626  	builder := &IsvBuilder{}
  1627  	return builder
  1628  }
  1629  
  1630  // 团队互动应用唯一ID
  1631  //
  1632  // 示例值:7056882725002051603
  1633  func (builder *IsvBuilder) ComponentId(componentId string) *IsvBuilder {
  1634  	builder.componentId = componentId
  1635  	builder.componentIdFlag = true
  1636  	return builder
  1637  }
  1638  
  1639  // 团队互动应用类型,比如信息收集"blk_5f992038c64240015d280958"
  1640  //
  1641  // 示例值:blk_5f992038c64240015d280958
  1642  func (builder *IsvBuilder) ComponentTypeId(componentTypeId string) *IsvBuilder {
  1643  	builder.componentTypeId = componentTypeId
  1644  	builder.componentTypeIdFlag = true
  1645  	return builder
  1646  }
  1647  
  1648  func (builder *IsvBuilder) Build() *Isv {
  1649  	req := &Isv{}
  1650  	if builder.componentIdFlag {
  1651  		req.ComponentId = &builder.componentId
  1652  
  1653  	}
  1654  	if builder.componentTypeIdFlag {
  1655  		req.ComponentTypeId = &builder.componentTypeId
  1656  
  1657  	}
  1658  	return req
  1659  }
  1660  
  1661  type Link struct {
  1662  	Url *string `json:"url,omitempty"` // 超链接指向的 url (需要 url_encode)
  1663  }
  1664  
  1665  type LinkBuilder struct {
  1666  	url     string // 超链接指向的 url (需要 url_encode)
  1667  	urlFlag bool
  1668  }
  1669  
  1670  func NewLinkBuilder() *LinkBuilder {
  1671  	builder := &LinkBuilder{}
  1672  	return builder
  1673  }
  1674  
  1675  // 超链接指向的 url (需要 url_encode)
  1676  //
  1677  // 示例值:https%3A%2F%2Fopen.feishu.cn%2F
  1678  func (builder *LinkBuilder) Url(url string) *LinkBuilder {
  1679  	builder.url = url
  1680  	builder.urlFlag = true
  1681  	return builder
  1682  }
  1683  
  1684  func (builder *LinkBuilder) Build() *Link {
  1685  	req := &Link{}
  1686  	if builder.urlFlag {
  1687  		req.Url = &builder.url
  1688  
  1689  	}
  1690  	return req
  1691  }
  1692  
  1693  type MentionDoc struct {
  1694  	Token   *string `json:"token,omitempty"`    // 云文档 token
  1695  	ObjType *int    `json:"obj_type,omitempty"` // 云文档类型
  1696  	Url     *string `json:"url,omitempty"`      // 云文档链接(需要 url_encode)
  1697  	Title   *string `json:"title,omitempty"`    // 文档标题,只读属性
  1698  }
  1699  
  1700  type MentionDocBuilder struct {
  1701  	token       string // 云文档 token
  1702  	tokenFlag   bool
  1703  	objType     int // 云文档类型
  1704  	objTypeFlag bool
  1705  	url         string // 云文档链接(需要 url_encode)
  1706  	urlFlag     bool
  1707  	title       string // 文档标题,只读属性
  1708  	titleFlag   bool
  1709  }
  1710  
  1711  func NewMentionDocBuilder() *MentionDocBuilder {
  1712  	builder := &MentionDocBuilder{}
  1713  	return builder
  1714  }
  1715  
  1716  // 云文档 token
  1717  //
  1718  // 示例值:doxbc873Y7cXD153gXqb76G1Y9b
  1719  func (builder *MentionDocBuilder) Token(token string) *MentionDocBuilder {
  1720  	builder.token = token
  1721  	builder.tokenFlag = true
  1722  	return builder
  1723  }
  1724  
  1725  // 云文档类型
  1726  //
  1727  // 示例值:22
  1728  func (builder *MentionDocBuilder) ObjType(objType int) *MentionDocBuilder {
  1729  	builder.objType = objType
  1730  	builder.objTypeFlag = true
  1731  	return builder
  1732  }
  1733  
  1734  // 云文档链接(需要 url_encode)
  1735  //
  1736  // 示例值:https%3A%2F%2Fbytedance.feishu-boe.cn%2Fdocx%2Fdoxbc873Y7cXD153gXqb76G1Y9b
  1737  func (builder *MentionDocBuilder) Url(url string) *MentionDocBuilder {
  1738  	builder.url = url
  1739  	builder.urlFlag = true
  1740  	return builder
  1741  }
  1742  
  1743  // 文档标题,只读属性
  1744  //
  1745  // 示例值:undefined
  1746  func (builder *MentionDocBuilder) Title(title string) *MentionDocBuilder {
  1747  	builder.title = title
  1748  	builder.titleFlag = true
  1749  	return builder
  1750  }
  1751  
  1752  func (builder *MentionDocBuilder) Build() *MentionDoc {
  1753  	req := &MentionDoc{}
  1754  	if builder.tokenFlag {
  1755  		req.Token = &builder.token
  1756  
  1757  	}
  1758  	if builder.objTypeFlag {
  1759  		req.ObjType = &builder.objType
  1760  
  1761  	}
  1762  	if builder.urlFlag {
  1763  		req.Url = &builder.url
  1764  
  1765  	}
  1766  	if builder.titleFlag {
  1767  		req.Title = &builder.title
  1768  
  1769  	}
  1770  	return req
  1771  }
  1772  
  1773  type MentionUser struct {
  1774  	UserId *string `json:"user_id,omitempty"` // 用户 OpenID
  1775  }
  1776  
  1777  type MentionUserBuilder struct {
  1778  	userId     string // 用户 OpenID
  1779  	userIdFlag bool
  1780  }
  1781  
  1782  func NewMentionUserBuilder() *MentionUserBuilder {
  1783  	builder := &MentionUserBuilder{}
  1784  	return builder
  1785  }
  1786  
  1787  // 用户 OpenID
  1788  //
  1789  // 示例值:ou_3bbe8a09c20e89cce9bff989ed840674
  1790  func (builder *MentionUserBuilder) UserId(userId string) *MentionUserBuilder {
  1791  	builder.userId = userId
  1792  	builder.userIdFlag = true
  1793  	return builder
  1794  }
  1795  
  1796  func (builder *MentionUserBuilder) Build() *MentionUser {
  1797  	req := &MentionUser{}
  1798  	if builder.userIdFlag {
  1799  		req.UserId = &builder.userId
  1800  
  1801  	}
  1802  	return req
  1803  }
  1804  
  1805  type MergeTableCellsRequest struct {
  1806  	RowStartIndex    *int `json:"row_start_index,omitempty"`    // 行起始索引(区间左闭右开)
  1807  	RowEndIndex      *int `json:"row_end_index,omitempty"`      // 行结束索引(区间左闭右开)
  1808  	ColumnStartIndex *int `json:"column_start_index,omitempty"` // 列起始索引(区间左闭右开)
  1809  	ColumnEndIndex   *int `json:"column_end_index,omitempty"`   // 列结束索引(区间左闭右开)
  1810  }
  1811  
  1812  type MergeTableCellsRequestBuilder struct {
  1813  	rowStartIndex        int // 行起始索引(区间左闭右开)
  1814  	rowStartIndexFlag    bool
  1815  	rowEndIndex          int // 行结束索引(区间左闭右开)
  1816  	rowEndIndexFlag      bool
  1817  	columnStartIndex     int // 列起始索引(区间左闭右开)
  1818  	columnStartIndexFlag bool
  1819  	columnEndIndex       int // 列结束索引(区间左闭右开)
  1820  	columnEndIndexFlag   bool
  1821  }
  1822  
  1823  func NewMergeTableCellsRequestBuilder() *MergeTableCellsRequestBuilder {
  1824  	builder := &MergeTableCellsRequestBuilder{}
  1825  	return builder
  1826  }
  1827  
  1828  // 行起始索引(区间左闭右开)
  1829  //
  1830  // 示例值:0
  1831  func (builder *MergeTableCellsRequestBuilder) RowStartIndex(rowStartIndex int) *MergeTableCellsRequestBuilder {
  1832  	builder.rowStartIndex = rowStartIndex
  1833  	builder.rowStartIndexFlag = true
  1834  	return builder
  1835  }
  1836  
  1837  // 行结束索引(区间左闭右开)
  1838  //
  1839  // 示例值:1
  1840  func (builder *MergeTableCellsRequestBuilder) RowEndIndex(rowEndIndex int) *MergeTableCellsRequestBuilder {
  1841  	builder.rowEndIndex = rowEndIndex
  1842  	builder.rowEndIndexFlag = true
  1843  	return builder
  1844  }
  1845  
  1846  // 列起始索引(区间左闭右开)
  1847  //
  1848  // 示例值:0
  1849  func (builder *MergeTableCellsRequestBuilder) ColumnStartIndex(columnStartIndex int) *MergeTableCellsRequestBuilder {
  1850  	builder.columnStartIndex = columnStartIndex
  1851  	builder.columnStartIndexFlag = true
  1852  	return builder
  1853  }
  1854  
  1855  // 列结束索引(区间左闭右开)
  1856  //
  1857  // 示例值:1
  1858  func (builder *MergeTableCellsRequestBuilder) ColumnEndIndex(columnEndIndex int) *MergeTableCellsRequestBuilder {
  1859  	builder.columnEndIndex = columnEndIndex
  1860  	builder.columnEndIndexFlag = true
  1861  	return builder
  1862  }
  1863  
  1864  func (builder *MergeTableCellsRequestBuilder) Build() *MergeTableCellsRequest {
  1865  	req := &MergeTableCellsRequest{}
  1866  	if builder.rowStartIndexFlag {
  1867  		req.RowStartIndex = &builder.rowStartIndex
  1868  
  1869  	}
  1870  	if builder.rowEndIndexFlag {
  1871  		req.RowEndIndex = &builder.rowEndIndex
  1872  
  1873  	}
  1874  	if builder.columnStartIndexFlag {
  1875  		req.ColumnStartIndex = &builder.columnStartIndex
  1876  
  1877  	}
  1878  	if builder.columnEndIndexFlag {
  1879  		req.ColumnEndIndex = &builder.columnEndIndex
  1880  
  1881  	}
  1882  	return req
  1883  }
  1884  
  1885  type Mindnote struct {
  1886  	Token *string `json:"token,omitempty"` // 思维导图 token
  1887  }
  1888  
  1889  type MindnoteBuilder struct {
  1890  	token     string // 思维导图 token
  1891  	tokenFlag bool
  1892  }
  1893  
  1894  func NewMindnoteBuilder() *MindnoteBuilder {
  1895  	builder := &MindnoteBuilder{}
  1896  	return builder
  1897  }
  1898  
  1899  // 思维导图 token
  1900  //
  1901  // 示例值:bmnbcXXGPWfJMwDfGCbCiU14c6f
  1902  func (builder *MindnoteBuilder) Token(token string) *MindnoteBuilder {
  1903  	builder.token = token
  1904  	builder.tokenFlag = true
  1905  	return builder
  1906  }
  1907  
  1908  func (builder *MindnoteBuilder) Build() *Mindnote {
  1909  	req := &Mindnote{}
  1910  	if builder.tokenFlag {
  1911  		req.Token = &builder.token
  1912  
  1913  	}
  1914  	return req
  1915  }
  1916  
  1917  type ObjectiveIdWithKrId struct {
  1918  	ObjectiveId *string  `json:"objective_id,omitempty"` // okr 中 objective 的 ID
  1919  	KrIds       []string `json:"kr_ids,omitempty"`       // key result 的 ID 列表,此值为空时插入当前 objective 下的所有 key result
  1920  }
  1921  
  1922  type ObjectiveIdWithKrIdBuilder struct {
  1923  	objectiveId     string // okr 中 objective 的 ID
  1924  	objectiveIdFlag bool
  1925  	krIds           []string // key result 的 ID 列表,此值为空时插入当前 objective 下的所有 key result
  1926  	krIdsFlag       bool
  1927  }
  1928  
  1929  func NewObjectiveIdWithKrIdBuilder() *ObjectiveIdWithKrIdBuilder {
  1930  	builder := &ObjectiveIdWithKrIdBuilder{}
  1931  	return builder
  1932  }
  1933  
  1934  // okr 中 objective 的 ID
  1935  //
  1936  // 示例值:"7109022409227026460"
  1937  func (builder *ObjectiveIdWithKrIdBuilder) ObjectiveId(objectiveId string) *ObjectiveIdWithKrIdBuilder {
  1938  	builder.objectiveId = objectiveId
  1939  	builder.objectiveIdFlag = true
  1940  	return builder
  1941  }
  1942  
  1943  // key result 的 ID 列表,此值为空时插入当前 objective 下的所有 key result
  1944  //
  1945  // 示例值:["7109022573011894300","7109022546444517404"]
  1946  func (builder *ObjectiveIdWithKrIdBuilder) KrIds(krIds []string) *ObjectiveIdWithKrIdBuilder {
  1947  	builder.krIds = krIds
  1948  	builder.krIdsFlag = true
  1949  	return builder
  1950  }
  1951  
  1952  func (builder *ObjectiveIdWithKrIdBuilder) Build() *ObjectiveIdWithKrId {
  1953  	req := &ObjectiveIdWithKrId{}
  1954  	if builder.objectiveIdFlag {
  1955  		req.ObjectiveId = &builder.objectiveId
  1956  
  1957  	}
  1958  	if builder.krIdsFlag {
  1959  		req.KrIds = builder.krIds
  1960  	}
  1961  	return req
  1962  }
  1963  
  1964  type Okr struct {
  1965  	OkrId               *string                `json:"okr_id,omitempty"`                // OKR ID
  1966  	Objectives          []*ObjectiveIdWithKrId `json:"objectives,omitempty"`            // OKR Block 中的 objective ID 和 key result ID,此值为空时插入 okr 下所有的 objective 和 key result
  1967  	PeriodDisplayStatus *string                `json:"period_display_status,omitempty"` // 周期的状态
  1968  	PeriodNameZh        *string                `json:"period_name_zh,omitempty"`        // 周期名 - 中文
  1969  	PeriodNameEn        *string                `json:"period_name_en,omitempty"`        // 周期名 - 英文
  1970  	UserId              *string                `json:"user_id,omitempty"`               // OKR 所属的用户 ID
  1971  	VisibleSetting      *OkrVisibleSetting     `json:"visible_setting,omitempty"`       // 可见性设置
  1972  }
  1973  
  1974  type OkrBuilder struct {
  1975  	okrId                   string // OKR ID
  1976  	okrIdFlag               bool
  1977  	objectives              []*ObjectiveIdWithKrId // OKR Block 中的 objective ID 和 key result ID,此值为空时插入 okr 下所有的 objective 和 key result
  1978  	objectivesFlag          bool
  1979  	periodDisplayStatus     string // 周期的状态
  1980  	periodDisplayStatusFlag bool
  1981  	periodNameZh            string // 周期名 - 中文
  1982  	periodNameZhFlag        bool
  1983  	periodNameEn            string // 周期名 - 英文
  1984  	periodNameEnFlag        bool
  1985  	userId                  string // OKR 所属的用户 ID
  1986  	userIdFlag              bool
  1987  	visibleSetting          *OkrVisibleSetting // 可见性设置
  1988  	visibleSettingFlag      bool
  1989  }
  1990  
  1991  func NewOkrBuilder() *OkrBuilder {
  1992  	builder := &OkrBuilder{}
  1993  	return builder
  1994  }
  1995  
  1996  // OKR ID
  1997  //
  1998  // 示例值:"7076349900476448796"
  1999  func (builder *OkrBuilder) OkrId(okrId string) *OkrBuilder {
  2000  	builder.okrId = okrId
  2001  	builder.okrIdFlag = true
  2002  	return builder
  2003  }
  2004  
  2005  // OKR Block 中的 objective ID 和 key result ID,此值为空时插入 okr 下所有的 objective 和 key result
  2006  //
  2007  // 示例值:
  2008  func (builder *OkrBuilder) Objectives(objectives []*ObjectiveIdWithKrId) *OkrBuilder {
  2009  	builder.objectives = objectives
  2010  	builder.objectivesFlag = true
  2011  	return builder
  2012  }
  2013  
  2014  // 周期的状态
  2015  //
  2016  // 示例值:"default"
  2017  func (builder *OkrBuilder) PeriodDisplayStatus(periodDisplayStatus string) *OkrBuilder {
  2018  	builder.periodDisplayStatus = periodDisplayStatus
  2019  	builder.periodDisplayStatusFlag = true
  2020  	return builder
  2021  }
  2022  
  2023  // 周期名 - 中文
  2024  //
  2025  // 示例值:"2022 年 4 月 - 6 月"
  2026  func (builder *OkrBuilder) PeriodNameZh(periodNameZh string) *OkrBuilder {
  2027  	builder.periodNameZh = periodNameZh
  2028  	builder.periodNameZhFlag = true
  2029  	return builder
  2030  }
  2031  
  2032  // 周期名 - 英文
  2033  //
  2034  // 示例值:"Apr - Jun 2022"
  2035  func (builder *OkrBuilder) PeriodNameEn(periodNameEn string) *OkrBuilder {
  2036  	builder.periodNameEn = periodNameEn
  2037  	builder.periodNameEnFlag = true
  2038  	return builder
  2039  }
  2040  
  2041  // OKR 所属的用户 ID
  2042  //
  2043  // 示例值:"ou_3bbe8a09c20e89cce9bff989ed840674"
  2044  func (builder *OkrBuilder) UserId(userId string) *OkrBuilder {
  2045  	builder.userId = userId
  2046  	builder.userIdFlag = true
  2047  	return builder
  2048  }
  2049  
  2050  // 可见性设置
  2051  //
  2052  // 示例值:
  2053  func (builder *OkrBuilder) VisibleSetting(visibleSetting *OkrVisibleSetting) *OkrBuilder {
  2054  	builder.visibleSetting = visibleSetting
  2055  	builder.visibleSettingFlag = true
  2056  	return builder
  2057  }
  2058  
  2059  func (builder *OkrBuilder) Build() *Okr {
  2060  	req := &Okr{}
  2061  	if builder.okrIdFlag {
  2062  		req.OkrId = &builder.okrId
  2063  
  2064  	}
  2065  	if builder.objectivesFlag {
  2066  		req.Objectives = builder.objectives
  2067  	}
  2068  	if builder.periodDisplayStatusFlag {
  2069  		req.PeriodDisplayStatus = &builder.periodDisplayStatus
  2070  
  2071  	}
  2072  	if builder.periodNameZhFlag {
  2073  		req.PeriodNameZh = &builder.periodNameZh
  2074  
  2075  	}
  2076  	if builder.periodNameEnFlag {
  2077  		req.PeriodNameEn = &builder.periodNameEn
  2078  
  2079  	}
  2080  	if builder.userIdFlag {
  2081  		req.UserId = &builder.userId
  2082  
  2083  	}
  2084  	if builder.visibleSettingFlag {
  2085  		req.VisibleSetting = builder.visibleSetting
  2086  	}
  2087  	return req
  2088  }
  2089  
  2090  type OkrKeyResult struct {
  2091  	KrId         *string          `json:"kr_id,omitempty"`         // key result 的 ID
  2092  	Confidential *bool            `json:"confidential,omitempty"`  // 是否设置过私密权限
  2093  	Position     *int             `json:"position,omitempty"`      // key result 的位置编号,对应 Block 中 KR1、KR2 的 1、2。
  2094  	Score        *int             `json:"score,omitempty"`         // 打分信息
  2095  	Visible      *bool            `json:"visible,omitempty"`       // OKR Block 中此 key result 是否可见
  2096  	Weight       *float64         `json:"weight,omitempty"`        // key result 的权重
  2097  	ProgressRate *OkrProgressRate `json:"progress_rate,omitempty"` // 进展信息
  2098  	Content      *Text            `json:"content,omitempty"`       // key result 的文本内容
  2099  }
  2100  
  2101  type OkrKeyResultBuilder struct {
  2102  	krId             string // key result 的 ID
  2103  	krIdFlag         bool
  2104  	confidential     bool // 是否设置过私密权限
  2105  	confidentialFlag bool
  2106  	position         int // key result 的位置编号,对应 Block 中 KR1、KR2 的 1、2。
  2107  	positionFlag     bool
  2108  	score            int // 打分信息
  2109  	scoreFlag        bool
  2110  	visible          bool // OKR Block 中此 key result 是否可见
  2111  	visibleFlag      bool
  2112  	weight           float64 // key result 的权重
  2113  	weightFlag       bool
  2114  	progressRate     *OkrProgressRate // 进展信息
  2115  	progressRateFlag bool
  2116  	content          *Text // key result 的文本内容
  2117  	contentFlag      bool
  2118  }
  2119  
  2120  func NewOkrKeyResultBuilder() *OkrKeyResultBuilder {
  2121  	builder := &OkrKeyResultBuilder{}
  2122  	return builder
  2123  }
  2124  
  2125  // key result 的 ID
  2126  //
  2127  // 示例值:"7109022573011894300"
  2128  func (builder *OkrKeyResultBuilder) KrId(krId string) *OkrKeyResultBuilder {
  2129  	builder.krId = krId
  2130  	builder.krIdFlag = true
  2131  	return builder
  2132  }
  2133  
  2134  // 是否设置过私密权限
  2135  //
  2136  // 示例值:false
  2137  func (builder *OkrKeyResultBuilder) Confidential(confidential bool) *OkrKeyResultBuilder {
  2138  	builder.confidential = confidential
  2139  	builder.confidentialFlag = true
  2140  	return builder
  2141  }
  2142  
  2143  // key result 的位置编号,对应 Block 中 KR1、KR2 的 1、2。
  2144  //
  2145  // 示例值:1
  2146  func (builder *OkrKeyResultBuilder) Position(position int) *OkrKeyResultBuilder {
  2147  	builder.position = position
  2148  	builder.positionFlag = true
  2149  	return builder
  2150  }
  2151  
  2152  // 打分信息
  2153  //
  2154  // 示例值:0
  2155  func (builder *OkrKeyResultBuilder) Score(score int) *OkrKeyResultBuilder {
  2156  	builder.score = score
  2157  	builder.scoreFlag = true
  2158  	return builder
  2159  }
  2160  
  2161  // OKR Block 中此 key result 是否可见
  2162  //
  2163  // 示例值:true
  2164  func (builder *OkrKeyResultBuilder) Visible(visible bool) *OkrKeyResultBuilder {
  2165  	builder.visible = visible
  2166  	builder.visibleFlag = true
  2167  	return builder
  2168  }
  2169  
  2170  // key result 的权重
  2171  //
  2172  // 示例值:0.5
  2173  func (builder *OkrKeyResultBuilder) Weight(weight float64) *OkrKeyResultBuilder {
  2174  	builder.weight = weight
  2175  	builder.weightFlag = true
  2176  	return builder
  2177  }
  2178  
  2179  // 进展信息
  2180  //
  2181  // 示例值:
  2182  func (builder *OkrKeyResultBuilder) ProgressRate(progressRate *OkrProgressRate) *OkrKeyResultBuilder {
  2183  	builder.progressRate = progressRate
  2184  	builder.progressRateFlag = true
  2185  	return builder
  2186  }
  2187  
  2188  // key result 的文本内容
  2189  //
  2190  // 示例值:
  2191  func (builder *OkrKeyResultBuilder) Content(content *Text) *OkrKeyResultBuilder {
  2192  	builder.content = content
  2193  	builder.contentFlag = true
  2194  	return builder
  2195  }
  2196  
  2197  func (builder *OkrKeyResultBuilder) Build() *OkrKeyResult {
  2198  	req := &OkrKeyResult{}
  2199  	if builder.krIdFlag {
  2200  		req.KrId = &builder.krId
  2201  
  2202  	}
  2203  	if builder.confidentialFlag {
  2204  		req.Confidential = &builder.confidential
  2205  
  2206  	}
  2207  	if builder.positionFlag {
  2208  		req.Position = &builder.position
  2209  
  2210  	}
  2211  	if builder.scoreFlag {
  2212  		req.Score = &builder.score
  2213  
  2214  	}
  2215  	if builder.visibleFlag {
  2216  		req.Visible = &builder.visible
  2217  
  2218  	}
  2219  	if builder.weightFlag {
  2220  		req.Weight = &builder.weight
  2221  
  2222  	}
  2223  	if builder.progressRateFlag {
  2224  		req.ProgressRate = builder.progressRate
  2225  	}
  2226  	if builder.contentFlag {
  2227  		req.Content = builder.content
  2228  	}
  2229  	return req
  2230  }
  2231  
  2232  type OkrObjective struct {
  2233  	ObjectiveId  *string          `json:"objective_id,omitempty"`  // objective ID
  2234  	Confidential *bool            `json:"confidential,omitempty"`  // 是否设置过私密权限
  2235  	Position     *int             `json:"position,omitempty"`      // objective 的位置编号,对应 Block 中 O1、O2 的 1、2
  2236  	Score        *int             `json:"score,omitempty"`         // 打分信息
  2237  	Visible      *bool            `json:"visible,omitempty"`       // OKR Block 中是否展示该 objective
  2238  	Weight       *float64         `json:"weight,omitempty"`        // objective 的权重
  2239  	ProgressRate *OkrProgressRate `json:"progress_rate,omitempty"` // 进展信息
  2240  	Content      *Text            `json:"content,omitempty"`       // objective 的文本内容
  2241  }
  2242  
  2243  type OkrObjectiveBuilder struct {
  2244  	objectiveId      string // objective ID
  2245  	objectiveIdFlag  bool
  2246  	confidential     bool // 是否设置过私密权限
  2247  	confidentialFlag bool
  2248  	position         int // objective 的位置编号,对应 Block 中 O1、O2 的 1、2
  2249  	positionFlag     bool
  2250  	score            int // 打分信息
  2251  	scoreFlag        bool
  2252  	visible          bool // OKR Block 中是否展示该 objective
  2253  	visibleFlag      bool
  2254  	weight           float64 // objective 的权重
  2255  	weightFlag       bool
  2256  	progressRate     *OkrProgressRate // 进展信息
  2257  	progressRateFlag bool
  2258  	content          *Text // objective 的文本内容
  2259  	contentFlag      bool
  2260  }
  2261  
  2262  func NewOkrObjectiveBuilder() *OkrObjectiveBuilder {
  2263  	builder := &OkrObjectiveBuilder{}
  2264  	return builder
  2265  }
  2266  
  2267  // objective ID
  2268  //
  2269  // 示例值:"7109022409227026460"
  2270  func (builder *OkrObjectiveBuilder) ObjectiveId(objectiveId string) *OkrObjectiveBuilder {
  2271  	builder.objectiveId = objectiveId
  2272  	builder.objectiveIdFlag = true
  2273  	return builder
  2274  }
  2275  
  2276  // 是否设置过私密权限
  2277  //
  2278  // 示例值:false
  2279  func (builder *OkrObjectiveBuilder) Confidential(confidential bool) *OkrObjectiveBuilder {
  2280  	builder.confidential = confidential
  2281  	builder.confidentialFlag = true
  2282  	return builder
  2283  }
  2284  
  2285  // objective 的位置编号,对应 Block 中 O1、O2 的 1、2
  2286  //
  2287  // 示例值:1
  2288  func (builder *OkrObjectiveBuilder) Position(position int) *OkrObjectiveBuilder {
  2289  	builder.position = position
  2290  	builder.positionFlag = true
  2291  	return builder
  2292  }
  2293  
  2294  // 打分信息
  2295  //
  2296  // 示例值:0
  2297  func (builder *OkrObjectiveBuilder) Score(score int) *OkrObjectiveBuilder {
  2298  	builder.score = score
  2299  	builder.scoreFlag = true
  2300  	return builder
  2301  }
  2302  
  2303  // OKR Block 中是否展示该 objective
  2304  //
  2305  // 示例值:true
  2306  func (builder *OkrObjectiveBuilder) Visible(visible bool) *OkrObjectiveBuilder {
  2307  	builder.visible = visible
  2308  	builder.visibleFlag = true
  2309  	return builder
  2310  }
  2311  
  2312  // objective 的权重
  2313  //
  2314  // 示例值:1.0
  2315  func (builder *OkrObjectiveBuilder) Weight(weight float64) *OkrObjectiveBuilder {
  2316  	builder.weight = weight
  2317  	builder.weightFlag = true
  2318  	return builder
  2319  }
  2320  
  2321  // 进展信息
  2322  //
  2323  // 示例值:
  2324  func (builder *OkrObjectiveBuilder) ProgressRate(progressRate *OkrProgressRate) *OkrObjectiveBuilder {
  2325  	builder.progressRate = progressRate
  2326  	builder.progressRateFlag = true
  2327  	return builder
  2328  }
  2329  
  2330  // objective 的文本内容
  2331  //
  2332  // 示例值:
  2333  func (builder *OkrObjectiveBuilder) Content(content *Text) *OkrObjectiveBuilder {
  2334  	builder.content = content
  2335  	builder.contentFlag = true
  2336  	return builder
  2337  }
  2338  
  2339  func (builder *OkrObjectiveBuilder) Build() *OkrObjective {
  2340  	req := &OkrObjective{}
  2341  	if builder.objectiveIdFlag {
  2342  		req.ObjectiveId = &builder.objectiveId
  2343  
  2344  	}
  2345  	if builder.confidentialFlag {
  2346  		req.Confidential = &builder.confidential
  2347  
  2348  	}
  2349  	if builder.positionFlag {
  2350  		req.Position = &builder.position
  2351  
  2352  	}
  2353  	if builder.scoreFlag {
  2354  		req.Score = &builder.score
  2355  
  2356  	}
  2357  	if builder.visibleFlag {
  2358  		req.Visible = &builder.visible
  2359  
  2360  	}
  2361  	if builder.weightFlag {
  2362  		req.Weight = &builder.weight
  2363  
  2364  	}
  2365  	if builder.progressRateFlag {
  2366  		req.ProgressRate = builder.progressRate
  2367  	}
  2368  	if builder.contentFlag {
  2369  		req.Content = builder.content
  2370  	}
  2371  	return req
  2372  }
  2373  
  2374  type OkrProgress struct {
  2375  }
  2376  
  2377  type OkrProgressRate struct {
  2378  	Mode           *string  `json:"mode,omitempty"`            // 状态模式
  2379  	Current        *float64 `json:"current,omitempty"`         // 当前进度
  2380  	Percent        *float64 `json:"percent,omitempty"`         // 当前进度百分比,simple mode 下使用
  2381  	ProgressStatus *string  `json:"progress_status,omitempty"` // 进展状态
  2382  	Start          *float64 `json:"start,omitempty"`           // 进度起始值,advanced模式使用
  2383  	StatusType     *string  `json:"status_type,omitempty"`     // 状态类型
  2384  	Target         *float64 `json:"target,omitempty"`          // 进度目标值,advanced模式使用
  2385  }
  2386  
  2387  type OkrProgressRateBuilder struct {
  2388  	mode               string // 状态模式
  2389  	modeFlag           bool
  2390  	current            float64 // 当前进度
  2391  	currentFlag        bool
  2392  	percent            float64 // 当前进度百分比,simple mode 下使用
  2393  	percentFlag        bool
  2394  	progressStatus     string // 进展状态
  2395  	progressStatusFlag bool
  2396  	start              float64 // 进度起始值,advanced模式使用
  2397  	startFlag          bool
  2398  	statusType         string // 状态类型
  2399  	statusTypeFlag     bool
  2400  	target             float64 // 进度目标值,advanced模式使用
  2401  	targetFlag         bool
  2402  }
  2403  
  2404  func NewOkrProgressRateBuilder() *OkrProgressRateBuilder {
  2405  	builder := &OkrProgressRateBuilder{}
  2406  	return builder
  2407  }
  2408  
  2409  // 状态模式
  2410  //
  2411  // 示例值:"simple"
  2412  func (builder *OkrProgressRateBuilder) Mode(mode string) *OkrProgressRateBuilder {
  2413  	builder.mode = mode
  2414  	builder.modeFlag = true
  2415  	return builder
  2416  }
  2417  
  2418  // 当前进度
  2419  //
  2420  // 示例值:0
  2421  func (builder *OkrProgressRateBuilder) Current(current float64) *OkrProgressRateBuilder {
  2422  	builder.current = current
  2423  	builder.currentFlag = true
  2424  	return builder
  2425  }
  2426  
  2427  // 当前进度百分比,simple mode 下使用
  2428  //
  2429  // 示例值:100
  2430  func (builder *OkrProgressRateBuilder) Percent(percent float64) *OkrProgressRateBuilder {
  2431  	builder.percent = percent
  2432  	builder.percentFlag = true
  2433  	return builder
  2434  }
  2435  
  2436  // 进展状态
  2437  //
  2438  // 示例值:"normal"
  2439  func (builder *OkrProgressRateBuilder) ProgressStatus(progressStatus string) *OkrProgressRateBuilder {
  2440  	builder.progressStatus = progressStatus
  2441  	builder.progressStatusFlag = true
  2442  	return builder
  2443  }
  2444  
  2445  // 进度起始值,advanced模式使用
  2446  //
  2447  // 示例值:0
  2448  func (builder *OkrProgressRateBuilder) Start(start float64) *OkrProgressRateBuilder {
  2449  	builder.start = start
  2450  	builder.startFlag = true
  2451  	return builder
  2452  }
  2453  
  2454  // 状态类型
  2455  //
  2456  // 示例值:"default"
  2457  func (builder *OkrProgressRateBuilder) StatusType(statusType string) *OkrProgressRateBuilder {
  2458  	builder.statusType = statusType
  2459  	builder.statusTypeFlag = true
  2460  	return builder
  2461  }
  2462  
  2463  // 进度目标值,advanced模式使用
  2464  //
  2465  // 示例值:
  2466  func (builder *OkrProgressRateBuilder) Target(target float64) *OkrProgressRateBuilder {
  2467  	builder.target = target
  2468  	builder.targetFlag = true
  2469  	return builder
  2470  }
  2471  
  2472  func (builder *OkrProgressRateBuilder) Build() *OkrProgressRate {
  2473  	req := &OkrProgressRate{}
  2474  	if builder.modeFlag {
  2475  		req.Mode = &builder.mode
  2476  
  2477  	}
  2478  	if builder.currentFlag {
  2479  		req.Current = &builder.current
  2480  
  2481  	}
  2482  	if builder.percentFlag {
  2483  		req.Percent = &builder.percent
  2484  
  2485  	}
  2486  	if builder.progressStatusFlag {
  2487  		req.ProgressStatus = &builder.progressStatus
  2488  
  2489  	}
  2490  	if builder.startFlag {
  2491  		req.Start = &builder.start
  2492  
  2493  	}
  2494  	if builder.statusTypeFlag {
  2495  		req.StatusType = &builder.statusType
  2496  
  2497  	}
  2498  	if builder.targetFlag {
  2499  		req.Target = &builder.target
  2500  
  2501  	}
  2502  	return req
  2503  }
  2504  
  2505  type OkrVisibleSetting struct {
  2506  	ProgressFillAreaVisible *bool `json:"progress_fill_area_visible,omitempty"` // 进展编辑区域是否可见
  2507  	ProgressStatusVisible   *bool `json:"progress_status_visible,omitempty"`    // 状态是否可见
  2508  	ScoreVisible            *bool `json:"score_visible,omitempty"`              // 分数是否可见
  2509  }
  2510  
  2511  type OkrVisibleSettingBuilder struct {
  2512  	progressFillAreaVisible     bool // 进展编辑区域是否可见
  2513  	progressFillAreaVisibleFlag bool
  2514  	progressStatusVisible       bool // 状态是否可见
  2515  	progressStatusVisibleFlag   bool
  2516  	scoreVisible                bool // 分数是否可见
  2517  	scoreVisibleFlag            bool
  2518  }
  2519  
  2520  func NewOkrVisibleSettingBuilder() *OkrVisibleSettingBuilder {
  2521  	builder := &OkrVisibleSettingBuilder{}
  2522  	return builder
  2523  }
  2524  
  2525  // 进展编辑区域是否可见
  2526  //
  2527  // 示例值:true
  2528  func (builder *OkrVisibleSettingBuilder) ProgressFillAreaVisible(progressFillAreaVisible bool) *OkrVisibleSettingBuilder {
  2529  	builder.progressFillAreaVisible = progressFillAreaVisible
  2530  	builder.progressFillAreaVisibleFlag = true
  2531  	return builder
  2532  }
  2533  
  2534  // 状态是否可见
  2535  //
  2536  // 示例值:true
  2537  func (builder *OkrVisibleSettingBuilder) ProgressStatusVisible(progressStatusVisible bool) *OkrVisibleSettingBuilder {
  2538  	builder.progressStatusVisible = progressStatusVisible
  2539  	builder.progressStatusVisibleFlag = true
  2540  	return builder
  2541  }
  2542  
  2543  // 分数是否可见
  2544  //
  2545  // 示例值:true
  2546  func (builder *OkrVisibleSettingBuilder) ScoreVisible(scoreVisible bool) *OkrVisibleSettingBuilder {
  2547  	builder.scoreVisible = scoreVisible
  2548  	builder.scoreVisibleFlag = true
  2549  	return builder
  2550  }
  2551  
  2552  func (builder *OkrVisibleSettingBuilder) Build() *OkrVisibleSetting {
  2553  	req := &OkrVisibleSetting{}
  2554  	if builder.progressFillAreaVisibleFlag {
  2555  		req.ProgressFillAreaVisible = &builder.progressFillAreaVisible
  2556  
  2557  	}
  2558  	if builder.progressStatusVisibleFlag {
  2559  		req.ProgressStatusVisible = &builder.progressStatusVisible
  2560  
  2561  	}
  2562  	if builder.scoreVisibleFlag {
  2563  		req.ScoreVisible = &builder.scoreVisible
  2564  
  2565  	}
  2566  	return req
  2567  }
  2568  
  2569  type QuoteContainer struct {
  2570  }
  2571  
  2572  type Reminder struct {
  2573  	CreateUserId *string `json:"create_user_id,omitempty"` // 创建者用户 ID
  2574  	IsNotify     *bool   `json:"is_notify,omitempty"`      // 是否通知
  2575  	IsWholeDay   *bool   `json:"is_whole_day,omitempty"`   // 是日期还是整点小时
  2576  	ExpireTime   *string `json:"expire_time,omitempty"`    // 事件发生的时间(毫秒级事件戳)
  2577  	NotifyTime   *string `json:"notify_time,omitempty"`    // 触发通知的时间(毫秒级时间戳)
  2578  }
  2579  
  2580  type ReminderBuilder struct {
  2581  	createUserId     string // 创建者用户 ID
  2582  	createUserIdFlag bool
  2583  	isNotify         bool // 是否通知
  2584  	isNotifyFlag     bool
  2585  	isWholeDay       bool // 是日期还是整点小时
  2586  	isWholeDayFlag   bool
  2587  	expireTime       string // 事件发生的时间(毫秒级事件戳)
  2588  	expireTimeFlag   bool
  2589  	notifyTime       string // 触发通知的时间(毫秒级时间戳)
  2590  	notifyTimeFlag   bool
  2591  }
  2592  
  2593  func NewReminderBuilder() *ReminderBuilder {
  2594  	builder := &ReminderBuilder{}
  2595  	return builder
  2596  }
  2597  
  2598  // 创建者用户 ID
  2599  //
  2600  // 示例值:0e2633a3-aa1a-4171-af9e-0768ff863566
  2601  func (builder *ReminderBuilder) CreateUserId(createUserId string) *ReminderBuilder {
  2602  	builder.createUserId = createUserId
  2603  	builder.createUserIdFlag = true
  2604  	return builder
  2605  }
  2606  
  2607  // 是否通知
  2608  //
  2609  // 示例值:true
  2610  func (builder *ReminderBuilder) IsNotify(isNotify bool) *ReminderBuilder {
  2611  	builder.isNotify = isNotify
  2612  	builder.isNotifyFlag = true
  2613  	return builder
  2614  }
  2615  
  2616  // 是日期还是整点小时
  2617  //
  2618  // 示例值:true
  2619  func (builder *ReminderBuilder) IsWholeDay(isWholeDay bool) *ReminderBuilder {
  2620  	builder.isWholeDay = isWholeDay
  2621  	builder.isWholeDayFlag = true
  2622  	return builder
  2623  }
  2624  
  2625  // 事件发生的时间(毫秒级事件戳)
  2626  //
  2627  // 示例值:1641967200000
  2628  func (builder *ReminderBuilder) ExpireTime(expireTime string) *ReminderBuilder {
  2629  	builder.expireTime = expireTime
  2630  	builder.expireTimeFlag = true
  2631  	return builder
  2632  }
  2633  
  2634  // 触发通知的时间(毫秒级时间戳)
  2635  //
  2636  // 示例值:1643166000000
  2637  func (builder *ReminderBuilder) NotifyTime(notifyTime string) *ReminderBuilder {
  2638  	builder.notifyTime = notifyTime
  2639  	builder.notifyTimeFlag = true
  2640  	return builder
  2641  }
  2642  
  2643  func (builder *ReminderBuilder) Build() *Reminder {
  2644  	req := &Reminder{}
  2645  	if builder.createUserIdFlag {
  2646  		req.CreateUserId = &builder.createUserId
  2647  
  2648  	}
  2649  	if builder.isNotifyFlag {
  2650  		req.IsNotify = &builder.isNotify
  2651  
  2652  	}
  2653  	if builder.isWholeDayFlag {
  2654  		req.IsWholeDay = &builder.isWholeDay
  2655  
  2656  	}
  2657  	if builder.expireTimeFlag {
  2658  		req.ExpireTime = &builder.expireTime
  2659  
  2660  	}
  2661  	if builder.notifyTimeFlag {
  2662  		req.NotifyTime = &builder.notifyTime
  2663  
  2664  	}
  2665  	return req
  2666  }
  2667  
  2668  type ReplaceFileRequest struct {
  2669  	Token *string `json:"token,omitempty"` // 附件 token
  2670  }
  2671  
  2672  type ReplaceFileRequestBuilder struct {
  2673  	token     string // 附件 token
  2674  	tokenFlag bool
  2675  }
  2676  
  2677  func NewReplaceFileRequestBuilder() *ReplaceFileRequestBuilder {
  2678  	builder := &ReplaceFileRequestBuilder{}
  2679  	return builder
  2680  }
  2681  
  2682  // 附件 token
  2683  //
  2684  // 示例值:boxbckbfvfcqEg22hAzN8Dh9gJd
  2685  func (builder *ReplaceFileRequestBuilder) Token(token string) *ReplaceFileRequestBuilder {
  2686  	builder.token = token
  2687  	builder.tokenFlag = true
  2688  	return builder
  2689  }
  2690  
  2691  func (builder *ReplaceFileRequestBuilder) Build() *ReplaceFileRequest {
  2692  	req := &ReplaceFileRequest{}
  2693  	if builder.tokenFlag {
  2694  		req.Token = &builder.token
  2695  
  2696  	}
  2697  	return req
  2698  }
  2699  
  2700  type ReplaceImageRequest struct {
  2701  	Token *string `json:"token,omitempty"` // 图片 token
  2702  }
  2703  
  2704  type ReplaceImageRequestBuilder struct {
  2705  	token     string // 图片 token
  2706  	tokenFlag bool
  2707  }
  2708  
  2709  func NewReplaceImageRequestBuilder() *ReplaceImageRequestBuilder {
  2710  	builder := &ReplaceImageRequestBuilder{}
  2711  	return builder
  2712  }
  2713  
  2714  // 图片 token
  2715  //
  2716  // 示例值:boxbckbfvfcqEg22hAzN8Dh9gJd
  2717  func (builder *ReplaceImageRequestBuilder) Token(token string) *ReplaceImageRequestBuilder {
  2718  	builder.token = token
  2719  	builder.tokenFlag = true
  2720  	return builder
  2721  }
  2722  
  2723  func (builder *ReplaceImageRequestBuilder) Build() *ReplaceImageRequest {
  2724  	req := &ReplaceImageRequest{}
  2725  	if builder.tokenFlag {
  2726  		req.Token = &builder.token
  2727  
  2728  	}
  2729  	return req
  2730  }
  2731  
  2732  type Sheet struct {
  2733  	Token      *string `json:"token,omitempty"`       // 电子表格 block 的 token
  2734  	RowSize    *int    `json:"row_size,omitempty"`    // 电子表格行数量
  2735  	ColumnSize *int    `json:"column_size,omitempty"` // 电子表格列数量
  2736  }
  2737  
  2738  type SheetBuilder struct {
  2739  	token          string // 电子表格 block 的 token
  2740  	tokenFlag      bool
  2741  	rowSize        int // 电子表格行数量
  2742  	rowSizeFlag    bool
  2743  	columnSize     int // 电子表格列数量
  2744  	columnSizeFlag bool
  2745  }
  2746  
  2747  func NewSheetBuilder() *SheetBuilder {
  2748  	builder := &SheetBuilder{}
  2749  	return builder
  2750  }
  2751  
  2752  // 电子表格 block 的 token
  2753  //
  2754  // 示例值:shtbcW6ufcUtRRet7Hz6Iv4ytzg
  2755  func (builder *SheetBuilder) Token(token string) *SheetBuilder {
  2756  	builder.token = token
  2757  	builder.tokenFlag = true
  2758  	return builder
  2759  }
  2760  
  2761  // 电子表格行数量
  2762  //
  2763  // 示例值:2
  2764  func (builder *SheetBuilder) RowSize(rowSize int) *SheetBuilder {
  2765  	builder.rowSize = rowSize
  2766  	builder.rowSizeFlag = true
  2767  	return builder
  2768  }
  2769  
  2770  // 电子表格列数量
  2771  //
  2772  // 示例值:2
  2773  func (builder *SheetBuilder) ColumnSize(columnSize int) *SheetBuilder {
  2774  	builder.columnSize = columnSize
  2775  	builder.columnSizeFlag = true
  2776  	return builder
  2777  }
  2778  
  2779  func (builder *SheetBuilder) Build() *Sheet {
  2780  	req := &Sheet{}
  2781  	if builder.tokenFlag {
  2782  		req.Token = &builder.token
  2783  
  2784  	}
  2785  	if builder.rowSizeFlag {
  2786  		req.RowSize = &builder.rowSize
  2787  
  2788  	}
  2789  	if builder.columnSizeFlag {
  2790  		req.ColumnSize = &builder.columnSize
  2791  
  2792  	}
  2793  	return req
  2794  }
  2795  
  2796  type Table struct {
  2797  	Cells    []string       `json:"cells,omitempty"`    // 单元格数组,数组元素为 Table Cell Block 的 ID
  2798  	Property *TableProperty `json:"property,omitempty"` // 表格属性
  2799  }
  2800  
  2801  type TableBuilder struct {
  2802  	cells        []string // 单元格数组,数组元素为 Table Cell Block 的 ID
  2803  	cellsFlag    bool
  2804  	property     *TableProperty // 表格属性
  2805  	propertyFlag bool
  2806  }
  2807  
  2808  func NewTableBuilder() *TableBuilder {
  2809  	builder := &TableBuilder{}
  2810  	return builder
  2811  }
  2812  
  2813  // 单元格数组,数组元素为 Table Cell Block 的 ID
  2814  //
  2815  // 示例值:
  2816  func (builder *TableBuilder) Cells(cells []string) *TableBuilder {
  2817  	builder.cells = cells
  2818  	builder.cellsFlag = true
  2819  	return builder
  2820  }
  2821  
  2822  // 表格属性
  2823  //
  2824  // 示例值:
  2825  func (builder *TableBuilder) Property(property *TableProperty) *TableBuilder {
  2826  	builder.property = property
  2827  	builder.propertyFlag = true
  2828  	return builder
  2829  }
  2830  
  2831  func (builder *TableBuilder) Build() *Table {
  2832  	req := &Table{}
  2833  	if builder.cellsFlag {
  2834  		req.Cells = builder.cells
  2835  	}
  2836  	if builder.propertyFlag {
  2837  		req.Property = builder.property
  2838  	}
  2839  	return req
  2840  }
  2841  
  2842  type TableCell struct {
  2843  }
  2844  
  2845  type TableMergeInfo struct {
  2846  	RowSpan *int `json:"row_span,omitempty"` // 从当前行索引起被合并的连续行数
  2847  	ColSpan *int `json:"col_span,omitempty"` // 从当前列索引起被合并的连续列数
  2848  }
  2849  
  2850  type TableMergeInfoBuilder struct {
  2851  	rowSpan     int // 从当前行索引起被合并的连续行数
  2852  	rowSpanFlag bool
  2853  	colSpan     int // 从当前列索引起被合并的连续列数
  2854  	colSpanFlag bool
  2855  }
  2856  
  2857  func NewTableMergeInfoBuilder() *TableMergeInfoBuilder {
  2858  	builder := &TableMergeInfoBuilder{}
  2859  	return builder
  2860  }
  2861  
  2862  // 从当前行索引起被合并的连续行数
  2863  //
  2864  // 示例值:2
  2865  func (builder *TableMergeInfoBuilder) RowSpan(rowSpan int) *TableMergeInfoBuilder {
  2866  	builder.rowSpan = rowSpan
  2867  	builder.rowSpanFlag = true
  2868  	return builder
  2869  }
  2870  
  2871  // 从当前列索引起被合并的连续列数
  2872  //
  2873  // 示例值:2
  2874  func (builder *TableMergeInfoBuilder) ColSpan(colSpan int) *TableMergeInfoBuilder {
  2875  	builder.colSpan = colSpan
  2876  	builder.colSpanFlag = true
  2877  	return builder
  2878  }
  2879  
  2880  func (builder *TableMergeInfoBuilder) Build() *TableMergeInfo {
  2881  	req := &TableMergeInfo{}
  2882  	if builder.rowSpanFlag {
  2883  		req.RowSpan = &builder.rowSpan
  2884  
  2885  	}
  2886  	if builder.colSpanFlag {
  2887  		req.ColSpan = &builder.colSpan
  2888  
  2889  	}
  2890  	return req
  2891  }
  2892  
  2893  type TableProperty struct {
  2894  	RowSize     *int              `json:"row_size,omitempty"`     // 行数
  2895  	ColumnSize  *int              `json:"column_size,omitempty"`  // 列数
  2896  	ColumnWidth []int             `json:"column_width,omitempty"` // 列宽,单位px
  2897  	MergeInfo   []*TableMergeInfo `json:"merge_info,omitempty"`   // 单元格合并信息
  2898  }
  2899  
  2900  type TablePropertyBuilder struct {
  2901  	rowSize         int // 行数
  2902  	rowSizeFlag     bool
  2903  	columnSize      int // 列数
  2904  	columnSizeFlag  bool
  2905  	columnWidth     []int // 列宽,单位px
  2906  	columnWidthFlag bool
  2907  	mergeInfo       []*TableMergeInfo // 单元格合并信息
  2908  	mergeInfoFlag   bool
  2909  }
  2910  
  2911  func NewTablePropertyBuilder() *TablePropertyBuilder {
  2912  	builder := &TablePropertyBuilder{}
  2913  	return builder
  2914  }
  2915  
  2916  // 行数
  2917  //
  2918  // 示例值:1
  2919  func (builder *TablePropertyBuilder) RowSize(rowSize int) *TablePropertyBuilder {
  2920  	builder.rowSize = rowSize
  2921  	builder.rowSizeFlag = true
  2922  	return builder
  2923  }
  2924  
  2925  // 列数
  2926  //
  2927  // 示例值:1
  2928  func (builder *TablePropertyBuilder) ColumnSize(columnSize int) *TablePropertyBuilder {
  2929  	builder.columnSize = columnSize
  2930  	builder.columnSizeFlag = true
  2931  	return builder
  2932  }
  2933  
  2934  // 列宽,单位px
  2935  //
  2936  // 示例值:100
  2937  func (builder *TablePropertyBuilder) ColumnWidth(columnWidth []int) *TablePropertyBuilder {
  2938  	builder.columnWidth = columnWidth
  2939  	builder.columnWidthFlag = true
  2940  	return builder
  2941  }
  2942  
  2943  // 单元格合并信息
  2944  //
  2945  // 示例值:
  2946  func (builder *TablePropertyBuilder) MergeInfo(mergeInfo []*TableMergeInfo) *TablePropertyBuilder {
  2947  	builder.mergeInfo = mergeInfo
  2948  	builder.mergeInfoFlag = true
  2949  	return builder
  2950  }
  2951  
  2952  func (builder *TablePropertyBuilder) Build() *TableProperty {
  2953  	req := &TableProperty{}
  2954  	if builder.rowSizeFlag {
  2955  		req.RowSize = &builder.rowSize
  2956  
  2957  	}
  2958  	if builder.columnSizeFlag {
  2959  		req.ColumnSize = &builder.columnSize
  2960  
  2961  	}
  2962  	if builder.columnWidthFlag {
  2963  		req.ColumnWidth = builder.columnWidth
  2964  	}
  2965  	if builder.mergeInfoFlag {
  2966  		req.MergeInfo = builder.mergeInfo
  2967  	}
  2968  	return req
  2969  }
  2970  
  2971  type Task struct {
  2972  	TaskId *string `json:"task_id,omitempty"` // 任务 ID,查询具体任务详情见 https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/create
  2973  }
  2974  
  2975  type TaskBuilder struct {
  2976  	taskId     string // 任务 ID,查询具体任务详情见 https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/create
  2977  	taskIdFlag bool
  2978  }
  2979  
  2980  func NewTaskBuilder() *TaskBuilder {
  2981  	builder := &TaskBuilder{}
  2982  	return builder
  2983  }
  2984  
  2985  // 任务 ID,查询具体任务详情见 https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/task-v1/task/create
  2986  //
  2987  // 示例值:
  2988  func (builder *TaskBuilder) TaskId(taskId string) *TaskBuilder {
  2989  	builder.taskId = taskId
  2990  	builder.taskIdFlag = true
  2991  	return builder
  2992  }
  2993  
  2994  func (builder *TaskBuilder) Build() *Task {
  2995  	req := &Task{}
  2996  	if builder.taskIdFlag {
  2997  		req.TaskId = &builder.taskId
  2998  
  2999  	}
  3000  	return req
  3001  }
  3002  
  3003  type Text struct {
  3004  	Style    *TextStyle     `json:"style,omitempty"`    // 文本样式
  3005  	Elements []*TextElement `json:"elements,omitempty"` // 文本元素
  3006  }
  3007  
  3008  type TextBuilder struct {
  3009  	style        *TextStyle // 文本样式
  3010  	styleFlag    bool
  3011  	elements     []*TextElement // 文本元素
  3012  	elementsFlag bool
  3013  }
  3014  
  3015  func NewTextBuilder() *TextBuilder {
  3016  	builder := &TextBuilder{}
  3017  	return builder
  3018  }
  3019  
  3020  // 文本样式
  3021  //
  3022  // 示例值:
  3023  func (builder *TextBuilder) Style(style *TextStyle) *TextBuilder {
  3024  	builder.style = style
  3025  	builder.styleFlag = true
  3026  	return builder
  3027  }
  3028  
  3029  // 文本元素
  3030  //
  3031  // 示例值:
  3032  func (builder *TextBuilder) Elements(elements []*TextElement) *TextBuilder {
  3033  	builder.elements = elements
  3034  	builder.elementsFlag = true
  3035  	return builder
  3036  }
  3037  
  3038  func (builder *TextBuilder) Build() *Text {
  3039  	req := &Text{}
  3040  	if builder.styleFlag {
  3041  		req.Style = builder.style
  3042  	}
  3043  	if builder.elementsFlag {
  3044  		req.Elements = builder.elements
  3045  	}
  3046  	return req
  3047  }
  3048  
  3049  type TextElement struct {
  3050  	TextRun     *TextRun          `json:"text_run,omitempty"`     // 文字
  3051  	MentionUser *MentionUser      `json:"mention_user,omitempty"` // @用户
  3052  	MentionDoc  *MentionDoc       `json:"mention_doc,omitempty"`  // @文档
  3053  	Reminder    *Reminder         `json:"reminder,omitempty"`     // 日期提醒
  3054  	File        *InlineFile       `json:"file,omitempty"`         // 内联附件
  3055  	Undefined   *UndefinedElement `json:"undefined,omitempty"`    // 未支持的 TextElement
  3056  	InlineBlock *InlineBlock      `json:"inline_block,omitempty"` // 内联 block
  3057  	Equation    *Equation         `json:"equation,omitempty"`     // 公式
  3058  }
  3059  
  3060  type TextElementBuilder struct {
  3061  	textRun         *TextRun // 文字
  3062  	textRunFlag     bool
  3063  	mentionUser     *MentionUser // @用户
  3064  	mentionUserFlag bool
  3065  	mentionDoc      *MentionDoc // @文档
  3066  	mentionDocFlag  bool
  3067  	reminder        *Reminder // 日期提醒
  3068  	reminderFlag    bool
  3069  	file            *InlineFile // 内联附件
  3070  	fileFlag        bool
  3071  	undefined       *UndefinedElement // 未支持的 TextElement
  3072  	undefinedFlag   bool
  3073  	inlineBlock     *InlineBlock // 内联 block
  3074  	inlineBlockFlag bool
  3075  	equation        *Equation // 公式
  3076  	equationFlag    bool
  3077  }
  3078  
  3079  func NewTextElementBuilder() *TextElementBuilder {
  3080  	builder := &TextElementBuilder{}
  3081  	return builder
  3082  }
  3083  
  3084  // 文字
  3085  //
  3086  // 示例值:
  3087  func (builder *TextElementBuilder) TextRun(textRun *TextRun) *TextElementBuilder {
  3088  	builder.textRun = textRun
  3089  	builder.textRunFlag = true
  3090  	return builder
  3091  }
  3092  
  3093  // @用户
  3094  //
  3095  // 示例值:
  3096  func (builder *TextElementBuilder) MentionUser(mentionUser *MentionUser) *TextElementBuilder {
  3097  	builder.mentionUser = mentionUser
  3098  	builder.mentionUserFlag = true
  3099  	return builder
  3100  }
  3101  
  3102  // @文档
  3103  //
  3104  // 示例值:
  3105  func (builder *TextElementBuilder) MentionDoc(mentionDoc *MentionDoc) *TextElementBuilder {
  3106  	builder.mentionDoc = mentionDoc
  3107  	builder.mentionDocFlag = true
  3108  	return builder
  3109  }
  3110  
  3111  // 日期提醒
  3112  //
  3113  // 示例值:
  3114  func (builder *TextElementBuilder) Reminder(reminder *Reminder) *TextElementBuilder {
  3115  	builder.reminder = reminder
  3116  	builder.reminderFlag = true
  3117  	return builder
  3118  }
  3119  
  3120  // 内联附件
  3121  //
  3122  // 示例值:
  3123  func (builder *TextElementBuilder) File(file *InlineFile) *TextElementBuilder {
  3124  	builder.file = file
  3125  	builder.fileFlag = true
  3126  	return builder
  3127  }
  3128  
  3129  // 未支持的 TextElement
  3130  //
  3131  // 示例值:
  3132  func (builder *TextElementBuilder) Undefined(undefined *UndefinedElement) *TextElementBuilder {
  3133  	builder.undefined = undefined
  3134  	builder.undefinedFlag = true
  3135  	return builder
  3136  }
  3137  
  3138  // 内联 block
  3139  //
  3140  // 示例值:
  3141  func (builder *TextElementBuilder) InlineBlock(inlineBlock *InlineBlock) *TextElementBuilder {
  3142  	builder.inlineBlock = inlineBlock
  3143  	builder.inlineBlockFlag = true
  3144  	return builder
  3145  }
  3146  
  3147  // 公式
  3148  //
  3149  // 示例值:
  3150  func (builder *TextElementBuilder) Equation(equation *Equation) *TextElementBuilder {
  3151  	builder.equation = equation
  3152  	builder.equationFlag = true
  3153  	return builder
  3154  }
  3155  
  3156  func (builder *TextElementBuilder) Build() *TextElement {
  3157  	req := &TextElement{}
  3158  	if builder.textRunFlag {
  3159  		req.TextRun = builder.textRun
  3160  	}
  3161  	if builder.mentionUserFlag {
  3162  		req.MentionUser = builder.mentionUser
  3163  	}
  3164  	if builder.mentionDocFlag {
  3165  		req.MentionDoc = builder.mentionDoc
  3166  	}
  3167  	if builder.reminderFlag {
  3168  		req.Reminder = builder.reminder
  3169  	}
  3170  	if builder.fileFlag {
  3171  		req.File = builder.file
  3172  	}
  3173  	if builder.undefinedFlag {
  3174  		req.Undefined = builder.undefined
  3175  	}
  3176  	if builder.inlineBlockFlag {
  3177  		req.InlineBlock = builder.inlineBlock
  3178  	}
  3179  	if builder.equationFlag {
  3180  		req.Equation = builder.equation
  3181  	}
  3182  	return req
  3183  }
  3184  
  3185  type TextElementStyle struct {
  3186  	Bold            *bool `json:"bold,omitempty"`             // 加粗
  3187  	Italic          *bool `json:"italic,omitempty"`           // 斜体
  3188  	Strikethrough   *bool `json:"strikethrough,omitempty"`    // 删除线
  3189  	Underline       *bool `json:"underline,omitempty"`        // 下划线
  3190  	InlineCode      *bool `json:"inline_code,omitempty"`      // inline 代码
  3191  	BackgroundColor *int  `json:"background_color,omitempty"` // 背景色
  3192  	TextColor       *int  `json:"text_color,omitempty"`       // 字体颜色
  3193  	Link            *Link `json:"link,omitempty"`             // 链接
  3194  }
  3195  
  3196  type TextElementStyleBuilder struct {
  3197  	bold                bool // 加粗
  3198  	boldFlag            bool
  3199  	italic              bool // 斜体
  3200  	italicFlag          bool
  3201  	strikethrough       bool // 删除线
  3202  	strikethroughFlag   bool
  3203  	underline           bool // 下划线
  3204  	underlineFlag       bool
  3205  	inlineCode          bool // inline 代码
  3206  	inlineCodeFlag      bool
  3207  	backgroundColor     int // 背景色
  3208  	backgroundColorFlag bool
  3209  	textColor           int // 字体颜色
  3210  	textColorFlag       bool
  3211  	link                *Link // 链接
  3212  	linkFlag            bool
  3213  }
  3214  
  3215  func NewTextElementStyleBuilder() *TextElementStyleBuilder {
  3216  	builder := &TextElementStyleBuilder{}
  3217  	return builder
  3218  }
  3219  
  3220  // 加粗
  3221  //
  3222  // 示例值:true
  3223  func (builder *TextElementStyleBuilder) Bold(bold bool) *TextElementStyleBuilder {
  3224  	builder.bold = bold
  3225  	builder.boldFlag = true
  3226  	return builder
  3227  }
  3228  
  3229  // 斜体
  3230  //
  3231  // 示例值:true
  3232  func (builder *TextElementStyleBuilder) Italic(italic bool) *TextElementStyleBuilder {
  3233  	builder.italic = italic
  3234  	builder.italicFlag = true
  3235  	return builder
  3236  }
  3237  
  3238  // 删除线
  3239  //
  3240  // 示例值:true
  3241  func (builder *TextElementStyleBuilder) Strikethrough(strikethrough bool) *TextElementStyleBuilder {
  3242  	builder.strikethrough = strikethrough
  3243  	builder.strikethroughFlag = true
  3244  	return builder
  3245  }
  3246  
  3247  // 下划线
  3248  //
  3249  // 示例值:true
  3250  func (builder *TextElementStyleBuilder) Underline(underline bool) *TextElementStyleBuilder {
  3251  	builder.underline = underline
  3252  	builder.underlineFlag = true
  3253  	return builder
  3254  }
  3255  
  3256  // inline 代码
  3257  //
  3258  // 示例值:true
  3259  func (builder *TextElementStyleBuilder) InlineCode(inlineCode bool) *TextElementStyleBuilder {
  3260  	builder.inlineCode = inlineCode
  3261  	builder.inlineCodeFlag = true
  3262  	return builder
  3263  }
  3264  
  3265  // 背景色
  3266  //
  3267  // 示例值:1
  3268  func (builder *TextElementStyleBuilder) BackgroundColor(backgroundColor int) *TextElementStyleBuilder {
  3269  	builder.backgroundColor = backgroundColor
  3270  	builder.backgroundColorFlag = true
  3271  	return builder
  3272  }
  3273  
  3274  // 字体颜色
  3275  //
  3276  // 示例值:1
  3277  func (builder *TextElementStyleBuilder) TextColor(textColor int) *TextElementStyleBuilder {
  3278  	builder.textColor = textColor
  3279  	builder.textColorFlag = true
  3280  	return builder
  3281  }
  3282  
  3283  // 链接
  3284  //
  3285  // 示例值:
  3286  func (builder *TextElementStyleBuilder) Link(link *Link) *TextElementStyleBuilder {
  3287  	builder.link = link
  3288  	builder.linkFlag = true
  3289  	return builder
  3290  }
  3291  
  3292  func (builder *TextElementStyleBuilder) Build() *TextElementStyle {
  3293  	req := &TextElementStyle{}
  3294  	if builder.boldFlag {
  3295  		req.Bold = &builder.bold
  3296  
  3297  	}
  3298  	if builder.italicFlag {
  3299  		req.Italic = &builder.italic
  3300  
  3301  	}
  3302  	if builder.strikethroughFlag {
  3303  		req.Strikethrough = &builder.strikethrough
  3304  
  3305  	}
  3306  	if builder.underlineFlag {
  3307  		req.Underline = &builder.underline
  3308  
  3309  	}
  3310  	if builder.inlineCodeFlag {
  3311  		req.InlineCode = &builder.inlineCode
  3312  
  3313  	}
  3314  	if builder.backgroundColorFlag {
  3315  		req.BackgroundColor = &builder.backgroundColor
  3316  
  3317  	}
  3318  	if builder.textColorFlag {
  3319  		req.TextColor = &builder.textColor
  3320  
  3321  	}
  3322  	if builder.linkFlag {
  3323  		req.Link = builder.link
  3324  	}
  3325  	return req
  3326  }
  3327  
  3328  type TextRun struct {
  3329  	Content          *string           `json:"content,omitempty"`            // 文本内容
  3330  	TextElementStyle *TextElementStyle `json:"text_element_style,omitempty"` // 文本局部样式
  3331  }
  3332  
  3333  type TextRunBuilder struct {
  3334  	content              string // 文本内容
  3335  	contentFlag          bool
  3336  	textElementStyle     *TextElementStyle // 文本局部样式
  3337  	textElementStyleFlag bool
  3338  }
  3339  
  3340  func NewTextRunBuilder() *TextRunBuilder {
  3341  	builder := &TextRunBuilder{}
  3342  	return builder
  3343  }
  3344  
  3345  // 文本内容
  3346  //
  3347  // 示例值:文本
  3348  func (builder *TextRunBuilder) Content(content string) *TextRunBuilder {
  3349  	builder.content = content
  3350  	builder.contentFlag = true
  3351  	return builder
  3352  }
  3353  
  3354  // 文本局部样式
  3355  //
  3356  // 示例值:
  3357  func (builder *TextRunBuilder) TextElementStyle(textElementStyle *TextElementStyle) *TextRunBuilder {
  3358  	builder.textElementStyle = textElementStyle
  3359  	builder.textElementStyleFlag = true
  3360  	return builder
  3361  }
  3362  
  3363  func (builder *TextRunBuilder) Build() *TextRun {
  3364  	req := &TextRun{}
  3365  	if builder.contentFlag {
  3366  		req.Content = &builder.content
  3367  
  3368  	}
  3369  	if builder.textElementStyleFlag {
  3370  		req.TextElementStyle = builder.textElementStyle
  3371  	}
  3372  	return req
  3373  }
  3374  
  3375  type TextStyle struct {
  3376  	Align    *int  `json:"align,omitempty"`    // 对齐方式
  3377  	Done     *bool `json:"done,omitempty"`     // todo 的完成状态
  3378  	Folded   *bool `json:"folded,omitempty"`   // 文本的折叠状态
  3379  	Language *int  `json:"language,omitempty"` // 代码块语言
  3380  	Wrap     *bool `json:"wrap,omitempty"`     // 代码块是否自动换行
  3381  }
  3382  
  3383  type TextStyleBuilder struct {
  3384  	align        int // 对齐方式
  3385  	alignFlag    bool
  3386  	done         bool // todo 的完成状态
  3387  	doneFlag     bool
  3388  	folded       bool // 文本的折叠状态
  3389  	foldedFlag   bool
  3390  	language     int // 代码块语言
  3391  	languageFlag bool
  3392  	wrap         bool // 代码块是否自动换行
  3393  	wrapFlag     bool
  3394  }
  3395  
  3396  func NewTextStyleBuilder() *TextStyleBuilder {
  3397  	builder := &TextStyleBuilder{}
  3398  	return builder
  3399  }
  3400  
  3401  // 对齐方式
  3402  //
  3403  // 示例值:1
  3404  func (builder *TextStyleBuilder) Align(align int) *TextStyleBuilder {
  3405  	builder.align = align
  3406  	builder.alignFlag = true
  3407  	return builder
  3408  }
  3409  
  3410  // todo 的完成状态
  3411  //
  3412  // 示例值:true
  3413  func (builder *TextStyleBuilder) Done(done bool) *TextStyleBuilder {
  3414  	builder.done = done
  3415  	builder.doneFlag = true
  3416  	return builder
  3417  }
  3418  
  3419  // 文本的折叠状态
  3420  //
  3421  // 示例值:true
  3422  func (builder *TextStyleBuilder) Folded(folded bool) *TextStyleBuilder {
  3423  	builder.folded = folded
  3424  	builder.foldedFlag = true
  3425  	return builder
  3426  }
  3427  
  3428  // 代码块语言
  3429  //
  3430  // 示例值:1
  3431  func (builder *TextStyleBuilder) Language(language int) *TextStyleBuilder {
  3432  	builder.language = language
  3433  	builder.languageFlag = true
  3434  	return builder
  3435  }
  3436  
  3437  // 代码块是否自动换行
  3438  //
  3439  // 示例值:true
  3440  func (builder *TextStyleBuilder) Wrap(wrap bool) *TextStyleBuilder {
  3441  	builder.wrap = wrap
  3442  	builder.wrapFlag = true
  3443  	return builder
  3444  }
  3445  
  3446  func (builder *TextStyleBuilder) Build() *TextStyle {
  3447  	req := &TextStyle{}
  3448  	if builder.alignFlag {
  3449  		req.Align = &builder.align
  3450  
  3451  	}
  3452  	if builder.doneFlag {
  3453  		req.Done = &builder.done
  3454  
  3455  	}
  3456  	if builder.foldedFlag {
  3457  		req.Folded = &builder.folded
  3458  
  3459  	}
  3460  	if builder.languageFlag {
  3461  		req.Language = &builder.language
  3462  
  3463  	}
  3464  	if builder.wrapFlag {
  3465  		req.Wrap = &builder.wrap
  3466  
  3467  	}
  3468  	return req
  3469  }
  3470  
  3471  type Undefined struct {
  3472  }
  3473  
  3474  type UndefinedElement struct {
  3475  }
  3476  
  3477  type UnmergeTableCellsRequest struct {
  3478  	RowIndex    *int `json:"row_index,omitempty"`    // table 行索引
  3479  	ColumnIndex *int `json:"column_index,omitempty"` // table 列索引
  3480  }
  3481  
  3482  type UnmergeTableCellsRequestBuilder struct {
  3483  	rowIndex        int // table 行索引
  3484  	rowIndexFlag    bool
  3485  	columnIndex     int // table 列索引
  3486  	columnIndexFlag bool
  3487  }
  3488  
  3489  func NewUnmergeTableCellsRequestBuilder() *UnmergeTableCellsRequestBuilder {
  3490  	builder := &UnmergeTableCellsRequestBuilder{}
  3491  	return builder
  3492  }
  3493  
  3494  // table 行索引
  3495  //
  3496  // 示例值:0
  3497  func (builder *UnmergeTableCellsRequestBuilder) RowIndex(rowIndex int) *UnmergeTableCellsRequestBuilder {
  3498  	builder.rowIndex = rowIndex
  3499  	builder.rowIndexFlag = true
  3500  	return builder
  3501  }
  3502  
  3503  // table 列索引
  3504  //
  3505  // 示例值:0
  3506  func (builder *UnmergeTableCellsRequestBuilder) ColumnIndex(columnIndex int) *UnmergeTableCellsRequestBuilder {
  3507  	builder.columnIndex = columnIndex
  3508  	builder.columnIndexFlag = true
  3509  	return builder
  3510  }
  3511  
  3512  func (builder *UnmergeTableCellsRequestBuilder) Build() *UnmergeTableCellsRequest {
  3513  	req := &UnmergeTableCellsRequest{}
  3514  	if builder.rowIndexFlag {
  3515  		req.RowIndex = &builder.rowIndex
  3516  
  3517  	}
  3518  	if builder.columnIndexFlag {
  3519  		req.ColumnIndex = &builder.columnIndex
  3520  
  3521  	}
  3522  	return req
  3523  }
  3524  
  3525  type UpdateBlockRequest struct {
  3526  	UpdateTextElements         *UpdateTextElementsRequest         `json:"update_text_elements,omitempty"`           // 更新文本元素请求
  3527  	UpdateTextStyle            *UpdateTextStyleRequest            `json:"update_text_style,omitempty"`              // 更新文本样式请求
  3528  	UpdateTableProperty        *UpdateTablePropertyRequest        `json:"update_table_property,omitempty"`          // 更新表格属性请求
  3529  	InsertTableRow             *InsertTableRowRequest             `json:"insert_table_row,omitempty"`               // 表格插入新行请求
  3530  	InsertTableColumn          *InsertTableColumnRequest          `json:"insert_table_column,omitempty"`            // 表格插入新列请求
  3531  	DeleteTableRows            *DeleteTableRowsRequest            `json:"delete_table_rows,omitempty"`              // 表格批量删除行请求
  3532  	DeleteTableColumns         *DeleteTableColumnsRequest         `json:"delete_table_columns,omitempty"`           // 表格批量删除列请求
  3533  	MergeTableCells            *MergeTableCellsRequest            `json:"merge_table_cells,omitempty"`              // 表格合并单元格请求
  3534  	UnmergeTableCells          *UnmergeTableCellsRequest          `json:"unmerge_table_cells,omitempty"`            // 表格取消单元格合并状态请求
  3535  	InsertGridColumn           *InsertGridColumnRequest           `json:"insert_grid_column,omitempty"`             // 分栏插入新的分栏列请求
  3536  	DeleteGridColumn           *DeleteGridColumnRequest           `json:"delete_grid_column,omitempty"`             // 分栏删除列请求
  3537  	UpdateGridColumnWidthRatio *UpdateGridColumnWidthRatioRequest `json:"update_grid_column_width_ratio,omitempty"` // 更新分栏列宽比例请求
  3538  	ReplaceImage               *ReplaceImageRequest               `json:"replace_image,omitempty"`                  // 替换图片请求
  3539  	ReplaceFile                *ReplaceFileRequest                `json:"replace_file,omitempty"`                   // 替换附件请求
  3540  	BlockId                    *string                            `json:"block_id,omitempty"`                       // Block 唯一标识
  3541  	UpdateText                 *UpdateTextRequest                 `json:"update_text,omitempty"`                    // 更新文本元素及样式请求
  3542  }
  3543  
  3544  type UpdateBlockRequestBuilder struct {
  3545  	updateTextElements             *UpdateTextElementsRequest // 更新文本元素请求
  3546  	updateTextElementsFlag         bool
  3547  	updateTextStyle                *UpdateTextStyleRequest // 更新文本样式请求
  3548  	updateTextStyleFlag            bool
  3549  	updateTableProperty            *UpdateTablePropertyRequest // 更新表格属性请求
  3550  	updateTablePropertyFlag        bool
  3551  	insertTableRow                 *InsertTableRowRequest // 表格插入新行请求
  3552  	insertTableRowFlag             bool
  3553  	insertTableColumn              *InsertTableColumnRequest // 表格插入新列请求
  3554  	insertTableColumnFlag          bool
  3555  	deleteTableRows                *DeleteTableRowsRequest // 表格批量删除行请求
  3556  	deleteTableRowsFlag            bool
  3557  	deleteTableColumns             *DeleteTableColumnsRequest // 表格批量删除列请求
  3558  	deleteTableColumnsFlag         bool
  3559  	mergeTableCells                *MergeTableCellsRequest // 表格合并单元格请求
  3560  	mergeTableCellsFlag            bool
  3561  	unmergeTableCells              *UnmergeTableCellsRequest // 表格取消单元格合并状态请求
  3562  	unmergeTableCellsFlag          bool
  3563  	insertGridColumn               *InsertGridColumnRequest // 分栏插入新的分栏列请求
  3564  	insertGridColumnFlag           bool
  3565  	deleteGridColumn               *DeleteGridColumnRequest // 分栏删除列请求
  3566  	deleteGridColumnFlag           bool
  3567  	updateGridColumnWidthRatio     *UpdateGridColumnWidthRatioRequest // 更新分栏列宽比例请求
  3568  	updateGridColumnWidthRatioFlag bool
  3569  	replaceImage                   *ReplaceImageRequest // 替换图片请求
  3570  	replaceImageFlag               bool
  3571  	replaceFile                    *ReplaceFileRequest // 替换附件请求
  3572  	replaceFileFlag                bool
  3573  	blockId                        string // Block 唯一标识
  3574  	blockIdFlag                    bool
  3575  	updateText                     *UpdateTextRequest // 更新文本元素及样式请求
  3576  	updateTextFlag                 bool
  3577  }
  3578  
  3579  func NewUpdateBlockRequestBuilder() *UpdateBlockRequestBuilder {
  3580  	builder := &UpdateBlockRequestBuilder{}
  3581  	return builder
  3582  }
  3583  
  3584  // 更新文本元素请求
  3585  //
  3586  // 示例值:
  3587  func (builder *UpdateBlockRequestBuilder) UpdateTextElements(updateTextElements *UpdateTextElementsRequest) *UpdateBlockRequestBuilder {
  3588  	builder.updateTextElements = updateTextElements
  3589  	builder.updateTextElementsFlag = true
  3590  	return builder
  3591  }
  3592  
  3593  // 更新文本样式请求
  3594  //
  3595  // 示例值:
  3596  func (builder *UpdateBlockRequestBuilder) UpdateTextStyle(updateTextStyle *UpdateTextStyleRequest) *UpdateBlockRequestBuilder {
  3597  	builder.updateTextStyle = updateTextStyle
  3598  	builder.updateTextStyleFlag = true
  3599  	return builder
  3600  }
  3601  
  3602  // 更新表格属性请求
  3603  //
  3604  // 示例值:
  3605  func (builder *UpdateBlockRequestBuilder) UpdateTableProperty(updateTableProperty *UpdateTablePropertyRequest) *UpdateBlockRequestBuilder {
  3606  	builder.updateTableProperty = updateTableProperty
  3607  	builder.updateTablePropertyFlag = true
  3608  	return builder
  3609  }
  3610  
  3611  // 表格插入新行请求
  3612  //
  3613  // 示例值:
  3614  func (builder *UpdateBlockRequestBuilder) InsertTableRow(insertTableRow *InsertTableRowRequest) *UpdateBlockRequestBuilder {
  3615  	builder.insertTableRow = insertTableRow
  3616  	builder.insertTableRowFlag = true
  3617  	return builder
  3618  }
  3619  
  3620  // 表格插入新列请求
  3621  //
  3622  // 示例值:
  3623  func (builder *UpdateBlockRequestBuilder) InsertTableColumn(insertTableColumn *InsertTableColumnRequest) *UpdateBlockRequestBuilder {
  3624  	builder.insertTableColumn = insertTableColumn
  3625  	builder.insertTableColumnFlag = true
  3626  	return builder
  3627  }
  3628  
  3629  // 表格批量删除行请求
  3630  //
  3631  // 示例值:
  3632  func (builder *UpdateBlockRequestBuilder) DeleteTableRows(deleteTableRows *DeleteTableRowsRequest) *UpdateBlockRequestBuilder {
  3633  	builder.deleteTableRows = deleteTableRows
  3634  	builder.deleteTableRowsFlag = true
  3635  	return builder
  3636  }
  3637  
  3638  // 表格批量删除列请求
  3639  //
  3640  // 示例值:
  3641  func (builder *UpdateBlockRequestBuilder) DeleteTableColumns(deleteTableColumns *DeleteTableColumnsRequest) *UpdateBlockRequestBuilder {
  3642  	builder.deleteTableColumns = deleteTableColumns
  3643  	builder.deleteTableColumnsFlag = true
  3644  	return builder
  3645  }
  3646  
  3647  // 表格合并单元格请求
  3648  //
  3649  // 示例值:
  3650  func (builder *UpdateBlockRequestBuilder) MergeTableCells(mergeTableCells *MergeTableCellsRequest) *UpdateBlockRequestBuilder {
  3651  	builder.mergeTableCells = mergeTableCells
  3652  	builder.mergeTableCellsFlag = true
  3653  	return builder
  3654  }
  3655  
  3656  // 表格取消单元格合并状态请求
  3657  //
  3658  // 示例值:
  3659  func (builder *UpdateBlockRequestBuilder) UnmergeTableCells(unmergeTableCells *UnmergeTableCellsRequest) *UpdateBlockRequestBuilder {
  3660  	builder.unmergeTableCells = unmergeTableCells
  3661  	builder.unmergeTableCellsFlag = true
  3662  	return builder
  3663  }
  3664  
  3665  // 分栏插入新的分栏列请求
  3666  //
  3667  // 示例值:
  3668  func (builder *UpdateBlockRequestBuilder) InsertGridColumn(insertGridColumn *InsertGridColumnRequest) *UpdateBlockRequestBuilder {
  3669  	builder.insertGridColumn = insertGridColumn
  3670  	builder.insertGridColumnFlag = true
  3671  	return builder
  3672  }
  3673  
  3674  // 分栏删除列请求
  3675  //
  3676  // 示例值:
  3677  func (builder *UpdateBlockRequestBuilder) DeleteGridColumn(deleteGridColumn *DeleteGridColumnRequest) *UpdateBlockRequestBuilder {
  3678  	builder.deleteGridColumn = deleteGridColumn
  3679  	builder.deleteGridColumnFlag = true
  3680  	return builder
  3681  }
  3682  
  3683  // 更新分栏列宽比例请求
  3684  //
  3685  // 示例值:
  3686  func (builder *UpdateBlockRequestBuilder) UpdateGridColumnWidthRatio(updateGridColumnWidthRatio *UpdateGridColumnWidthRatioRequest) *UpdateBlockRequestBuilder {
  3687  	builder.updateGridColumnWidthRatio = updateGridColumnWidthRatio
  3688  	builder.updateGridColumnWidthRatioFlag = true
  3689  	return builder
  3690  }
  3691  
  3692  // 替换图片请求
  3693  //
  3694  // 示例值:
  3695  func (builder *UpdateBlockRequestBuilder) ReplaceImage(replaceImage *ReplaceImageRequest) *UpdateBlockRequestBuilder {
  3696  	builder.replaceImage = replaceImage
  3697  	builder.replaceImageFlag = true
  3698  	return builder
  3699  }
  3700  
  3701  // 替换附件请求
  3702  //
  3703  // 示例值:
  3704  func (builder *UpdateBlockRequestBuilder) ReplaceFile(replaceFile *ReplaceFileRequest) *UpdateBlockRequestBuilder {
  3705  	builder.replaceFile = replaceFile
  3706  	builder.replaceFileFlag = true
  3707  	return builder
  3708  }
  3709  
  3710  // Block 唯一标识
  3711  //
  3712  // 示例值:doxcnSS4ouQkQEouGSUkTg9NJPe
  3713  func (builder *UpdateBlockRequestBuilder) BlockId(blockId string) *UpdateBlockRequestBuilder {
  3714  	builder.blockId = blockId
  3715  	builder.blockIdFlag = true
  3716  	return builder
  3717  }
  3718  
  3719  // 更新文本元素及样式请求
  3720  //
  3721  // 示例值:
  3722  func (builder *UpdateBlockRequestBuilder) UpdateText(updateText *UpdateTextRequest) *UpdateBlockRequestBuilder {
  3723  	builder.updateText = updateText
  3724  	builder.updateTextFlag = true
  3725  	return builder
  3726  }
  3727  
  3728  func (builder *UpdateBlockRequestBuilder) Build() *UpdateBlockRequest {
  3729  	req := &UpdateBlockRequest{}
  3730  	if builder.updateTextElementsFlag {
  3731  		req.UpdateTextElements = builder.updateTextElements
  3732  	}
  3733  	if builder.updateTextStyleFlag {
  3734  		req.UpdateTextStyle = builder.updateTextStyle
  3735  	}
  3736  	if builder.updateTablePropertyFlag {
  3737  		req.UpdateTableProperty = builder.updateTableProperty
  3738  	}
  3739  	if builder.insertTableRowFlag {
  3740  		req.InsertTableRow = builder.insertTableRow
  3741  	}
  3742  	if builder.insertTableColumnFlag {
  3743  		req.InsertTableColumn = builder.insertTableColumn
  3744  	}
  3745  	if builder.deleteTableRowsFlag {
  3746  		req.DeleteTableRows = builder.deleteTableRows
  3747  	}
  3748  	if builder.deleteTableColumnsFlag {
  3749  		req.DeleteTableColumns = builder.deleteTableColumns
  3750  	}
  3751  	if builder.mergeTableCellsFlag {
  3752  		req.MergeTableCells = builder.mergeTableCells
  3753  	}
  3754  	if builder.unmergeTableCellsFlag {
  3755  		req.UnmergeTableCells = builder.unmergeTableCells
  3756  	}
  3757  	if builder.insertGridColumnFlag {
  3758  		req.InsertGridColumn = builder.insertGridColumn
  3759  	}
  3760  	if builder.deleteGridColumnFlag {
  3761  		req.DeleteGridColumn = builder.deleteGridColumn
  3762  	}
  3763  	if builder.updateGridColumnWidthRatioFlag {
  3764  		req.UpdateGridColumnWidthRatio = builder.updateGridColumnWidthRatio
  3765  	}
  3766  	if builder.replaceImageFlag {
  3767  		req.ReplaceImage = builder.replaceImage
  3768  	}
  3769  	if builder.replaceFileFlag {
  3770  		req.ReplaceFile = builder.replaceFile
  3771  	}
  3772  	if builder.blockIdFlag {
  3773  		req.BlockId = &builder.blockId
  3774  
  3775  	}
  3776  	if builder.updateTextFlag {
  3777  		req.UpdateText = builder.updateText
  3778  	}
  3779  	return req
  3780  }
  3781  
  3782  type UpdateGridColumnWidthRatioRequest struct {
  3783  	WidthRatios []int `json:"width_ratios,omitempty"` // 更新列宽比例时,需要传入所有列宽占比
  3784  }
  3785  
  3786  type UpdateGridColumnWidthRatioRequestBuilder struct {
  3787  	widthRatios     []int // 更新列宽比例时,需要传入所有列宽占比
  3788  	widthRatiosFlag bool
  3789  }
  3790  
  3791  func NewUpdateGridColumnWidthRatioRequestBuilder() *UpdateGridColumnWidthRatioRequestBuilder {
  3792  	builder := &UpdateGridColumnWidthRatioRequestBuilder{}
  3793  	return builder
  3794  }
  3795  
  3796  // 更新列宽比例时,需要传入所有列宽占比
  3797  //
  3798  // 示例值:50
  3799  func (builder *UpdateGridColumnWidthRatioRequestBuilder) WidthRatios(widthRatios []int) *UpdateGridColumnWidthRatioRequestBuilder {
  3800  	builder.widthRatios = widthRatios
  3801  	builder.widthRatiosFlag = true
  3802  	return builder
  3803  }
  3804  
  3805  func (builder *UpdateGridColumnWidthRatioRequestBuilder) Build() *UpdateGridColumnWidthRatioRequest {
  3806  	req := &UpdateGridColumnWidthRatioRequest{}
  3807  	if builder.widthRatiosFlag {
  3808  		req.WidthRatios = builder.widthRatios
  3809  	}
  3810  	return req
  3811  }
  3812  
  3813  type UpdateTablePropertyRequest struct {
  3814  	ColumnWidth *int `json:"column_width,omitempty"` // 表格列宽
  3815  	ColumnIndex *int `json:"column_index,omitempty"` // 需要修改列宽的表格列的索引
  3816  }
  3817  
  3818  type UpdateTablePropertyRequestBuilder struct {
  3819  	columnWidth     int // 表格列宽
  3820  	columnWidthFlag bool
  3821  	columnIndex     int // 需要修改列宽的表格列的索引
  3822  	columnIndexFlag bool
  3823  }
  3824  
  3825  func NewUpdateTablePropertyRequestBuilder() *UpdateTablePropertyRequestBuilder {
  3826  	builder := &UpdateTablePropertyRequestBuilder{}
  3827  	return builder
  3828  }
  3829  
  3830  // 表格列宽
  3831  //
  3832  // 示例值:100
  3833  func (builder *UpdateTablePropertyRequestBuilder) ColumnWidth(columnWidth int) *UpdateTablePropertyRequestBuilder {
  3834  	builder.columnWidth = columnWidth
  3835  	builder.columnWidthFlag = true
  3836  	return builder
  3837  }
  3838  
  3839  // 需要修改列宽的表格列的索引
  3840  //
  3841  // 示例值:0
  3842  func (builder *UpdateTablePropertyRequestBuilder) ColumnIndex(columnIndex int) *UpdateTablePropertyRequestBuilder {
  3843  	builder.columnIndex = columnIndex
  3844  	builder.columnIndexFlag = true
  3845  	return builder
  3846  }
  3847  
  3848  func (builder *UpdateTablePropertyRequestBuilder) Build() *UpdateTablePropertyRequest {
  3849  	req := &UpdateTablePropertyRequest{}
  3850  	if builder.columnWidthFlag {
  3851  		req.ColumnWidth = &builder.columnWidth
  3852  
  3853  	}
  3854  	if builder.columnIndexFlag {
  3855  		req.ColumnIndex = &builder.columnIndex
  3856  
  3857  	}
  3858  	return req
  3859  }
  3860  
  3861  type UpdateTextElementsRequest struct {
  3862  	Elements []*TextElement `json:"elements,omitempty"` // 更新的文本元素列表,单次更新中 reminder 上限 30 个,mention_doc 上限 50 个,mention_user 上限 100 个
  3863  }
  3864  
  3865  type UpdateTextElementsRequestBuilder struct {
  3866  	elements     []*TextElement // 更新的文本元素列表,单次更新中 reminder 上限 30 个,mention_doc 上限 50 个,mention_user 上限 100 个
  3867  	elementsFlag bool
  3868  }
  3869  
  3870  func NewUpdateTextElementsRequestBuilder() *UpdateTextElementsRequestBuilder {
  3871  	builder := &UpdateTextElementsRequestBuilder{}
  3872  	return builder
  3873  }
  3874  
  3875  // 更新的文本元素列表,单次更新中 reminder 上限 30 个,mention_doc 上限 50 个,mention_user 上限 100 个
  3876  //
  3877  // 示例值:
  3878  func (builder *UpdateTextElementsRequestBuilder) Elements(elements []*TextElement) *UpdateTextElementsRequestBuilder {
  3879  	builder.elements = elements
  3880  	builder.elementsFlag = true
  3881  	return builder
  3882  }
  3883  
  3884  func (builder *UpdateTextElementsRequestBuilder) Build() *UpdateTextElementsRequest {
  3885  	req := &UpdateTextElementsRequest{}
  3886  	if builder.elementsFlag {
  3887  		req.Elements = builder.elements
  3888  	}
  3889  	return req
  3890  }
  3891  
  3892  type UpdateTextRequest struct {
  3893  	Elements []*TextElement `json:"elements,omitempty"` // 更新的文本元素列表,单次更新中 reminder 上限 30 个,mention_doc 上限 50 个,mention_user 上限 100 个
  3894  	Style    *TextStyle     `json:"style,omitempty"`    // 更新的文本样式
  3895  	Fields   []int          `json:"fields,omitempty"`   // 文本样式中应更新的字段,必须至少指定一个字段。例如,要调整 Block 对齐方式,请设置 fields 为 [1]。
  3896  }
  3897  
  3898  type UpdateTextRequestBuilder struct {
  3899  	elements     []*TextElement // 更新的文本元素列表,单次更新中 reminder 上限 30 个,mention_doc 上限 50 个,mention_user 上限 100 个
  3900  	elementsFlag bool
  3901  	style        *TextStyle // 更新的文本样式
  3902  	styleFlag    bool
  3903  	fields       []int // 文本样式中应更新的字段,必须至少指定一个字段。例如,要调整 Block 对齐方式,请设置 fields 为 [1]。
  3904  	fieldsFlag   bool
  3905  }
  3906  
  3907  func NewUpdateTextRequestBuilder() *UpdateTextRequestBuilder {
  3908  	builder := &UpdateTextRequestBuilder{}
  3909  	return builder
  3910  }
  3911  
  3912  // 更新的文本元素列表,单次更新中 reminder 上限 30 个,mention_doc 上限 50 个,mention_user 上限 100 个
  3913  //
  3914  // 示例值:
  3915  func (builder *UpdateTextRequestBuilder) Elements(elements []*TextElement) *UpdateTextRequestBuilder {
  3916  	builder.elements = elements
  3917  	builder.elementsFlag = true
  3918  	return builder
  3919  }
  3920  
  3921  // 更新的文本样式
  3922  //
  3923  // 示例值:
  3924  func (builder *UpdateTextRequestBuilder) Style(style *TextStyle) *UpdateTextRequestBuilder {
  3925  	builder.style = style
  3926  	builder.styleFlag = true
  3927  	return builder
  3928  }
  3929  
  3930  // 文本样式中应更新的字段,必须至少指定一个字段。例如,要调整 Block 对齐方式,请设置 fields 为 [1]。
  3931  //
  3932  // 示例值:[1]
  3933  func (builder *UpdateTextRequestBuilder) Fields(fields []int) *UpdateTextRequestBuilder {
  3934  	builder.fields = fields
  3935  	builder.fieldsFlag = true
  3936  	return builder
  3937  }
  3938  
  3939  func (builder *UpdateTextRequestBuilder) Build() *UpdateTextRequest {
  3940  	req := &UpdateTextRequest{}
  3941  	if builder.elementsFlag {
  3942  		req.Elements = builder.elements
  3943  	}
  3944  	if builder.styleFlag {
  3945  		req.Style = builder.style
  3946  	}
  3947  	if builder.fieldsFlag {
  3948  		req.Fields = builder.fields
  3949  	}
  3950  	return req
  3951  }
  3952  
  3953  type UpdateTextStyleRequest struct {
  3954  	Style  *TextStyle `json:"style,omitempty"`  // 文本样式
  3955  	Fields []int      `json:"fields,omitempty"` // 应更新的字段,必须至少指定一个字段。例如,要调整 Block 对齐方式,请设置 fields 为 [1]。
  3956  }
  3957  
  3958  type UpdateTextStyleRequestBuilder struct {
  3959  	style      *TextStyle // 文本样式
  3960  	styleFlag  bool
  3961  	fields     []int // 应更新的字段,必须至少指定一个字段。例如,要调整 Block 对齐方式,请设置 fields 为 [1]。
  3962  	fieldsFlag bool
  3963  }
  3964  
  3965  func NewUpdateTextStyleRequestBuilder() *UpdateTextStyleRequestBuilder {
  3966  	builder := &UpdateTextStyleRequestBuilder{}
  3967  	return builder
  3968  }
  3969  
  3970  // 文本样式
  3971  //
  3972  // 示例值:
  3973  func (builder *UpdateTextStyleRequestBuilder) Style(style *TextStyle) *UpdateTextStyleRequestBuilder {
  3974  	builder.style = style
  3975  	builder.styleFlag = true
  3976  	return builder
  3977  }
  3978  
  3979  // 应更新的字段,必须至少指定一个字段。例如,要调整 Block 对齐方式,请设置 fields 为 [1]。
  3980  //
  3981  // 示例值:修改的文字样式属性
  3982  func (builder *UpdateTextStyleRequestBuilder) Fields(fields []int) *UpdateTextStyleRequestBuilder {
  3983  	builder.fields = fields
  3984  	builder.fieldsFlag = true
  3985  	return builder
  3986  }
  3987  
  3988  func (builder *UpdateTextStyleRequestBuilder) Build() *UpdateTextStyleRequest {
  3989  	req := &UpdateTextStyleRequest{}
  3990  	if builder.styleFlag {
  3991  		req.Style = builder.style
  3992  	}
  3993  	if builder.fieldsFlag {
  3994  		req.Fields = builder.fields
  3995  	}
  3996  	return req
  3997  }
  3998  
  3999  type View struct {
  4000  	ViewType *int `json:"view_type,omitempty"` // 视图类型
  4001  }
  4002  
  4003  type ViewBuilder struct {
  4004  	viewType     int // 视图类型
  4005  	viewTypeFlag bool
  4006  }
  4007  
  4008  func NewViewBuilder() *ViewBuilder {
  4009  	builder := &ViewBuilder{}
  4010  	return builder
  4011  }
  4012  
  4013  // 视图类型
  4014  //
  4015  // 示例值:1
  4016  func (builder *ViewBuilder) ViewType(viewType int) *ViewBuilder {
  4017  	builder.viewType = viewType
  4018  	builder.viewTypeFlag = true
  4019  	return builder
  4020  }
  4021  
  4022  func (builder *ViewBuilder) Build() *View {
  4023  	req := &View{}
  4024  	if builder.viewTypeFlag {
  4025  		req.ViewType = &builder.viewType
  4026  
  4027  	}
  4028  	return req
  4029  }
  4030  
  4031  type CreateDocumentReqBodyBuilder struct {
  4032  	folderToken     string // 文件夹 token,获取方式见云文档接口快速入门;空表示根目录,tenant_access_token应用权限仅允许操作应用创建的目录
  4033  	folderTokenFlag bool
  4034  	title           string // 文档标题,只支持纯文本
  4035  	titleFlag       bool
  4036  }
  4037  
  4038  func NewCreateDocumentReqBodyBuilder() *CreateDocumentReqBodyBuilder {
  4039  	builder := &CreateDocumentReqBodyBuilder{}
  4040  	return builder
  4041  }
  4042  
  4043  // 文件夹 token,获取方式见云文档接口快速入门;空表示根目录,tenant_access_token应用权限仅允许操作应用创建的目录
  4044  //
  4045  //示例值:fldcnqquW1svRIYVT2Np6IuLCKd
  4046  func (builder *CreateDocumentReqBodyBuilder) FolderToken(folderToken string) *CreateDocumentReqBodyBuilder {
  4047  	builder.folderToken = folderToken
  4048  	builder.folderTokenFlag = true
  4049  	return builder
  4050  }
  4051  
  4052  // 文档标题,只支持纯文本
  4053  //
  4054  //示例值:undefined
  4055  func (builder *CreateDocumentReqBodyBuilder) Title(title string) *CreateDocumentReqBodyBuilder {
  4056  	builder.title = title
  4057  	builder.titleFlag = true
  4058  	return builder
  4059  }
  4060  
  4061  func (builder *CreateDocumentReqBodyBuilder) Build() *CreateDocumentReqBody {
  4062  	req := &CreateDocumentReqBody{}
  4063  	if builder.folderTokenFlag {
  4064  		req.FolderToken = &builder.folderToken
  4065  	}
  4066  	if builder.titleFlag {
  4067  		req.Title = &builder.title
  4068  	}
  4069  	return req
  4070  }
  4071  
  4072  type CreateDocumentPathReqBodyBuilder struct {
  4073  	folderToken     string // 文件夹 token,获取方式见云文档接口快速入门;空表示根目录,tenant_access_token应用权限仅允许操作应用创建的目录
  4074  	folderTokenFlag bool
  4075  	title           string // 文档标题,只支持纯文本
  4076  	titleFlag       bool
  4077  }
  4078  
  4079  func NewCreateDocumentPathReqBodyBuilder() *CreateDocumentPathReqBodyBuilder {
  4080  	builder := &CreateDocumentPathReqBodyBuilder{}
  4081  	return builder
  4082  }
  4083  
  4084  // 文件夹 token,获取方式见云文档接口快速入门;空表示根目录,tenant_access_token应用权限仅允许操作应用创建的目录
  4085  //
  4086  // 示例值:fldcnqquW1svRIYVT2Np6IuLCKd
  4087  func (builder *CreateDocumentPathReqBodyBuilder) FolderToken(folderToken string) *CreateDocumentPathReqBodyBuilder {
  4088  	builder.folderToken = folderToken
  4089  	builder.folderTokenFlag = true
  4090  	return builder
  4091  }
  4092  
  4093  // 文档标题,只支持纯文本
  4094  //
  4095  // 示例值:undefined
  4096  func (builder *CreateDocumentPathReqBodyBuilder) Title(title string) *CreateDocumentPathReqBodyBuilder {
  4097  	builder.title = title
  4098  	builder.titleFlag = true
  4099  	return builder
  4100  }
  4101  
  4102  func (builder *CreateDocumentPathReqBodyBuilder) Build() (*CreateDocumentReqBody, error) {
  4103  	req := &CreateDocumentReqBody{}
  4104  	if builder.folderTokenFlag {
  4105  		req.FolderToken = &builder.folderToken
  4106  	}
  4107  	if builder.titleFlag {
  4108  		req.Title = &builder.title
  4109  	}
  4110  	return req, nil
  4111  }
  4112  
  4113  type CreateDocumentReqBuilder struct {
  4114  	apiReq *larkcore.ApiReq
  4115  	body   *CreateDocumentReqBody
  4116  }
  4117  
  4118  func NewCreateDocumentReqBuilder() *CreateDocumentReqBuilder {
  4119  	builder := &CreateDocumentReqBuilder{}
  4120  	builder.apiReq = &larkcore.ApiReq{
  4121  		PathParams:  larkcore.PathParams{},
  4122  		QueryParams: larkcore.QueryParams{},
  4123  	}
  4124  	return builder
  4125  }
  4126  
  4127  // 创建新版文档,文档标题和目录可选。
  4128  func (builder *CreateDocumentReqBuilder) Body(body *CreateDocumentReqBody) *CreateDocumentReqBuilder {
  4129  	builder.body = body
  4130  	return builder
  4131  }
  4132  
  4133  func (builder *CreateDocumentReqBuilder) Build() *CreateDocumentReq {
  4134  	req := &CreateDocumentReq{}
  4135  	req.apiReq = &larkcore.ApiReq{}
  4136  	req.apiReq.Body = builder.body
  4137  	return req
  4138  }
  4139  
  4140  type CreateDocumentReqBody struct {
  4141  	FolderToken *string `json:"folder_token,omitempty"` // 文件夹 token,获取方式见云文档接口快速入门;空表示根目录,tenant_access_token应用权限仅允许操作应用创建的目录
  4142  	Title       *string `json:"title,omitempty"`        // 文档标题,只支持纯文本
  4143  }
  4144  
  4145  type CreateDocumentReq struct {
  4146  	apiReq *larkcore.ApiReq
  4147  	Body   *CreateDocumentReqBody `body:""`
  4148  }
  4149  
  4150  type CreateDocumentRespData struct {
  4151  	Document *Document `json:"document,omitempty"` // 新建文档的文档信息
  4152  }
  4153  
  4154  type CreateDocumentResp struct {
  4155  	*larkcore.ApiResp `json:"-"`
  4156  	larkcore.CodeError
  4157  	Data *CreateDocumentRespData `json:"data"` // 业务数据
  4158  }
  4159  
  4160  func (resp *CreateDocumentResp) Success() bool {
  4161  	return resp.Code == 0
  4162  }
  4163  
  4164  type GetDocumentReqBuilder struct {
  4165  	apiReq *larkcore.ApiReq
  4166  }
  4167  
  4168  func NewGetDocumentReqBuilder() *GetDocumentReqBuilder {
  4169  	builder := &GetDocumentReqBuilder{}
  4170  	builder.apiReq = &larkcore.ApiReq{
  4171  		PathParams:  larkcore.PathParams{},
  4172  		QueryParams: larkcore.QueryParams{},
  4173  	}
  4174  	return builder
  4175  }
  4176  
  4177  // 文档的唯一标识
  4178  //
  4179  // 示例值:doxcnePuYufKa49ISjhD8Ih0ikh
  4180  func (builder *GetDocumentReqBuilder) DocumentId(documentId string) *GetDocumentReqBuilder {
  4181  	builder.apiReq.PathParams.Set("document_id", fmt.Sprint(documentId))
  4182  	return builder
  4183  }
  4184  
  4185  func (builder *GetDocumentReqBuilder) Build() *GetDocumentReq {
  4186  	req := &GetDocumentReq{}
  4187  	req.apiReq = &larkcore.ApiReq{}
  4188  	req.apiReq.PathParams = builder.apiReq.PathParams
  4189  	return req
  4190  }
  4191  
  4192  type GetDocumentReq struct {
  4193  	apiReq *larkcore.ApiReq
  4194  }
  4195  
  4196  type GetDocumentRespData struct {
  4197  	Document *Document `json:"document,omitempty"` // 文档信息
  4198  }
  4199  
  4200  type GetDocumentResp struct {
  4201  	*larkcore.ApiResp `json:"-"`
  4202  	larkcore.CodeError
  4203  	Data *GetDocumentRespData `json:"data"` // 业务数据
  4204  }
  4205  
  4206  func (resp *GetDocumentResp) Success() bool {
  4207  	return resp.Code == 0
  4208  }
  4209  
  4210  type RawContentDocumentReqBuilder struct {
  4211  	apiReq *larkcore.ApiReq
  4212  }
  4213  
  4214  func NewRawContentDocumentReqBuilder() *RawContentDocumentReqBuilder {
  4215  	builder := &RawContentDocumentReqBuilder{}
  4216  	builder.apiReq = &larkcore.ApiReq{
  4217  		PathParams:  larkcore.PathParams{},
  4218  		QueryParams: larkcore.QueryParams{},
  4219  	}
  4220  	return builder
  4221  }
  4222  
  4223  // 文档的唯一标识
  4224  //
  4225  // 示例值:doxbcmEtbFrbbq10nPNu8gO1F3b
  4226  func (builder *RawContentDocumentReqBuilder) DocumentId(documentId string) *RawContentDocumentReqBuilder {
  4227  	builder.apiReq.PathParams.Set("document_id", fmt.Sprint(documentId))
  4228  	return builder
  4229  }
  4230  
  4231  // 语言(用于 MentionUser 语言的选取)
  4232  //
  4233  // 示例值:0
  4234  func (builder *RawContentDocumentReqBuilder) Lang(lang int) *RawContentDocumentReqBuilder {
  4235  	builder.apiReq.QueryParams.Set("lang", fmt.Sprint(lang))
  4236  	return builder
  4237  }
  4238  
  4239  func (builder *RawContentDocumentReqBuilder) Build() *RawContentDocumentReq {
  4240  	req := &RawContentDocumentReq{}
  4241  	req.apiReq = &larkcore.ApiReq{}
  4242  	req.apiReq.PathParams = builder.apiReq.PathParams
  4243  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  4244  	return req
  4245  }
  4246  
  4247  type RawContentDocumentReq struct {
  4248  	apiReq *larkcore.ApiReq
  4249  }
  4250  
  4251  type RawContentDocumentRespData struct {
  4252  	Content *string `json:"content,omitempty"` // 文档纯文本
  4253  }
  4254  
  4255  type RawContentDocumentResp struct {
  4256  	*larkcore.ApiResp `json:"-"`
  4257  	larkcore.CodeError
  4258  	Data *RawContentDocumentRespData `json:"data"` // 业务数据
  4259  }
  4260  
  4261  func (resp *RawContentDocumentResp) Success() bool {
  4262  	return resp.Code == 0
  4263  }
  4264  
  4265  type BatchUpdateDocumentBlockReqBodyBuilder struct {
  4266  	requests     []*UpdateBlockRequest // 批量更新 Block
  4267  	requestsFlag bool
  4268  }
  4269  
  4270  func NewBatchUpdateDocumentBlockReqBodyBuilder() *BatchUpdateDocumentBlockReqBodyBuilder {
  4271  	builder := &BatchUpdateDocumentBlockReqBodyBuilder{}
  4272  	return builder
  4273  }
  4274  
  4275  // 批量更新 Block
  4276  //
  4277  //示例值:
  4278  func (builder *BatchUpdateDocumentBlockReqBodyBuilder) Requests(requests []*UpdateBlockRequest) *BatchUpdateDocumentBlockReqBodyBuilder {
  4279  	builder.requests = requests
  4280  	builder.requestsFlag = true
  4281  	return builder
  4282  }
  4283  
  4284  func (builder *BatchUpdateDocumentBlockReqBodyBuilder) Build() *BatchUpdateDocumentBlockReqBody {
  4285  	req := &BatchUpdateDocumentBlockReqBody{}
  4286  	if builder.requestsFlag {
  4287  		req.Requests = builder.requests
  4288  	}
  4289  	return req
  4290  }
  4291  
  4292  type BatchUpdateDocumentBlockPathReqBodyBuilder struct {
  4293  	requests     []*UpdateBlockRequest // 批量更新 Block
  4294  	requestsFlag bool
  4295  }
  4296  
  4297  func NewBatchUpdateDocumentBlockPathReqBodyBuilder() *BatchUpdateDocumentBlockPathReqBodyBuilder {
  4298  	builder := &BatchUpdateDocumentBlockPathReqBodyBuilder{}
  4299  	return builder
  4300  }
  4301  
  4302  // 批量更新 Block
  4303  //
  4304  // 示例值:
  4305  func (builder *BatchUpdateDocumentBlockPathReqBodyBuilder) Requests(requests []*UpdateBlockRequest) *BatchUpdateDocumentBlockPathReqBodyBuilder {
  4306  	builder.requests = requests
  4307  	builder.requestsFlag = true
  4308  	return builder
  4309  }
  4310  
  4311  func (builder *BatchUpdateDocumentBlockPathReqBodyBuilder) Build() (*BatchUpdateDocumentBlockReqBody, error) {
  4312  	req := &BatchUpdateDocumentBlockReqBody{}
  4313  	if builder.requestsFlag {
  4314  		req.Requests = builder.requests
  4315  	}
  4316  	return req, nil
  4317  }
  4318  
  4319  type BatchUpdateDocumentBlockReqBuilder struct {
  4320  	apiReq *larkcore.ApiReq
  4321  	body   *BatchUpdateDocumentBlockReqBody
  4322  }
  4323  
  4324  func NewBatchUpdateDocumentBlockReqBuilder() *BatchUpdateDocumentBlockReqBuilder {
  4325  	builder := &BatchUpdateDocumentBlockReqBuilder{}
  4326  	builder.apiReq = &larkcore.ApiReq{
  4327  		PathParams:  larkcore.PathParams{},
  4328  		QueryParams: larkcore.QueryParams{},
  4329  	}
  4330  	return builder
  4331  }
  4332  
  4333  // 文档的唯一标识
  4334  //
  4335  // 示例值:doxcnePuYufKa49ISjhD8Ih0ikh
  4336  func (builder *BatchUpdateDocumentBlockReqBuilder) DocumentId(documentId string) *BatchUpdateDocumentBlockReqBuilder {
  4337  	builder.apiReq.PathParams.Set("document_id", fmt.Sprint(documentId))
  4338  	return builder
  4339  }
  4340  
  4341  // 操作的文档版本,-1表示文档最新版本。若此时操作的版本为文档最新版本,则需要持有文档的阅读权限;若此时操作的版本为文档的历史版本,则需要持有文档的编辑权限。
  4342  //
  4343  // 示例值:-1
  4344  func (builder *BatchUpdateDocumentBlockReqBuilder) DocumentRevisionId(documentRevisionId int) *BatchUpdateDocumentBlockReqBuilder {
  4345  	builder.apiReq.QueryParams.Set("document_revision_id", fmt.Sprint(documentRevisionId))
  4346  	return builder
  4347  }
  4348  
  4349  // 操作的唯一标识,与接口返回值的 client_token 相对应,用于幂等的进行更新操作。此值为空表示将发起一次新的请求,此值非空表示幂等的进行更新操作。
  4350  //
  4351  // 示例值:0e2633a3-aa1a-4171-af9e-0768ff863566
  4352  func (builder *BatchUpdateDocumentBlockReqBuilder) ClientToken(clientToken string) *BatchUpdateDocumentBlockReqBuilder {
  4353  	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
  4354  	return builder
  4355  }
  4356  
  4357  // 此次调用中使用的用户ID的类型
  4358  //
  4359  // 示例值:
  4360  func (builder *BatchUpdateDocumentBlockReqBuilder) UserIdType(userIdType string) *BatchUpdateDocumentBlockReqBuilder {
  4361  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  4362  	return builder
  4363  }
  4364  
  4365  // 批量更新块的富文本内容。
  4366  func (builder *BatchUpdateDocumentBlockReqBuilder) Body(body *BatchUpdateDocumentBlockReqBody) *BatchUpdateDocumentBlockReqBuilder {
  4367  	builder.body = body
  4368  	return builder
  4369  }
  4370  
  4371  func (builder *BatchUpdateDocumentBlockReqBuilder) Build() *BatchUpdateDocumentBlockReq {
  4372  	req := &BatchUpdateDocumentBlockReq{}
  4373  	req.apiReq = &larkcore.ApiReq{}
  4374  	req.apiReq.PathParams = builder.apiReq.PathParams
  4375  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  4376  	req.apiReq.Body = builder.body
  4377  	return req
  4378  }
  4379  
  4380  type BatchUpdateDocumentBlockReqBody struct {
  4381  	Requests []*UpdateBlockRequest `json:"requests,omitempty"` // 批量更新 Block
  4382  }
  4383  
  4384  type BatchUpdateDocumentBlockReq struct {
  4385  	apiReq *larkcore.ApiReq
  4386  	Body   *BatchUpdateDocumentBlockReqBody `body:""`
  4387  }
  4388  
  4389  type BatchUpdateDocumentBlockRespData struct {
  4390  	Blocks             []*Block `json:"blocks,omitempty"`               // 批量更新的 Block
  4391  	DocumentRevisionId *int     `json:"document_revision_id,omitempty"` // 当前更新成功后文档的版本号
  4392  	ClientToken        *string  `json:"client_token,omitempty"`         // 操作的唯一标识,更新请求中使用此值表示幂等的进行此次更新
  4393  }
  4394  
  4395  type BatchUpdateDocumentBlockResp struct {
  4396  	*larkcore.ApiResp `json:"-"`
  4397  	larkcore.CodeError
  4398  	Data *BatchUpdateDocumentBlockRespData `json:"data"` // 业务数据
  4399  }
  4400  
  4401  func (resp *BatchUpdateDocumentBlockResp) Success() bool {
  4402  	return resp.Code == 0
  4403  }
  4404  
  4405  type GetDocumentBlockReqBuilder struct {
  4406  	apiReq *larkcore.ApiReq
  4407  }
  4408  
  4409  func NewGetDocumentBlockReqBuilder() *GetDocumentBlockReqBuilder {
  4410  	builder := &GetDocumentBlockReqBuilder{}
  4411  	builder.apiReq = &larkcore.ApiReq{
  4412  		PathParams:  larkcore.PathParams{},
  4413  		QueryParams: larkcore.QueryParams{},
  4414  	}
  4415  	return builder
  4416  }
  4417  
  4418  // 文档的唯一标识
  4419  //
  4420  // 示例值:doxcnePuYufKa49ISjhD8Ih0ikh
  4421  func (builder *GetDocumentBlockReqBuilder) DocumentId(documentId string) *GetDocumentBlockReqBuilder {
  4422  	builder.apiReq.PathParams.Set("document_id", fmt.Sprint(documentId))
  4423  	return builder
  4424  }
  4425  
  4426  // Block 的唯一标识
  4427  //
  4428  // 示例值:doxcnO6UW6wAw2qIcYf4hZpFIth
  4429  func (builder *GetDocumentBlockReqBuilder) BlockId(blockId string) *GetDocumentBlockReqBuilder {
  4430  	builder.apiReq.PathParams.Set("block_id", fmt.Sprint(blockId))
  4431  	return builder
  4432  }
  4433  
  4434  // 查询的文档版本,-1表示文档最新版本。若此时查询的版本为文档最新版本,则需要持有文档的阅读权限;若此时查询的版本为文档的历史版本,则需要持有文档的编辑权限。
  4435  //
  4436  // 示例值:-1
  4437  func (builder *GetDocumentBlockReqBuilder) DocumentRevisionId(documentRevisionId int) *GetDocumentBlockReqBuilder {
  4438  	builder.apiReq.QueryParams.Set("document_revision_id", fmt.Sprint(documentRevisionId))
  4439  	return builder
  4440  }
  4441  
  4442  // 此次调用中使用的用户ID的类型
  4443  //
  4444  // 示例值:
  4445  func (builder *GetDocumentBlockReqBuilder) UserIdType(userIdType string) *GetDocumentBlockReqBuilder {
  4446  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  4447  	return builder
  4448  }
  4449  
  4450  func (builder *GetDocumentBlockReqBuilder) Build() *GetDocumentBlockReq {
  4451  	req := &GetDocumentBlockReq{}
  4452  	req.apiReq = &larkcore.ApiReq{}
  4453  	req.apiReq.PathParams = builder.apiReq.PathParams
  4454  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  4455  	return req
  4456  }
  4457  
  4458  type GetDocumentBlockReq struct {
  4459  	apiReq *larkcore.ApiReq
  4460  }
  4461  
  4462  type GetDocumentBlockRespData struct {
  4463  	Block *Block `json:"block,omitempty"` // 查询的 Block 的信息
  4464  }
  4465  
  4466  type GetDocumentBlockResp struct {
  4467  	*larkcore.ApiResp `json:"-"`
  4468  	larkcore.CodeError
  4469  	Data *GetDocumentBlockRespData `json:"data"` // 业务数据
  4470  }
  4471  
  4472  func (resp *GetDocumentBlockResp) Success() bool {
  4473  	return resp.Code == 0
  4474  }
  4475  
  4476  type ListDocumentBlockReqBuilder struct {
  4477  	apiReq *larkcore.ApiReq
  4478  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  4479  }
  4480  
  4481  func NewListDocumentBlockReqBuilder() *ListDocumentBlockReqBuilder {
  4482  	builder := &ListDocumentBlockReqBuilder{}
  4483  	builder.apiReq = &larkcore.ApiReq{
  4484  		PathParams:  larkcore.PathParams{},
  4485  		QueryParams: larkcore.QueryParams{},
  4486  	}
  4487  	return builder
  4488  }
  4489  
  4490  // 最大返回多少记录,当使用迭代器访问时才有效
  4491  func (builder *ListDocumentBlockReqBuilder) Limit(limit int) *ListDocumentBlockReqBuilder {
  4492  	builder.limit = limit
  4493  	return builder
  4494  }
  4495  
  4496  // 文档的唯一标识
  4497  //
  4498  // 示例值:doxcnePuYufKa49ISjhD8Ih0ikh
  4499  func (builder *ListDocumentBlockReqBuilder) DocumentId(documentId string) *ListDocumentBlockReqBuilder {
  4500  	builder.apiReq.PathParams.Set("document_id", fmt.Sprint(documentId))
  4501  	return builder
  4502  }
  4503  
  4504  // 分页大小
  4505  //
  4506  // 示例值:500
  4507  func (builder *ListDocumentBlockReqBuilder) PageSize(pageSize int) *ListDocumentBlockReqBuilder {
  4508  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  4509  	return builder
  4510  }
  4511  
  4512  // 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  4513  //
  4514  // 示例值:aw7DoMKBFMOGwqHCrcO8w6jCmMOvw6ILeADCvsKNw57Di8O5XGV3LG4_w5HCqhFxSnDCrCzCn0BgZcOYUg85EMOYcEAcwqYOw4ojw5QFwofCu8KoIMO3K8Ktw4IuNMOBBHNYw4bCgCV3U1zDu8K-J8KSR8Kgw7Y0fsKZdsKvW3d9w53DnkHDrcO5bDkYwrvDisOEPcOtVFJ-I03CnsOILMOoAmLDknd6dsKqG1bClAjDuS3CvcOTwo7Dg8OrwovDsRdqIcKxw5HDohTDtXN9w5rCkWo
  4515  func (builder *ListDocumentBlockReqBuilder) PageToken(pageToken string) *ListDocumentBlockReqBuilder {
  4516  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  4517  	return builder
  4518  }
  4519  
  4520  // 查询的文档版本,-1表示文档最新版本。若此时查询的版本为文档最新版本,则需要持有文档的阅读权限;若此时查询的版本为文档的历史版本,则需要持有文档的编辑权限。
  4521  //
  4522  // 示例值:-1
  4523  func (builder *ListDocumentBlockReqBuilder) DocumentRevisionId(documentRevisionId int) *ListDocumentBlockReqBuilder {
  4524  	builder.apiReq.QueryParams.Set("document_revision_id", fmt.Sprint(documentRevisionId))
  4525  	return builder
  4526  }
  4527  
  4528  // 此次调用中使用的用户ID的类型
  4529  //
  4530  // 示例值:
  4531  func (builder *ListDocumentBlockReqBuilder) UserIdType(userIdType string) *ListDocumentBlockReqBuilder {
  4532  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  4533  	return builder
  4534  }
  4535  
  4536  func (builder *ListDocumentBlockReqBuilder) Build() *ListDocumentBlockReq {
  4537  	req := &ListDocumentBlockReq{}
  4538  	req.apiReq = &larkcore.ApiReq{}
  4539  	req.Limit = builder.limit
  4540  	req.apiReq.PathParams = builder.apiReq.PathParams
  4541  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  4542  	return req
  4543  }
  4544  
  4545  type ListDocumentBlockReq struct {
  4546  	apiReq *larkcore.ApiReq
  4547  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  4548  
  4549  }
  4550  
  4551  type ListDocumentBlockRespData struct {
  4552  	Items     []*Block `json:"items,omitempty"`      // 文档的 Block 信息
  4553  	PageToken *string  `json:"page_token,omitempty"` // 下一个分页的分页标记
  4554  	HasMore   *bool    `json:"has_more,omitempty"`   // 是否还有下一个分页
  4555  }
  4556  
  4557  type ListDocumentBlockResp struct {
  4558  	*larkcore.ApiResp `json:"-"`
  4559  	larkcore.CodeError
  4560  	Data *ListDocumentBlockRespData `json:"data"` // 业务数据
  4561  }
  4562  
  4563  func (resp *ListDocumentBlockResp) Success() bool {
  4564  	return resp.Code == 0
  4565  }
  4566  
  4567  type PatchDocumentBlockReqBuilder struct {
  4568  	apiReq             *larkcore.ApiReq
  4569  	updateBlockRequest *UpdateBlockRequest
  4570  }
  4571  
  4572  func NewPatchDocumentBlockReqBuilder() *PatchDocumentBlockReqBuilder {
  4573  	builder := &PatchDocumentBlockReqBuilder{}
  4574  	builder.apiReq = &larkcore.ApiReq{
  4575  		PathParams:  larkcore.PathParams{},
  4576  		QueryParams: larkcore.QueryParams{},
  4577  	}
  4578  	return builder
  4579  }
  4580  
  4581  // 文档的唯一标识
  4582  //
  4583  // 示例值:doxcnePuYufKa49ISjhD8Ih0ikh
  4584  func (builder *PatchDocumentBlockReqBuilder) DocumentId(documentId string) *PatchDocumentBlockReqBuilder {
  4585  	builder.apiReq.PathParams.Set("document_id", fmt.Sprint(documentId))
  4586  	return builder
  4587  }
  4588  
  4589  // Block 的唯一标识
  4590  //
  4591  // 示例值:doxcnO6UW6wAw2qIcYf4hZpFIth
  4592  func (builder *PatchDocumentBlockReqBuilder) BlockId(blockId string) *PatchDocumentBlockReqBuilder {
  4593  	builder.apiReq.PathParams.Set("block_id", fmt.Sprint(blockId))
  4594  	return builder
  4595  }
  4596  
  4597  // 操作的文档版本,-1表示文档最新版本。若此时操作的版本为文档最新版本,则需要持有文档的阅读权限;若此时操作的版本为文档的历史版本,则需要持有文档的编辑权限。
  4598  //
  4599  // 示例值:-1
  4600  func (builder *PatchDocumentBlockReqBuilder) DocumentRevisionId(documentRevisionId int) *PatchDocumentBlockReqBuilder {
  4601  	builder.apiReq.QueryParams.Set("document_revision_id", fmt.Sprint(documentRevisionId))
  4602  	return builder
  4603  }
  4604  
  4605  // 操作的唯一标识,与接口返回值的 client_token 相对应,用于幂等的进行更新操作。此值为空表示将发起一次新的请求,此值非空表示幂等的进行更新操作。
  4606  //
  4607  // 示例值:0e2633a3-aa1a-4171-af9e-0768ff863566
  4608  func (builder *PatchDocumentBlockReqBuilder) ClientToken(clientToken string) *PatchDocumentBlockReqBuilder {
  4609  	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
  4610  	return builder
  4611  }
  4612  
  4613  // 此次调用中使用的用户ID的类型
  4614  //
  4615  // 示例值:
  4616  func (builder *PatchDocumentBlockReqBuilder) UserIdType(userIdType string) *PatchDocumentBlockReqBuilder {
  4617  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  4618  	return builder
  4619  }
  4620  
  4621  // 更新指定的块。
  4622  func (builder *PatchDocumentBlockReqBuilder) UpdateBlockRequest(updateBlockRequest *UpdateBlockRequest) *PatchDocumentBlockReqBuilder {
  4623  	builder.updateBlockRequest = updateBlockRequest
  4624  	return builder
  4625  }
  4626  
  4627  func (builder *PatchDocumentBlockReqBuilder) Build() *PatchDocumentBlockReq {
  4628  	req := &PatchDocumentBlockReq{}
  4629  	req.apiReq = &larkcore.ApiReq{}
  4630  	req.apiReq.PathParams = builder.apiReq.PathParams
  4631  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  4632  	req.apiReq.Body = builder.updateBlockRequest
  4633  	return req
  4634  }
  4635  
  4636  type PatchDocumentBlockReq struct {
  4637  	apiReq             *larkcore.ApiReq
  4638  	UpdateBlockRequest *UpdateBlockRequest `body:""`
  4639  }
  4640  
  4641  type PatchDocumentBlockRespData struct {
  4642  	Block              *Block  `json:"block,omitempty"`                // 更新后的 block 信息
  4643  	DocumentRevisionId *int    `json:"document_revision_id,omitempty"` // 当前更新成功后文档的版本号
  4644  	ClientToken        *string `json:"client_token,omitempty"`         // 操作的唯一标识,更新请求中使用此值表示幂等的进行此次更新
  4645  }
  4646  
  4647  type PatchDocumentBlockResp struct {
  4648  	*larkcore.ApiResp `json:"-"`
  4649  	larkcore.CodeError
  4650  	Data *PatchDocumentBlockRespData `json:"data"` // 业务数据
  4651  }
  4652  
  4653  func (resp *PatchDocumentBlockResp) Success() bool {
  4654  	return resp.Code == 0
  4655  }
  4656  
  4657  type BatchDeleteDocumentBlockChildrenReqBodyBuilder struct {
  4658  	startIndex     int // 删除的起始索引(操作区间左闭右开)
  4659  	startIndexFlag bool
  4660  	endIndex       int // 删除的末尾索引(操作区间左闭右开)
  4661  	endIndexFlag   bool
  4662  }
  4663  
  4664  func NewBatchDeleteDocumentBlockChildrenReqBodyBuilder() *BatchDeleteDocumentBlockChildrenReqBodyBuilder {
  4665  	builder := &BatchDeleteDocumentBlockChildrenReqBodyBuilder{}
  4666  	return builder
  4667  }
  4668  
  4669  // 删除的起始索引(操作区间左闭右开)
  4670  //
  4671  //示例值:0
  4672  func (builder *BatchDeleteDocumentBlockChildrenReqBodyBuilder) StartIndex(startIndex int) *BatchDeleteDocumentBlockChildrenReqBodyBuilder {
  4673  	builder.startIndex = startIndex
  4674  	builder.startIndexFlag = true
  4675  	return builder
  4676  }
  4677  
  4678  // 删除的末尾索引(操作区间左闭右开)
  4679  //
  4680  //示例值:1
  4681  func (builder *BatchDeleteDocumentBlockChildrenReqBodyBuilder) EndIndex(endIndex int) *BatchDeleteDocumentBlockChildrenReqBodyBuilder {
  4682  	builder.endIndex = endIndex
  4683  	builder.endIndexFlag = true
  4684  	return builder
  4685  }
  4686  
  4687  func (builder *BatchDeleteDocumentBlockChildrenReqBodyBuilder) Build() *BatchDeleteDocumentBlockChildrenReqBody {
  4688  	req := &BatchDeleteDocumentBlockChildrenReqBody{}
  4689  	if builder.startIndexFlag {
  4690  		req.StartIndex = &builder.startIndex
  4691  	}
  4692  	if builder.endIndexFlag {
  4693  		req.EndIndex = &builder.endIndex
  4694  	}
  4695  	return req
  4696  }
  4697  
  4698  type BatchDeleteDocumentBlockChildrenPathReqBodyBuilder struct {
  4699  	startIndex     int // 删除的起始索引(操作区间左闭右开)
  4700  	startIndexFlag bool
  4701  	endIndex       int // 删除的末尾索引(操作区间左闭右开)
  4702  	endIndexFlag   bool
  4703  }
  4704  
  4705  func NewBatchDeleteDocumentBlockChildrenPathReqBodyBuilder() *BatchDeleteDocumentBlockChildrenPathReqBodyBuilder {
  4706  	builder := &BatchDeleteDocumentBlockChildrenPathReqBodyBuilder{}
  4707  	return builder
  4708  }
  4709  
  4710  // 删除的起始索引(操作区间左闭右开)
  4711  //
  4712  // 示例值:0
  4713  func (builder *BatchDeleteDocumentBlockChildrenPathReqBodyBuilder) StartIndex(startIndex int) *BatchDeleteDocumentBlockChildrenPathReqBodyBuilder {
  4714  	builder.startIndex = startIndex
  4715  	builder.startIndexFlag = true
  4716  	return builder
  4717  }
  4718  
  4719  // 删除的末尾索引(操作区间左闭右开)
  4720  //
  4721  // 示例值:1
  4722  func (builder *BatchDeleteDocumentBlockChildrenPathReqBodyBuilder) EndIndex(endIndex int) *BatchDeleteDocumentBlockChildrenPathReqBodyBuilder {
  4723  	builder.endIndex = endIndex
  4724  	builder.endIndexFlag = true
  4725  	return builder
  4726  }
  4727  
  4728  func (builder *BatchDeleteDocumentBlockChildrenPathReqBodyBuilder) Build() (*BatchDeleteDocumentBlockChildrenReqBody, error) {
  4729  	req := &BatchDeleteDocumentBlockChildrenReqBody{}
  4730  	if builder.startIndexFlag {
  4731  		req.StartIndex = &builder.startIndex
  4732  	}
  4733  	if builder.endIndexFlag {
  4734  		req.EndIndex = &builder.endIndex
  4735  	}
  4736  	return req, nil
  4737  }
  4738  
  4739  type BatchDeleteDocumentBlockChildrenReqBuilder struct {
  4740  	apiReq *larkcore.ApiReq
  4741  	body   *BatchDeleteDocumentBlockChildrenReqBody
  4742  }
  4743  
  4744  func NewBatchDeleteDocumentBlockChildrenReqBuilder() *BatchDeleteDocumentBlockChildrenReqBuilder {
  4745  	builder := &BatchDeleteDocumentBlockChildrenReqBuilder{}
  4746  	builder.apiReq = &larkcore.ApiReq{
  4747  		PathParams:  larkcore.PathParams{},
  4748  		QueryParams: larkcore.QueryParams{},
  4749  	}
  4750  	return builder
  4751  }
  4752  
  4753  // 文档的唯一标识
  4754  //
  4755  // 示例值:doxcnePuYufKa49ISjhD8Ih0ikh
  4756  func (builder *BatchDeleteDocumentBlockChildrenReqBuilder) DocumentId(documentId string) *BatchDeleteDocumentBlockChildrenReqBuilder {
  4757  	builder.apiReq.PathParams.Set("document_id", fmt.Sprint(documentId))
  4758  	return builder
  4759  }
  4760  
  4761  // 父 Block 的唯一标识
  4762  //
  4763  // 示例值:doxcnO6UW6wAw2qIcYf4hZpFIth
  4764  func (builder *BatchDeleteDocumentBlockChildrenReqBuilder) BlockId(blockId string) *BatchDeleteDocumentBlockChildrenReqBuilder {
  4765  	builder.apiReq.PathParams.Set("block_id", fmt.Sprint(blockId))
  4766  	return builder
  4767  }
  4768  
  4769  // 操作的文档版本,-1表示文档最新版本。若此时操作的版本为文档最新版本,则需要持有文档的阅读权限;若此时操作的版本为文档的历史版本,则需要持有文档的编辑权限。
  4770  //
  4771  // 示例值:-1
  4772  func (builder *BatchDeleteDocumentBlockChildrenReqBuilder) DocumentRevisionId(documentRevisionId int) *BatchDeleteDocumentBlockChildrenReqBuilder {
  4773  	builder.apiReq.QueryParams.Set("document_revision_id", fmt.Sprint(documentRevisionId))
  4774  	return builder
  4775  }
  4776  
  4777  // 操作的唯一标识,与接口返回值的 client_token 相对应,用于幂等的进行更新操作。此值为空表示将发起一次新的请求,此值非空表示幂等的进行更新操作。
  4778  //
  4779  // 示例值:fe599b60-450f-46ff-b2ef-9f6675625b97
  4780  func (builder *BatchDeleteDocumentBlockChildrenReqBuilder) ClientToken(clientToken string) *BatchDeleteDocumentBlockChildrenReqBuilder {
  4781  	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
  4782  	return builder
  4783  }
  4784  
  4785  // 指定需要操作的块,删除其指定范围的子块。如果操作成功,接口将返回应用删除操作后的文档版本号。
  4786  func (builder *BatchDeleteDocumentBlockChildrenReqBuilder) Body(body *BatchDeleteDocumentBlockChildrenReqBody) *BatchDeleteDocumentBlockChildrenReqBuilder {
  4787  	builder.body = body
  4788  	return builder
  4789  }
  4790  
  4791  func (builder *BatchDeleteDocumentBlockChildrenReqBuilder) Build() *BatchDeleteDocumentBlockChildrenReq {
  4792  	req := &BatchDeleteDocumentBlockChildrenReq{}
  4793  	req.apiReq = &larkcore.ApiReq{}
  4794  	req.apiReq.PathParams = builder.apiReq.PathParams
  4795  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  4796  	req.apiReq.Body = builder.body
  4797  	return req
  4798  }
  4799  
  4800  type BatchDeleteDocumentBlockChildrenReqBody struct {
  4801  	StartIndex *int `json:"start_index,omitempty"` // 删除的起始索引(操作区间左闭右开)
  4802  	EndIndex   *int `json:"end_index,omitempty"`   // 删除的末尾索引(操作区间左闭右开)
  4803  }
  4804  
  4805  type BatchDeleteDocumentBlockChildrenReq struct {
  4806  	apiReq *larkcore.ApiReq
  4807  	Body   *BatchDeleteDocumentBlockChildrenReqBody `body:""`
  4808  }
  4809  
  4810  type BatchDeleteDocumentBlockChildrenRespData struct {
  4811  	DocumentRevisionId *int    `json:"document_revision_id,omitempty"` // 当前删除操作成功后文档的版本号
  4812  	ClientToken        *string `json:"client_token,omitempty"`         // 操作的唯一标识,更新请求中使用此值表示幂等的进行此次更新
  4813  }
  4814  
  4815  type BatchDeleteDocumentBlockChildrenResp struct {
  4816  	*larkcore.ApiResp `json:"-"`
  4817  	larkcore.CodeError
  4818  	Data *BatchDeleteDocumentBlockChildrenRespData `json:"data"` // 业务数据
  4819  }
  4820  
  4821  func (resp *BatchDeleteDocumentBlockChildrenResp) Success() bool {
  4822  	return resp.Code == 0
  4823  }
  4824  
  4825  type CreateDocumentBlockChildrenReqBodyBuilder struct {
  4826  	children     []*Block // 添加的孩子列表。
  4827  	childrenFlag bool
  4828  	index        int // 当前 block 在 children 中的插入位置,起始值为 0,最大值为原 children 长度
  4829  	indexFlag    bool
  4830  }
  4831  
  4832  func NewCreateDocumentBlockChildrenReqBodyBuilder() *CreateDocumentBlockChildrenReqBodyBuilder {
  4833  	builder := &CreateDocumentBlockChildrenReqBodyBuilder{}
  4834  	return builder
  4835  }
  4836  
  4837  // 添加的孩子列表。
  4838  //
  4839  //示例值:
  4840  func (builder *CreateDocumentBlockChildrenReqBodyBuilder) Children(children []*Block) *CreateDocumentBlockChildrenReqBodyBuilder {
  4841  	builder.children = children
  4842  	builder.childrenFlag = true
  4843  	return builder
  4844  }
  4845  
  4846  // 当前 block 在 children 中的插入位置,起始值为 0,最大值为原 children 长度
  4847  //
  4848  //示例值:0
  4849  func (builder *CreateDocumentBlockChildrenReqBodyBuilder) Index(index int) *CreateDocumentBlockChildrenReqBodyBuilder {
  4850  	builder.index = index
  4851  	builder.indexFlag = true
  4852  	return builder
  4853  }
  4854  
  4855  func (builder *CreateDocumentBlockChildrenReqBodyBuilder) Build() *CreateDocumentBlockChildrenReqBody {
  4856  	req := &CreateDocumentBlockChildrenReqBody{}
  4857  	if builder.childrenFlag {
  4858  		req.Children = builder.children
  4859  	}
  4860  	if builder.indexFlag {
  4861  		req.Index = &builder.index
  4862  	}
  4863  	return req
  4864  }
  4865  
  4866  type CreateDocumentBlockChildrenPathReqBodyBuilder struct {
  4867  	children     []*Block // 添加的孩子列表。
  4868  	childrenFlag bool
  4869  	index        int // 当前 block 在 children 中的插入位置,起始值为 0,最大值为原 children 长度
  4870  	indexFlag    bool
  4871  }
  4872  
  4873  func NewCreateDocumentBlockChildrenPathReqBodyBuilder() *CreateDocumentBlockChildrenPathReqBodyBuilder {
  4874  	builder := &CreateDocumentBlockChildrenPathReqBodyBuilder{}
  4875  	return builder
  4876  }
  4877  
  4878  // 添加的孩子列表。
  4879  //
  4880  // 示例值:
  4881  func (builder *CreateDocumentBlockChildrenPathReqBodyBuilder) Children(children []*Block) *CreateDocumentBlockChildrenPathReqBodyBuilder {
  4882  	builder.children = children
  4883  	builder.childrenFlag = true
  4884  	return builder
  4885  }
  4886  
  4887  // 当前 block 在 children 中的插入位置,起始值为 0,最大值为原 children 长度
  4888  //
  4889  // 示例值:0
  4890  func (builder *CreateDocumentBlockChildrenPathReqBodyBuilder) Index(index int) *CreateDocumentBlockChildrenPathReqBodyBuilder {
  4891  	builder.index = index
  4892  	builder.indexFlag = true
  4893  	return builder
  4894  }
  4895  
  4896  func (builder *CreateDocumentBlockChildrenPathReqBodyBuilder) Build() (*CreateDocumentBlockChildrenReqBody, error) {
  4897  	req := &CreateDocumentBlockChildrenReqBody{}
  4898  	if builder.childrenFlag {
  4899  		req.Children = builder.children
  4900  	}
  4901  	if builder.indexFlag {
  4902  		req.Index = &builder.index
  4903  	}
  4904  	return req, nil
  4905  }
  4906  
  4907  type CreateDocumentBlockChildrenReqBuilder struct {
  4908  	apiReq *larkcore.ApiReq
  4909  	body   *CreateDocumentBlockChildrenReqBody
  4910  }
  4911  
  4912  func NewCreateDocumentBlockChildrenReqBuilder() *CreateDocumentBlockChildrenReqBuilder {
  4913  	builder := &CreateDocumentBlockChildrenReqBuilder{}
  4914  	builder.apiReq = &larkcore.ApiReq{
  4915  		PathParams:  larkcore.PathParams{},
  4916  		QueryParams: larkcore.QueryParams{},
  4917  	}
  4918  	return builder
  4919  }
  4920  
  4921  // 文档的唯一标识
  4922  //
  4923  // 示例值:doxcnePuYufKa49ISjhD8Ih0ikh
  4924  func (builder *CreateDocumentBlockChildrenReqBuilder) DocumentId(documentId string) *CreateDocumentBlockChildrenReqBuilder {
  4925  	builder.apiReq.PathParams.Set("document_id", fmt.Sprint(documentId))
  4926  	return builder
  4927  }
  4928  
  4929  // Block 的唯一标识
  4930  //
  4931  // 示例值:doxcnO6UW6wAw2qIcYf4hZpFIth
  4932  func (builder *CreateDocumentBlockChildrenReqBuilder) BlockId(blockId string) *CreateDocumentBlockChildrenReqBuilder {
  4933  	builder.apiReq.PathParams.Set("block_id", fmt.Sprint(blockId))
  4934  	return builder
  4935  }
  4936  
  4937  // 操作的文档版本,-1表示文档最新版本。若此时操作的版本为文档最新版本,则需要持有文档的阅读权限;若此时操作的版本为文档的历史版本,则需要持有文档的编辑权限。
  4938  //
  4939  // 示例值:-1
  4940  func (builder *CreateDocumentBlockChildrenReqBuilder) DocumentRevisionId(documentRevisionId int) *CreateDocumentBlockChildrenReqBuilder {
  4941  	builder.apiReq.QueryParams.Set("document_revision_id", fmt.Sprint(documentRevisionId))
  4942  	return builder
  4943  }
  4944  
  4945  // 操作的唯一标识,与接口返回值的 client_token 相对应,用于幂等的进行更新操作。此值为空表示将发起一次新的请求,此值非空表示幂等的进行更新操作。
  4946  //
  4947  // 示例值:fe599b60-450f-46ff-b2ef-9f6675625b97
  4948  func (builder *CreateDocumentBlockChildrenReqBuilder) ClientToken(clientToken string) *CreateDocumentBlockChildrenReqBuilder {
  4949  	builder.apiReq.QueryParams.Set("client_token", fmt.Sprint(clientToken))
  4950  	return builder
  4951  }
  4952  
  4953  // 此次调用中使用的用户ID的类型
  4954  //
  4955  // 示例值:
  4956  func (builder *CreateDocumentBlockChildrenReqBuilder) UserIdType(userIdType string) *CreateDocumentBlockChildrenReqBuilder {
  4957  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  4958  	return builder
  4959  }
  4960  
  4961  // 指定需要操作的块,为其创建一批子块,并插入到指定位置。如果操作成功,接口将返回新创建子块的富文本内容。
  4962  func (builder *CreateDocumentBlockChildrenReqBuilder) Body(body *CreateDocumentBlockChildrenReqBody) *CreateDocumentBlockChildrenReqBuilder {
  4963  	builder.body = body
  4964  	return builder
  4965  }
  4966  
  4967  func (builder *CreateDocumentBlockChildrenReqBuilder) Build() *CreateDocumentBlockChildrenReq {
  4968  	req := &CreateDocumentBlockChildrenReq{}
  4969  	req.apiReq = &larkcore.ApiReq{}
  4970  	req.apiReq.PathParams = builder.apiReq.PathParams
  4971  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  4972  	req.apiReq.Body = builder.body
  4973  	return req
  4974  }
  4975  
  4976  type CreateDocumentBlockChildrenReqBody struct {
  4977  	Children []*Block `json:"children,omitempty"` // 添加的孩子列表。
  4978  	Index    *int     `json:"index,omitempty"`    // 当前 block 在 children 中的插入位置,起始值为 0,最大值为原 children 长度
  4979  }
  4980  
  4981  type CreateDocumentBlockChildrenReq struct {
  4982  	apiReq *larkcore.ApiReq
  4983  	Body   *CreateDocumentBlockChildrenReqBody `body:""`
  4984  }
  4985  
  4986  type CreateDocumentBlockChildrenRespData struct {
  4987  	Children           []*Block `json:"children,omitempty"`             // 所添加的孩子的 Block 信息
  4988  	DocumentRevisionId *int     `json:"document_revision_id,omitempty"` // 当前 block children 创建成功后文档的版本号
  4989  	ClientToken        *string  `json:"client_token,omitempty"`         // 操作的唯一标识,更新请求中使用此值表示幂等的进行此次更新
  4990  }
  4991  
  4992  type CreateDocumentBlockChildrenResp struct {
  4993  	*larkcore.ApiResp `json:"-"`
  4994  	larkcore.CodeError
  4995  	Data *CreateDocumentBlockChildrenRespData `json:"data"` // 业务数据
  4996  }
  4997  
  4998  func (resp *CreateDocumentBlockChildrenResp) Success() bool {
  4999  	return resp.Code == 0
  5000  }
  5001  
  5002  type GetDocumentBlockChildrenReqBuilder struct {
  5003  	apiReq *larkcore.ApiReq
  5004  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  5005  }
  5006  
  5007  func NewGetDocumentBlockChildrenReqBuilder() *GetDocumentBlockChildrenReqBuilder {
  5008  	builder := &GetDocumentBlockChildrenReqBuilder{}
  5009  	builder.apiReq = &larkcore.ApiReq{
  5010  		PathParams:  larkcore.PathParams{},
  5011  		QueryParams: larkcore.QueryParams{},
  5012  	}
  5013  	return builder
  5014  }
  5015  
  5016  // 最大返回多少记录,当使用迭代器访问时才有效
  5017  func (builder *GetDocumentBlockChildrenReqBuilder) Limit(limit int) *GetDocumentBlockChildrenReqBuilder {
  5018  	builder.limit = limit
  5019  	return builder
  5020  }
  5021  
  5022  // 文档的唯一标识
  5023  //
  5024  // 示例值:doxcnePuYufKa49ISjhD8Ih0ikh
  5025  func (builder *GetDocumentBlockChildrenReqBuilder) DocumentId(documentId string) *GetDocumentBlockChildrenReqBuilder {
  5026  	builder.apiReq.PathParams.Set("document_id", fmt.Sprint(documentId))
  5027  	return builder
  5028  }
  5029  
  5030  // Block 的唯一标识
  5031  //
  5032  // 示例值:doxcnO6UW6wAw2qIcYf4hZpFIth
  5033  func (builder *GetDocumentBlockChildrenReqBuilder) BlockId(blockId string) *GetDocumentBlockChildrenReqBuilder {
  5034  	builder.apiReq.PathParams.Set("block_id", fmt.Sprint(blockId))
  5035  	return builder
  5036  }
  5037  
  5038  // 操作的文档版本,-1表示文档最新版本。若此时操作的版本为文档最新版本,则需要持有文档的阅读权限;若此时操作的版本为文档的历史版本,则需要持有文档的编辑权限。
  5039  //
  5040  // 示例值:-1
  5041  func (builder *GetDocumentBlockChildrenReqBuilder) DocumentRevisionId(documentRevisionId int) *GetDocumentBlockChildrenReqBuilder {
  5042  	builder.apiReq.QueryParams.Set("document_revision_id", fmt.Sprint(documentRevisionId))
  5043  	return builder
  5044  }
  5045  
  5046  // 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  5047  //
  5048  // 示例值:aw7DoMKBFMOGwqHCrcO8w6jCmMOvw6ILeADCvsKNw57Di8O5XGV3LG4_w5HCqhFxSnDCrCzCn0BgZcOYUg85EMOYcEAcwqYOw4ojw5QFwofCu8KoIMO3K8Ktw4IuNMOBBHNYw4bCgCV3U1zDu8K-J8KSR8Kgw7Y0fsKZdsKvW3d9w53DnkHDrcO5bDkYwrvDisOEPcOtVFJ-I03CnsOILMOoAmLDknd6dsKqG1bClAjDuS3CvcOTwo7Dg8OrwovDsRdqIcKxw5HDohTDtXN9w5rCkWo
  5049  func (builder *GetDocumentBlockChildrenReqBuilder) PageToken(pageToken string) *GetDocumentBlockChildrenReqBuilder {
  5050  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  5051  	return builder
  5052  }
  5053  
  5054  // 分页大小
  5055  //
  5056  // 示例值:500
  5057  func (builder *GetDocumentBlockChildrenReqBuilder) PageSize(pageSize int) *GetDocumentBlockChildrenReqBuilder {
  5058  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  5059  	return builder
  5060  }
  5061  
  5062  // 此次调用中使用的用户ID的类型
  5063  //
  5064  // 示例值:
  5065  func (builder *GetDocumentBlockChildrenReqBuilder) UserIdType(userIdType string) *GetDocumentBlockChildrenReqBuilder {
  5066  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  5067  	return builder
  5068  }
  5069  
  5070  func (builder *GetDocumentBlockChildrenReqBuilder) Build() *GetDocumentBlockChildrenReq {
  5071  	req := &GetDocumentBlockChildrenReq{}
  5072  	req.apiReq = &larkcore.ApiReq{}
  5073  	req.Limit = builder.limit
  5074  	req.apiReq.PathParams = builder.apiReq.PathParams
  5075  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  5076  	return req
  5077  }
  5078  
  5079  type GetDocumentBlockChildrenReq struct {
  5080  	apiReq *larkcore.ApiReq
  5081  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  5082  
  5083  }
  5084  
  5085  type GetDocumentBlockChildrenRespData struct {
  5086  	Items     []*Block `json:"items,omitempty"`      // block 的 children 列表
  5087  	PageToken *string  `json:"page_token,omitempty"` // 下一个分页的分页标记
  5088  	HasMore   *bool    `json:"has_more,omitempty"`   // 是否还有下一个分页
  5089  }
  5090  
  5091  type GetDocumentBlockChildrenResp struct {
  5092  	*larkcore.ApiResp `json:"-"`
  5093  	larkcore.CodeError
  5094  	Data *GetDocumentBlockChildrenRespData `json:"data"` // 业务数据
  5095  }
  5096  
  5097  func (resp *GetDocumentBlockChildrenResp) Success() bool {
  5098  	return resp.Code == 0
  5099  }
  5100  
  5101  type ListDocumentBlockIterator struct {
  5102  	nextPageToken *string
  5103  	items         []*Block
  5104  	index         int
  5105  	limit         int
  5106  	ctx           context.Context
  5107  	req           *ListDocumentBlockReq
  5108  	listFunc      func(ctx context.Context, req *ListDocumentBlockReq, options ...larkcore.RequestOptionFunc) (*ListDocumentBlockResp, error)
  5109  	options       []larkcore.RequestOptionFunc
  5110  	curlNum       int
  5111  }
  5112  
  5113  func (iterator *ListDocumentBlockIterator) Next() (bool, *Block, error) {
  5114  	// 达到最大量,则返回
  5115  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  5116  		return false, nil, nil
  5117  	}
  5118  
  5119  	// 为0则拉取数据
  5120  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  5121  		if iterator.index != 0 && iterator.nextPageToken == nil {
  5122  			return false, nil, nil
  5123  		}
  5124  		if iterator.nextPageToken != nil {
  5125  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  5126  		}
  5127  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  5128  		if err != nil {
  5129  			return false, nil, err
  5130  		}
  5131  
  5132  		if resp.Code != 0 {
  5133  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  5134  		}
  5135  
  5136  		if len(resp.Data.Items) == 0 {
  5137  			return false, nil, nil
  5138  		}
  5139  
  5140  		iterator.nextPageToken = resp.Data.PageToken
  5141  		iterator.items = resp.Data.Items
  5142  		iterator.index = 0
  5143  	}
  5144  
  5145  	block := iterator.items[iterator.index]
  5146  	iterator.index++
  5147  	iterator.curlNum++
  5148  	return true, block, nil
  5149  }
  5150  
  5151  func (iterator *ListDocumentBlockIterator) NextPageToken() *string {
  5152  	return iterator.nextPageToken
  5153  }
  5154  
  5155  type GetDocumentBlockChildrenIterator struct {
  5156  	nextPageToken *string
  5157  	items         []*Block
  5158  	index         int
  5159  	limit         int
  5160  	ctx           context.Context
  5161  	req           *GetDocumentBlockChildrenReq
  5162  	listFunc      func(ctx context.Context, req *GetDocumentBlockChildrenReq, options ...larkcore.RequestOptionFunc) (*GetDocumentBlockChildrenResp, error)
  5163  	options       []larkcore.RequestOptionFunc
  5164  	curlNum       int
  5165  }
  5166  
  5167  func (iterator *GetDocumentBlockChildrenIterator) Next() (bool, *Block, error) {
  5168  	// 达到最大量,则返回
  5169  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  5170  		return false, nil, nil
  5171  	}
  5172  
  5173  	// 为0则拉取数据
  5174  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  5175  		if iterator.index != 0 && iterator.nextPageToken == nil {
  5176  			return false, nil, nil
  5177  		}
  5178  		if iterator.nextPageToken != nil {
  5179  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  5180  		}
  5181  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  5182  		if err != nil {
  5183  			return false, nil, err
  5184  		}
  5185  
  5186  		if resp.Code != 0 {
  5187  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  5188  		}
  5189  
  5190  		if len(resp.Data.Items) == 0 {
  5191  			return false, nil, nil
  5192  		}
  5193  
  5194  		iterator.nextPageToken = resp.Data.PageToken
  5195  		iterator.items = resp.Data.Items
  5196  		iterator.index = 0
  5197  	}
  5198  
  5199  	block := iterator.items[iterator.index]
  5200  	iterator.index++
  5201  	iterator.curlNum++
  5202  	return true, block, nil
  5203  }
  5204  
  5205  func (iterator *GetDocumentBlockChildrenIterator) NextPageToken() *string {
  5206  	return iterator.nextPageToken
  5207  }