gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/search/v2/model.go (about) 1 // Package search 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 larksearch 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 StateOnline = 0 // 已上线 27 StateOffline = 1 // 未上线 28 29 ) 30 31 const ( 32 ViewFULL = 0 // 全量数据 33 ViewBASIC = 1 // 摘要数据 34 35 ) 36 37 const ( 38 StatePatchDataSourceOnline = 0 // 已上线 39 StatePatchDataSourceOffline = 1 // 未上线 40 41 ) 42 43 type Acl struct { 44 Access *string `json:"access,omitempty"` // 权限类型,优先级:Deny > Allow。 45 Value *string `json:"value,omitempty"` // 设置的权限值,例如 userID ,依赖 type 描述。;;**注**:在 type 为 user 且 access 为 allow 时,可填 "everyone" 来表示该数据项对全员可见; 46 Type *string `json:"type,omitempty"` // 权限值类型 47 } 48 49 type AclBuilder struct { 50 access string // 权限类型,优先级:Deny > Allow。 51 accessFlag bool 52 value string // 设置的权限值,例如 userID ,依赖 type 描述。;;**注**:在 type 为 user 且 access 为 allow 时,可填 "everyone" 来表示该数据项对全员可见; 53 valueFlag bool 54 type_ string // 权限值类型 55 typeFlag bool 56 } 57 58 func NewAclBuilder() *AclBuilder { 59 builder := &AclBuilder{} 60 return builder 61 } 62 63 // 权限类型,优先级:Deny > Allow。 64 // 65 // 示例值:allow 66 func (builder *AclBuilder) Access(access string) *AclBuilder { 67 builder.access = access 68 builder.accessFlag = true 69 return builder 70 } 71 72 // 设置的权限值,例如 userID ,依赖 type 描述。;;**注**:在 type 为 user 且 access 为 allow 时,可填 "everyone" 来表示该数据项对全员可见; 73 // 74 // 示例值:d35e3c23 75 func (builder *AclBuilder) Value(value string) *AclBuilder { 76 builder.value = value 77 builder.valueFlag = true 78 return builder 79 } 80 81 // 权限值类型 82 // 83 // 示例值:user 84 func (builder *AclBuilder) Type(type_ string) *AclBuilder { 85 builder.type_ = type_ 86 builder.typeFlag = true 87 return builder 88 } 89 90 func (builder *AclBuilder) Build() *Acl { 91 req := &Acl{} 92 if builder.accessFlag { 93 req.Access = &builder.access 94 95 } 96 if builder.valueFlag { 97 req.Value = &builder.value 98 99 } 100 if builder.typeFlag { 101 req.Type = &builder.type_ 102 103 } 104 return req 105 } 106 107 type BatchItemResult struct { 108 ItemId *string `json:"item_id,omitempty"` // 数据项ID,对应一条索引数据的ID 109 IsSuccess *bool `json:"is_success,omitempty"` // 判断单条数据是否成功 110 Err *string `json:"err,omitempty"` // 如果单条数据失败,表示单条数据的错误信息;如果单条数据成功被索引,则err是空字符串 111 } 112 113 type BatchItemResultBuilder struct { 114 itemId string // 数据项ID,对应一条索引数据的ID 115 itemIdFlag bool 116 isSuccess bool // 判断单条数据是否成功 117 isSuccessFlag bool 118 err string // 如果单条数据失败,表示单条数据的错误信息;如果单条数据成功被索引,则err是空字符串 119 errFlag bool 120 } 121 122 func NewBatchItemResultBuilder() *BatchItemResultBuilder { 123 builder := &BatchItemResultBuilder{} 124 return builder 125 } 126 127 // 数据项ID,对应一条索引数据的ID 128 // 129 // 示例值: 130 func (builder *BatchItemResultBuilder) ItemId(itemId string) *BatchItemResultBuilder { 131 builder.itemId = itemId 132 builder.itemIdFlag = true 133 return builder 134 } 135 136 // 判断单条数据是否成功 137 // 138 // 示例值: 139 func (builder *BatchItemResultBuilder) IsSuccess(isSuccess bool) *BatchItemResultBuilder { 140 builder.isSuccess = isSuccess 141 builder.isSuccessFlag = true 142 return builder 143 } 144 145 // 如果单条数据失败,表示单条数据的错误信息;如果单条数据成功被索引,则err是空字符串 146 // 147 // 示例值: 148 func (builder *BatchItemResultBuilder) Err(err string) *BatchItemResultBuilder { 149 builder.err = err 150 builder.errFlag = true 151 return builder 152 } 153 154 func (builder *BatchItemResultBuilder) Build() *BatchItemResult { 155 req := &BatchItemResult{} 156 if builder.itemIdFlag { 157 req.ItemId = &builder.itemId 158 159 } 160 if builder.isSuccessFlag { 161 req.IsSuccess = &builder.isSuccess 162 163 } 164 if builder.errFlag { 165 req.Err = &builder.err 166 167 } 168 return req 169 } 170 171 type ConnectDataSource struct { 172 ServiceUrl *string `json:"service_url,omitempty"` // 要托管的服务API地址,例如https://open.feishu.cn/xxxx/xxxx 173 ProjectName *string `json:"project_name,omitempty"` // 项目地址,只能包含小写字母,如bytedance_test 174 DisplayName *string `json:"display_name,omitempty"` // datasource名称,会展示在飞书搜索分类按钮(searchTab)中,如:公司wiki 175 Description *string `json:"description,omitempty"` // 描述datasource 176 IconUrl *string `json:"icon_url,omitempty"` // 图标 177 ProjectDescription *string `json:"project_description,omitempty"` // 托管api的描述 178 ContactEmail *string `json:"contact_email,omitempty"` // 联系人邮箱,开发人员的邮箱,用于托管API的SLA(Service Level Agreement)问题沟通 179 TenantName *string `json:"tenant_name,omitempty"` // 创建api的组织名称,对企业开发者来说,建议使用企业名称 180 } 181 182 type ConnectDataSourceBuilder struct { 183 serviceUrl string // 要托管的服务API地址,例如https://open.feishu.cn/xxxx/xxxx 184 serviceUrlFlag bool 185 projectName string // 项目地址,只能包含小写字母,如bytedance_test 186 projectNameFlag bool 187 displayName string // datasource名称,会展示在飞书搜索分类按钮(searchTab)中,如:公司wiki 188 displayNameFlag bool 189 description string // 描述datasource 190 descriptionFlag bool 191 iconUrl string // 图标 192 iconUrlFlag bool 193 projectDescription string // 托管api的描述 194 projectDescriptionFlag bool 195 contactEmail string // 联系人邮箱,开发人员的邮箱,用于托管API的SLA(Service Level Agreement)问题沟通 196 contactEmailFlag bool 197 tenantName string // 创建api的组织名称,对企业开发者来说,建议使用企业名称 198 tenantNameFlag bool 199 } 200 201 func NewConnectDataSourceBuilder() *ConnectDataSourceBuilder { 202 builder := &ConnectDataSourceBuilder{} 203 return builder 204 } 205 206 // 要托管的服务API地址,例如https://open.feishu.cn/xxxx/xxxx 207 // 208 // 示例值: 209 func (builder *ConnectDataSourceBuilder) ServiceUrl(serviceUrl string) *ConnectDataSourceBuilder { 210 builder.serviceUrl = serviceUrl 211 builder.serviceUrlFlag = true 212 return builder 213 } 214 215 // 项目地址,只能包含小写字母,如bytedance_test 216 // 217 // 示例值: 218 func (builder *ConnectDataSourceBuilder) ProjectName(projectName string) *ConnectDataSourceBuilder { 219 builder.projectName = projectName 220 builder.projectNameFlag = true 221 return builder 222 } 223 224 // datasource名称,会展示在飞书搜索分类按钮(searchTab)中,如:公司wiki 225 // 226 // 示例值: 227 func (builder *ConnectDataSourceBuilder) DisplayName(displayName string) *ConnectDataSourceBuilder { 228 builder.displayName = displayName 229 builder.displayNameFlag = true 230 return builder 231 } 232 233 // 描述datasource 234 // 235 // 示例值: 236 func (builder *ConnectDataSourceBuilder) Description(description string) *ConnectDataSourceBuilder { 237 builder.description = description 238 builder.descriptionFlag = true 239 return builder 240 } 241 242 // 图标 243 // 244 // 示例值: 245 func (builder *ConnectDataSourceBuilder) IconUrl(iconUrl string) *ConnectDataSourceBuilder { 246 builder.iconUrl = iconUrl 247 builder.iconUrlFlag = true 248 return builder 249 } 250 251 // 托管api的描述 252 // 253 // 示例值: 254 func (builder *ConnectDataSourceBuilder) ProjectDescription(projectDescription string) *ConnectDataSourceBuilder { 255 builder.projectDescription = projectDescription 256 builder.projectDescriptionFlag = true 257 return builder 258 } 259 260 // 联系人邮箱,开发人员的邮箱,用于托管API的SLA(Service Level Agreement)问题沟通 261 // 262 // 示例值: 263 func (builder *ConnectDataSourceBuilder) ContactEmail(contactEmail string) *ConnectDataSourceBuilder { 264 builder.contactEmail = contactEmail 265 builder.contactEmailFlag = true 266 return builder 267 } 268 269 // 创建api的组织名称,对企业开发者来说,建议使用企业名称 270 // 271 // 示例值: 272 func (builder *ConnectDataSourceBuilder) TenantName(tenantName string) *ConnectDataSourceBuilder { 273 builder.tenantName = tenantName 274 builder.tenantNameFlag = true 275 return builder 276 } 277 278 func (builder *ConnectDataSourceBuilder) Build() *ConnectDataSource { 279 req := &ConnectDataSource{} 280 if builder.serviceUrlFlag { 281 req.ServiceUrl = &builder.serviceUrl 282 283 } 284 if builder.projectNameFlag { 285 req.ProjectName = &builder.projectName 286 287 } 288 if builder.displayNameFlag { 289 req.DisplayName = &builder.displayName 290 291 } 292 if builder.descriptionFlag { 293 req.Description = &builder.description 294 295 } 296 if builder.iconUrlFlag { 297 req.IconUrl = &builder.iconUrl 298 299 } 300 if builder.projectDescriptionFlag { 301 req.ProjectDescription = &builder.projectDescription 302 303 } 304 if builder.contactEmailFlag { 305 req.ContactEmail = &builder.contactEmail 306 307 } 308 if builder.tenantNameFlag { 309 req.TenantName = &builder.tenantName 310 311 } 312 return req 313 } 314 315 type DataSource struct { 316 Id *string `json:"id,omitempty"` // 数据源的唯一标识 317 Name *string `json:"name,omitempty"` // data_source的展示名称 318 State *int `json:"state,omitempty"` // 数据源状态,0-已上线,1-未上线 319 Description *string `json:"description,omitempty"` // 对于数据源的描述 320 CreateTime *string `json:"create_time,omitempty"` // 创建时间,使用Unix时间戳,单位为“秒” 321 UpdateTime *string `json:"update_time,omitempty"` // 更新时间,使用Unix时间戳,单位为“秒” 322 IsExceedQuota *bool `json:"is_exceed_quota,omitempty"` // 是否超限 323 IconUrl *string `json:"icon_url,omitempty"` // 数据源在 search tab 上的展示图标路径 324 Template *string `json:"template,omitempty"` // 数据源采用的展示模版名称 325 SearchableFields []string `json:"searchable_fields,omitempty"` // 描述哪些字段可以被搜索 326 I18nName *I18nMeta `json:"i18n_name,omitempty"` // 数据源的国际化展示名称 327 I18nDescription *I18nMeta `json:"i18n_description,omitempty"` // 数据源的国际化描述 328 SchemaId *string `json:"schema_id,omitempty"` // 数据源关联的 schema 标识 329 } 330 331 type DataSourceBuilder struct { 332 id string // 数据源的唯一标识 333 idFlag bool 334 name string // data_source的展示名称 335 nameFlag bool 336 state int // 数据源状态,0-已上线,1-未上线 337 stateFlag bool 338 description string // 对于数据源的描述 339 descriptionFlag bool 340 createTime string // 创建时间,使用Unix时间戳,单位为“秒” 341 createTimeFlag bool 342 updateTime string // 更新时间,使用Unix时间戳,单位为“秒” 343 updateTimeFlag bool 344 isExceedQuota bool // 是否超限 345 isExceedQuotaFlag bool 346 iconUrl string // 数据源在 search tab 上的展示图标路径 347 iconUrlFlag bool 348 template string // 数据源采用的展示模版名称 349 templateFlag bool 350 searchableFields []string // 描述哪些字段可以被搜索 351 searchableFieldsFlag bool 352 i18nName *I18nMeta // 数据源的国际化展示名称 353 i18nNameFlag bool 354 i18nDescription *I18nMeta // 数据源的国际化描述 355 i18nDescriptionFlag bool 356 schemaId string // 数据源关联的 schema 标识 357 schemaIdFlag bool 358 } 359 360 func NewDataSourceBuilder() *DataSourceBuilder { 361 builder := &DataSourceBuilder{} 362 return builder 363 } 364 365 // 数据源的唯一标识 366 // 367 // 示例值:5577006791947779410 368 func (builder *DataSourceBuilder) Id(id string) *DataSourceBuilder { 369 builder.id = id 370 builder.idFlag = true 371 return builder 372 } 373 374 // data_source的展示名称 375 // 376 // 示例值:客服工单 377 func (builder *DataSourceBuilder) Name(name string) *DataSourceBuilder { 378 builder.name = name 379 builder.nameFlag = true 380 return builder 381 } 382 383 // 数据源状态,0-已上线,1-未上线 384 // 385 // 示例值:0 386 func (builder *DataSourceBuilder) State(state int) *DataSourceBuilder { 387 builder.state = state 388 builder.stateFlag = true 389 return builder 390 } 391 392 // 对于数据源的描述 393 // 394 // 示例值:搜索客服工单数据 395 func (builder *DataSourceBuilder) Description(description string) *DataSourceBuilder { 396 builder.description = description 397 builder.descriptionFlag = true 398 return builder 399 } 400 401 // 创建时间,使用Unix时间戳,单位为“秒” 402 // 403 // 示例值: 404 func (builder *DataSourceBuilder) CreateTime(createTime string) *DataSourceBuilder { 405 builder.createTime = createTime 406 builder.createTimeFlag = true 407 return builder 408 } 409 410 // 更新时间,使用Unix时间戳,单位为“秒” 411 // 412 // 示例值: 413 func (builder *DataSourceBuilder) UpdateTime(updateTime string) *DataSourceBuilder { 414 builder.updateTime = updateTime 415 builder.updateTimeFlag = true 416 return builder 417 } 418 419 // 是否超限 420 // 421 // 示例值: 422 func (builder *DataSourceBuilder) IsExceedQuota(isExceedQuota bool) *DataSourceBuilder { 423 builder.isExceedQuota = isExceedQuota 424 builder.isExceedQuotaFlag = true 425 return builder 426 } 427 428 // 数据源在 search tab 上的展示图标路径 429 // 430 // 示例值:https://www.xxx.com/open.jpg 431 func (builder *DataSourceBuilder) IconUrl(iconUrl string) *DataSourceBuilder { 432 builder.iconUrl = iconUrl 433 builder.iconUrlFlag = true 434 return builder 435 } 436 437 // 数据源采用的展示模版名称 438 // 439 // 示例值:search_common_card 440 func (builder *DataSourceBuilder) Template(template string) *DataSourceBuilder { 441 builder.template = template 442 builder.templateFlag = true 443 return builder 444 } 445 446 // 描述哪些字段可以被搜索 447 // 448 // 示例值:["field1", "field2"](不推荐使用,如果有定制搜索需求,请用 schema 接口) 449 func (builder *DataSourceBuilder) SearchableFields(searchableFields []string) *DataSourceBuilder { 450 builder.searchableFields = searchableFields 451 builder.searchableFieldsFlag = true 452 return builder 453 } 454 455 // 数据源的国际化展示名称 456 // 457 // 示例值: 458 func (builder *DataSourceBuilder) I18nName(i18nName *I18nMeta) *DataSourceBuilder { 459 builder.i18nName = i18nName 460 builder.i18nNameFlag = true 461 return builder 462 } 463 464 // 数据源的国际化描述 465 // 466 // 示例值: 467 func (builder *DataSourceBuilder) I18nDescription(i18nDescription *I18nMeta) *DataSourceBuilder { 468 builder.i18nDescription = i18nDescription 469 builder.i18nDescriptionFlag = true 470 return builder 471 } 472 473 // 数据源关联的 schema 标识 474 // 475 // 示例值:custom_schema 476 func (builder *DataSourceBuilder) SchemaId(schemaId string) *DataSourceBuilder { 477 builder.schemaId = schemaId 478 builder.schemaIdFlag = true 479 return builder 480 } 481 482 func (builder *DataSourceBuilder) Build() *DataSource { 483 req := &DataSource{} 484 if builder.idFlag { 485 req.Id = &builder.id 486 487 } 488 if builder.nameFlag { 489 req.Name = &builder.name 490 491 } 492 if builder.stateFlag { 493 req.State = &builder.state 494 495 } 496 if builder.descriptionFlag { 497 req.Description = &builder.description 498 499 } 500 if builder.createTimeFlag { 501 req.CreateTime = &builder.createTime 502 503 } 504 if builder.updateTimeFlag { 505 req.UpdateTime = &builder.updateTime 506 507 } 508 if builder.isExceedQuotaFlag { 509 req.IsExceedQuota = &builder.isExceedQuota 510 511 } 512 if builder.iconUrlFlag { 513 req.IconUrl = &builder.iconUrl 514 515 } 516 if builder.templateFlag { 517 req.Template = &builder.template 518 519 } 520 if builder.searchableFieldsFlag { 521 req.SearchableFields = builder.searchableFields 522 } 523 if builder.i18nNameFlag { 524 req.I18nName = builder.i18nName 525 } 526 if builder.i18nDescriptionFlag { 527 req.I18nDescription = builder.i18nDescription 528 } 529 if builder.schemaIdFlag { 530 req.SchemaId = &builder.schemaId 531 532 } 533 return req 534 } 535 536 type I18nMeta struct { 537 ZhCn *string `json:"zh_cn,omitempty"` // 国际化字段:中文 538 EnUs *string `json:"en_us,omitempty"` // 国际化字段:英文 539 JaJp *string `json:"ja_jp,omitempty"` // 国际化字段:日文 540 } 541 542 type I18nMetaBuilder struct { 543 zhCn string // 国际化字段:中文 544 zhCnFlag bool 545 enUs string // 国际化字段:英文 546 enUsFlag bool 547 jaJp string // 国际化字段:日文 548 jaJpFlag bool 549 } 550 551 func NewI18nMetaBuilder() *I18nMetaBuilder { 552 builder := &I18nMetaBuilder{} 553 return builder 554 } 555 556 // 国际化字段:中文 557 // 558 // 示例值:任务 559 func (builder *I18nMetaBuilder) ZhCn(zhCn string) *I18nMetaBuilder { 560 builder.zhCn = zhCn 561 builder.zhCnFlag = true 562 return builder 563 } 564 565 // 国际化字段:英文 566 // 567 // 示例值:TODO 568 func (builder *I18nMetaBuilder) EnUs(enUs string) *I18nMetaBuilder { 569 builder.enUs = enUs 570 builder.enUsFlag = true 571 return builder 572 } 573 574 // 国际化字段:日文 575 // 576 // 示例值:タスク 577 func (builder *I18nMetaBuilder) JaJp(jaJp string) *I18nMetaBuilder { 578 builder.jaJp = jaJp 579 builder.jaJpFlag = true 580 return builder 581 } 582 583 func (builder *I18nMetaBuilder) Build() *I18nMeta { 584 req := &I18nMeta{} 585 if builder.zhCnFlag { 586 req.ZhCn = &builder.zhCn 587 588 } 589 if builder.enUsFlag { 590 req.EnUs = &builder.enUs 591 592 } 593 if builder.jaJpFlag { 594 req.JaJp = &builder.jaJp 595 596 } 597 return req 598 } 599 600 type Item struct { 601 Id *string `json:"id,omitempty"` // item 在 datasource 中的唯一标识 602 Acl []*Acl `json:"acl,omitempty"` // item 的访问权限控制。 acl 字段为空数组,则默认数据不可见。如果数据是全员可见,需要设置 access="allow"; type="user"; value="everyone" 603 Metadata *ItemMetadata `json:"metadata,omitempty"` // item 的元信息 604 StructuredData *string `json:"structured_data,omitempty"` // 结构化数据(以 json 字符串传递),这些字段是搜索结果的展示字段(title字段无须在此另外指定); 605 Content *ItemContent `json:"content,omitempty"` // 非结构化数据,如文档文本,飞书搜索会用来做召回 606 } 607 608 type ItemBuilder struct { 609 id string // item 在 datasource 中的唯一标识 610 idFlag bool 611 acl []*Acl // item 的访问权限控制。 acl 字段为空数组,则默认数据不可见。如果数据是全员可见,需要设置 access="allow"; type="user"; value="everyone" 612 aclFlag bool 613 metadata *ItemMetadata // item 的元信息 614 metadataFlag bool 615 structuredData string // 结构化数据(以 json 字符串传递),这些字段是搜索结果的展示字段(title字段无须在此另外指定); 616 structuredDataFlag bool 617 content *ItemContent // 非结构化数据,如文档文本,飞书搜索会用来做召回 618 contentFlag bool 619 } 620 621 func NewItemBuilder() *ItemBuilder { 622 builder := &ItemBuilder{} 623 return builder 624 } 625 626 // item 在 datasource 中的唯一标识 627 // 628 // 示例值:01010111 629 func (builder *ItemBuilder) Id(id string) *ItemBuilder { 630 builder.id = id 631 builder.idFlag = true 632 return builder 633 } 634 635 // item 的访问权限控制。 acl 字段为空数组,则默认数据不可见。如果数据是全员可见,需要设置 access="allow"; type="user"; value="everyone" 636 // 637 // 示例值: 638 func (builder *ItemBuilder) Acl(acl []*Acl) *ItemBuilder { 639 builder.acl = acl 640 builder.aclFlag = true 641 return builder 642 } 643 644 // item 的元信息 645 // 646 // 示例值: 647 func (builder *ItemBuilder) Metadata(metadata *ItemMetadata) *ItemBuilder { 648 builder.metadata = metadata 649 builder.metadataFlag = true 650 return builder 651 } 652 653 // 结构化数据(以 json 字符串传递),这些字段是搜索结果的展示字段(title字段无须在此另外指定); 654 // 655 // 示例值:{\"key\":\"value\"} 656 func (builder *ItemBuilder) StructuredData(structuredData string) *ItemBuilder { 657 builder.structuredData = structuredData 658 builder.structuredDataFlag = true 659 return builder 660 } 661 662 // 非结构化数据,如文档文本,飞书搜索会用来做召回 663 // 664 // 示例值: 665 func (builder *ItemBuilder) Content(content *ItemContent) *ItemBuilder { 666 builder.content = content 667 builder.contentFlag = true 668 return builder 669 } 670 671 func (builder *ItemBuilder) Build() *Item { 672 req := &Item{} 673 if builder.idFlag { 674 req.Id = &builder.id 675 676 } 677 if builder.aclFlag { 678 req.Acl = builder.acl 679 } 680 if builder.metadataFlag { 681 req.Metadata = builder.metadata 682 } 683 if builder.structuredDataFlag { 684 req.StructuredData = &builder.structuredData 685 686 } 687 if builder.contentFlag { 688 req.Content = builder.content 689 } 690 return req 691 } 692 693 type ItemContent struct { 694 Format *string `json:"format,omitempty"` // 内容的格式 695 ContentData *string `json:"content_data,omitempty"` // 全文数据 696 } 697 698 type ItemContentBuilder struct { 699 format string // 内容的格式 700 formatFlag bool 701 contentData string // 全文数据 702 contentDataFlag bool 703 } 704 705 func NewItemContentBuilder() *ItemContentBuilder { 706 builder := &ItemContentBuilder{} 707 return builder 708 } 709 710 // 内容的格式 711 // 712 // 示例值:html 713 func (builder *ItemContentBuilder) Format(format string) *ItemContentBuilder { 714 builder.format = format 715 builder.formatFlag = true 716 return builder 717 } 718 719 // 全文数据 720 // 721 // 示例值:这是一个很长的文本 722 func (builder *ItemContentBuilder) ContentData(contentData string) *ItemContentBuilder { 723 builder.contentData = contentData 724 builder.contentDataFlag = true 725 return builder 726 } 727 728 func (builder *ItemContentBuilder) Build() *ItemContent { 729 req := &ItemContent{} 730 if builder.formatFlag { 731 req.Format = &builder.format 732 733 } 734 if builder.contentDataFlag { 735 req.ContentData = &builder.contentData 736 737 } 738 return req 739 } 740 741 type ItemMetadata struct { 742 Title *string `json:"title,omitempty"` // 该条数据记录对应的标题 743 SourceUrl *string `json:"source_url,omitempty"` // 该条数据记录对应的跳转url 744 CreateTime *int `json:"create_time,omitempty"` // 数据项的创建时间。Unix 时间,单位为秒 745 UpdateTime *int `json:"update_time,omitempty"` // 数据项的更新时间。Unix 时间,单位为秒 746 SourceUrlMobile *string `json:"source_url_mobile,omitempty"` // 移动端搜索命中的跳转地址。如果您PC端和移动端有不同的跳转地址,可以在这里写入移动端专用的url,我们会在搜索时为您选择合适的地址 747 } 748 749 type ItemMetadataBuilder struct { 750 title string // 该条数据记录对应的标题 751 titleFlag bool 752 sourceUrl string // 该条数据记录对应的跳转url 753 sourceUrlFlag bool 754 createTime int // 数据项的创建时间。Unix 时间,单位为秒 755 createTimeFlag bool 756 updateTime int // 数据项的更新时间。Unix 时间,单位为秒 757 updateTimeFlag bool 758 sourceUrlMobile string // 移动端搜索命中的跳转地址。如果您PC端和移动端有不同的跳转地址,可以在这里写入移动端专用的url,我们会在搜索时为您选择合适的地址 759 sourceUrlMobileFlag bool 760 } 761 762 func NewItemMetadataBuilder() *ItemMetadataBuilder { 763 builder := &ItemMetadataBuilder{} 764 return builder 765 } 766 767 // 该条数据记录对应的标题 768 // 769 // 示例值:工单:无法创建文章 770 func (builder *ItemMetadataBuilder) Title(title string) *ItemMetadataBuilder { 771 builder.title = title 772 builder.titleFlag = true 773 return builder 774 } 775 776 // 该条数据记录对应的跳转url 777 // 778 // 示例值:http://www.abc.com.cn 779 func (builder *ItemMetadataBuilder) SourceUrl(sourceUrl string) *ItemMetadataBuilder { 780 builder.sourceUrl = sourceUrl 781 builder.sourceUrlFlag = true 782 return builder 783 } 784 785 // 数据项的创建时间。Unix 时间,单位为秒 786 // 787 // 示例值:1618831236 788 func (builder *ItemMetadataBuilder) CreateTime(createTime int) *ItemMetadataBuilder { 789 builder.createTime = createTime 790 builder.createTimeFlag = true 791 return builder 792 } 793 794 // 数据项的更新时间。Unix 时间,单位为秒 795 // 796 // 示例值:1618831236 797 func (builder *ItemMetadataBuilder) UpdateTime(updateTime int) *ItemMetadataBuilder { 798 builder.updateTime = updateTime 799 builder.updateTimeFlag = true 800 return builder 801 } 802 803 // 移动端搜索命中的跳转地址。如果您PC端和移动端有不同的跳转地址,可以在这里写入移动端专用的url,我们会在搜索时为您选择合适的地址 804 // 805 // 示例值:https://www.feishu.cn 806 func (builder *ItemMetadataBuilder) SourceUrlMobile(sourceUrlMobile string) *ItemMetadataBuilder { 807 builder.sourceUrlMobile = sourceUrlMobile 808 builder.sourceUrlMobileFlag = true 809 return builder 810 } 811 812 func (builder *ItemMetadataBuilder) Build() *ItemMetadata { 813 req := &ItemMetadata{} 814 if builder.titleFlag { 815 req.Title = &builder.title 816 817 } 818 if builder.sourceUrlFlag { 819 req.SourceUrl = &builder.sourceUrl 820 821 } 822 if builder.createTimeFlag { 823 req.CreateTime = &builder.createTime 824 825 } 826 if builder.updateTimeFlag { 827 req.UpdateTime = &builder.updateTime 828 829 } 830 if builder.sourceUrlMobileFlag { 831 req.SourceUrlMobile = &builder.sourceUrlMobile 832 833 } 834 return req 835 } 836 837 type ItemRecord struct { 838 ItemId *string `json:"item_id,omitempty"` // 冗余当前item的ID 839 DataSourceId *string `json:"data_source_id,omitempty"` // 数据源id 840 Version *string `json:"version,omitempty"` // 当前数据的最新版本号,其值等于上一次item/create接口传入的时间戳 841 CreatedAt *string `json:"created_at,omitempty"` // 第一次投递时间 842 UpdatedAt *string `json:"updated_at,omitempty"` // 上一次更新落库时间 843 } 844 845 type ItemRecordBuilder struct { 846 itemId string // 冗余当前item的ID 847 itemIdFlag bool 848 dataSourceId string // 数据源id 849 dataSourceIdFlag bool 850 version string // 当前数据的最新版本号,其值等于上一次item/create接口传入的时间戳 851 versionFlag bool 852 createdAt string // 第一次投递时间 853 createdAtFlag bool 854 updatedAt string // 上一次更新落库时间 855 updatedAtFlag bool 856 } 857 858 func NewItemRecordBuilder() *ItemRecordBuilder { 859 builder := &ItemRecordBuilder{} 860 return builder 861 } 862 863 // 冗余当前item的ID 864 // 865 // 示例值: 866 func (builder *ItemRecordBuilder) ItemId(itemId string) *ItemRecordBuilder { 867 builder.itemId = itemId 868 builder.itemIdFlag = true 869 return builder 870 } 871 872 // 数据源id 873 // 874 // 示例值: 875 func (builder *ItemRecordBuilder) DataSourceId(dataSourceId string) *ItemRecordBuilder { 876 builder.dataSourceId = dataSourceId 877 builder.dataSourceIdFlag = true 878 return builder 879 } 880 881 // 当前数据的最新版本号,其值等于上一次item/create接口传入的时间戳 882 // 883 // 示例值: 884 func (builder *ItemRecordBuilder) Version(version string) *ItemRecordBuilder { 885 builder.version = version 886 builder.versionFlag = true 887 return builder 888 } 889 890 // 第一次投递时间 891 // 892 // 示例值: 893 func (builder *ItemRecordBuilder) CreatedAt(createdAt string) *ItemRecordBuilder { 894 builder.createdAt = createdAt 895 builder.createdAtFlag = true 896 return builder 897 } 898 899 // 上一次更新落库时间 900 // 901 // 示例值: 902 func (builder *ItemRecordBuilder) UpdatedAt(updatedAt string) *ItemRecordBuilder { 903 builder.updatedAt = updatedAt 904 builder.updatedAtFlag = true 905 return builder 906 } 907 908 func (builder *ItemRecordBuilder) Build() *ItemRecord { 909 req := &ItemRecord{} 910 if builder.itemIdFlag { 911 req.ItemId = &builder.itemId 912 913 } 914 if builder.dataSourceIdFlag { 915 req.DataSourceId = &builder.dataSourceId 916 917 } 918 if builder.versionFlag { 919 req.Version = &builder.version 920 921 } 922 if builder.createdAtFlag { 923 req.CreatedAt = &builder.createdAt 924 925 } 926 if builder.updatedAtFlag { 927 req.UpdatedAt = &builder.updatedAt 928 929 } 930 return req 931 } 932 933 type Schema struct { 934 Properties []*SchemaProperty `json:"properties,omitempty"` // 数据范式的属性定义 935 Display *SchemaDisplay `json:"display,omitempty"` // 数据展示相关配置 936 SchemaId *string `json:"schema_id,omitempty"` // 用户自定义数据范式的唯一标识 937 } 938 939 type SchemaBuilder struct { 940 properties []*SchemaProperty // 数据范式的属性定义 941 propertiesFlag bool 942 display *SchemaDisplay // 数据展示相关配置 943 displayFlag bool 944 schemaId string // 用户自定义数据范式的唯一标识 945 schemaIdFlag bool 946 } 947 948 func NewSchemaBuilder() *SchemaBuilder { 949 builder := &SchemaBuilder{} 950 return builder 951 } 952 953 // 数据范式的属性定义 954 // 955 // 示例值: 956 func (builder *SchemaBuilder) Properties(properties []*SchemaProperty) *SchemaBuilder { 957 builder.properties = properties 958 builder.propertiesFlag = true 959 return builder 960 } 961 962 // 数据展示相关配置 963 // 964 // 示例值: 965 func (builder *SchemaBuilder) Display(display *SchemaDisplay) *SchemaBuilder { 966 builder.display = display 967 builder.displayFlag = true 968 return builder 969 } 970 971 // 用户自定义数据范式的唯一标识 972 // 973 // 示例值:jira_schema 974 func (builder *SchemaBuilder) SchemaId(schemaId string) *SchemaBuilder { 975 builder.schemaId = schemaId 976 builder.schemaIdFlag = true 977 return builder 978 } 979 980 func (builder *SchemaBuilder) Build() *Schema { 981 req := &Schema{} 982 if builder.propertiesFlag { 983 req.Properties = builder.properties 984 } 985 if builder.displayFlag { 986 req.Display = builder.display 987 } 988 if builder.schemaIdFlag { 989 req.SchemaId = &builder.schemaId 990 991 } 992 return req 993 } 994 995 type SchemaDisplay struct { 996 CardKey *string `json:"card_key,omitempty"` // 搜索数据的展示卡片 997 FieldsMapping []*SchemaDisplayFieldMapping `json:"fields_mapping,omitempty"` // 数据字段名称和展示字段名称的映射关系。如果没有设置,则只会展示 与展示字段名称同名的 数据字段 998 } 999 1000 type SchemaDisplayBuilder struct { 1001 cardKey string // 搜索数据的展示卡片 1002 cardKeyFlag bool 1003 fieldsMapping []*SchemaDisplayFieldMapping // 数据字段名称和展示字段名称的映射关系。如果没有设置,则只会展示 与展示字段名称同名的 数据字段 1004 fieldsMappingFlag bool 1005 } 1006 1007 func NewSchemaDisplayBuilder() *SchemaDisplayBuilder { 1008 builder := &SchemaDisplayBuilder{} 1009 return builder 1010 } 1011 1012 // 搜索数据的展示卡片 1013 // 1014 // 示例值:search_common_card 1015 func (builder *SchemaDisplayBuilder) CardKey(cardKey string) *SchemaDisplayBuilder { 1016 builder.cardKey = cardKey 1017 builder.cardKeyFlag = true 1018 return builder 1019 } 1020 1021 // 数据字段名称和展示字段名称的映射关系。如果没有设置,则只会展示 与展示字段名称同名的 数据字段 1022 // 1023 // 示例值: 1024 func (builder *SchemaDisplayBuilder) FieldsMapping(fieldsMapping []*SchemaDisplayFieldMapping) *SchemaDisplayBuilder { 1025 builder.fieldsMapping = fieldsMapping 1026 builder.fieldsMappingFlag = true 1027 return builder 1028 } 1029 1030 func (builder *SchemaDisplayBuilder) Build() *SchemaDisplay { 1031 req := &SchemaDisplay{} 1032 if builder.cardKeyFlag { 1033 req.CardKey = &builder.cardKey 1034 1035 } 1036 if builder.fieldsMappingFlag { 1037 req.FieldsMapping = builder.fieldsMapping 1038 } 1039 return req 1040 } 1041 1042 type SchemaDisplayFieldMapping struct { 1043 DisplayField *string `json:"display_field,omitempty"` // 展示字段名称,与 card_key 有关,每个模版能展示的字段不同。该字段不能重复 1044 DataField *string `json:"data_field,omitempty"` // 数据字段的名称。需要确保该字段对应在 schema 属性定义中的 is_returnable 为 true,否则无法展示。需要使用 ${xxx} 的规则来描述 1045 } 1046 1047 type SchemaDisplayFieldMappingBuilder struct { 1048 displayField string // 展示字段名称,与 card_key 有关,每个模版能展示的字段不同。该字段不能重复 1049 displayFieldFlag bool 1050 dataField string // 数据字段的名称。需要确保该字段对应在 schema 属性定义中的 is_returnable 为 true,否则无法展示。需要使用 ${xxx} 的规则来描述 1051 dataFieldFlag bool 1052 } 1053 1054 func NewSchemaDisplayFieldMappingBuilder() *SchemaDisplayFieldMappingBuilder { 1055 builder := &SchemaDisplayFieldMappingBuilder{} 1056 return builder 1057 } 1058 1059 // 展示字段名称,与 card_key 有关,每个模版能展示的字段不同。该字段不能重复 1060 // 1061 // 示例值:summary 1062 func (builder *SchemaDisplayFieldMappingBuilder) DisplayField(displayField string) *SchemaDisplayFieldMappingBuilder { 1063 builder.displayField = displayField 1064 builder.displayFieldFlag = true 1065 return builder 1066 } 1067 1068 // 数据字段的名称。需要确保该字段对应在 schema 属性定义中的 is_returnable 为 true,否则无法展示。需要使用 ${xxx} 的规则来描述 1069 // 1070 // 示例值:${description} 1071 func (builder *SchemaDisplayFieldMappingBuilder) DataField(dataField string) *SchemaDisplayFieldMappingBuilder { 1072 builder.dataField = dataField 1073 builder.dataFieldFlag = true 1074 return builder 1075 } 1076 1077 func (builder *SchemaDisplayFieldMappingBuilder) Build() *SchemaDisplayFieldMapping { 1078 req := &SchemaDisplayFieldMapping{} 1079 if builder.displayFieldFlag { 1080 req.DisplayField = &builder.displayField 1081 1082 } 1083 if builder.dataFieldFlag { 1084 req.DataField = &builder.dataField 1085 1086 } 1087 return req 1088 } 1089 1090 type SchemaDisplayOption struct { 1091 DisplayLabel *string `json:"display_label,omitempty"` // 对外展示的标签名 1092 DisplayType *string `json:"display_type,omitempty"` // 对外展示类型 1093 } 1094 1095 type SchemaDisplayOptionBuilder struct { 1096 displayLabel string // 对外展示的标签名 1097 displayLabelFlag bool 1098 displayType string // 对外展示类型 1099 displayTypeFlag bool 1100 } 1101 1102 func NewSchemaDisplayOptionBuilder() *SchemaDisplayOptionBuilder { 1103 builder := &SchemaDisplayOptionBuilder{} 1104 return builder 1105 } 1106 1107 // 对外展示的标签名 1108 // 1109 // 示例值: 1110 func (builder *SchemaDisplayOptionBuilder) DisplayLabel(displayLabel string) *SchemaDisplayOptionBuilder { 1111 builder.displayLabel = displayLabel 1112 builder.displayLabelFlag = true 1113 return builder 1114 } 1115 1116 // 对外展示类型 1117 // 1118 // 示例值: 1119 func (builder *SchemaDisplayOptionBuilder) DisplayType(displayType string) *SchemaDisplayOptionBuilder { 1120 builder.displayType = displayType 1121 builder.displayTypeFlag = true 1122 return builder 1123 } 1124 1125 func (builder *SchemaDisplayOptionBuilder) Build() *SchemaDisplayOption { 1126 req := &SchemaDisplayOption{} 1127 if builder.displayLabelFlag { 1128 req.DisplayLabel = &builder.displayLabel 1129 1130 } 1131 if builder.displayTypeFlag { 1132 req.DisplayType = &builder.displayType 1133 1134 } 1135 return req 1136 } 1137 1138 type SchemaProperty struct { 1139 Name *string `json:"name,omitempty"` // 属性名 1140 Type *string `json:"type,omitempty"` // 属性类型 1141 IsSearchable *bool `json:"is_searchable,omitempty"` // 该属性是否可用作搜索,默认为 false 1142 IsSortable *bool `json:"is_sortable,omitempty"` // 该属性是否可用作搜索结果排序,默认为 false。如果为 true,需要再配置 sortOptions 1143 IsReturnable *bool `json:"is_returnable,omitempty"` // 该属性是否可用作返回字段,为 false 时,该字段不会被召回和展示。默认为 false 1144 SortOptions *SchemaSortOptions `json:"sort_options,omitempty"` // 属性排序的可选配置,当 is_sortable 为 true 时,该字段为必填字段 1145 TypeDefinitions *SchemaTypeDefinitions `json:"type_definitions,omitempty"` // 相关类型数据的定义和约束 1146 SearchOptions *SchemaSearchOptions `json:"search_options,omitempty"` // 属性搜索的可选配置,当 is_searchable 为 true 时,该字段为必填参数 1147 } 1148 1149 type SchemaPropertyBuilder struct { 1150 name string // 属性名 1151 nameFlag bool 1152 type_ string // 属性类型 1153 typeFlag bool 1154 isSearchable bool // 该属性是否可用作搜索,默认为 false 1155 isSearchableFlag bool 1156 isSortable bool // 该属性是否可用作搜索结果排序,默认为 false。如果为 true,需要再配置 sortOptions 1157 isSortableFlag bool 1158 isReturnable bool // 该属性是否可用作返回字段,为 false 时,该字段不会被召回和展示。默认为 false 1159 isReturnableFlag bool 1160 sortOptions *SchemaSortOptions // 属性排序的可选配置,当 is_sortable 为 true 时,该字段为必填字段 1161 sortOptionsFlag bool 1162 typeDefinitions *SchemaTypeDefinitions // 相关类型数据的定义和约束 1163 typeDefinitionsFlag bool 1164 searchOptions *SchemaSearchOptions // 属性搜索的可选配置,当 is_searchable 为 true 时,该字段为必填参数 1165 searchOptionsFlag bool 1166 } 1167 1168 func NewSchemaPropertyBuilder() *SchemaPropertyBuilder { 1169 builder := &SchemaPropertyBuilder{} 1170 return builder 1171 } 1172 1173 // 属性名 1174 // 1175 // 示例值:summary 1176 func (builder *SchemaPropertyBuilder) Name(name string) *SchemaPropertyBuilder { 1177 builder.name = name 1178 builder.nameFlag = true 1179 return builder 1180 } 1181 1182 // 属性类型 1183 // 1184 // 示例值:text 1185 func (builder *SchemaPropertyBuilder) Type(type_ string) *SchemaPropertyBuilder { 1186 builder.type_ = type_ 1187 builder.typeFlag = true 1188 return builder 1189 } 1190 1191 // 该属性是否可用作搜索,默认为 false 1192 // 1193 // 示例值:true 1194 func (builder *SchemaPropertyBuilder) IsSearchable(isSearchable bool) *SchemaPropertyBuilder { 1195 builder.isSearchable = isSearchable 1196 builder.isSearchableFlag = true 1197 return builder 1198 } 1199 1200 // 该属性是否可用作搜索结果排序,默认为 false。如果为 true,需要再配置 sortOptions 1201 // 1202 // 示例值:false 1203 func (builder *SchemaPropertyBuilder) IsSortable(isSortable bool) *SchemaPropertyBuilder { 1204 builder.isSortable = isSortable 1205 builder.isSortableFlag = true 1206 return builder 1207 } 1208 1209 // 该属性是否可用作返回字段,为 false 时,该字段不会被召回和展示。默认为 false 1210 // 1211 // 示例值:true 1212 func (builder *SchemaPropertyBuilder) IsReturnable(isReturnable bool) *SchemaPropertyBuilder { 1213 builder.isReturnable = isReturnable 1214 builder.isReturnableFlag = true 1215 return builder 1216 } 1217 1218 // 属性排序的可选配置,当 is_sortable 为 true 时,该字段为必填字段 1219 // 1220 // 示例值: 1221 func (builder *SchemaPropertyBuilder) SortOptions(sortOptions *SchemaSortOptions) *SchemaPropertyBuilder { 1222 builder.sortOptions = sortOptions 1223 builder.sortOptionsFlag = true 1224 return builder 1225 } 1226 1227 // 相关类型数据的定义和约束 1228 // 1229 // 示例值: 1230 func (builder *SchemaPropertyBuilder) TypeDefinitions(typeDefinitions *SchemaTypeDefinitions) *SchemaPropertyBuilder { 1231 builder.typeDefinitions = typeDefinitions 1232 builder.typeDefinitionsFlag = true 1233 return builder 1234 } 1235 1236 // 属性搜索的可选配置,当 is_searchable 为 true 时,该字段为必填参数 1237 // 1238 // 示例值: 1239 func (builder *SchemaPropertyBuilder) SearchOptions(searchOptions *SchemaSearchOptions) *SchemaPropertyBuilder { 1240 builder.searchOptions = searchOptions 1241 builder.searchOptionsFlag = true 1242 return builder 1243 } 1244 1245 func (builder *SchemaPropertyBuilder) Build() *SchemaProperty { 1246 req := &SchemaProperty{} 1247 if builder.nameFlag { 1248 req.Name = &builder.name 1249 1250 } 1251 if builder.typeFlag { 1252 req.Type = &builder.type_ 1253 1254 } 1255 if builder.isSearchableFlag { 1256 req.IsSearchable = &builder.isSearchable 1257 1258 } 1259 if builder.isSortableFlag { 1260 req.IsSortable = &builder.isSortable 1261 1262 } 1263 if builder.isReturnableFlag { 1264 req.IsReturnable = &builder.isReturnable 1265 1266 } 1267 if builder.sortOptionsFlag { 1268 req.SortOptions = builder.sortOptions 1269 } 1270 if builder.typeDefinitionsFlag { 1271 req.TypeDefinitions = builder.typeDefinitions 1272 } 1273 if builder.searchOptionsFlag { 1274 req.SearchOptions = builder.searchOptions 1275 } 1276 return req 1277 } 1278 1279 type SchemaPropertyDefinition struct { 1280 Name *string `json:"name,omitempty"` // 属性名称 1281 IsReturnable *bool `json:"is_returnable,omitempty"` // 搜索中是否可作为搜索结果返回 1282 IsRepeatable *bool `json:"is_repeatable,omitempty"` // 是否允许重复 1283 IsSortable *bool `json:"is_sortable,omitempty"` // 是否可用作排序 1284 IsFacetable *bool `json:"is_facetable,omitempty"` // 是否可用来生成 facet,仅支持 Boolean,Enum,String 类型属性。 1285 IsWildcardSearchable *bool `json:"is_wildcard_searchable,omitempty"` // 是否可以对该属性使用通配符搜索,只支持 String 类型属性。 1286 Type *string `json:"type,omitempty"` // 属性数据类型 1287 DisplayOptions *SchemaDisplayOption `json:"display_options,omitempty"` // 属性对外展示可选项 1288 } 1289 1290 type SchemaPropertyDefinitionBuilder struct { 1291 name string // 属性名称 1292 nameFlag bool 1293 isReturnable bool // 搜索中是否可作为搜索结果返回 1294 isReturnableFlag bool 1295 isRepeatable bool // 是否允许重复 1296 isRepeatableFlag bool 1297 isSortable bool // 是否可用作排序 1298 isSortableFlag bool 1299 isFacetable bool // 是否可用来生成 facet,仅支持 Boolean,Enum,String 类型属性。 1300 isFacetableFlag bool 1301 isWildcardSearchable bool // 是否可以对该属性使用通配符搜索,只支持 String 类型属性。 1302 isWildcardSearchableFlag bool 1303 type_ string // 属性数据类型 1304 typeFlag bool 1305 displayOptions *SchemaDisplayOption // 属性对外展示可选项 1306 displayOptionsFlag bool 1307 } 1308 1309 func NewSchemaPropertyDefinitionBuilder() *SchemaPropertyDefinitionBuilder { 1310 builder := &SchemaPropertyDefinitionBuilder{} 1311 return builder 1312 } 1313 1314 // 属性名称 1315 // 1316 // 示例值: 1317 func (builder *SchemaPropertyDefinitionBuilder) Name(name string) *SchemaPropertyDefinitionBuilder { 1318 builder.name = name 1319 builder.nameFlag = true 1320 return builder 1321 } 1322 1323 // 搜索中是否可作为搜索结果返回 1324 // 1325 // 示例值:false 1326 func (builder *SchemaPropertyDefinitionBuilder) IsReturnable(isReturnable bool) *SchemaPropertyDefinitionBuilder { 1327 builder.isReturnable = isReturnable 1328 builder.isReturnableFlag = true 1329 return builder 1330 } 1331 1332 // 是否允许重复 1333 // 1334 // 示例值:false 1335 func (builder *SchemaPropertyDefinitionBuilder) IsRepeatable(isRepeatable bool) *SchemaPropertyDefinitionBuilder { 1336 builder.isRepeatable = isRepeatable 1337 builder.isRepeatableFlag = true 1338 return builder 1339 } 1340 1341 // 是否可用作排序 1342 // 1343 // 示例值:false 1344 func (builder *SchemaPropertyDefinitionBuilder) IsSortable(isSortable bool) *SchemaPropertyDefinitionBuilder { 1345 builder.isSortable = isSortable 1346 builder.isSortableFlag = true 1347 return builder 1348 } 1349 1350 // 是否可用来生成 facet,仅支持 Boolean,Enum,String 类型属性。 1351 // 1352 // 示例值:false 1353 func (builder *SchemaPropertyDefinitionBuilder) IsFacetable(isFacetable bool) *SchemaPropertyDefinitionBuilder { 1354 builder.isFacetable = isFacetable 1355 builder.isFacetableFlag = true 1356 return builder 1357 } 1358 1359 // 是否可以对该属性使用通配符搜索,只支持 String 类型属性。 1360 // 1361 // 示例值: 1362 func (builder *SchemaPropertyDefinitionBuilder) IsWildcardSearchable(isWildcardSearchable bool) *SchemaPropertyDefinitionBuilder { 1363 builder.isWildcardSearchable = isWildcardSearchable 1364 builder.isWildcardSearchableFlag = true 1365 return builder 1366 } 1367 1368 // 属性数据类型 1369 // 1370 // 示例值:INTEGER 1371 func (builder *SchemaPropertyDefinitionBuilder) Type(type_ string) *SchemaPropertyDefinitionBuilder { 1372 builder.type_ = type_ 1373 builder.typeFlag = true 1374 return builder 1375 } 1376 1377 // 属性对外展示可选项 1378 // 1379 // 示例值: 1380 func (builder *SchemaPropertyDefinitionBuilder) DisplayOptions(displayOptions *SchemaDisplayOption) *SchemaPropertyDefinitionBuilder { 1381 builder.displayOptions = displayOptions 1382 builder.displayOptionsFlag = true 1383 return builder 1384 } 1385 1386 func (builder *SchemaPropertyDefinitionBuilder) Build() *SchemaPropertyDefinition { 1387 req := &SchemaPropertyDefinition{} 1388 if builder.nameFlag { 1389 req.Name = &builder.name 1390 1391 } 1392 if builder.isReturnableFlag { 1393 req.IsReturnable = &builder.isReturnable 1394 1395 } 1396 if builder.isRepeatableFlag { 1397 req.IsRepeatable = &builder.isRepeatable 1398 1399 } 1400 if builder.isSortableFlag { 1401 req.IsSortable = &builder.isSortable 1402 1403 } 1404 if builder.isFacetableFlag { 1405 req.IsFacetable = &builder.isFacetable 1406 1407 } 1408 if builder.isWildcardSearchableFlag { 1409 req.IsWildcardSearchable = &builder.isWildcardSearchable 1410 1411 } 1412 if builder.typeFlag { 1413 req.Type = &builder.type_ 1414 1415 } 1416 if builder.displayOptionsFlag { 1417 req.DisplayOptions = builder.displayOptions 1418 } 1419 return req 1420 } 1421 1422 type SchemaSearchOptions struct { 1423 EnableSemanticMatch *bool `json:"enable_semantic_match,omitempty"` // 是否支持语义切词召回。默认不支持(推荐使用在长文本的场景) 1424 EnableExactMatch *bool `json:"enable_exact_match,omitempty"` // 是否支持精确匹配。默认不支持(推荐使用在短文本、需要精确查找的场景) 1425 EnablePrefixMatch *bool `json:"enable_prefix_match,omitempty"` // 是否支持前缀匹配(短文本的默认的分词/召回策略。前缀长度为 1-12) 1426 EnableNumberSuffixMatch *bool `json:"enable_number_suffix_match,omitempty"` // 是否支持数据后缀匹配。默认不支持(推荐使用在短文本、有数字后缀查找的场景。后缀长度为3-12) 1427 EnableCamelMatch *bool `json:"enable_camel_match,omitempty"` // 是否支持驼峰英文匹配。默认不支持(推荐使用在短文本,且包含驼峰形式英文的查找场景) 1428 } 1429 1430 type SchemaSearchOptionsBuilder struct { 1431 enableSemanticMatch bool // 是否支持语义切词召回。默认不支持(推荐使用在长文本的场景) 1432 enableSemanticMatchFlag bool 1433 enableExactMatch bool // 是否支持精确匹配。默认不支持(推荐使用在短文本、需要精确查找的场景) 1434 enableExactMatchFlag bool 1435 enablePrefixMatch bool // 是否支持前缀匹配(短文本的默认的分词/召回策略。前缀长度为 1-12) 1436 enablePrefixMatchFlag bool 1437 enableNumberSuffixMatch bool // 是否支持数据后缀匹配。默认不支持(推荐使用在短文本、有数字后缀查找的场景。后缀长度为3-12) 1438 enableNumberSuffixMatchFlag bool 1439 enableCamelMatch bool // 是否支持驼峰英文匹配。默认不支持(推荐使用在短文本,且包含驼峰形式英文的查找场景) 1440 enableCamelMatchFlag bool 1441 } 1442 1443 func NewSchemaSearchOptionsBuilder() *SchemaSearchOptionsBuilder { 1444 builder := &SchemaSearchOptionsBuilder{} 1445 return builder 1446 } 1447 1448 // 是否支持语义切词召回。默认不支持(推荐使用在长文本的场景) 1449 // 1450 // 示例值:true 1451 func (builder *SchemaSearchOptionsBuilder) EnableSemanticMatch(enableSemanticMatch bool) *SchemaSearchOptionsBuilder { 1452 builder.enableSemanticMatch = enableSemanticMatch 1453 builder.enableSemanticMatchFlag = true 1454 return builder 1455 } 1456 1457 // 是否支持精确匹配。默认不支持(推荐使用在短文本、需要精确查找的场景) 1458 // 1459 // 示例值:false 1460 func (builder *SchemaSearchOptionsBuilder) EnableExactMatch(enableExactMatch bool) *SchemaSearchOptionsBuilder { 1461 builder.enableExactMatch = enableExactMatch 1462 builder.enableExactMatchFlag = true 1463 return builder 1464 } 1465 1466 // 是否支持前缀匹配(短文本的默认的分词/召回策略。前缀长度为 1-12) 1467 // 1468 // 示例值:false 1469 func (builder *SchemaSearchOptionsBuilder) EnablePrefixMatch(enablePrefixMatch bool) *SchemaSearchOptionsBuilder { 1470 builder.enablePrefixMatch = enablePrefixMatch 1471 builder.enablePrefixMatchFlag = true 1472 return builder 1473 } 1474 1475 // 是否支持数据后缀匹配。默认不支持(推荐使用在短文本、有数字后缀查找的场景。后缀长度为3-12) 1476 // 1477 // 示例值:false 1478 func (builder *SchemaSearchOptionsBuilder) EnableNumberSuffixMatch(enableNumberSuffixMatch bool) *SchemaSearchOptionsBuilder { 1479 builder.enableNumberSuffixMatch = enableNumberSuffixMatch 1480 builder.enableNumberSuffixMatchFlag = true 1481 return builder 1482 } 1483 1484 // 是否支持驼峰英文匹配。默认不支持(推荐使用在短文本,且包含驼峰形式英文的查找场景) 1485 // 1486 // 示例值:false 1487 func (builder *SchemaSearchOptionsBuilder) EnableCamelMatch(enableCamelMatch bool) *SchemaSearchOptionsBuilder { 1488 builder.enableCamelMatch = enableCamelMatch 1489 builder.enableCamelMatchFlag = true 1490 return builder 1491 } 1492 1493 func (builder *SchemaSearchOptionsBuilder) Build() *SchemaSearchOptions { 1494 req := &SchemaSearchOptions{} 1495 if builder.enableSemanticMatchFlag { 1496 req.EnableSemanticMatch = &builder.enableSemanticMatch 1497 1498 } 1499 if builder.enableExactMatchFlag { 1500 req.EnableExactMatch = &builder.enableExactMatch 1501 1502 } 1503 if builder.enablePrefixMatchFlag { 1504 req.EnablePrefixMatch = &builder.enablePrefixMatch 1505 1506 } 1507 if builder.enableNumberSuffixMatchFlag { 1508 req.EnableNumberSuffixMatch = &builder.enableNumberSuffixMatch 1509 1510 } 1511 if builder.enableCamelMatchFlag { 1512 req.EnableCamelMatch = &builder.enableCamelMatch 1513 1514 } 1515 return req 1516 } 1517 1518 type SchemaSortOptions struct { 1519 Priority *int `json:"priority,omitempty"` // 排序的优先级,可选范围为 0~4,0为最高优先级。如果优先级相同,则随机进行排序。默认为0 1520 Order *string `json:"order,omitempty"` // 排序的顺序。默认为 desc 1521 } 1522 1523 type SchemaSortOptionsBuilder struct { 1524 priority int // 排序的优先级,可选范围为 0~4,0为最高优先级。如果优先级相同,则随机进行排序。默认为0 1525 priorityFlag bool 1526 order string // 排序的顺序。默认为 desc 1527 orderFlag bool 1528 } 1529 1530 func NewSchemaSortOptionsBuilder() *SchemaSortOptionsBuilder { 1531 builder := &SchemaSortOptionsBuilder{} 1532 return builder 1533 } 1534 1535 // 排序的优先级,可选范围为 0~4,0为最高优先级。如果优先级相同,则随机进行排序。默认为0 1536 // 1537 // 示例值:0 1538 func (builder *SchemaSortOptionsBuilder) Priority(priority int) *SchemaSortOptionsBuilder { 1539 builder.priority = priority 1540 builder.priorityFlag = true 1541 return builder 1542 } 1543 1544 // 排序的顺序。默认为 desc 1545 // 1546 // 示例值:asc 1547 func (builder *SchemaSortOptionsBuilder) Order(order string) *SchemaSortOptionsBuilder { 1548 builder.order = order 1549 builder.orderFlag = true 1550 return builder 1551 } 1552 1553 func (builder *SchemaSortOptionsBuilder) Build() *SchemaSortOptions { 1554 req := &SchemaSortOptions{} 1555 if builder.priorityFlag { 1556 req.Priority = &builder.priority 1557 1558 } 1559 if builder.orderFlag { 1560 req.Order = &builder.order 1561 1562 } 1563 return req 1564 } 1565 1566 type SchemaTagOptions struct { 1567 Name *string `json:"name,omitempty"` // tag 对应的枚举值名称 1568 Color *string `json:"color,omitempty"` // 标签对应的颜色 1569 Text *string `json:"text,omitempty"` // 标签中展示的文本 1570 } 1571 1572 type SchemaTagOptionsBuilder struct { 1573 name string // tag 对应的枚举值名称 1574 nameFlag bool 1575 color string // 标签对应的颜色 1576 colorFlag bool 1577 text string // 标签中展示的文本 1578 textFlag bool 1579 } 1580 1581 func NewSchemaTagOptionsBuilder() *SchemaTagOptionsBuilder { 1582 builder := &SchemaTagOptionsBuilder{} 1583 return builder 1584 } 1585 1586 // tag 对应的枚举值名称 1587 // 1588 // 示例值:status 1589 func (builder *SchemaTagOptionsBuilder) Name(name string) *SchemaTagOptionsBuilder { 1590 builder.name = name 1591 builder.nameFlag = true 1592 return builder 1593 } 1594 1595 // 标签对应的颜色 1596 // 1597 // 示例值:blue 1598 func (builder *SchemaTagOptionsBuilder) Color(color string) *SchemaTagOptionsBuilder { 1599 builder.color = color 1600 builder.colorFlag = true 1601 return builder 1602 } 1603 1604 // 标签中展示的文本 1605 // 1606 // 示例值:PASS 1607 func (builder *SchemaTagOptionsBuilder) Text(text string) *SchemaTagOptionsBuilder { 1608 builder.text = text 1609 builder.textFlag = true 1610 return builder 1611 } 1612 1613 func (builder *SchemaTagOptionsBuilder) Build() *SchemaTagOptions { 1614 req := &SchemaTagOptions{} 1615 if builder.nameFlag { 1616 req.Name = &builder.name 1617 1618 } 1619 if builder.colorFlag { 1620 req.Color = &builder.color 1621 1622 } 1623 if builder.textFlag { 1624 req.Text = &builder.text 1625 1626 } 1627 return req 1628 } 1629 1630 type SchemaTypeDefinitions struct { 1631 Tag []*SchemaTagOptions `json:"tag,omitempty"` // 标签类型的定义 1632 } 1633 1634 type SchemaTypeDefinitionsBuilder struct { 1635 tag []*SchemaTagOptions // 标签类型的定义 1636 tagFlag bool 1637 } 1638 1639 func NewSchemaTypeDefinitionsBuilder() *SchemaTypeDefinitionsBuilder { 1640 builder := &SchemaTypeDefinitionsBuilder{} 1641 return builder 1642 } 1643 1644 // 标签类型的定义 1645 // 1646 // 示例值: 1647 func (builder *SchemaTypeDefinitionsBuilder) Tag(tag []*SchemaTagOptions) *SchemaTypeDefinitionsBuilder { 1648 builder.tag = tag 1649 builder.tagFlag = true 1650 return builder 1651 } 1652 1653 func (builder *SchemaTypeDefinitionsBuilder) Build() *SchemaTypeDefinitions { 1654 req := &SchemaTypeDefinitions{} 1655 if builder.tagFlag { 1656 req.Tag = builder.tag 1657 } 1658 return req 1659 } 1660 1661 type CreateDataSourceReqBuilder struct { 1662 apiReq *larkcore.ApiReq 1663 dataSource *DataSource 1664 } 1665 1666 func NewCreateDataSourceReqBuilder() *CreateDataSourceReqBuilder { 1667 builder := &CreateDataSourceReqBuilder{} 1668 builder.apiReq = &larkcore.ApiReq{ 1669 PathParams: larkcore.PathParams{}, 1670 QueryParams: larkcore.QueryParams{}, 1671 } 1672 return builder 1673 } 1674 1675 // 创建一个数据源 1676 func (builder *CreateDataSourceReqBuilder) DataSource(dataSource *DataSource) *CreateDataSourceReqBuilder { 1677 builder.dataSource = dataSource 1678 return builder 1679 } 1680 1681 func (builder *CreateDataSourceReqBuilder) Build() *CreateDataSourceReq { 1682 req := &CreateDataSourceReq{} 1683 req.apiReq = &larkcore.ApiReq{} 1684 req.apiReq.Body = builder.dataSource 1685 return req 1686 } 1687 1688 type CreateDataSourceReq struct { 1689 apiReq *larkcore.ApiReq 1690 DataSource *DataSource `body:""` 1691 } 1692 1693 type CreateDataSourceRespData struct { 1694 DataSource *DataSource `json:"data_source,omitempty"` // 数据源实例 1695 } 1696 1697 type CreateDataSourceResp struct { 1698 *larkcore.ApiResp `json:"-"` 1699 larkcore.CodeError 1700 Data *CreateDataSourceRespData `json:"data"` // 业务数据 1701 } 1702 1703 func (resp *CreateDataSourceResp) Success() bool { 1704 return resp.Code == 0 1705 } 1706 1707 type DeleteDataSourceReqBuilder struct { 1708 apiReq *larkcore.ApiReq 1709 } 1710 1711 func NewDeleteDataSourceReqBuilder() *DeleteDataSourceReqBuilder { 1712 builder := &DeleteDataSourceReqBuilder{} 1713 builder.apiReq = &larkcore.ApiReq{ 1714 PathParams: larkcore.PathParams{}, 1715 QueryParams: larkcore.QueryParams{}, 1716 } 1717 return builder 1718 } 1719 1720 // 数据源的唯一标识 1721 // 1722 // 示例值:6953903108179099667 1723 func (builder *DeleteDataSourceReqBuilder) DataSourceId(dataSourceId string) *DeleteDataSourceReqBuilder { 1724 builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId)) 1725 return builder 1726 } 1727 1728 func (builder *DeleteDataSourceReqBuilder) Build() *DeleteDataSourceReq { 1729 req := &DeleteDataSourceReq{} 1730 req.apiReq = &larkcore.ApiReq{} 1731 req.apiReq.PathParams = builder.apiReq.PathParams 1732 return req 1733 } 1734 1735 type DeleteDataSourceReq struct { 1736 apiReq *larkcore.ApiReq 1737 } 1738 1739 type DeleteDataSourceResp struct { 1740 *larkcore.ApiResp `json:"-"` 1741 larkcore.CodeError 1742 } 1743 1744 func (resp *DeleteDataSourceResp) Success() bool { 1745 return resp.Code == 0 1746 } 1747 1748 type GetDataSourceReqBuilder struct { 1749 apiReq *larkcore.ApiReq 1750 } 1751 1752 func NewGetDataSourceReqBuilder() *GetDataSourceReqBuilder { 1753 builder := &GetDataSourceReqBuilder{} 1754 builder.apiReq = &larkcore.ApiReq{ 1755 PathParams: larkcore.PathParams{}, 1756 QueryParams: larkcore.QueryParams{}, 1757 } 1758 return builder 1759 } 1760 1761 // 数据源的唯一标识 1762 // 1763 // 示例值:service_ticket 1764 func (builder *GetDataSourceReqBuilder) DataSourceId(dataSourceId string) *GetDataSourceReqBuilder { 1765 builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId)) 1766 return builder 1767 } 1768 1769 func (builder *GetDataSourceReqBuilder) Build() *GetDataSourceReq { 1770 req := &GetDataSourceReq{} 1771 req.apiReq = &larkcore.ApiReq{} 1772 req.apiReq.PathParams = builder.apiReq.PathParams 1773 return req 1774 } 1775 1776 type GetDataSourceReq struct { 1777 apiReq *larkcore.ApiReq 1778 } 1779 1780 type GetDataSourceRespData struct { 1781 DataSource *DataSource `json:"data_source,omitempty"` // 数据源实例 1782 } 1783 1784 type GetDataSourceResp struct { 1785 *larkcore.ApiResp `json:"-"` 1786 larkcore.CodeError 1787 Data *GetDataSourceRespData `json:"data"` // 业务数据 1788 } 1789 1790 func (resp *GetDataSourceResp) Success() bool { 1791 return resp.Code == 0 1792 } 1793 1794 type ListDataSourceReqBuilder struct { 1795 apiReq *larkcore.ApiReq 1796 limit int // 最大返回多少记录,当使用迭代器访问时才有效 1797 } 1798 1799 func NewListDataSourceReqBuilder() *ListDataSourceReqBuilder { 1800 builder := &ListDataSourceReqBuilder{} 1801 builder.apiReq = &larkcore.ApiReq{ 1802 PathParams: larkcore.PathParams{}, 1803 QueryParams: larkcore.QueryParams{}, 1804 } 1805 return builder 1806 } 1807 1808 // 最大返回多少记录,当使用迭代器访问时才有效 1809 func (builder *ListDataSourceReqBuilder) Limit(limit int) *ListDataSourceReqBuilder { 1810 builder.limit = limit 1811 return builder 1812 } 1813 1814 // 回包数据格式,0-全量数据;1-摘要数据。;;**注**:摘要数据仅包含"id","name","state"。 1815 // 1816 // 示例值:0 1817 func (builder *ListDataSourceReqBuilder) View(view int) *ListDataSourceReqBuilder { 1818 builder.apiReq.QueryParams.Set("view", fmt.Sprint(view)) 1819 return builder 1820 } 1821 1822 // 1823 // 1824 // 示例值:PxZFma9OIRhdBlT/dOYNiu2Ro8F2WAhcby7OhOijfljZ 1825 func (builder *ListDataSourceReqBuilder) PageToken(pageToken string) *ListDataSourceReqBuilder { 1826 builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken)) 1827 return builder 1828 } 1829 1830 // 1831 // 1832 // 示例值:10 1833 func (builder *ListDataSourceReqBuilder) PageSize(pageSize int) *ListDataSourceReqBuilder { 1834 builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize)) 1835 return builder 1836 } 1837 1838 func (builder *ListDataSourceReqBuilder) Build() *ListDataSourceReq { 1839 req := &ListDataSourceReq{} 1840 req.apiReq = &larkcore.ApiReq{} 1841 req.Limit = builder.limit 1842 req.apiReq.QueryParams = builder.apiReq.QueryParams 1843 return req 1844 } 1845 1846 type ListDataSourceReq struct { 1847 apiReq *larkcore.ApiReq 1848 Limit int // 最多返回多少记录,只有在使用迭代器访问时,才有效 1849 1850 } 1851 1852 type ListDataSourceRespData struct { 1853 HasMore *bool `json:"has_more,omitempty"` // 是否有更多数据 1854 PageToken *string `json:"page_token,omitempty"` // 取数据的凭证 1855 Items []*DataSource `json:"items,omitempty"` // 数据源中的数据记录 1856 } 1857 1858 type ListDataSourceResp struct { 1859 *larkcore.ApiResp `json:"-"` 1860 larkcore.CodeError 1861 Data *ListDataSourceRespData `json:"data"` // 业务数据 1862 } 1863 1864 func (resp *ListDataSourceResp) Success() bool { 1865 return resp.Code == 0 1866 } 1867 1868 type PatchDataSourceReqBodyBuilder struct { 1869 name string // 数据源的展示名称 1870 nameFlag bool 1871 state int // 数据源状态,0-已上线,1-未上线 1872 stateFlag bool 1873 description string // 对于数据源的描述 1874 descriptionFlag bool 1875 iconUrl string // 数据源在 search tab 上的展示图标路径 1876 iconUrlFlag bool 1877 i18nName *I18nMeta // 数据源名称多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"测试数据源", "en_us":"Test DataSource"} 1878 i18nNameFlag bool 1879 i18nDescription *I18nMeta // 数据源描述多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"搜索测试数据源相关数据", "en_us":"Search data from Test DataSource"} 1880 i18nDescriptionFlag bool 1881 } 1882 1883 func NewPatchDataSourceReqBodyBuilder() *PatchDataSourceReqBodyBuilder { 1884 builder := &PatchDataSourceReqBodyBuilder{} 1885 return builder 1886 } 1887 1888 // 数据源的展示名称 1889 // 1890 //示例值:客服工单 1891 func (builder *PatchDataSourceReqBodyBuilder) Name(name string) *PatchDataSourceReqBodyBuilder { 1892 builder.name = name 1893 builder.nameFlag = true 1894 return builder 1895 } 1896 1897 // 数据源状态,0-已上线,1-未上线 1898 // 1899 //示例值:0 1900 func (builder *PatchDataSourceReqBodyBuilder) State(state int) *PatchDataSourceReqBodyBuilder { 1901 builder.state = state 1902 builder.stateFlag = true 1903 return builder 1904 } 1905 1906 // 对于数据源的描述 1907 // 1908 //示例值:搜索客服工单 1909 func (builder *PatchDataSourceReqBodyBuilder) Description(description string) *PatchDataSourceReqBodyBuilder { 1910 builder.description = description 1911 builder.descriptionFlag = true 1912 return builder 1913 } 1914 1915 // 数据源在 search tab 上的展示图标路径 1916 // 1917 //示例值:https://www.xxx.com/open.jpg 1918 func (builder *PatchDataSourceReqBodyBuilder) IconUrl(iconUrl string) *PatchDataSourceReqBodyBuilder { 1919 builder.iconUrl = iconUrl 1920 builder.iconUrlFlag = true 1921 return builder 1922 } 1923 1924 // 数据源名称多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"测试数据源", "en_us":"Test DataSource"} 1925 // 1926 //示例值: 1927 func (builder *PatchDataSourceReqBodyBuilder) I18nName(i18nName *I18nMeta) *PatchDataSourceReqBodyBuilder { 1928 builder.i18nName = i18nName 1929 builder.i18nNameFlag = true 1930 return builder 1931 } 1932 1933 // 数据源描述多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"搜索测试数据源相关数据", "en_us":"Search data from Test DataSource"} 1934 // 1935 //示例值: 1936 func (builder *PatchDataSourceReqBodyBuilder) I18nDescription(i18nDescription *I18nMeta) *PatchDataSourceReqBodyBuilder { 1937 builder.i18nDescription = i18nDescription 1938 builder.i18nDescriptionFlag = true 1939 return builder 1940 } 1941 1942 func (builder *PatchDataSourceReqBodyBuilder) Build() *PatchDataSourceReqBody { 1943 req := &PatchDataSourceReqBody{} 1944 if builder.nameFlag { 1945 req.Name = &builder.name 1946 } 1947 if builder.stateFlag { 1948 req.State = &builder.state 1949 } 1950 if builder.descriptionFlag { 1951 req.Description = &builder.description 1952 } 1953 if builder.iconUrlFlag { 1954 req.IconUrl = &builder.iconUrl 1955 } 1956 if builder.i18nNameFlag { 1957 req.I18nName = builder.i18nName 1958 } 1959 if builder.i18nDescriptionFlag { 1960 req.I18nDescription = builder.i18nDescription 1961 } 1962 return req 1963 } 1964 1965 type PatchDataSourcePathReqBodyBuilder struct { 1966 name string // 数据源的展示名称 1967 nameFlag bool 1968 state int // 数据源状态,0-已上线,1-未上线 1969 stateFlag bool 1970 description string // 对于数据源的描述 1971 descriptionFlag bool 1972 iconUrl string // 数据源在 search tab 上的展示图标路径 1973 iconUrlFlag bool 1974 i18nName *I18nMeta // 数据源名称多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"测试数据源", "en_us":"Test DataSource"} 1975 i18nNameFlag bool 1976 i18nDescription *I18nMeta // 数据源描述多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"搜索测试数据源相关数据", "en_us":"Search data from Test DataSource"} 1977 i18nDescriptionFlag bool 1978 } 1979 1980 func NewPatchDataSourcePathReqBodyBuilder() *PatchDataSourcePathReqBodyBuilder { 1981 builder := &PatchDataSourcePathReqBodyBuilder{} 1982 return builder 1983 } 1984 1985 // 数据源的展示名称 1986 // 1987 // 示例值:客服工单 1988 func (builder *PatchDataSourcePathReqBodyBuilder) Name(name string) *PatchDataSourcePathReqBodyBuilder { 1989 builder.name = name 1990 builder.nameFlag = true 1991 return builder 1992 } 1993 1994 // 数据源状态,0-已上线,1-未上线 1995 // 1996 // 示例值:0 1997 func (builder *PatchDataSourcePathReqBodyBuilder) State(state int) *PatchDataSourcePathReqBodyBuilder { 1998 builder.state = state 1999 builder.stateFlag = true 2000 return builder 2001 } 2002 2003 // 对于数据源的描述 2004 // 2005 // 示例值:搜索客服工单 2006 func (builder *PatchDataSourcePathReqBodyBuilder) Description(description string) *PatchDataSourcePathReqBodyBuilder { 2007 builder.description = description 2008 builder.descriptionFlag = true 2009 return builder 2010 } 2011 2012 // 数据源在 search tab 上的展示图标路径 2013 // 2014 // 示例值:https://www.xxx.com/open.jpg 2015 func (builder *PatchDataSourcePathReqBodyBuilder) IconUrl(iconUrl string) *PatchDataSourcePathReqBodyBuilder { 2016 builder.iconUrl = iconUrl 2017 builder.iconUrlFlag = true 2018 return builder 2019 } 2020 2021 // 数据源名称多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"测试数据源", "en_us":"Test DataSource"} 2022 // 2023 // 示例值: 2024 func (builder *PatchDataSourcePathReqBodyBuilder) I18nName(i18nName *I18nMeta) *PatchDataSourcePathReqBodyBuilder { 2025 builder.i18nName = i18nName 2026 builder.i18nNameFlag = true 2027 return builder 2028 } 2029 2030 // 数据源描述多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"搜索测试数据源相关数据", "en_us":"Search data from Test DataSource"} 2031 // 2032 // 示例值: 2033 func (builder *PatchDataSourcePathReqBodyBuilder) I18nDescription(i18nDescription *I18nMeta) *PatchDataSourcePathReqBodyBuilder { 2034 builder.i18nDescription = i18nDescription 2035 builder.i18nDescriptionFlag = true 2036 return builder 2037 } 2038 2039 func (builder *PatchDataSourcePathReqBodyBuilder) Build() (*PatchDataSourceReqBody, error) { 2040 req := &PatchDataSourceReqBody{} 2041 if builder.nameFlag { 2042 req.Name = &builder.name 2043 } 2044 if builder.stateFlag { 2045 req.State = &builder.state 2046 } 2047 if builder.descriptionFlag { 2048 req.Description = &builder.description 2049 } 2050 if builder.iconUrlFlag { 2051 req.IconUrl = &builder.iconUrl 2052 } 2053 if builder.i18nNameFlag { 2054 req.I18nName = builder.i18nName 2055 } 2056 if builder.i18nDescriptionFlag { 2057 req.I18nDescription = builder.i18nDescription 2058 } 2059 return req, nil 2060 } 2061 2062 type PatchDataSourceReqBuilder struct { 2063 apiReq *larkcore.ApiReq 2064 body *PatchDataSourceReqBody 2065 } 2066 2067 func NewPatchDataSourceReqBuilder() *PatchDataSourceReqBuilder { 2068 builder := &PatchDataSourceReqBuilder{} 2069 builder.apiReq = &larkcore.ApiReq{ 2070 PathParams: larkcore.PathParams{}, 2071 QueryParams: larkcore.QueryParams{}, 2072 } 2073 return builder 2074 } 2075 2076 // 数据源的唯一标识 2077 // 2078 // 示例值:service_ticket 2079 func (builder *PatchDataSourceReqBuilder) DataSourceId(dataSourceId string) *PatchDataSourceReqBuilder { 2080 builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId)) 2081 return builder 2082 } 2083 2084 // 更新一个已经存在的数据源 2085 func (builder *PatchDataSourceReqBuilder) Body(body *PatchDataSourceReqBody) *PatchDataSourceReqBuilder { 2086 builder.body = body 2087 return builder 2088 } 2089 2090 func (builder *PatchDataSourceReqBuilder) Build() *PatchDataSourceReq { 2091 req := &PatchDataSourceReq{} 2092 req.apiReq = &larkcore.ApiReq{} 2093 req.apiReq.PathParams = builder.apiReq.PathParams 2094 req.apiReq.Body = builder.body 2095 return req 2096 } 2097 2098 type PatchDataSourceReqBody struct { 2099 Name *string `json:"name,omitempty"` // 数据源的展示名称 2100 State *int `json:"state,omitempty"` // 数据源状态,0-已上线,1-未上线 2101 Description *string `json:"description,omitempty"` // 对于数据源的描述 2102 IconUrl *string `json:"icon_url,omitempty"` // 数据源在 search tab 上的展示图标路径 2103 I18nName *I18nMeta `json:"i18n_name,omitempty"` // 数据源名称多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"测试数据源", "en_us":"Test DataSource"} 2104 I18nDescription *I18nMeta `json:"i18n_description,omitempty"` // 数据源描述多语言配置,json格式,key为语言locale,value为对应文案,例如{"zh_cn":"搜索测试数据源相关数据", "en_us":"Search data from Test DataSource"} 2105 } 2106 2107 type PatchDataSourceReq struct { 2108 apiReq *larkcore.ApiReq 2109 Body *PatchDataSourceReqBody `body:""` 2110 } 2111 2112 type PatchDataSourceRespData struct { 2113 DataSource *DataSource `json:"data_source,omitempty"` // 数据源 2114 } 2115 2116 type PatchDataSourceResp struct { 2117 *larkcore.ApiResp `json:"-"` 2118 larkcore.CodeError 2119 Data *PatchDataSourceRespData `json:"data"` // 业务数据 2120 } 2121 2122 func (resp *PatchDataSourceResp) Success() bool { 2123 return resp.Code == 0 2124 } 2125 2126 type CreateDataSourceItemReqBuilder struct { 2127 apiReq *larkcore.ApiReq 2128 item *Item 2129 } 2130 2131 func NewCreateDataSourceItemReqBuilder() *CreateDataSourceItemReqBuilder { 2132 builder := &CreateDataSourceItemReqBuilder{} 2133 builder.apiReq = &larkcore.ApiReq{ 2134 PathParams: larkcore.PathParams{}, 2135 QueryParams: larkcore.QueryParams{}, 2136 } 2137 return builder 2138 } 2139 2140 // 数据源的ID 2141 // 2142 // 示例值:service_ticket 2143 func (builder *CreateDataSourceItemReqBuilder) DataSourceId(dataSourceId string) *CreateDataSourceItemReqBuilder { 2144 builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId)) 2145 return builder 2146 } 2147 2148 // 索引一条数据记录 2149 func (builder *CreateDataSourceItemReqBuilder) Item(item *Item) *CreateDataSourceItemReqBuilder { 2150 builder.item = item 2151 return builder 2152 } 2153 2154 func (builder *CreateDataSourceItemReqBuilder) Build() *CreateDataSourceItemReq { 2155 req := &CreateDataSourceItemReq{} 2156 req.apiReq = &larkcore.ApiReq{} 2157 req.apiReq.PathParams = builder.apiReq.PathParams 2158 req.apiReq.Body = builder.item 2159 return req 2160 } 2161 2162 type CreateDataSourceItemReq struct { 2163 apiReq *larkcore.ApiReq 2164 Item *Item `body:""` 2165 } 2166 2167 type CreateDataSourceItemResp struct { 2168 *larkcore.ApiResp `json:"-"` 2169 larkcore.CodeError 2170 } 2171 2172 func (resp *CreateDataSourceItemResp) Success() bool { 2173 return resp.Code == 0 2174 } 2175 2176 type DeleteDataSourceItemReqBuilder struct { 2177 apiReq *larkcore.ApiReq 2178 } 2179 2180 func NewDeleteDataSourceItemReqBuilder() *DeleteDataSourceItemReqBuilder { 2181 builder := &DeleteDataSourceItemReqBuilder{} 2182 builder.apiReq = &larkcore.ApiReq{ 2183 PathParams: larkcore.PathParams{}, 2184 QueryParams: larkcore.QueryParams{}, 2185 } 2186 return builder 2187 } 2188 2189 // 数据源的ID 2190 // 2191 // 示例值:service_ticket 2192 func (builder *DeleteDataSourceItemReqBuilder) DataSourceId(dataSourceId string) *DeleteDataSourceItemReqBuilder { 2193 builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId)) 2194 return builder 2195 } 2196 2197 // 数据记录的ID 2198 // 2199 // 示例值:01010111 2200 func (builder *DeleteDataSourceItemReqBuilder) ItemId(itemId string) *DeleteDataSourceItemReqBuilder { 2201 builder.apiReq.PathParams.Set("item_id", fmt.Sprint(itemId)) 2202 return builder 2203 } 2204 2205 func (builder *DeleteDataSourceItemReqBuilder) Build() *DeleteDataSourceItemReq { 2206 req := &DeleteDataSourceItemReq{} 2207 req.apiReq = &larkcore.ApiReq{} 2208 req.apiReq.PathParams = builder.apiReq.PathParams 2209 return req 2210 } 2211 2212 type DeleteDataSourceItemReq struct { 2213 apiReq *larkcore.ApiReq 2214 } 2215 2216 type DeleteDataSourceItemResp struct { 2217 *larkcore.ApiResp `json:"-"` 2218 larkcore.CodeError 2219 } 2220 2221 func (resp *DeleteDataSourceItemResp) Success() bool { 2222 return resp.Code == 0 2223 } 2224 2225 type GetDataSourceItemReqBuilder struct { 2226 apiReq *larkcore.ApiReq 2227 } 2228 2229 func NewGetDataSourceItemReqBuilder() *GetDataSourceItemReqBuilder { 2230 builder := &GetDataSourceItemReqBuilder{} 2231 builder.apiReq = &larkcore.ApiReq{ 2232 PathParams: larkcore.PathParams{}, 2233 QueryParams: larkcore.QueryParams{}, 2234 } 2235 return builder 2236 } 2237 2238 // 数据源的id 2239 // 2240 // 示例值:service_ticket 2241 func (builder *GetDataSourceItemReqBuilder) DataSourceId(dataSourceId string) *GetDataSourceItemReqBuilder { 2242 builder.apiReq.PathParams.Set("data_source_id", fmt.Sprint(dataSourceId)) 2243 return builder 2244 } 2245 2246 // 数据记录的唯一标识 2247 // 2248 // 示例值:01010111 2249 func (builder *GetDataSourceItemReqBuilder) ItemId(itemId string) *GetDataSourceItemReqBuilder { 2250 builder.apiReq.PathParams.Set("item_id", fmt.Sprint(itemId)) 2251 return builder 2252 } 2253 2254 func (builder *GetDataSourceItemReqBuilder) Build() *GetDataSourceItemReq { 2255 req := &GetDataSourceItemReq{} 2256 req.apiReq = &larkcore.ApiReq{} 2257 req.apiReq.PathParams = builder.apiReq.PathParams 2258 return req 2259 } 2260 2261 type GetDataSourceItemReq struct { 2262 apiReq *larkcore.ApiReq 2263 } 2264 2265 type GetDataSourceItemRespData struct { 2266 Item *Item `json:"item,omitempty"` // 数据项实例 2267 } 2268 2269 type GetDataSourceItemResp struct { 2270 *larkcore.ApiResp `json:"-"` 2271 larkcore.CodeError 2272 Data *GetDataSourceItemRespData `json:"data"` // 业务数据 2273 } 2274 2275 func (resp *GetDataSourceItemResp) Success() bool { 2276 return resp.Code == 0 2277 } 2278 2279 type CreateSchemaReqBuilder struct { 2280 apiReq *larkcore.ApiReq 2281 schema *Schema 2282 } 2283 2284 func NewCreateSchemaReqBuilder() *CreateSchemaReqBuilder { 2285 builder := &CreateSchemaReqBuilder{} 2286 builder.apiReq = &larkcore.ApiReq{ 2287 PathParams: larkcore.PathParams{}, 2288 QueryParams: larkcore.QueryParams{}, 2289 } 2290 return builder 2291 } 2292 2293 // 是否只用来校验合法性 2294 // 2295 // 示例值:true 2296 func (builder *CreateSchemaReqBuilder) ValidateOnly(validateOnly bool) *CreateSchemaReqBuilder { 2297 builder.apiReq.QueryParams.Set("validate_only", fmt.Sprint(validateOnly)) 2298 return builder 2299 } 2300 2301 // 创建一个数据源 2302 func (builder *CreateSchemaReqBuilder) Schema(schema *Schema) *CreateSchemaReqBuilder { 2303 builder.schema = schema 2304 return builder 2305 } 2306 2307 func (builder *CreateSchemaReqBuilder) Build() *CreateSchemaReq { 2308 req := &CreateSchemaReq{} 2309 req.apiReq = &larkcore.ApiReq{} 2310 req.apiReq.QueryParams = builder.apiReq.QueryParams 2311 req.apiReq.Body = builder.schema 2312 return req 2313 } 2314 2315 type CreateSchemaReq struct { 2316 apiReq *larkcore.ApiReq 2317 Schema *Schema `body:""` 2318 } 2319 2320 type CreateSchemaRespData struct { 2321 Schema *Schema `json:"schema,omitempty"` // 数据范式实例 2322 } 2323 2324 type CreateSchemaResp struct { 2325 *larkcore.ApiResp `json:"-"` 2326 larkcore.CodeError 2327 Data *CreateSchemaRespData `json:"data"` // 业务数据 2328 } 2329 2330 func (resp *CreateSchemaResp) Success() bool { 2331 return resp.Code == 0 2332 } 2333 2334 type DeleteSchemaReqBuilder struct { 2335 apiReq *larkcore.ApiReq 2336 } 2337 2338 func NewDeleteSchemaReqBuilder() *DeleteSchemaReqBuilder { 2339 builder := &DeleteSchemaReqBuilder{} 2340 builder.apiReq = &larkcore.ApiReq{ 2341 PathParams: larkcore.PathParams{}, 2342 QueryParams: larkcore.QueryParams{}, 2343 } 2344 return builder 2345 } 2346 2347 // 用户自定义数据范式的唯一标识 2348 // 2349 // 示例值:custom_schema_id 2350 func (builder *DeleteSchemaReqBuilder) SchemaId(schemaId string) *DeleteSchemaReqBuilder { 2351 builder.apiReq.PathParams.Set("schema_id", fmt.Sprint(schemaId)) 2352 return builder 2353 } 2354 2355 func (builder *DeleteSchemaReqBuilder) Build() *DeleteSchemaReq { 2356 req := &DeleteSchemaReq{} 2357 req.apiReq = &larkcore.ApiReq{} 2358 req.apiReq.PathParams = builder.apiReq.PathParams 2359 return req 2360 } 2361 2362 type DeleteSchemaReq struct { 2363 apiReq *larkcore.ApiReq 2364 } 2365 2366 type DeleteSchemaResp struct { 2367 *larkcore.ApiResp `json:"-"` 2368 larkcore.CodeError 2369 } 2370 2371 func (resp *DeleteSchemaResp) Success() bool { 2372 return resp.Code == 0 2373 } 2374 2375 type GetSchemaReqBuilder struct { 2376 apiReq *larkcore.ApiReq 2377 } 2378 2379 func NewGetSchemaReqBuilder() *GetSchemaReqBuilder { 2380 builder := &GetSchemaReqBuilder{} 2381 builder.apiReq = &larkcore.ApiReq{ 2382 PathParams: larkcore.PathParams{}, 2383 QueryParams: larkcore.QueryParams{}, 2384 } 2385 return builder 2386 } 2387 2388 // 用户自定义数据范式的唯一标识 2389 // 2390 // 示例值:custom_schema_id 2391 func (builder *GetSchemaReqBuilder) SchemaId(schemaId string) *GetSchemaReqBuilder { 2392 builder.apiReq.PathParams.Set("schema_id", fmt.Sprint(schemaId)) 2393 return builder 2394 } 2395 2396 func (builder *GetSchemaReqBuilder) Build() *GetSchemaReq { 2397 req := &GetSchemaReq{} 2398 req.apiReq = &larkcore.ApiReq{} 2399 req.apiReq.PathParams = builder.apiReq.PathParams 2400 return req 2401 } 2402 2403 type GetSchemaReq struct { 2404 apiReq *larkcore.ApiReq 2405 } 2406 2407 type GetSchemaRespData struct { 2408 Schema *Schema `json:"schema,omitempty"` // 数据范式 2409 } 2410 2411 type GetSchemaResp struct { 2412 *larkcore.ApiResp `json:"-"` 2413 larkcore.CodeError 2414 Data *GetSchemaRespData `json:"data"` // 业务数据 2415 } 2416 2417 func (resp *GetSchemaResp) Success() bool { 2418 return resp.Code == 0 2419 } 2420 2421 type PatchSchemaReqBodyBuilder struct { 2422 display *SchemaDisplay // 数据展示相关配置 2423 displayFlag bool 2424 } 2425 2426 func NewPatchSchemaReqBodyBuilder() *PatchSchemaReqBodyBuilder { 2427 builder := &PatchSchemaReqBodyBuilder{} 2428 return builder 2429 } 2430 2431 // 数据展示相关配置 2432 // 2433 //示例值: 2434 func (builder *PatchSchemaReqBodyBuilder) Display(display *SchemaDisplay) *PatchSchemaReqBodyBuilder { 2435 builder.display = display 2436 builder.displayFlag = true 2437 return builder 2438 } 2439 2440 func (builder *PatchSchemaReqBodyBuilder) Build() *PatchSchemaReqBody { 2441 req := &PatchSchemaReqBody{} 2442 if builder.displayFlag { 2443 req.Display = builder.display 2444 } 2445 return req 2446 } 2447 2448 type PatchSchemaPathReqBodyBuilder struct { 2449 display *SchemaDisplay // 数据展示相关配置 2450 displayFlag bool 2451 } 2452 2453 func NewPatchSchemaPathReqBodyBuilder() *PatchSchemaPathReqBodyBuilder { 2454 builder := &PatchSchemaPathReqBodyBuilder{} 2455 return builder 2456 } 2457 2458 // 数据展示相关配置 2459 // 2460 // 示例值: 2461 func (builder *PatchSchemaPathReqBodyBuilder) Display(display *SchemaDisplay) *PatchSchemaPathReqBodyBuilder { 2462 builder.display = display 2463 builder.displayFlag = true 2464 return builder 2465 } 2466 2467 func (builder *PatchSchemaPathReqBodyBuilder) Build() (*PatchSchemaReqBody, error) { 2468 req := &PatchSchemaReqBody{} 2469 if builder.displayFlag { 2470 req.Display = builder.display 2471 } 2472 return req, nil 2473 } 2474 2475 type PatchSchemaReqBuilder struct { 2476 apiReq *larkcore.ApiReq 2477 body *PatchSchemaReqBody 2478 } 2479 2480 func NewPatchSchemaReqBuilder() *PatchSchemaReqBuilder { 2481 builder := &PatchSchemaReqBuilder{} 2482 builder.apiReq = &larkcore.ApiReq{ 2483 PathParams: larkcore.PathParams{}, 2484 QueryParams: larkcore.QueryParams{}, 2485 } 2486 return builder 2487 } 2488 2489 // 用户自定义数据范式的唯一标识 2490 // 2491 // 示例值:custom_schema_id 2492 func (builder *PatchSchemaReqBuilder) SchemaId(schemaId string) *PatchSchemaReqBuilder { 2493 builder.apiReq.PathParams.Set("schema_id", fmt.Sprint(schemaId)) 2494 return builder 2495 } 2496 2497 // 修改数据范式 2498 func (builder *PatchSchemaReqBuilder) Body(body *PatchSchemaReqBody) *PatchSchemaReqBuilder { 2499 builder.body = body 2500 return builder 2501 } 2502 2503 func (builder *PatchSchemaReqBuilder) Build() *PatchSchemaReq { 2504 req := &PatchSchemaReq{} 2505 req.apiReq = &larkcore.ApiReq{} 2506 req.apiReq.PathParams = builder.apiReq.PathParams 2507 req.apiReq.Body = builder.body 2508 return req 2509 } 2510 2511 type PatchSchemaReqBody struct { 2512 Display *SchemaDisplay `json:"display,omitempty"` // 数据展示相关配置 2513 } 2514 2515 type PatchSchemaReq struct { 2516 apiReq *larkcore.ApiReq 2517 Body *PatchSchemaReqBody `body:""` 2518 } 2519 2520 type PatchSchemaRespData struct { 2521 Schema *Schema `json:"schema,omitempty"` // 数据范式实例 2522 } 2523 2524 type PatchSchemaResp struct { 2525 *larkcore.ApiResp `json:"-"` 2526 larkcore.CodeError 2527 Data *PatchSchemaRespData `json:"data"` // 业务数据 2528 } 2529 2530 func (resp *PatchSchemaResp) Success() bool { 2531 return resp.Code == 0 2532 } 2533 2534 type ListDataSourceIterator struct { 2535 nextPageToken *string 2536 items []*DataSource 2537 index int 2538 limit int 2539 ctx context.Context 2540 req *ListDataSourceReq 2541 listFunc func(ctx context.Context, req *ListDataSourceReq, options ...larkcore.RequestOptionFunc) (*ListDataSourceResp, error) 2542 options []larkcore.RequestOptionFunc 2543 curlNum int 2544 } 2545 2546 func (iterator *ListDataSourceIterator) Next() (bool, *DataSource, error) { 2547 // 达到最大量,则返回 2548 if iterator.limit > 0 && iterator.curlNum >= iterator.limit { 2549 return false, nil, nil 2550 } 2551 2552 // 为0则拉取数据 2553 if iterator.index == 0 || iterator.index >= len(iterator.items) { 2554 if iterator.index != 0 && iterator.nextPageToken == nil { 2555 return false, nil, nil 2556 } 2557 if iterator.nextPageToken != nil { 2558 iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken) 2559 } 2560 resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...) 2561 if err != nil { 2562 return false, nil, err 2563 } 2564 2565 if resp.Code != 0 { 2566 return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg)) 2567 } 2568 2569 if len(resp.Data.Items) == 0 { 2570 return false, nil, nil 2571 } 2572 2573 iterator.nextPageToken = resp.Data.PageToken 2574 iterator.items = resp.Data.Items 2575 iterator.index = 0 2576 } 2577 2578 block := iterator.items[iterator.index] 2579 iterator.index++ 2580 iterator.curlNum++ 2581 return true, block, nil 2582 } 2583 2584 func (iterator *ListDataSourceIterator) NextPageToken() *string { 2585 return iterator.nextPageToken 2586 }