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

     1  // Package bitable 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 larkbitable
    15  
    16  import (
    17  	"context"
    18  	"net/http"
    19  
    20  	"gitee.com/larksuite/oapi-sdk-go/v3/core"
    21  )
    22  
    23  func NewService(config *larkcore.Config) *BitableService {
    24  	b := &BitableService{config: config}
    25  	b.App = &app{service: b}
    26  	b.AppDashboard = &appDashboard{service: b}
    27  	b.AppRole = &appRole{service: b}
    28  	b.AppRoleMember = &appRoleMember{service: b}
    29  	b.AppTable = &appTable{service: b}
    30  	b.AppTableField = &appTableField{service: b}
    31  	b.AppTableForm = &appTableForm{service: b}
    32  	b.AppTableFormField = &appTableFormField{service: b}
    33  	b.AppTableRecord = &appTableRecord{service: b}
    34  	b.AppTableView = &appTableView{service: b}
    35  	return b
    36  }
    37  
    38  type BitableService struct {
    39  	config            *larkcore.Config
    40  	App               *app               // 多维表格
    41  	AppDashboard      *appDashboard      // 仪表盘
    42  	AppRole           *appRole           // 自定义角色
    43  	AppRoleMember     *appRoleMember     // 协作者
    44  	AppTable          *appTable          // 数据表
    45  	AppTableField     *appTableField     // 字段
    46  	AppTableForm      *appTableForm      // 表单
    47  	AppTableFormField *appTableFormField // 表单
    48  	AppTableRecord    *appTableRecord    // 记录
    49  	AppTableView      *appTableView      // 视图
    50  }
    51  
    52  type app struct {
    53  	service *BitableService
    54  }
    55  type appDashboard struct {
    56  	service *BitableService
    57  }
    58  type appRole struct {
    59  	service *BitableService
    60  }
    61  type appRoleMember struct {
    62  	service *BitableService
    63  }
    64  type appTable struct {
    65  	service *BitableService
    66  }
    67  type appTableField struct {
    68  	service *BitableService
    69  }
    70  type appTableForm struct {
    71  	service *BitableService
    72  }
    73  type appTableFormField struct {
    74  	service *BitableService
    75  }
    76  type appTableRecord struct {
    77  	service *BitableService
    78  }
    79  type appTableView struct {
    80  	service *BitableService
    81  }
    82  
    83  // 获取多维表格元数据
    84  //
    85  // - 通过 app_token 获取多维表格元数据
    86  //
    87  // - 该接口支持调用频率上限为 20 QPS
    88  //
    89  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app/get
    90  //
    91  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/get_app.go
    92  func (a *app) Get(ctx context.Context, req *GetAppReq, options ...larkcore.RequestOptionFunc) (*GetAppResp, error) {
    93  	// 发起请求
    94  	apiReq := req.apiReq
    95  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token"
    96  	apiReq.HttpMethod = http.MethodGet
    97  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
    98  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
    99  	if err != nil {
   100  		return nil, err
   101  	}
   102  	// 反序列响应结果
   103  	resp := &GetAppResp{ApiResp: apiResp}
   104  	err = apiResp.JSONUnmarshalBody(resp)
   105  	if err != nil {
   106  		return nil, err
   107  	}
   108  	return resp, err
   109  }
   110  
   111  // 更新多维表格元数据
   112  //
   113  // - 通过 app_token 更新多维表格元数据
   114  //
   115  // - - 飞书文档、飞书表格、知识库中的多维表格不支持开启高级权限;- 此接口非原子操作,先修改多维表格名字,后开关高级权限。可能存在部分成功的情况
   116  //
   117  // - 该接口支持调用频率上限为 10 QPS
   118  //
   119  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app/update
   120  //
   121  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/update_app.go
   122  func (a *app) Update(ctx context.Context, req *UpdateAppReq, options ...larkcore.RequestOptionFunc) (*UpdateAppResp, error) {
   123  	// 发起请求
   124  	apiReq := req.apiReq
   125  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token"
   126  	apiReq.HttpMethod = http.MethodPut
   127  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   128  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   129  	if err != nil {
   130  		return nil, err
   131  	}
   132  	// 反序列响应结果
   133  	resp := &UpdateAppResp{ApiResp: apiResp}
   134  	err = apiResp.JSONUnmarshalBody(resp)
   135  	if err != nil {
   136  		return nil, err
   137  	}
   138  	return resp, err
   139  }
   140  
   141  // 列出仪表盘
   142  //
   143  // - 根据 app_token,获取多维表格下的所有仪表盘
   144  //
   145  // - 该接口支持调用频率上限为 20 QPS
   146  //
   147  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-dashboard/list
   148  //
   149  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/list_appDashboard.go
   150  func (a *appDashboard) List(ctx context.Context, req *ListAppDashboardReq, options ...larkcore.RequestOptionFunc) (*ListAppDashboardResp, error) {
   151  	// 发起请求
   152  	apiReq := req.apiReq
   153  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/dashboards"
   154  	apiReq.HttpMethod = http.MethodGet
   155  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   156  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   157  	if err != nil {
   158  		return nil, err
   159  	}
   160  	// 反序列响应结果
   161  	resp := &ListAppDashboardResp{ApiResp: apiResp}
   162  	err = apiResp.JSONUnmarshalBody(resp)
   163  	if err != nil {
   164  		return nil, err
   165  	}
   166  	return resp, err
   167  }
   168  func (a *appDashboard) ListByIterator(ctx context.Context, req *ListAppDashboardReq, options ...larkcore.RequestOptionFunc) (*ListAppDashboardIterator, error) {
   169  	return &ListAppDashboardIterator{
   170  		ctx:      ctx,
   171  		req:      req,
   172  		listFunc: a.List,
   173  		options:  options,
   174  		limit:    req.Limit}, nil
   175  }
   176  
   177  // 新增自定义角色
   178  //
   179  // - 新增自定义角色
   180  //
   181  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-role/create
   182  //
   183  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/create_appRole.go
   184  func (a *appRole) Create(ctx context.Context, req *CreateAppRoleReq, options ...larkcore.RequestOptionFunc) (*CreateAppRoleResp, error) {
   185  	// 发起请求
   186  	apiReq := req.apiReq
   187  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/roles"
   188  	apiReq.HttpMethod = http.MethodPost
   189  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   190  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   191  	if err != nil {
   192  		return nil, err
   193  	}
   194  	// 反序列响应结果
   195  	resp := &CreateAppRoleResp{ApiResp: apiResp}
   196  	err = apiResp.JSONUnmarshalBody(resp)
   197  	if err != nil {
   198  		return nil, err
   199  	}
   200  	return resp, err
   201  }
   202  
   203  // 删除自定义角色
   204  //
   205  // - 删除自定义角色
   206  //
   207  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-role/delete
   208  //
   209  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/delete_appRole.go
   210  func (a *appRole) Delete(ctx context.Context, req *DeleteAppRoleReq, options ...larkcore.RequestOptionFunc) (*DeleteAppRoleResp, error) {
   211  	// 发起请求
   212  	apiReq := req.apiReq
   213  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/roles/:role_id"
   214  	apiReq.HttpMethod = http.MethodDelete
   215  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   216  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   217  	if err != nil {
   218  		return nil, err
   219  	}
   220  	// 反序列响应结果
   221  	resp := &DeleteAppRoleResp{ApiResp: apiResp}
   222  	err = apiResp.JSONUnmarshalBody(resp)
   223  	if err != nil {
   224  		return nil, err
   225  	}
   226  	return resp, err
   227  }
   228  
   229  // 列出自定义角色
   230  //
   231  // - 列出自定义角色
   232  //
   233  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-role/list
   234  //
   235  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/list_appRole.go
   236  func (a *appRole) List(ctx context.Context, req *ListAppRoleReq, options ...larkcore.RequestOptionFunc) (*ListAppRoleResp, error) {
   237  	// 发起请求
   238  	apiReq := req.apiReq
   239  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/roles"
   240  	apiReq.HttpMethod = http.MethodGet
   241  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   242  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   243  	if err != nil {
   244  		return nil, err
   245  	}
   246  	// 反序列响应结果
   247  	resp := &ListAppRoleResp{ApiResp: apiResp}
   248  	err = apiResp.JSONUnmarshalBody(resp)
   249  	if err != nil {
   250  		return nil, err
   251  	}
   252  	return resp, err
   253  }
   254  func (a *appRole) ListByIterator(ctx context.Context, req *ListAppRoleReq, options ...larkcore.RequestOptionFunc) (*ListAppRoleIterator, error) {
   255  	return &ListAppRoleIterator{
   256  		ctx:      ctx,
   257  		req:      req,
   258  		listFunc: a.List,
   259  		options:  options,
   260  		limit:    req.Limit}, nil
   261  }
   262  
   263  // 更新自定义角色
   264  //
   265  // - 更新自定义角色
   266  //
   267  // - 更新自定义角色是全量更新,会完全覆盖旧的自定义角色设置
   268  //
   269  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-role/update
   270  //
   271  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/update_appRole.go
   272  func (a *appRole) Update(ctx context.Context, req *UpdateAppRoleReq, options ...larkcore.RequestOptionFunc) (*UpdateAppRoleResp, error) {
   273  	// 发起请求
   274  	apiReq := req.apiReq
   275  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/roles/:role_id"
   276  	apiReq.HttpMethod = http.MethodPut
   277  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   278  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   279  	if err != nil {
   280  		return nil, err
   281  	}
   282  	// 反序列响应结果
   283  	resp := &UpdateAppRoleResp{ApiResp: apiResp}
   284  	err = apiResp.JSONUnmarshalBody(resp)
   285  	if err != nil {
   286  		return nil, err
   287  	}
   288  	return resp, err
   289  }
   290  
   291  // 批量新增协作者
   292  //
   293  // - 批量新增自定义角色的协作者
   294  //
   295  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-role-member/batch_create
   296  //
   297  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/batchCreate_appRoleMember.go
   298  func (a *appRoleMember) BatchCreate(ctx context.Context, req *BatchCreateAppRoleMemberReq, options ...larkcore.RequestOptionFunc) (*BatchCreateAppRoleMemberResp, error) {
   299  	// 发起请求
   300  	apiReq := req.apiReq
   301  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/roles/:role_id/members/batch_create"
   302  	apiReq.HttpMethod = http.MethodPost
   303  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   304  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   305  	if err != nil {
   306  		return nil, err
   307  	}
   308  	// 反序列响应结果
   309  	resp := &BatchCreateAppRoleMemberResp{ApiResp: apiResp}
   310  	err = apiResp.JSONUnmarshalBody(resp)
   311  	if err != nil {
   312  		return nil, err
   313  	}
   314  	return resp, err
   315  }
   316  
   317  // 批量删除协作者
   318  //
   319  // - 批量删除自定义角色的协作者
   320  //
   321  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-role-member/batch_delete
   322  //
   323  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/batchDelete_appRoleMember.go
   324  func (a *appRoleMember) BatchDelete(ctx context.Context, req *BatchDeleteAppRoleMemberReq, options ...larkcore.RequestOptionFunc) (*BatchDeleteAppRoleMemberResp, error) {
   325  	// 发起请求
   326  	apiReq := req.apiReq
   327  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/roles/:role_id/members/batch_delete"
   328  	apiReq.HttpMethod = http.MethodPost
   329  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   330  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   331  	if err != nil {
   332  		return nil, err
   333  	}
   334  	// 反序列响应结果
   335  	resp := &BatchDeleteAppRoleMemberResp{ApiResp: apiResp}
   336  	err = apiResp.JSONUnmarshalBody(resp)
   337  	if err != nil {
   338  		return nil, err
   339  	}
   340  	return resp, err
   341  }
   342  
   343  // 新增协作者
   344  //
   345  // - 新增自定义角色的协作者
   346  //
   347  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-role-member/create
   348  //
   349  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/create_appRoleMember.go
   350  func (a *appRoleMember) Create(ctx context.Context, req *CreateAppRoleMemberReq, options ...larkcore.RequestOptionFunc) (*CreateAppRoleMemberResp, error) {
   351  	// 发起请求
   352  	apiReq := req.apiReq
   353  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/roles/:role_id/members"
   354  	apiReq.HttpMethod = http.MethodPost
   355  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   356  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   357  	if err != nil {
   358  		return nil, err
   359  	}
   360  	// 反序列响应结果
   361  	resp := &CreateAppRoleMemberResp{ApiResp: apiResp}
   362  	err = apiResp.JSONUnmarshalBody(resp)
   363  	if err != nil {
   364  		return nil, err
   365  	}
   366  	return resp, err
   367  }
   368  
   369  // 删除协作者
   370  //
   371  // - 删除自定义角色的协作者
   372  //
   373  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-role-member/delete
   374  //
   375  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/delete_appRoleMember.go
   376  func (a *appRoleMember) Delete(ctx context.Context, req *DeleteAppRoleMemberReq, options ...larkcore.RequestOptionFunc) (*DeleteAppRoleMemberResp, error) {
   377  	// 发起请求
   378  	apiReq := req.apiReq
   379  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/roles/:role_id/members/:member_id"
   380  	apiReq.HttpMethod = http.MethodDelete
   381  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   382  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   383  	if err != nil {
   384  		return nil, err
   385  	}
   386  	// 反序列响应结果
   387  	resp := &DeleteAppRoleMemberResp{ApiResp: apiResp}
   388  	err = apiResp.JSONUnmarshalBody(resp)
   389  	if err != nil {
   390  		return nil, err
   391  	}
   392  	return resp, err
   393  }
   394  
   395  // 列出协作者
   396  //
   397  // - 列出自定义角色的协作者
   398  //
   399  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-role-member/list
   400  //
   401  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/list_appRoleMember.go
   402  func (a *appRoleMember) List(ctx context.Context, req *ListAppRoleMemberReq, options ...larkcore.RequestOptionFunc) (*ListAppRoleMemberResp, error) {
   403  	// 发起请求
   404  	apiReq := req.apiReq
   405  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/roles/:role_id/members"
   406  	apiReq.HttpMethod = http.MethodGet
   407  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   408  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   409  	if err != nil {
   410  		return nil, err
   411  	}
   412  	// 反序列响应结果
   413  	resp := &ListAppRoleMemberResp{ApiResp: apiResp}
   414  	err = apiResp.JSONUnmarshalBody(resp)
   415  	if err != nil {
   416  		return nil, err
   417  	}
   418  	return resp, err
   419  }
   420  func (a *appRoleMember) ListByIterator(ctx context.Context, req *ListAppRoleMemberReq, options ...larkcore.RequestOptionFunc) (*ListAppRoleMemberIterator, error) {
   421  	return &ListAppRoleMemberIterator{
   422  		ctx:      ctx,
   423  		req:      req,
   424  		listFunc: a.List,
   425  		options:  options,
   426  		limit:    req.Limit}, nil
   427  }
   428  
   429  // 新增多个数据表
   430  //
   431  // - 新增多个数据表
   432  //
   433  // - 该接口支持调用频率上限为 10 QPS
   434  //
   435  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table/batch_create
   436  //
   437  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/batchCreate_appTable.go
   438  func (a *appTable) BatchCreate(ctx context.Context, req *BatchCreateAppTableReq, options ...larkcore.RequestOptionFunc) (*BatchCreateAppTableResp, error) {
   439  	// 发起请求
   440  	apiReq := req.apiReq
   441  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/batch_create"
   442  	apiReq.HttpMethod = http.MethodPost
   443  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   444  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   445  	if err != nil {
   446  		return nil, err
   447  	}
   448  	// 反序列响应结果
   449  	resp := &BatchCreateAppTableResp{ApiResp: apiResp}
   450  	err = apiResp.JSONUnmarshalBody(resp)
   451  	if err != nil {
   452  		return nil, err
   453  	}
   454  	return resp, err
   455  }
   456  
   457  // 删除多个数据表
   458  //
   459  // - 删除多个数据表
   460  //
   461  // - 该接口支持调用频率上限为 10 QPS
   462  //
   463  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table/batch_delete
   464  //
   465  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/batchDelete_appTable.go
   466  func (a *appTable) BatchDelete(ctx context.Context, req *BatchDeleteAppTableReq, options ...larkcore.RequestOptionFunc) (*BatchDeleteAppTableResp, error) {
   467  	// 发起请求
   468  	apiReq := req.apiReq
   469  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/batch_delete"
   470  	apiReq.HttpMethod = http.MethodPost
   471  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   472  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   473  	if err != nil {
   474  		return nil, err
   475  	}
   476  	// 反序列响应结果
   477  	resp := &BatchDeleteAppTableResp{ApiResp: apiResp}
   478  	err = apiResp.JSONUnmarshalBody(resp)
   479  	if err != nil {
   480  		return nil, err
   481  	}
   482  	return resp, err
   483  }
   484  
   485  // 新增数据表
   486  //
   487  // - 新增一个数据表
   488  //
   489  // - 该接口支持调用频率上限为 10 QPS
   490  //
   491  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table/create
   492  //
   493  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/create_appTable.go
   494  func (a *appTable) Create(ctx context.Context, req *CreateAppTableReq, options ...larkcore.RequestOptionFunc) (*CreateAppTableResp, error) {
   495  	// 发起请求
   496  	apiReq := req.apiReq
   497  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables"
   498  	apiReq.HttpMethod = http.MethodPost
   499  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   500  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   501  	if err != nil {
   502  		return nil, err
   503  	}
   504  	// 反序列响应结果
   505  	resp := &CreateAppTableResp{ApiResp: apiResp}
   506  	err = apiResp.JSONUnmarshalBody(resp)
   507  	if err != nil {
   508  		return nil, err
   509  	}
   510  	return resp, err
   511  }
   512  
   513  // 删除数据表
   514  //
   515  // - 删除一个数据表
   516  //
   517  // - 该接口支持调用频率上限为 10 QPS
   518  //
   519  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table/delete
   520  //
   521  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/delete_appTable.go
   522  func (a *appTable) Delete(ctx context.Context, req *DeleteAppTableReq, options ...larkcore.RequestOptionFunc) (*DeleteAppTableResp, error) {
   523  	// 发起请求
   524  	apiReq := req.apiReq
   525  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id"
   526  	apiReq.HttpMethod = http.MethodDelete
   527  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   528  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   529  	if err != nil {
   530  		return nil, err
   531  	}
   532  	// 反序列响应结果
   533  	resp := &DeleteAppTableResp{ApiResp: apiResp}
   534  	err = apiResp.JSONUnmarshalBody(resp)
   535  	if err != nil {
   536  		return nil, err
   537  	}
   538  	return resp, err
   539  }
   540  
   541  // 列出数据表
   542  //
   543  // - 根据  app_token,获取多维表格下的所有数据表
   544  //
   545  // - 该接口支持调用频率上限为 20 QPS
   546  //
   547  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table/list
   548  //
   549  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/list_appTable.go
   550  func (a *appTable) List(ctx context.Context, req *ListAppTableReq, options ...larkcore.RequestOptionFunc) (*ListAppTableResp, error) {
   551  	// 发起请求
   552  	apiReq := req.apiReq
   553  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables"
   554  	apiReq.HttpMethod = http.MethodGet
   555  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   556  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   557  	if err != nil {
   558  		return nil, err
   559  	}
   560  	// 反序列响应结果
   561  	resp := &ListAppTableResp{ApiResp: apiResp}
   562  	err = apiResp.JSONUnmarshalBody(resp)
   563  	if err != nil {
   564  		return nil, err
   565  	}
   566  	return resp, err
   567  }
   568  func (a *appTable) ListByIterator(ctx context.Context, req *ListAppTableReq, options ...larkcore.RequestOptionFunc) (*ListAppTableIterator, error) {
   569  	return &ListAppTableIterator{
   570  		ctx:      ctx,
   571  		req:      req,
   572  		listFunc: a.List,
   573  		options:  options,
   574  		limit:    req.Limit}, nil
   575  }
   576  
   577  // 新增字段
   578  //
   579  // - 该接口用于在数据表中新增一个字段
   580  //
   581  // - 该接口支持调用频率上限为 10 QPS
   582  //
   583  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-field/create
   584  //
   585  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/create_appTableField.go
   586  func (a *appTableField) Create(ctx context.Context, req *CreateAppTableFieldReq, options ...larkcore.RequestOptionFunc) (*CreateAppTableFieldResp, error) {
   587  	// 发起请求
   588  	apiReq := req.apiReq
   589  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/fields"
   590  	apiReq.HttpMethod = http.MethodPost
   591  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   592  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   593  	if err != nil {
   594  		return nil, err
   595  	}
   596  	// 反序列响应结果
   597  	resp := &CreateAppTableFieldResp{ApiResp: apiResp}
   598  	err = apiResp.JSONUnmarshalBody(resp)
   599  	if err != nil {
   600  		return nil, err
   601  	}
   602  	return resp, err
   603  }
   604  
   605  // 删除字段
   606  //
   607  // - 该接口用于在数据表中删除一个字段
   608  //
   609  // - 该接口支持调用频率上限为 10 QPS
   610  //
   611  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-field/delete
   612  //
   613  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/delete_appTableField.go
   614  func (a *appTableField) Delete(ctx context.Context, req *DeleteAppTableFieldReq, options ...larkcore.RequestOptionFunc) (*DeleteAppTableFieldResp, error) {
   615  	// 发起请求
   616  	apiReq := req.apiReq
   617  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/fields/:field_id"
   618  	apiReq.HttpMethod = http.MethodDelete
   619  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   620  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   621  	if err != nil {
   622  		return nil, err
   623  	}
   624  	// 反序列响应结果
   625  	resp := &DeleteAppTableFieldResp{ApiResp: apiResp}
   626  	err = apiResp.JSONUnmarshalBody(resp)
   627  	if err != nil {
   628  		return nil, err
   629  	}
   630  	return resp, err
   631  }
   632  
   633  // 列出字段
   634  //
   635  // - 根据 app_token 和 table_id,获取数据表的所有字段
   636  //
   637  // - 该接口支持调用频率上限为 20 QPS
   638  //
   639  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-field/list
   640  //
   641  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/list_appTableField.go
   642  func (a *appTableField) List(ctx context.Context, req *ListAppTableFieldReq, options ...larkcore.RequestOptionFunc) (*ListAppTableFieldResp, error) {
   643  	// 发起请求
   644  	apiReq := req.apiReq
   645  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/fields"
   646  	apiReq.HttpMethod = http.MethodGet
   647  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   648  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   649  	if err != nil {
   650  		return nil, err
   651  	}
   652  	// 反序列响应结果
   653  	resp := &ListAppTableFieldResp{ApiResp: apiResp}
   654  	err = apiResp.JSONUnmarshalBody(resp)
   655  	if err != nil {
   656  		return nil, err
   657  	}
   658  	return resp, err
   659  }
   660  func (a *appTableField) ListByIterator(ctx context.Context, req *ListAppTableFieldReq, options ...larkcore.RequestOptionFunc) (*ListAppTableFieldIterator, error) {
   661  	return &ListAppTableFieldIterator{
   662  		ctx:      ctx,
   663  		req:      req,
   664  		listFunc: a.List,
   665  		options:  options,
   666  		limit:    req.Limit}, nil
   667  }
   668  
   669  // 更新字段
   670  //
   671  // - 该接口用于在数据表中更新一个字段
   672  //
   673  // - 该接口支持调用频率上限为 10 QPS
   674  //
   675  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-field/update
   676  //
   677  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/update_appTableField.go
   678  func (a *appTableField) Update(ctx context.Context, req *UpdateAppTableFieldReq, options ...larkcore.RequestOptionFunc) (*UpdateAppTableFieldResp, error) {
   679  	// 发起请求
   680  	apiReq := req.apiReq
   681  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/fields/:field_id"
   682  	apiReq.HttpMethod = http.MethodPut
   683  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   684  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   685  	if err != nil {
   686  		return nil, err
   687  	}
   688  	// 反序列响应结果
   689  	resp := &UpdateAppTableFieldResp{ApiResp: apiResp}
   690  	err = apiResp.JSONUnmarshalBody(resp)
   691  	if err != nil {
   692  		return nil, err
   693  	}
   694  	return resp, err
   695  }
   696  
   697  // 获取表单元数据
   698  //
   699  // - 获取表单的所有元数据项
   700  //
   701  // - 该接口支持调用频率上限为 20 QPS
   702  //
   703  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-form/get
   704  //
   705  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/get_appTableForm.go
   706  func (a *appTableForm) Get(ctx context.Context, req *GetAppTableFormReq, options ...larkcore.RequestOptionFunc) (*GetAppTableFormResp, error) {
   707  	// 发起请求
   708  	apiReq := req.apiReq
   709  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/forms/:form_id"
   710  	apiReq.HttpMethod = http.MethodGet
   711  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   712  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   713  	if err != nil {
   714  		return nil, err
   715  	}
   716  	// 反序列响应结果
   717  	resp := &GetAppTableFormResp{ApiResp: apiResp}
   718  	err = apiResp.JSONUnmarshalBody(resp)
   719  	if err != nil {
   720  		return nil, err
   721  	}
   722  	return resp, err
   723  }
   724  
   725  // 更新表单元数据
   726  //
   727  // - 该接口用于更新表单中的元数据项
   728  //
   729  // - 该接口支持调用频率上限为 10 QPS
   730  //
   731  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-form/patch
   732  //
   733  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/patch_appTableForm.go
   734  func (a *appTableForm) Patch(ctx context.Context, req *PatchAppTableFormReq, options ...larkcore.RequestOptionFunc) (*PatchAppTableFormResp, error) {
   735  	// 发起请求
   736  	apiReq := req.apiReq
   737  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/forms/:form_id"
   738  	apiReq.HttpMethod = http.MethodPatch
   739  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   740  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   741  	if err != nil {
   742  		return nil, err
   743  	}
   744  	// 反序列响应结果
   745  	resp := &PatchAppTableFormResp{ApiResp: apiResp}
   746  	err = apiResp.JSONUnmarshalBody(resp)
   747  	if err != nil {
   748  		return nil, err
   749  	}
   750  	return resp, err
   751  }
   752  
   753  // 列出表单问题
   754  //
   755  // - 列出表单的所有问题项
   756  //
   757  // - 该接口支持调用频率上限为 20 QPS
   758  //
   759  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-form-field/list
   760  //
   761  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/list_appTableFormField.go
   762  func (a *appTableFormField) List(ctx context.Context, req *ListAppTableFormFieldReq, options ...larkcore.RequestOptionFunc) (*ListAppTableFormFieldResp, error) {
   763  	// 发起请求
   764  	apiReq := req.apiReq
   765  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/forms/:form_id/fields"
   766  	apiReq.HttpMethod = http.MethodGet
   767  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   768  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   769  	if err != nil {
   770  		return nil, err
   771  	}
   772  	// 反序列响应结果
   773  	resp := &ListAppTableFormFieldResp{ApiResp: apiResp}
   774  	err = apiResp.JSONUnmarshalBody(resp)
   775  	if err != nil {
   776  		return nil, err
   777  	}
   778  	return resp, err
   779  }
   780  func (a *appTableFormField) ListByIterator(ctx context.Context, req *ListAppTableFormFieldReq, options ...larkcore.RequestOptionFunc) (*ListAppTableFormFieldIterator, error) {
   781  	return &ListAppTableFormFieldIterator{
   782  		ctx:      ctx,
   783  		req:      req,
   784  		listFunc: a.List,
   785  		options:  options,
   786  		limit:    req.Limit}, nil
   787  }
   788  
   789  // 更新表单问题
   790  //
   791  // - 该接口用于更新表单中的问题项
   792  //
   793  // - 该接口支持调用频率上限为 10 QPS
   794  //
   795  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-form-field/patch
   796  //
   797  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/patch_appTableFormField.go
   798  func (a *appTableFormField) Patch(ctx context.Context, req *PatchAppTableFormFieldReq, options ...larkcore.RequestOptionFunc) (*PatchAppTableFormFieldResp, error) {
   799  	// 发起请求
   800  	apiReq := req.apiReq
   801  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/forms/:form_id/fields/:field_id"
   802  	apiReq.HttpMethod = http.MethodPatch
   803  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   804  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   805  	if err != nil {
   806  		return nil, err
   807  	}
   808  	// 反序列响应结果
   809  	resp := &PatchAppTableFormFieldResp{ApiResp: apiResp}
   810  	err = apiResp.JSONUnmarshalBody(resp)
   811  	if err != nil {
   812  		return nil, err
   813  	}
   814  	return resp, err
   815  }
   816  
   817  // 新增多条记录
   818  //
   819  // - 该接口用于在数据表中新增多条记录,单次调用最多新增 500 条记录。
   820  //
   821  // - 该接口支持调用频率上限为 10 QPS
   822  //
   823  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/batch_create
   824  //
   825  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/batchCreate_appTableRecord.go
   826  func (a *appTableRecord) BatchCreate(ctx context.Context, req *BatchCreateAppTableRecordReq, options ...larkcore.RequestOptionFunc) (*BatchCreateAppTableRecordResp, error) {
   827  	// 发起请求
   828  	apiReq := req.apiReq
   829  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/batch_create"
   830  	apiReq.HttpMethod = http.MethodPost
   831  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   832  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   833  	if err != nil {
   834  		return nil, err
   835  	}
   836  	// 反序列响应结果
   837  	resp := &BatchCreateAppTableRecordResp{ApiResp: apiResp}
   838  	err = apiResp.JSONUnmarshalBody(resp)
   839  	if err != nil {
   840  		return nil, err
   841  	}
   842  	return resp, err
   843  }
   844  
   845  // 删除多条记录
   846  //
   847  // - 该接口用于删除数据表中现有的多条记录,单次调用中最多删除 500 条记录。
   848  //
   849  // - 该接口支持调用频率上限为 10 QPS
   850  //
   851  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/batch_delete
   852  //
   853  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/batchDelete_appTableRecord.go
   854  func (a *appTableRecord) BatchDelete(ctx context.Context, req *BatchDeleteAppTableRecordReq, options ...larkcore.RequestOptionFunc) (*BatchDeleteAppTableRecordResp, error) {
   855  	// 发起请求
   856  	apiReq := req.apiReq
   857  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/batch_delete"
   858  	apiReq.HttpMethod = http.MethodPost
   859  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   860  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   861  	if err != nil {
   862  		return nil, err
   863  	}
   864  	// 反序列响应结果
   865  	resp := &BatchDeleteAppTableRecordResp{ApiResp: apiResp}
   866  	err = apiResp.JSONUnmarshalBody(resp)
   867  	if err != nil {
   868  		return nil, err
   869  	}
   870  	return resp, err
   871  }
   872  
   873  // 更新多条记录
   874  //
   875  // - 该接口用于更新数据表中的多条记录,单次调用最多更新 500 条记录。
   876  //
   877  // - 该接口支持调用频率上限为 10 QPS
   878  //
   879  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/batch_update
   880  //
   881  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/batchUpdate_appTableRecord.go
   882  func (a *appTableRecord) BatchUpdate(ctx context.Context, req *BatchUpdateAppTableRecordReq, options ...larkcore.RequestOptionFunc) (*BatchUpdateAppTableRecordResp, error) {
   883  	// 发起请求
   884  	apiReq := req.apiReq
   885  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/batch_update"
   886  	apiReq.HttpMethod = http.MethodPost
   887  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   888  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   889  	if err != nil {
   890  		return nil, err
   891  	}
   892  	// 反序列响应结果
   893  	resp := &BatchUpdateAppTableRecordResp{ApiResp: apiResp}
   894  	err = apiResp.JSONUnmarshalBody(resp)
   895  	if err != nil {
   896  		return nil, err
   897  	}
   898  	return resp, err
   899  }
   900  
   901  // 新增记录
   902  //
   903  // - 该接口用于在数据表中新增一条记录
   904  //
   905  // - 该接口支持调用频率上限为 10 QPS
   906  //
   907  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/create
   908  //
   909  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/create_appTableRecord.go
   910  func (a *appTableRecord) Create(ctx context.Context, req *CreateAppTableRecordReq, options ...larkcore.RequestOptionFunc) (*CreateAppTableRecordResp, error) {
   911  	// 发起请求
   912  	apiReq := req.apiReq
   913  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records"
   914  	apiReq.HttpMethod = http.MethodPost
   915  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   916  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   917  	if err != nil {
   918  		return nil, err
   919  	}
   920  	// 反序列响应结果
   921  	resp := &CreateAppTableRecordResp{ApiResp: apiResp}
   922  	err = apiResp.JSONUnmarshalBody(resp)
   923  	if err != nil {
   924  		return nil, err
   925  	}
   926  	return resp, err
   927  }
   928  
   929  // 删除记录
   930  //
   931  // - 该接口用于删除数据表中的一条记录
   932  //
   933  // - 该接口支持调用频率上限为 10 QPS
   934  //
   935  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/delete
   936  //
   937  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/delete_appTableRecord.go
   938  func (a *appTableRecord) Delete(ctx context.Context, req *DeleteAppTableRecordReq, options ...larkcore.RequestOptionFunc) (*DeleteAppTableRecordResp, error) {
   939  	// 发起请求
   940  	apiReq := req.apiReq
   941  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/:record_id"
   942  	apiReq.HttpMethod = http.MethodDelete
   943  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   944  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   945  	if err != nil {
   946  		return nil, err
   947  	}
   948  	// 反序列响应结果
   949  	resp := &DeleteAppTableRecordResp{ApiResp: apiResp}
   950  	err = apiResp.JSONUnmarshalBody(resp)
   951  	if err != nil {
   952  		return nil, err
   953  	}
   954  	return resp, err
   955  }
   956  
   957  // 检索记录
   958  //
   959  // - 该接口用于根据 record_id 的值检索现有记录
   960  //
   961  // - 该接口支持调用频率上限为 20 QPS
   962  //
   963  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/get
   964  //
   965  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/get_appTableRecord.go
   966  func (a *appTableRecord) Get(ctx context.Context, req *GetAppTableRecordReq, options ...larkcore.RequestOptionFunc) (*GetAppTableRecordResp, error) {
   967  	// 发起请求
   968  	apiReq := req.apiReq
   969  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/:record_id"
   970  	apiReq.HttpMethod = http.MethodGet
   971  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   972  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   973  	if err != nil {
   974  		return nil, err
   975  	}
   976  	// 反序列响应结果
   977  	resp := &GetAppTableRecordResp{ApiResp: apiResp}
   978  	err = apiResp.JSONUnmarshalBody(resp)
   979  	if err != nil {
   980  		return nil, err
   981  	}
   982  	return resp, err
   983  }
   984  
   985  // 列出记录
   986  //
   987  // - 该接口用于列出数据表中的现有记录,单次最多列出 500 行记录,支持分页获取。
   988  //
   989  // - 该接口支持调用频率上限为 1000 次/分钟
   990  //
   991  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/list
   992  //
   993  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/list_appTableRecord.go
   994  func (a *appTableRecord) List(ctx context.Context, req *ListAppTableRecordReq, options ...larkcore.RequestOptionFunc) (*ListAppTableRecordResp, error) {
   995  	// 发起请求
   996  	apiReq := req.apiReq
   997  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records"
   998  	apiReq.HttpMethod = http.MethodGet
   999  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
  1000  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
  1001  	if err != nil {
  1002  		return nil, err
  1003  	}
  1004  	// 反序列响应结果
  1005  	resp := &ListAppTableRecordResp{ApiResp: apiResp}
  1006  	err = apiResp.JSONUnmarshalBody(resp)
  1007  	if err != nil {
  1008  		return nil, err
  1009  	}
  1010  	return resp, err
  1011  }
  1012  func (a *appTableRecord) ListByIterator(ctx context.Context, req *ListAppTableRecordReq, options ...larkcore.RequestOptionFunc) (*ListAppTableRecordIterator, error) {
  1013  	return &ListAppTableRecordIterator{
  1014  		ctx:      ctx,
  1015  		req:      req,
  1016  		listFunc: a.List,
  1017  		options:  options,
  1018  		limit:    req.Limit}, nil
  1019  }
  1020  
  1021  // 更新记录
  1022  //
  1023  // - 该接口用于更新数据表中的一条记录
  1024  //
  1025  // - 该接口支持调用频率上限为 10 QPS
  1026  //
  1027  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/update
  1028  //
  1029  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/update_appTableRecord.go
  1030  func (a *appTableRecord) Update(ctx context.Context, req *UpdateAppTableRecordReq, options ...larkcore.RequestOptionFunc) (*UpdateAppTableRecordResp, error) {
  1031  	// 发起请求
  1032  	apiReq := req.apiReq
  1033  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/:record_id"
  1034  	apiReq.HttpMethod = http.MethodPut
  1035  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
  1036  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
  1037  	if err != nil {
  1038  		return nil, err
  1039  	}
  1040  	// 反序列响应结果
  1041  	resp := &UpdateAppTableRecordResp{ApiResp: apiResp}
  1042  	err = apiResp.JSONUnmarshalBody(resp)
  1043  	if err != nil {
  1044  		return nil, err
  1045  	}
  1046  	return resp, err
  1047  }
  1048  
  1049  // 新增视图
  1050  //
  1051  // - 在数据表中新增一个视图
  1052  //
  1053  // - 该接口支持调用频率上限为 10 QPS
  1054  //
  1055  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-view/create
  1056  //
  1057  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/create_appTableView.go
  1058  func (a *appTableView) Create(ctx context.Context, req *CreateAppTableViewReq, options ...larkcore.RequestOptionFunc) (*CreateAppTableViewResp, error) {
  1059  	// 发起请求
  1060  	apiReq := req.apiReq
  1061  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/views"
  1062  	apiReq.HttpMethod = http.MethodPost
  1063  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
  1064  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
  1065  	if err != nil {
  1066  		return nil, err
  1067  	}
  1068  	// 反序列响应结果
  1069  	resp := &CreateAppTableViewResp{ApiResp: apiResp}
  1070  	err = apiResp.JSONUnmarshalBody(resp)
  1071  	if err != nil {
  1072  		return nil, err
  1073  	}
  1074  	return resp, err
  1075  }
  1076  
  1077  // 删除视图
  1078  //
  1079  // - 删除数据表中的视图
  1080  //
  1081  // - 该接口支持调用频率上限为 10 QPS
  1082  //
  1083  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-view/delete
  1084  //
  1085  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/delete_appTableView.go
  1086  func (a *appTableView) Delete(ctx context.Context, req *DeleteAppTableViewReq, options ...larkcore.RequestOptionFunc) (*DeleteAppTableViewResp, error) {
  1087  	// 发起请求
  1088  	apiReq := req.apiReq
  1089  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/views/:view_id"
  1090  	apiReq.HttpMethod = http.MethodDelete
  1091  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
  1092  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
  1093  	if err != nil {
  1094  		return nil, err
  1095  	}
  1096  	// 反序列响应结果
  1097  	resp := &DeleteAppTableViewResp{ApiResp: apiResp}
  1098  	err = apiResp.JSONUnmarshalBody(resp)
  1099  	if err != nil {
  1100  		return nil, err
  1101  	}
  1102  	return resp, err
  1103  }
  1104  
  1105  // 列出视图
  1106  //
  1107  // - 根据 app_token 和 table_id,获取数据表的所有视图
  1108  //
  1109  // - 该接口支持调用频率上限为 20 QPS
  1110  //
  1111  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-view/list
  1112  //
  1113  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/bitablev1/list_appTableView.go
  1114  func (a *appTableView) List(ctx context.Context, req *ListAppTableViewReq, options ...larkcore.RequestOptionFunc) (*ListAppTableViewResp, error) {
  1115  	// 发起请求
  1116  	apiReq := req.apiReq
  1117  	apiReq.ApiPath = "/open-apis/bitable/v1/apps/:app_token/tables/:table_id/views"
  1118  	apiReq.HttpMethod = http.MethodGet
  1119  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
  1120  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
  1121  	if err != nil {
  1122  		return nil, err
  1123  	}
  1124  	// 反序列响应结果
  1125  	resp := &ListAppTableViewResp{ApiResp: apiResp}
  1126  	err = apiResp.JSONUnmarshalBody(resp)
  1127  	if err != nil {
  1128  		return nil, err
  1129  	}
  1130  	return resp, err
  1131  }
  1132  func (a *appTableView) ListByIterator(ctx context.Context, req *ListAppTableViewReq, options ...larkcore.RequestOptionFunc) (*ListAppTableViewIterator, error) {
  1133  	return &ListAppTableViewIterator{
  1134  		ctx:      ctx,
  1135  		req:      req,
  1136  		listFunc: a.List,
  1137  		options:  options,
  1138  		limit:    req.Limit}, nil
  1139  }