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

     1  // Package wiki 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 larkwiki
    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) *WikiService {
    24  	w := &WikiService{config: config}
    25  	w.Space = &space{service: w}
    26  	w.SpaceMember = &spaceMember{service: w}
    27  	w.SpaceNode = &spaceNode{service: w}
    28  	w.SpaceSetting = &spaceSetting{service: w}
    29  	w.Task = &task{service: w}
    30  	return w
    31  }
    32  
    33  type WikiService struct {
    34  	config       *larkcore.Config
    35  	Space        *space        // 知识空间
    36  	SpaceMember  *spaceMember  // 空间成员
    37  	SpaceNode    *spaceNode    // 节点
    38  	SpaceSetting *spaceSetting // 空间设置
    39  	Task         *task         // 云文档
    40  }
    41  
    42  type space struct {
    43  	service *WikiService
    44  }
    45  type spaceMember struct {
    46  	service *WikiService
    47  }
    48  type spaceNode struct {
    49  	service *WikiService
    50  }
    51  type spaceSetting struct {
    52  	service *WikiService
    53  }
    54  type task struct {
    55  	service *WikiService
    56  }
    57  
    58  // 创建知识空间
    59  //
    60  // - 此接口用于创建知识空间
    61  //
    62  // - 此接口不支持tenant access token(应用身份访问)
    63  //
    64  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space/create
    65  //
    66  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/create_space.go
    67  func (s *space) Create(ctx context.Context, req *CreateSpaceReq, options ...larkcore.RequestOptionFunc) (*CreateSpaceResp, error) {
    68  	// 发起请求
    69  	apiReq := req.apiReq
    70  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces"
    71  	apiReq.HttpMethod = http.MethodPost
    72  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
    73  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
    74  	if err != nil {
    75  		return nil, err
    76  	}
    77  	// 反序列响应结果
    78  	resp := &CreateSpaceResp{ApiResp: apiResp}
    79  	err = apiResp.JSONUnmarshalBody(resp)
    80  	if err != nil {
    81  		return nil, err
    82  	}
    83  	return resp, err
    84  }
    85  
    86  // 获取知识空间信息
    87  //
    88  // - 此接口用于根据知识空间ID来查询知识空间的信息。;;空间类型(type):;- 个人空间:归个人管理。一人仅可拥有一个个人空间,无法添加其他管理员。;- 团队空间:归团队(多人)管理,可添加多个管理员。;;空间可见性(visibility):;- 公开空间:租户所有用户可见,默认为成员权限。无法额外添加成员,但可以添加管理员。;- 私有空间:仅对知识空间管理员、成员可见,需要手动添加管理员、成员。
    89  //
    90  // - 本接口要求知识库权限:;- 需要为知识空间成员(管理员)
    91  //
    92  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space/get
    93  //
    94  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/get_space.go
    95  func (s *space) Get(ctx context.Context, req *GetSpaceReq, options ...larkcore.RequestOptionFunc) (*GetSpaceResp, error) {
    96  	// 发起请求
    97  	apiReq := req.apiReq
    98  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/:space_id"
    99  	apiReq.HttpMethod = http.MethodGet
   100  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   101  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   102  	if err != nil {
   103  		return nil, err
   104  	}
   105  	// 反序列响应结果
   106  	resp := &GetSpaceResp{ApiResp: apiResp}
   107  	err = apiResp.JSONUnmarshalBody(resp)
   108  	if err != nil {
   109  		return nil, err
   110  	}
   111  	return resp, err
   112  }
   113  
   114  // 获取节点信息
   115  //
   116  // - 获取节点信息
   117  //
   118  // - 知识库权限要求:;- 节点阅读权限
   119  //
   120  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space/get_node
   121  //
   122  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/getNode_space.go
   123  func (s *space) GetNode(ctx context.Context, req *GetNodeSpaceReq, options ...larkcore.RequestOptionFunc) (*GetNodeSpaceResp, error) {
   124  	// 发起请求
   125  	apiReq := req.apiReq
   126  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/get_node"
   127  	apiReq.HttpMethod = http.MethodGet
   128  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   129  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  	// 反序列响应结果
   134  	resp := &GetNodeSpaceResp{ApiResp: apiResp}
   135  	err = apiResp.JSONUnmarshalBody(resp)
   136  	if err != nil {
   137  		return nil, err
   138  	}
   139  	return resp, err
   140  }
   141  
   142  // 获取知识空间列表
   143  //
   144  // - 此接口用于获取有权限访问的知识空间列表。;;此接口为分页接口。由于权限过滤,可能返回列表为空,但分页标记(has_more)为true,可以继续分页请求。;;对于知识空间各项属性描述请参阅[获取知识空间信息](/ssl:ttdoc/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space/get)
   145  //
   146  // - 使用tenant access token调用时,请确认应用/机器人拥有部分知识空间的访问权限,否则返回列表容易为空。
   147  //
   148  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space/list
   149  //
   150  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/list_space.go
   151  func (s *space) List(ctx context.Context, req *ListSpaceReq, options ...larkcore.RequestOptionFunc) (*ListSpaceResp, error) {
   152  	// 发起请求
   153  	apiReq := req.apiReq
   154  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces"
   155  	apiReq.HttpMethod = http.MethodGet
   156  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   157  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   158  	if err != nil {
   159  		return nil, err
   160  	}
   161  	// 反序列响应结果
   162  	resp := &ListSpaceResp{ApiResp: apiResp}
   163  	err = apiResp.JSONUnmarshalBody(resp)
   164  	if err != nil {
   165  		return nil, err
   166  	}
   167  	return resp, err
   168  }
   169  func (s *space) ListByIterator(ctx context.Context, req *ListSpaceReq, options ...larkcore.RequestOptionFunc) (*ListSpaceIterator, error) {
   170  	return &ListSpaceIterator{
   171  		ctx:      ctx,
   172  		req:      req,
   173  		listFunc: s.List,
   174  		options:  options,
   175  		limit:    req.Limit}, nil
   176  }
   177  
   178  // 添加知识空间成员
   179  //
   180  // - 添加知识空间成员(管理员)。;;- 公开知识空间(visibility为public)对租户所有用户可见,因此不支持再添加成员,但可以添加管理员。;;  相关错误:131101 public wiki space can't create member.;- 个人知识空间 (type为person)为个人管理的知识空间,不支持添加其他管理员(包括应用/机器人)。但可以添加成员。;;  相关错误:131101 person wiki space can't create admin.
   181  //
   182  // - 知识库权限要求;- 为知识空间管理员
   183  //
   184  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space-member/create
   185  //
   186  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/create_spaceMember.go
   187  func (s *spaceMember) Create(ctx context.Context, req *CreateSpaceMemberReq, options ...larkcore.RequestOptionFunc) (*CreateSpaceMemberResp, error) {
   188  	// 发起请求
   189  	apiReq := req.apiReq
   190  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/:space_id/members"
   191  	apiReq.HttpMethod = http.MethodPost
   192  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   193  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   194  	if err != nil {
   195  		return nil, err
   196  	}
   197  	// 反序列响应结果
   198  	resp := &CreateSpaceMemberResp{ApiResp: apiResp}
   199  	err = apiResp.JSONUnmarshalBody(resp)
   200  	if err != nil {
   201  		return nil, err
   202  	}
   203  	return resp, err
   204  }
   205  
   206  // 删除知识空间成员
   207  //
   208  // - 此接口用于删除知识空间成员。;;- 公开知识空间(visibility为public)对租户所有用户可见,因此不支持再删除成员,但可以删除管理员。;;- 个人知识空间 (type为person)为个人管理的知识空间,不支持删除管理员。但可以删除成员。
   209  //
   210  // - 知识库权限要求;- 为知识空间管理员
   211  //
   212  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space-member/delete
   213  //
   214  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/delete_spaceMember.go
   215  func (s *spaceMember) Delete(ctx context.Context, req *DeleteSpaceMemberReq, options ...larkcore.RequestOptionFunc) (*DeleteSpaceMemberResp, error) {
   216  	// 发起请求
   217  	apiReq := req.apiReq
   218  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/:space_id/members/:member_id"
   219  	apiReq.HttpMethod = http.MethodDelete
   220  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   221  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   222  	if err != nil {
   223  		return nil, err
   224  	}
   225  	// 反序列响应结果
   226  	resp := &DeleteSpaceMemberResp{ApiResp: apiResp}
   227  	err = apiResp.JSONUnmarshalBody(resp)
   228  	if err != nil {
   229  		return nil, err
   230  	}
   231  	return resp, err
   232  }
   233  
   234  // 创建节点副本
   235  //
   236  // - 此接口用于创建节点副本到指定地点。
   237  //
   238  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space-node/copy
   239  //
   240  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/copy_spaceNode.go
   241  func (s *spaceNode) Copy(ctx context.Context, req *CopySpaceNodeReq, options ...larkcore.RequestOptionFunc) (*CopySpaceNodeResp, error) {
   242  	// 发起请求
   243  	apiReq := req.apiReq
   244  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/:space_id/nodes/:node_token/copy"
   245  	apiReq.HttpMethod = http.MethodPost
   246  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   247  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   248  	if err != nil {
   249  		return nil, err
   250  	}
   251  	// 反序列响应结果
   252  	resp := &CopySpaceNodeResp{ApiResp: apiResp}
   253  	err = apiResp.JSONUnmarshalBody(resp)
   254  	if err != nil {
   255  		return nil, err
   256  	}
   257  	return resp, err
   258  }
   259  
   260  // 创建节点
   261  //
   262  // - 此接口用于在知识库里创建节点。
   263  //
   264  // - 知识库权限要求:;- **父节点**容器编辑权限
   265  //
   266  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space-node/create
   267  //
   268  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/create_spaceNode.go
   269  func (s *spaceNode) Create(ctx context.Context, req *CreateSpaceNodeReq, options ...larkcore.RequestOptionFunc) (*CreateSpaceNodeResp, error) {
   270  	// 发起请求
   271  	apiReq := req.apiReq
   272  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/:space_id/nodes"
   273  	apiReq.HttpMethod = http.MethodPost
   274  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   275  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   276  	if err != nil {
   277  		return nil, err
   278  	}
   279  	// 反序列响应结果
   280  	resp := &CreateSpaceNodeResp{ApiResp: apiResp}
   281  	err = apiResp.JSONUnmarshalBody(resp)
   282  	if err != nil {
   283  		return nil, err
   284  	}
   285  	return resp, err
   286  }
   287  
   288  // 获取子节点列表
   289  //
   290  // - 此接口用于分页获取Wiki节点的子节点列表。;;此接口为分页接口。由于权限过滤,可能返回列表为空,但分页标记(has_more)为true,可以继续分页请求。
   291  //
   292  // - 知识库权限要求:;- 父节点阅读权限
   293  //
   294  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space-node/list
   295  //
   296  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/list_spaceNode.go
   297  func (s *spaceNode) List(ctx context.Context, req *ListSpaceNodeReq, options ...larkcore.RequestOptionFunc) (*ListSpaceNodeResp, error) {
   298  	// 发起请求
   299  	apiReq := req.apiReq
   300  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/:space_id/nodes"
   301  	apiReq.HttpMethod = http.MethodGet
   302  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   303  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   304  	if err != nil {
   305  		return nil, err
   306  	}
   307  	// 反序列响应结果
   308  	resp := &ListSpaceNodeResp{ApiResp: apiResp}
   309  	err = apiResp.JSONUnmarshalBody(resp)
   310  	if err != nil {
   311  		return nil, err
   312  	}
   313  	return resp, err
   314  }
   315  func (s *spaceNode) ListByIterator(ctx context.Context, req *ListSpaceNodeReq, options ...larkcore.RequestOptionFunc) (*ListSpaceNodeIterator, error) {
   316  	return &ListSpaceNodeIterator{
   317  		ctx:      ctx,
   318  		req:      req,
   319  		listFunc: s.List,
   320  		options:  options,
   321  		limit:    req.Limit}, nil
   322  }
   323  
   324  // 移动节点
   325  //
   326  // - 此方法用于在Wiki内移动节点,支持跨知识空间移动。如果有子节点,会携带子节点一起移动。
   327  //
   328  // - 知识库权限要求:;- 节点编辑权限;- 原父节点容器编辑权限;- 目的父节点容器编辑权限
   329  //
   330  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space-node/move
   331  //
   332  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/move_spaceNode.go
   333  func (s *spaceNode) Move(ctx context.Context, req *MoveSpaceNodeReq, options ...larkcore.RequestOptionFunc) (*MoveSpaceNodeResp, error) {
   334  	// 发起请求
   335  	apiReq := req.apiReq
   336  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/:space_id/nodes/:node_token/move"
   337  	apiReq.HttpMethod = http.MethodPost
   338  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   339  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   340  	if err != nil {
   341  		return nil, err
   342  	}
   343  	// 反序列响应结果
   344  	resp := &MoveSpaceNodeResp{ApiResp: apiResp}
   345  	err = apiResp.JSONUnmarshalBody(resp)
   346  	if err != nil {
   347  		return nil, err
   348  	}
   349  	return resp, err
   350  }
   351  
   352  // 添加已有云文档至知识库
   353  //
   354  // - 该接口允许添加已有云文档至知识库,并挂载在指定父页面下
   355  //
   356  // - ### 移动操作 ###;移动后,文档将从“我的空间”或“共享空间”转移至“知识库”,并将从以下功能入口消失:;- 云空间主页:最近访问、快速访问;- 我的空间;- 共享空间;- 收藏;;### 权限变更 ###;移动后,文档会向所有可查看“页面树”的用户显示,默认继承父页面的权限设置。;</md-alert
   357  //
   358  // - 仅支持文档所有者发起请求;;此接口为异步接口。若移动已完成(或节点已在Wiki中),则直接返回结果(Wiki token)。若尚未完成,则返回task id。请使用[获取任务结果](/ssl:ttdoc/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/task/get)接口进行查询。;;知识库权限要求:;- 文档可管理权限;- 原文件夹编辑权限;- 目标父节点容器编辑权限
   359  //
   360  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space-node/move_docs_to_wiki
   361  //
   362  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/moveDocsToWiki_spaceNode.go
   363  func (s *spaceNode) MoveDocsToWiki(ctx context.Context, req *MoveDocsToWikiSpaceNodeReq, options ...larkcore.RequestOptionFunc) (*MoveDocsToWikiSpaceNodeResp, error) {
   364  	// 发起请求
   365  	apiReq := req.apiReq
   366  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/:space_id/nodes/move_docs_to_wiki"
   367  	apiReq.HttpMethod = http.MethodPost
   368  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   369  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   370  	if err != nil {
   371  		return nil, err
   372  	}
   373  	// 反序列响应结果
   374  	resp := &MoveDocsToWikiSpaceNodeResp{ApiResp: apiResp}
   375  	err = apiResp.JSONUnmarshalBody(resp)
   376  	if err != nil {
   377  		return nil, err
   378  	}
   379  	return resp, err
   380  }
   381  
   382  // 更新标题
   383  //
   384  // - 此接口用于更新节点标题
   385  //
   386  // - 此接口目前仅支持文档(doc)、新版文档(docx)和快捷方式。
   387  //
   388  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space-node/update_title
   389  //
   390  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/updateTitle_spaceNode.go
   391  func (s *spaceNode) UpdateTitle(ctx context.Context, req *UpdateTitleSpaceNodeReq, options ...larkcore.RequestOptionFunc) (*UpdateTitleSpaceNodeResp, error) {
   392  	// 发起请求
   393  	apiReq := req.apiReq
   394  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/:space_id/nodes/:node_token/update_title"
   395  	apiReq.HttpMethod = http.MethodPost
   396  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   397  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   398  	if err != nil {
   399  		return nil, err
   400  	}
   401  	// 反序列响应结果
   402  	resp := &UpdateTitleSpaceNodeResp{ApiResp: apiResp}
   403  	err = apiResp.JSONUnmarshalBody(resp)
   404  	if err != nil {
   405  		return nil, err
   406  	}
   407  	return resp, err
   408  }
   409  
   410  // 更新知识空间设置
   411  //
   412  // - 根据space_id更新知识空间公共设置
   413  //
   414  // - 知识库权限要求:;- 为知识空间管理员
   415  //
   416  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/space-setting/update
   417  //
   418  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/update_spaceSetting.go
   419  func (s *spaceSetting) Update(ctx context.Context, req *UpdateSpaceSettingReq, options ...larkcore.RequestOptionFunc) (*UpdateSpaceSettingResp, error) {
   420  	// 发起请求
   421  	apiReq := req.apiReq
   422  	apiReq.ApiPath = "/open-apis/wiki/v2/spaces/:space_id/setting"
   423  	apiReq.HttpMethod = http.MethodPut
   424  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   425  	apiResp, err := larkcore.Request(ctx, apiReq, s.service.config, options...)
   426  	if err != nil {
   427  		return nil, err
   428  	}
   429  	// 反序列响应结果
   430  	resp := &UpdateSpaceSettingResp{ApiResp: apiResp}
   431  	err = apiResp.JSONUnmarshalBody(resp)
   432  	if err != nil {
   433  		return nil, err
   434  	}
   435  	return resp, err
   436  }
   437  
   438  // 获取任务结果
   439  //
   440  // - 该方法用于获取wiki异步任务的结果
   441  //
   442  // - 知识库权限要求:;- 为任务创建者(用户或应用/机器人)
   443  //
   444  // - 官网API文档链接:https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/wiki-v2/task/get
   445  //
   446  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/wikiv2/get_task.go
   447  func (t *task) Get(ctx context.Context, req *GetTaskReq, options ...larkcore.RequestOptionFunc) (*GetTaskResp, error) {
   448  	// 发起请求
   449  	apiReq := req.apiReq
   450  	apiReq.ApiPath = "/open-apis/wiki/v2/tasks/:task_id"
   451  	apiReq.HttpMethod = http.MethodGet
   452  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   453  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
   454  	if err != nil {
   455  		return nil, err
   456  	}
   457  	// 反序列响应结果
   458  	resp := &GetTaskResp{ApiResp: apiResp}
   459  	err = apiResp.JSONUnmarshalBody(resp)
   460  	if err != nil {
   461  		return nil, err
   462  	}
   463  	return resp, err
   464  }