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

     1  // Package helpdesk 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 larkhelpdesk
    15  
    16  import (
    17  	"bytes"
    18  	"context"
    19  	"net/http"
    20  
    21  	"gitee.com/larksuite/oapi-sdk-go/v3/core"
    22  )
    23  
    24  func NewService(config *larkcore.Config) *HelpdeskService {
    25  	h := &HelpdeskService{config: config}
    26  	h.Agent = &agent{service: h}
    27  	h.AgentSchedules = &agentSchedules{service: h}
    28  	h.AgentSchedule = &agentSchedule{service: h}
    29  	h.AgentSkill = &agentSkill{service: h}
    30  	h.AgentSkillRule = &agentSkillRule{service: h}
    31  	h.BotMessage = &botMessage{service: h}
    32  	h.Category = &category{service: h}
    33  	h.Event = &event{service: h}
    34  	h.Faq = &faq{service: h}
    35  	h.Notification = &notification{service: h}
    36  	h.Ticket = &ticket{service: h}
    37  	h.TicketMessage = &ticketMessage{service: h}
    38  	h.TicketCustomizedField = &ticketCustomizedField{service: h}
    39  	return h
    40  }
    41  
    42  type HelpdeskService struct {
    43  	config                *larkcore.Config
    44  	Agent                 *agent                 // 客服
    45  	AgentSchedules        *agentSchedules        // 客服工作日程
    46  	AgentSchedule         *agentSchedule         // agent_schedule
    47  	AgentSkill            *agentSkill            // 客服技能
    48  	AgentSkillRule        *agentSkillRule        // 客服技能规则
    49  	BotMessage            *botMessage            // 机器人消息
    50  	Category              *category              // 知识库分类
    51  	Event                 *event                 // 事件订阅
    52  	Faq                   *faq                   // 知识库
    53  	Notification          *notification          // 推送中心
    54  	Ticket                *ticket                // 工单
    55  	TicketMessage         *ticketMessage         // 工单消息
    56  	TicketCustomizedField *ticketCustomizedField // 工单自定义字段
    57  }
    58  
    59  type agent struct {
    60  	service *HelpdeskService
    61  }
    62  type agentSchedules struct {
    63  	service *HelpdeskService
    64  }
    65  type agentSchedule struct {
    66  	service *HelpdeskService
    67  }
    68  type agentSkill struct {
    69  	service *HelpdeskService
    70  }
    71  type agentSkillRule struct {
    72  	service *HelpdeskService
    73  }
    74  type botMessage struct {
    75  	service *HelpdeskService
    76  }
    77  type category struct {
    78  	service *HelpdeskService
    79  }
    80  type event struct {
    81  	service *HelpdeskService
    82  }
    83  type faq struct {
    84  	service *HelpdeskService
    85  }
    86  type notification struct {
    87  	service *HelpdeskService
    88  }
    89  type ticket struct {
    90  	service *HelpdeskService
    91  }
    92  type ticketMessage struct {
    93  	service *HelpdeskService
    94  }
    95  type ticketCustomizedField struct {
    96  	service *HelpdeskService
    97  }
    98  
    99  // 获取客服邮箱地址
   100  //
   101  // - 该接口用于获取客服邮箱地址
   102  //
   103  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent/agent_email
   104  //
   105  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/agentEmail_agent.go
   106  func (a *agent) AgentEmail(ctx context.Context, options ...larkcore.RequestOptionFunc) (*AgentEmailAgentResp, error) {
   107  	// 发起请求
   108  	apiReq := &larkcore.ApiReq{
   109  		PathParams:  larkcore.PathParams{},
   110  		QueryParams: larkcore.QueryParams{},
   111  	}
   112  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agent_emails"
   113  	apiReq.HttpMethod = http.MethodGet
   114  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   115  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   116  	if err != nil {
   117  		return nil, err
   118  	}
   119  	// 反序列响应结果
   120  	resp := &AgentEmailAgentResp{ApiResp: apiResp}
   121  	err = apiResp.JSONUnmarshalBody(resp)
   122  	if err != nil {
   123  		return nil, err
   124  	}
   125  	return resp, err
   126  }
   127  
   128  // 更新客服信息
   129  //
   130  // - 更新客服状态等信息
   131  //
   132  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent/patch
   133  //
   134  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/patch_agent.go
   135  func (a *agent) Patch(ctx context.Context, req *PatchAgentReq, options ...larkcore.RequestOptionFunc) (*PatchAgentResp, error) {
   136  	// 发起请求
   137  	apiReq := req.apiReq
   138  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agents/:agent_id"
   139  	apiReq.HttpMethod = http.MethodPatch
   140  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   141  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   142  	if err != nil {
   143  		return nil, err
   144  	}
   145  	// 反序列响应结果
   146  	resp := &PatchAgentResp{ApiResp: apiResp}
   147  	err = apiResp.JSONUnmarshalBody(resp)
   148  	if err != nil {
   149  		return nil, err
   150  	}
   151  	return resp, err
   152  }
   153  
   154  // 删除客服
   155  //
   156  // - 该接口用于删除客服
   157  //
   158  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent-schedules/delete
   159  //
   160  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/delete_agentSchedules.go
   161  func (a *agentSchedules) Delete(ctx context.Context, req *DeleteAgentSchedulesReq, options ...larkcore.RequestOptionFunc) (*DeleteAgentSchedulesResp, error) {
   162  	// 发起请求
   163  	apiReq := req.apiReq
   164  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agents/:agent_id/schedules"
   165  	apiReq.HttpMethod = http.MethodDelete
   166  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   167  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   168  	if err != nil {
   169  		return nil, err
   170  	}
   171  	// 反序列响应结果
   172  	resp := &DeleteAgentSchedulesResp{ApiResp: apiResp}
   173  	err = apiResp.JSONUnmarshalBody(resp)
   174  	if err != nil {
   175  		return nil, err
   176  	}
   177  	return resp, err
   178  }
   179  
   180  // 获取客服工作日程;
   181  //
   182  // - 该接口用于获取客服信息
   183  //
   184  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent-schedules/get
   185  //
   186  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/get_agentSchedules.go
   187  func (a *agentSchedules) Get(ctx context.Context, req *GetAgentSchedulesReq, options ...larkcore.RequestOptionFunc) (*GetAgentSchedulesResp, error) {
   188  	// 发起请求
   189  	apiReq := req.apiReq
   190  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agents/:agent_id/schedules"
   191  	apiReq.HttpMethod = http.MethodGet
   192  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   193  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   194  	if err != nil {
   195  		return nil, err
   196  	}
   197  	// 反序列响应结果
   198  	resp := &GetAgentSchedulesResp{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  // - 该接口用于更新客服的日程
   209  //
   210  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent-schedules/patch
   211  //
   212  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/patch_agentSchedules.go
   213  func (a *agentSchedules) Patch(ctx context.Context, req *PatchAgentSchedulesReq, options ...larkcore.RequestOptionFunc) (*PatchAgentSchedulesResp, error) {
   214  	// 发起请求
   215  	apiReq := req.apiReq
   216  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agents/:agent_id/schedules"
   217  	apiReq.HttpMethod = http.MethodPatch
   218  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   219  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   220  	if err != nil {
   221  		return nil, err
   222  	}
   223  	// 反序列响应结果
   224  	resp := &PatchAgentSchedulesResp{ApiResp: apiResp}
   225  	err = apiResp.JSONUnmarshalBody(resp)
   226  	if err != nil {
   227  		return nil, err
   228  	}
   229  	return resp, err
   230  }
   231  
   232  // 创建客服
   233  //
   234  // - 该接口用于创建客服
   235  //
   236  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_schedule/create
   237  //
   238  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/create_agentSchedule.go
   239  func (a *agentSchedule) Create(ctx context.Context, req *CreateAgentScheduleReq, options ...larkcore.RequestOptionFunc) (*CreateAgentScheduleResp, error) {
   240  	// 发起请求
   241  	apiReq := req.apiReq
   242  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agent_schedules"
   243  	apiReq.HttpMethod = http.MethodPost
   244  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   245  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   246  	if err != nil {
   247  		return nil, err
   248  	}
   249  	// 反序列响应结果
   250  	resp := &CreateAgentScheduleResp{ApiResp: apiResp}
   251  	err = apiResp.JSONUnmarshalBody(resp)
   252  	if err != nil {
   253  		return nil, err
   254  	}
   255  	return resp, err
   256  }
   257  
   258  // 获取全部客服工作日程
   259  //
   260  // - 该接口用于获取所有客服信息
   261  //
   262  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_schedule/list
   263  //
   264  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/list_agentSchedule.go
   265  func (a *agentSchedule) List(ctx context.Context, req *ListAgentScheduleReq, options ...larkcore.RequestOptionFunc) (*ListAgentScheduleResp, error) {
   266  	// 发起请求
   267  	apiReq := req.apiReq
   268  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agent_schedules"
   269  	apiReq.HttpMethod = http.MethodGet
   270  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   271  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   272  	if err != nil {
   273  		return nil, err
   274  	}
   275  	// 反序列响应结果
   276  	resp := &ListAgentScheduleResp{ApiResp: apiResp}
   277  	err = apiResp.JSONUnmarshalBody(resp)
   278  	if err != nil {
   279  		return nil, err
   280  	}
   281  	return resp, err
   282  }
   283  
   284  // 创建客服技能
   285  //
   286  // - 该接口用于创建客服技能
   287  //
   288  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_skill/create
   289  //
   290  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/create_agentSkill.go
   291  func (a *agentSkill) Create(ctx context.Context, req *CreateAgentSkillReq, options ...larkcore.RequestOptionFunc) (*CreateAgentSkillResp, error) {
   292  	// 发起请求
   293  	apiReq := req.apiReq
   294  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agent_skills"
   295  	apiReq.HttpMethod = http.MethodPost
   296  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   297  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   298  	if err != nil {
   299  		return nil, err
   300  	}
   301  	// 反序列响应结果
   302  	resp := &CreateAgentSkillResp{ApiResp: apiResp}
   303  	err = apiResp.JSONUnmarshalBody(resp)
   304  	if err != nil {
   305  		return nil, err
   306  	}
   307  	return resp, err
   308  }
   309  
   310  // 删除客服技能
   311  //
   312  // - 该接口用于删除客服技能
   313  //
   314  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_skill/delete
   315  //
   316  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/delete_agentSkill.go
   317  func (a *agentSkill) Delete(ctx context.Context, req *DeleteAgentSkillReq, options ...larkcore.RequestOptionFunc) (*DeleteAgentSkillResp, error) {
   318  	// 发起请求
   319  	apiReq := req.apiReq
   320  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agent_skills/:agent_skill_id"
   321  	apiReq.HttpMethod = http.MethodDelete
   322  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   323  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   324  	if err != nil {
   325  		return nil, err
   326  	}
   327  	// 反序列响应结果
   328  	resp := &DeleteAgentSkillResp{ApiResp: apiResp}
   329  	err = apiResp.JSONUnmarshalBody(resp)
   330  	if err != nil {
   331  		return nil, err
   332  	}
   333  	return resp, err
   334  }
   335  
   336  // 获取客服技能
   337  //
   338  // - 该接口用于获取客服技能
   339  //
   340  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_skill/get
   341  //
   342  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/get_agentSkill.go
   343  func (a *agentSkill) Get(ctx context.Context, req *GetAgentSkillReq, options ...larkcore.RequestOptionFunc) (*GetAgentSkillResp, error) {
   344  	// 发起请求
   345  	apiReq := req.apiReq
   346  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agent_skills/:agent_skill_id"
   347  	apiReq.HttpMethod = http.MethodGet
   348  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   349  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   350  	if err != nil {
   351  		return nil, err
   352  	}
   353  	// 反序列响应结果
   354  	resp := &GetAgentSkillResp{ApiResp: apiResp}
   355  	err = apiResp.JSONUnmarshalBody(resp)
   356  	if err != nil {
   357  		return nil, err
   358  	}
   359  	return resp, err
   360  }
   361  
   362  // 获取全部客服技能
   363  //
   364  // - 获取全部客服技能
   365  //
   366  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_skill/list
   367  //
   368  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/list_agentSkill.go
   369  func (a *agentSkill) List(ctx context.Context, options ...larkcore.RequestOptionFunc) (*ListAgentSkillResp, error) {
   370  	// 发起请求
   371  	apiReq := &larkcore.ApiReq{
   372  		PathParams:  larkcore.PathParams{},
   373  		QueryParams: larkcore.QueryParams{},
   374  	}
   375  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agent_skills"
   376  	apiReq.HttpMethod = http.MethodGet
   377  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   378  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   379  	if err != nil {
   380  		return nil, err
   381  	}
   382  	// 反序列响应结果
   383  	resp := &ListAgentSkillResp{ApiResp: apiResp}
   384  	err = apiResp.JSONUnmarshalBody(resp)
   385  	if err != nil {
   386  		return nil, err
   387  	}
   388  	return resp, err
   389  }
   390  
   391  // 更新客服技能
   392  //
   393  // - 该接口用于更新客服技能
   394  //
   395  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_skill/patch
   396  //
   397  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/patch_agentSkill.go
   398  func (a *agentSkill) Patch(ctx context.Context, req *PatchAgentSkillReq, options ...larkcore.RequestOptionFunc) (*PatchAgentSkillResp, error) {
   399  	// 发起请求
   400  	apiReq := req.apiReq
   401  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agent_skills/:agent_skill_id"
   402  	apiReq.HttpMethod = http.MethodPatch
   403  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   404  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   405  	if err != nil {
   406  		return nil, err
   407  	}
   408  	// 反序列响应结果
   409  	resp := &PatchAgentSkillResp{ApiResp: apiResp}
   410  	err = apiResp.JSONUnmarshalBody(resp)
   411  	if err != nil {
   412  		return nil, err
   413  	}
   414  	return resp, err
   415  }
   416  
   417  // 获取客服技能列表
   418  //
   419  // - 该接口用于获取全部客服技能。仅支持自建应用。
   420  //
   421  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_skill_rule/list
   422  //
   423  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/list_agentSkillRule.go
   424  func (a *agentSkillRule) List(ctx context.Context, options ...larkcore.RequestOptionFunc) (*ListAgentSkillRuleResp, error) {
   425  	// 发起请求
   426  	apiReq := &larkcore.ApiReq{
   427  		PathParams:  larkcore.PathParams{},
   428  		QueryParams: larkcore.QueryParams{},
   429  	}
   430  	apiReq.ApiPath = "/open-apis/helpdesk/v1/agent_skill_rules"
   431  	apiReq.HttpMethod = http.MethodGet
   432  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   433  	apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...)
   434  	if err != nil {
   435  		return nil, err
   436  	}
   437  	// 反序列响应结果
   438  	resp := &ListAgentSkillRuleResp{ApiResp: apiResp}
   439  	err = apiResp.JSONUnmarshalBody(resp)
   440  	if err != nil {
   441  		return nil, err
   442  	}
   443  	return resp, err
   444  }
   445  
   446  // 服务台机器人发送消息
   447  //
   448  // - 通过服务台机器人给指定用户的服务台专属群或私聊发送消息,支持文本、富文本、卡片、图片。
   449  //
   450  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/bot-message/create
   451  //
   452  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/create_botMessage.go
   453  func (b *botMessage) Create(ctx context.Context, req *CreateBotMessageReq, options ...larkcore.RequestOptionFunc) (*CreateBotMessageResp, error) {
   454  	// 发起请求
   455  	apiReq := req.apiReq
   456  	apiReq.ApiPath = "/open-apis/helpdesk/v1/message"
   457  	apiReq.HttpMethod = http.MethodPost
   458  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   459  	apiResp, err := larkcore.Request(ctx, apiReq, b.service.config, options...)
   460  	if err != nil {
   461  		return nil, err
   462  	}
   463  	// 反序列响应结果
   464  	resp := &CreateBotMessageResp{ApiResp: apiResp}
   465  	err = apiResp.JSONUnmarshalBody(resp)
   466  	if err != nil {
   467  		return nil, err
   468  	}
   469  	return resp, err
   470  }
   471  
   472  // 创建知识库分类
   473  //
   474  // - 该接口用于创建知识库分类。
   475  //
   476  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/category/create
   477  //
   478  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/create_category.go
   479  func (c *category) Create(ctx context.Context, req *CreateCategoryReq, options ...larkcore.RequestOptionFunc) (*CreateCategoryResp, error) {
   480  	// 发起请求
   481  	apiReq := req.apiReq
   482  	apiReq.ApiPath = "/open-apis/helpdesk/v1/categories"
   483  	apiReq.HttpMethod = http.MethodPost
   484  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   485  	apiResp, err := larkcore.Request(ctx, apiReq, c.service.config, options...)
   486  	if err != nil {
   487  		return nil, err
   488  	}
   489  	// 反序列响应结果
   490  	resp := &CreateCategoryResp{ApiResp: apiResp}
   491  	err = apiResp.JSONUnmarshalBody(resp)
   492  	if err != nil {
   493  		return nil, err
   494  	}
   495  	return resp, err
   496  }
   497  
   498  // 删除知识库分类详情
   499  //
   500  // - 该接口用于删除知识库分类详情。
   501  //
   502  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/category/delete
   503  //
   504  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/delete_category.go
   505  func (c *category) Delete(ctx context.Context, req *DeleteCategoryReq, options ...larkcore.RequestOptionFunc) (*DeleteCategoryResp, error) {
   506  	// 发起请求
   507  	apiReq := req.apiReq
   508  	apiReq.ApiPath = "/open-apis/helpdesk/v1/categories/:id"
   509  	apiReq.HttpMethod = http.MethodDelete
   510  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   511  	apiResp, err := larkcore.Request(ctx, apiReq, c.service.config, options...)
   512  	if err != nil {
   513  		return nil, err
   514  	}
   515  	// 反序列响应结果
   516  	resp := &DeleteCategoryResp{ApiResp: apiResp}
   517  	err = apiResp.JSONUnmarshalBody(resp)
   518  	if err != nil {
   519  		return nil, err
   520  	}
   521  	return resp, err
   522  }
   523  
   524  // 获取知识库分类
   525  //
   526  // - 该接口用于获取知识库分类。
   527  //
   528  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/category/get
   529  //
   530  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/get_category.go
   531  func (c *category) Get(ctx context.Context, req *GetCategoryReq, options ...larkcore.RequestOptionFunc) (*GetCategoryResp, error) {
   532  	// 发起请求
   533  	apiReq := req.apiReq
   534  	apiReq.ApiPath = "/open-apis/helpdesk/v1/categories/:id"
   535  	apiReq.HttpMethod = http.MethodGet
   536  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   537  	apiResp, err := larkcore.Request(ctx, apiReq, c.service.config, options...)
   538  	if err != nil {
   539  		return nil, err
   540  	}
   541  	// 反序列响应结果
   542  	resp := &GetCategoryResp{ApiResp: apiResp}
   543  	err = apiResp.JSONUnmarshalBody(resp)
   544  	if err != nil {
   545  		return nil, err
   546  	}
   547  	return resp, err
   548  }
   549  
   550  // 获取全部知识库分类 - meta
   551  //
   552  // - 该接口用于获取服务台知识库所有分类
   553  //
   554  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/category/list
   555  //
   556  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/list_category.go
   557  func (c *category) List(ctx context.Context, req *ListCategoryReq, options ...larkcore.RequestOptionFunc) (*ListCategoryResp, error) {
   558  	// 发起请求
   559  	apiReq := req.apiReq
   560  	apiReq.ApiPath = "/open-apis/helpdesk/v1/categories"
   561  	apiReq.HttpMethod = http.MethodGet
   562  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   563  	apiResp, err := larkcore.Request(ctx, apiReq, c.service.config, options...)
   564  	if err != nil {
   565  		return nil, err
   566  	}
   567  	// 反序列响应结果
   568  	resp := &ListCategoryResp{ApiResp: apiResp}
   569  	err = apiResp.JSONUnmarshalBody(resp)
   570  	if err != nil {
   571  		return nil, err
   572  	}
   573  	return resp, err
   574  }
   575  
   576  // 更新知识库分类详情
   577  //
   578  // - 该接口用于更新知识库分类详情。
   579  //
   580  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/category/patch
   581  //
   582  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/patch_category.go
   583  func (c *category) Patch(ctx context.Context, req *PatchCategoryReq, options ...larkcore.RequestOptionFunc) (*PatchCategoryResp, error) {
   584  	// 发起请求
   585  	apiReq := req.apiReq
   586  	apiReq.ApiPath = "/open-apis/helpdesk/v1/categories/:id"
   587  	apiReq.HttpMethod = http.MethodPatch
   588  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   589  	apiResp, err := larkcore.Request(ctx, apiReq, c.service.config, options...)
   590  	if err != nil {
   591  		return nil, err
   592  	}
   593  	// 反序列响应结果
   594  	resp := &PatchCategoryResp{ApiResp: apiResp}
   595  	err = apiResp.JSONUnmarshalBody(resp)
   596  	if err != nil {
   597  		return nil, err
   598  	}
   599  	return resp, err
   600  }
   601  
   602  // 订阅服务台事件
   603  //
   604  // - 用于订阅服务台事件
   605  //
   606  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/event/subscribe
   607  //
   608  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/subscribe_event.go
   609  func (e *event) Subscribe(ctx context.Context, req *SubscribeEventReq, options ...larkcore.RequestOptionFunc) (*SubscribeEventResp, error) {
   610  	// 发起请求
   611  	apiReq := req.apiReq
   612  	apiReq.ApiPath = "/open-apis/helpdesk/v1/events/subscribe"
   613  	apiReq.HttpMethod = http.MethodPost
   614  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   615  	apiResp, err := larkcore.Request(ctx, apiReq, e.service.config, options...)
   616  	if err != nil {
   617  		return nil, err
   618  	}
   619  	// 反序列响应结果
   620  	resp := &SubscribeEventResp{ApiResp: apiResp}
   621  	err = apiResp.JSONUnmarshalBody(resp)
   622  	if err != nil {
   623  		return nil, err
   624  	}
   625  	return resp, err
   626  }
   627  
   628  // 取消订阅服务台事件
   629  //
   630  // - 用于取消订阅服务台事件
   631  //
   632  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/event/unsubscribe
   633  //
   634  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/unsubscribe_event.go
   635  func (e *event) Unsubscribe(ctx context.Context, req *UnsubscribeEventReq, options ...larkcore.RequestOptionFunc) (*UnsubscribeEventResp, error) {
   636  	// 发起请求
   637  	apiReq := req.apiReq
   638  	apiReq.ApiPath = "/open-apis/helpdesk/v1/events/unsubscribe"
   639  	apiReq.HttpMethod = http.MethodPost
   640  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   641  	apiResp, err := larkcore.Request(ctx, apiReq, e.service.config, options...)
   642  	if err != nil {
   643  		return nil, err
   644  	}
   645  	// 反序列响应结果
   646  	resp := &UnsubscribeEventResp{ApiResp: apiResp}
   647  	err = apiResp.JSONUnmarshalBody(resp)
   648  	if err != nil {
   649  		return nil, err
   650  	}
   651  	return resp, err
   652  }
   653  
   654  // 创建知识库
   655  //
   656  // - 该接口用于创建知识库。
   657  //
   658  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/faq/create
   659  //
   660  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/create_faq.go
   661  func (f *faq) Create(ctx context.Context, req *CreateFaqReq, options ...larkcore.RequestOptionFunc) (*CreateFaqResp, error) {
   662  	// 发起请求
   663  	apiReq := req.apiReq
   664  	apiReq.ApiPath = "/open-apis/helpdesk/v1/faqs"
   665  	apiReq.HttpMethod = http.MethodPost
   666  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   667  	apiResp, err := larkcore.Request(ctx, apiReq, f.service.config, options...)
   668  	if err != nil {
   669  		return nil, err
   670  	}
   671  	// 反序列响应结果
   672  	resp := &CreateFaqResp{ApiResp: apiResp}
   673  	err = apiResp.JSONUnmarshalBody(resp)
   674  	if err != nil {
   675  		return nil, err
   676  	}
   677  	return resp, err
   678  }
   679  
   680  // 删除知识库
   681  //
   682  // - 该接口用于删除知识库。
   683  //
   684  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/faq/delete
   685  //
   686  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/delete_faq.go
   687  func (f *faq) Delete(ctx context.Context, req *DeleteFaqReq, options ...larkcore.RequestOptionFunc) (*DeleteFaqResp, error) {
   688  	// 发起请求
   689  	apiReq := req.apiReq
   690  	apiReq.ApiPath = "/open-apis/helpdesk/v1/faqs/:id"
   691  	apiReq.HttpMethod = http.MethodDelete
   692  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   693  	apiResp, err := larkcore.Request(ctx, apiReq, f.service.config, options...)
   694  	if err != nil {
   695  		return nil, err
   696  	}
   697  	// 反序列响应结果
   698  	resp := &DeleteFaqResp{ApiResp: apiResp}
   699  	err = apiResp.JSONUnmarshalBody(resp)
   700  	if err != nil {
   701  		return nil, err
   702  	}
   703  	return resp, err
   704  }
   705  
   706  // 获取知识库图像
   707  //
   708  // - 该接口用于获取知识库图像。
   709  //
   710  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/faq/faq_image
   711  //
   712  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/faqImage_faq.go
   713  func (f *faq) FaqImage(ctx context.Context, req *FaqImageFaqReq, options ...larkcore.RequestOptionFunc) (*FaqImageFaqResp, error) {
   714  	// 发起请求
   715  	apiReq := req.apiReq
   716  	apiReq.ApiPath = "/open-apis/helpdesk/v1/faqs/:id/image/:image_key"
   717  	apiReq.HttpMethod = http.MethodGet
   718  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   719  	apiResp, err := larkcore.Request(ctx, apiReq, f.service.config, options...)
   720  	if err != nil {
   721  		return nil, err
   722  	}
   723  	// 反序列响应结果
   724  	resp := &FaqImageFaqResp{ApiResp: apiResp}
   725  	// 如果是下载,则设置响应结果
   726  	if apiResp.StatusCode == http.StatusOK {
   727  		resp.File = bytes.NewBuffer(apiResp.RawBody)
   728  		resp.FileName = larkcore.FileNameByHeader(apiResp.Header)
   729  		return resp, err
   730  	}
   731  	err = apiResp.JSONUnmarshalBody(resp)
   732  	if err != nil {
   733  		return nil, err
   734  	}
   735  	return resp, err
   736  }
   737  
   738  // 获取知识库详情
   739  //
   740  // - 该接口用于获取服务台知识库详情。
   741  //
   742  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/faq/get
   743  //
   744  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/get_faq.go
   745  func (f *faq) Get(ctx context.Context, req *GetFaqReq, options ...larkcore.RequestOptionFunc) (*GetFaqResp, error) {
   746  	// 发起请求
   747  	apiReq := req.apiReq
   748  	apiReq.ApiPath = "/open-apis/helpdesk/v1/faqs/:id"
   749  	apiReq.HttpMethod = http.MethodGet
   750  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   751  	apiResp, err := larkcore.Request(ctx, apiReq, f.service.config, options...)
   752  	if err != nil {
   753  		return nil, err
   754  	}
   755  	// 反序列响应结果
   756  	resp := &GetFaqResp{ApiResp: apiResp}
   757  	err = apiResp.JSONUnmarshalBody(resp)
   758  	if err != nil {
   759  		return nil, err
   760  	}
   761  	return resp, err
   762  }
   763  
   764  // 获取全部知识库详情
   765  //
   766  // - 该接口用于获取服务台知识库详情。
   767  //
   768  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/faq/list
   769  //
   770  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/list_faq.go
   771  func (f *faq) List(ctx context.Context, req *ListFaqReq, options ...larkcore.RequestOptionFunc) (*ListFaqResp, error) {
   772  	// 发起请求
   773  	apiReq := req.apiReq
   774  	apiReq.ApiPath = "/open-apis/helpdesk/v1/faqs"
   775  	apiReq.HttpMethod = http.MethodGet
   776  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   777  	apiResp, err := larkcore.Request(ctx, apiReq, f.service.config, options...)
   778  	if err != nil {
   779  		return nil, err
   780  	}
   781  	// 反序列响应结果
   782  	resp := &ListFaqResp{ApiResp: apiResp}
   783  	err = apiResp.JSONUnmarshalBody(resp)
   784  	if err != nil {
   785  		return nil, err
   786  	}
   787  	return resp, err
   788  }
   789  func (f *faq) ListByIterator(ctx context.Context, req *ListFaqReq, options ...larkcore.RequestOptionFunc) (*ListFaqIterator, error) {
   790  	return &ListFaqIterator{
   791  		ctx:      ctx,
   792  		req:      req,
   793  		listFunc: f.List,
   794  		options:  options,
   795  		limit:    req.Limit}, nil
   796  }
   797  
   798  // 修改知识库
   799  //
   800  // - 该接口用于修改知识库。
   801  //
   802  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/faq/patch
   803  //
   804  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/patch_faq.go
   805  func (f *faq) Patch(ctx context.Context, req *PatchFaqReq, options ...larkcore.RequestOptionFunc) (*PatchFaqResp, error) {
   806  	// 发起请求
   807  	apiReq := req.apiReq
   808  	apiReq.ApiPath = "/open-apis/helpdesk/v1/faqs/:id"
   809  	apiReq.HttpMethod = http.MethodPatch
   810  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   811  	apiResp, err := larkcore.Request(ctx, apiReq, f.service.config, options...)
   812  	if err != nil {
   813  		return nil, err
   814  	}
   815  	// 反序列响应结果
   816  	resp := &PatchFaqResp{ApiResp: apiResp}
   817  	err = apiResp.JSONUnmarshalBody(resp)
   818  	if err != nil {
   819  		return nil, err
   820  	}
   821  	return resp, err
   822  }
   823  
   824  // 搜索知识库
   825  //
   826  // - 该接口用于搜索服务台知识库。
   827  //
   828  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/faq/search
   829  //
   830  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/search_faq.go
   831  func (f *faq) Search(ctx context.Context, req *SearchFaqReq, options ...larkcore.RequestOptionFunc) (*SearchFaqResp, error) {
   832  	// 发起请求
   833  	apiReq := req.apiReq
   834  	apiReq.ApiPath = "/open-apis/helpdesk/v1/faqs/search"
   835  	apiReq.HttpMethod = http.MethodGet
   836  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   837  	apiResp, err := larkcore.Request(ctx, apiReq, f.service.config, options...)
   838  	if err != nil {
   839  		return nil, err
   840  	}
   841  	// 反序列响应结果
   842  	resp := &SearchFaqResp{ApiResp: apiResp}
   843  	err = apiResp.JSONUnmarshalBody(resp)
   844  	if err != nil {
   845  		return nil, err
   846  	}
   847  	return resp, err
   848  }
   849  func (f *faq) SearchByIterator(ctx context.Context, req *SearchFaqReq, options ...larkcore.RequestOptionFunc) (*SearchFaqIterator, error) {
   850  	return &SearchFaqIterator{
   851  		ctx:      ctx,
   852  		req:      req,
   853  		listFunc: f.Search,
   854  		options:  options,
   855  		limit:    req.Limit}, nil
   856  }
   857  
   858  // 取消审核
   859  //
   860  // - 提交审核后,如果需要取消审核,则调用此接口
   861  //
   862  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/notification/cancel_approve
   863  //
   864  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/cancelApprove_notification.go
   865  func (n *notification) CancelApprove(ctx context.Context, req *CancelApproveNotificationReq, options ...larkcore.RequestOptionFunc) (*CancelApproveNotificationResp, error) {
   866  	// 发起请求
   867  	apiReq := req.apiReq
   868  	apiReq.ApiPath = "/open-apis/helpdesk/v1/notifications/:notification_id/cancel_approve"
   869  	apiReq.HttpMethod = http.MethodPost
   870  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   871  	apiResp, err := larkcore.Request(ctx, apiReq, n.service.config, options...)
   872  	if err != nil {
   873  		return nil, err
   874  	}
   875  	// 反序列响应结果
   876  	resp := &CancelApproveNotificationResp{ApiResp: apiResp}
   877  	err = apiResp.JSONUnmarshalBody(resp)
   878  	if err != nil {
   879  		return nil, err
   880  	}
   881  	return resp, err
   882  }
   883  
   884  // 取消推送
   885  //
   886  // - 取消推送接口,审核通过后待调度可以调用,发送过程中可以调用(会撤回已发送的消息),发送完成后可以需要推送(会撤回所有已发送的消息)
   887  //
   888  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/notification/cancel_send
   889  //
   890  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/cancelSend_notification.go
   891  func (n *notification) CancelSend(ctx context.Context, req *CancelSendNotificationReq, options ...larkcore.RequestOptionFunc) (*CancelSendNotificationResp, error) {
   892  	// 发起请求
   893  	apiReq := req.apiReq
   894  	apiReq.ApiPath = "/open-apis/helpdesk/v1/notifications/:notification_id/cancel_send"
   895  	apiReq.HttpMethod = http.MethodPost
   896  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   897  	apiResp, err := larkcore.Request(ctx, apiReq, n.service.config, options...)
   898  	if err != nil {
   899  		return nil, err
   900  	}
   901  	// 反序列响应结果
   902  	resp := &CancelSendNotificationResp{ApiResp: apiResp}
   903  	err = apiResp.JSONUnmarshalBody(resp)
   904  	if err != nil {
   905  		return nil, err
   906  	}
   907  	return resp, err
   908  }
   909  
   910  // 创建推送
   911  //
   912  // - 调用接口创建推送,创建成功后为草稿状态
   913  //
   914  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/notification/create
   915  //
   916  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/create_notification.go
   917  func (n *notification) Create(ctx context.Context, req *CreateNotificationReq, options ...larkcore.RequestOptionFunc) (*CreateNotificationResp, error) {
   918  	// 发起请求
   919  	apiReq := req.apiReq
   920  	apiReq.ApiPath = "/open-apis/helpdesk/v1/notifications"
   921  	apiReq.HttpMethod = http.MethodPost
   922  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   923  	apiResp, err := larkcore.Request(ctx, apiReq, n.service.config, options...)
   924  	if err != nil {
   925  		return nil, err
   926  	}
   927  	// 反序列响应结果
   928  	resp := &CreateNotificationResp{ApiResp: apiResp}
   929  	err = apiResp.JSONUnmarshalBody(resp)
   930  	if err != nil {
   931  		return nil, err
   932  	}
   933  	return resp, err
   934  }
   935  
   936  // 执行推送
   937  //
   938  // - 审核通过后调用此接口设置推送时间,等待调度系统调度,发送消息
   939  //
   940  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/notification/execute_send
   941  //
   942  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/executeSend_notification.go
   943  func (n *notification) ExecuteSend(ctx context.Context, req *ExecuteSendNotificationReq, options ...larkcore.RequestOptionFunc) (*ExecuteSendNotificationResp, error) {
   944  	// 发起请求
   945  	apiReq := req.apiReq
   946  	apiReq.ApiPath = "/open-apis/helpdesk/v1/notifications/:notification_id/execute_send"
   947  	apiReq.HttpMethod = http.MethodPost
   948  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
   949  	apiResp, err := larkcore.Request(ctx, apiReq, n.service.config, options...)
   950  	if err != nil {
   951  		return nil, err
   952  	}
   953  	// 反序列响应结果
   954  	resp := &ExecuteSendNotificationResp{ApiResp: apiResp}
   955  	err = apiResp.JSONUnmarshalBody(resp)
   956  	if err != nil {
   957  		return nil, err
   958  	}
   959  	return resp, err
   960  }
   961  
   962  // 查询推送
   963  //
   964  // - 查询推送详情
   965  //
   966  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/notification/get
   967  //
   968  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/get_notification.go
   969  func (n *notification) Get(ctx context.Context, req *GetNotificationReq, options ...larkcore.RequestOptionFunc) (*GetNotificationResp, error) {
   970  	// 发起请求
   971  	apiReq := req.apiReq
   972  	apiReq.ApiPath = "/open-apis/helpdesk/v1/notifications/:notification_id"
   973  	apiReq.HttpMethod = http.MethodGet
   974  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   975  	apiResp, err := larkcore.Request(ctx, apiReq, n.service.config, options...)
   976  	if err != nil {
   977  		return nil, err
   978  	}
   979  	// 反序列响应结果
   980  	resp := &GetNotificationResp{ApiResp: apiResp}
   981  	err = apiResp.JSONUnmarshalBody(resp)
   982  	if err != nil {
   983  		return nil, err
   984  	}
   985  	return resp, err
   986  }
   987  
   988  // 更新推送
   989  //
   990  // - 更新推送信息,只有在草稿状态下才可以调用此接口进行更新
   991  //
   992  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/notification/patch
   993  //
   994  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/patch_notification.go
   995  func (n *notification) Patch(ctx context.Context, req *PatchNotificationReq, options ...larkcore.RequestOptionFunc) (*PatchNotificationResp, error) {
   996  	// 发起请求
   997  	apiReq := req.apiReq
   998  	apiReq.ApiPath = "/open-apis/helpdesk/v1/notifications/:notification_id"
   999  	apiReq.HttpMethod = http.MethodPatch
  1000  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
  1001  	apiResp, err := larkcore.Request(ctx, apiReq, n.service.config, options...)
  1002  	if err != nil {
  1003  		return nil, err
  1004  	}
  1005  	// 反序列响应结果
  1006  	resp := &PatchNotificationResp{ApiResp: apiResp}
  1007  	err = apiResp.JSONUnmarshalBody(resp)
  1008  	if err != nil {
  1009  		return nil, err
  1010  	}
  1011  	return resp, err
  1012  }
  1013  
  1014  // 预览推送内容
  1015  //
  1016  // - 在正式执行推送之前是可以调用此接口预览设置的推送内容
  1017  //
  1018  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/notification/preview
  1019  //
  1020  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/preview_notification.go
  1021  func (n *notification) Preview(ctx context.Context, req *PreviewNotificationReq, options ...larkcore.RequestOptionFunc) (*PreviewNotificationResp, error) {
  1022  	// 发起请求
  1023  	apiReq := req.apiReq
  1024  	apiReq.ApiPath = "/open-apis/helpdesk/v1/notifications/:notification_id/preview"
  1025  	apiReq.HttpMethod = http.MethodPost
  1026  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
  1027  	apiResp, err := larkcore.Request(ctx, apiReq, n.service.config, options...)
  1028  	if err != nil {
  1029  		return nil, err
  1030  	}
  1031  	// 反序列响应结果
  1032  	resp := &PreviewNotificationResp{ApiResp: apiResp}
  1033  	err = apiResp.JSONUnmarshalBody(resp)
  1034  	if err != nil {
  1035  		return nil, err
  1036  	}
  1037  	return resp, err
  1038  }
  1039  
  1040  // 提交审核
  1041  //
  1042  // - 正常情况下调用创建推送接口后,就可以调用提交审核接口,如果创建人是服务台owner则会自动审核通过,否则会通知服务台owner审核此推送信息
  1043  //
  1044  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/notification/submit_approve
  1045  //
  1046  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/submitApprove_notification.go
  1047  func (n *notification) SubmitApprove(ctx context.Context, req *SubmitApproveNotificationReq, options ...larkcore.RequestOptionFunc) (*SubmitApproveNotificationResp, error) {
  1048  	// 发起请求
  1049  	apiReq := req.apiReq
  1050  	apiReq.ApiPath = "/open-apis/helpdesk/v1/notifications/:notification_id/submit_approve"
  1051  	apiReq.HttpMethod = http.MethodPost
  1052  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
  1053  	apiResp, err := larkcore.Request(ctx, apiReq, n.service.config, options...)
  1054  	if err != nil {
  1055  		return nil, err
  1056  	}
  1057  	// 反序列响应结果
  1058  	resp := &SubmitApproveNotificationResp{ApiResp: apiResp}
  1059  	err = apiResp.JSONUnmarshalBody(resp)
  1060  	if err != nil {
  1061  		return nil, err
  1062  	}
  1063  	return resp, err
  1064  }
  1065  
  1066  // 回复用户提问结果至工单
  1067  //
  1068  // - 该接口用于回复用户提问结果至工单,需要工单仍处于进行中且未接入人工状态。仅支持自建应用。
  1069  //
  1070  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/answer_user_query
  1071  //
  1072  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/answerUserQuery_ticket.go
  1073  func (t *ticket) AnswerUserQuery(ctx context.Context, req *AnswerUserQueryTicketReq, options ...larkcore.RequestOptionFunc) (*AnswerUserQueryTicketResp, error) {
  1074  	// 发起请求
  1075  	apiReq := req.apiReq
  1076  	apiReq.ApiPath = "/open-apis/helpdesk/v1/tickets/:ticket_id/answer_user_query"
  1077  	apiReq.HttpMethod = http.MethodPost
  1078  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
  1079  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1080  	if err != nil {
  1081  		return nil, err
  1082  	}
  1083  	// 反序列响应结果
  1084  	resp := &AnswerUserQueryTicketResp{ApiResp: apiResp}
  1085  	err = apiResp.JSONUnmarshalBody(resp)
  1086  	if err != nil {
  1087  		return nil, err
  1088  	}
  1089  	return resp, err
  1090  }
  1091  
  1092  // 获取服务台自定义字段详情
  1093  //
  1094  // - 该接口用于获取服务台自定义字段详情。
  1095  //
  1096  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/customized_fields
  1097  //
  1098  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/customizedFields_ticket.go
  1099  func (t *ticket) CustomizedFields(ctx context.Context, req *CustomizedFieldsTicketReq, options ...larkcore.RequestOptionFunc) (*CustomizedFieldsTicketResp, error) {
  1100  	// 发起请求
  1101  	apiReq := req.apiReq
  1102  	apiReq.ApiPath = "/open-apis/helpdesk/v1/customized_fields"
  1103  	apiReq.HttpMethod = http.MethodGet
  1104  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
  1105  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1106  	if err != nil {
  1107  		return nil, err
  1108  	}
  1109  	// 反序列响应结果
  1110  	resp := &CustomizedFieldsTicketResp{ApiResp: apiResp}
  1111  	err = apiResp.JSONUnmarshalBody(resp)
  1112  	if err != nil {
  1113  		return nil, err
  1114  	}
  1115  	return resp, err
  1116  }
  1117  
  1118  // 获取工单详情
  1119  //
  1120  // - 该接口用于获取单个服务台工单详情。仅支持自建应用。
  1121  //
  1122  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/get
  1123  //
  1124  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/get_ticket.go
  1125  func (t *ticket) Get(ctx context.Context, req *GetTicketReq, options ...larkcore.RequestOptionFunc) (*GetTicketResp, error) {
  1126  	// 发起请求
  1127  	apiReq := req.apiReq
  1128  	apiReq.ApiPath = "/open-apis/helpdesk/v1/tickets/:ticket_id"
  1129  	apiReq.HttpMethod = http.MethodGet
  1130  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
  1131  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1132  	if err != nil {
  1133  		return nil, err
  1134  	}
  1135  	// 反序列响应结果
  1136  	resp := &GetTicketResp{ApiResp: apiResp}
  1137  	err = apiResp.JSONUnmarshalBody(resp)
  1138  	if err != nil {
  1139  		return nil, err
  1140  	}
  1141  	return resp, err
  1142  }
  1143  
  1144  // 获取全部工单详情
  1145  //
  1146  // - 该接口用于获取全部工单详情。仅支持自建应用。
  1147  //
  1148  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list
  1149  //
  1150  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/list_ticket.go
  1151  func (t *ticket) List(ctx context.Context, req *ListTicketReq, options ...larkcore.RequestOptionFunc) (*ListTicketResp, error) {
  1152  	// 发起请求
  1153  	apiReq := req.apiReq
  1154  	apiReq.ApiPath = "/open-apis/helpdesk/v1/tickets"
  1155  	apiReq.HttpMethod = http.MethodGet
  1156  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
  1157  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1158  	if err != nil {
  1159  		return nil, err
  1160  	}
  1161  	// 反序列响应结果
  1162  	resp := &ListTicketResp{ApiResp: apiResp}
  1163  	err = apiResp.JSONUnmarshalBody(resp)
  1164  	if err != nil {
  1165  		return nil, err
  1166  	}
  1167  	return resp, err
  1168  }
  1169  
  1170  // 创建服务台对话
  1171  //
  1172  // - 该接口用于创建服务台对话。
  1173  //
  1174  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/start_service
  1175  //
  1176  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/startService_ticket.go
  1177  func (t *ticket) StartService(ctx context.Context, req *StartServiceTicketReq, options ...larkcore.RequestOptionFunc) (*StartServiceTicketResp, error) {
  1178  	// 发起请求
  1179  	apiReq := req.apiReq
  1180  	apiReq.ApiPath = "/open-apis/helpdesk/v1/start_service"
  1181  	apiReq.HttpMethod = http.MethodPost
  1182  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
  1183  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1184  	if err != nil {
  1185  		return nil, err
  1186  	}
  1187  	// 反序列响应结果
  1188  	resp := &StartServiceTicketResp{ApiResp: apiResp}
  1189  	err = apiResp.JSONUnmarshalBody(resp)
  1190  	if err != nil {
  1191  		return nil, err
  1192  	}
  1193  	return resp, err
  1194  }
  1195  
  1196  // 获取服务台工单内消息图像
  1197  //
  1198  // - 该接口用于获取服务台工单消息图象。仅支持自建应用。
  1199  //
  1200  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/ticket_image
  1201  //
  1202  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/ticketImage_ticket.go
  1203  func (t *ticket) TicketImage(ctx context.Context, req *TicketImageTicketReq, options ...larkcore.RequestOptionFunc) (*TicketImageTicketResp, error) {
  1204  	// 发起请求
  1205  	apiReq := req.apiReq
  1206  	apiReq.ApiPath = "/open-apis/helpdesk/v1/ticket_images"
  1207  	apiReq.HttpMethod = http.MethodGet
  1208  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
  1209  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1210  	if err != nil {
  1211  		return nil, err
  1212  	}
  1213  	// 反序列响应结果
  1214  	resp := &TicketImageTicketResp{ApiResp: apiResp}
  1215  	// 如果是下载,则设置响应结果
  1216  	if apiResp.StatusCode == http.StatusOK {
  1217  		resp.File = bytes.NewBuffer(apiResp.RawBody)
  1218  		resp.FileName = larkcore.FileNameByHeader(apiResp.Header)
  1219  		return resp, err
  1220  	}
  1221  	err = apiResp.JSONUnmarshalBody(resp)
  1222  	if err != nil {
  1223  		return nil, err
  1224  	}
  1225  	return resp, err
  1226  }
  1227  
  1228  // 更新工单详情
  1229  //
  1230  // - 该接口用于更新服务台工单详情。只会更新数据,不会触发相关操作。如修改工单状态到关单,不会关闭聊天页面。仅支持自建应用。要更新的工单字段必须至少输入一项。
  1231  //
  1232  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/update
  1233  //
  1234  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/update_ticket.go
  1235  func (t *ticket) Update(ctx context.Context, req *UpdateTicketReq, options ...larkcore.RequestOptionFunc) (*UpdateTicketResp, error) {
  1236  	// 发起请求
  1237  	apiReq := req.apiReq
  1238  	apiReq.ApiPath = "/open-apis/helpdesk/v1/tickets/:ticket_id"
  1239  	apiReq.HttpMethod = http.MethodPut
  1240  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
  1241  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1242  	if err != nil {
  1243  		return nil, err
  1244  	}
  1245  	// 反序列响应结果
  1246  	resp := &UpdateTicketResp{ApiResp: apiResp}
  1247  	err = apiResp.JSONUnmarshalBody(resp)
  1248  	if err != nil {
  1249  		return nil, err
  1250  	}
  1251  	return resp, err
  1252  }
  1253  
  1254  // 工单发送消息
  1255  //
  1256  // - 该接口用于工单发送消息。
  1257  //
  1258  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket-message/create
  1259  //
  1260  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/create_ticketMessage.go
  1261  func (t *ticketMessage) Create(ctx context.Context, req *CreateTicketMessageReq, options ...larkcore.RequestOptionFunc) (*CreateTicketMessageResp, error) {
  1262  	// 发起请求
  1263  	apiReq := req.apiReq
  1264  	apiReq.ApiPath = "/open-apis/helpdesk/v1/tickets/:ticket_id/messages"
  1265  	apiReq.HttpMethod = http.MethodPost
  1266  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
  1267  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1268  	if err != nil {
  1269  		return nil, err
  1270  	}
  1271  	// 反序列响应结果
  1272  	resp := &CreateTicketMessageResp{ApiResp: apiResp}
  1273  	err = apiResp.JSONUnmarshalBody(resp)
  1274  	if err != nil {
  1275  		return nil, err
  1276  	}
  1277  	return resp, err
  1278  }
  1279  
  1280  // 获取服务台工单消息详情
  1281  //
  1282  // - 该接口用于获取服务台工单消息详情。
  1283  //
  1284  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket-message/list
  1285  //
  1286  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/list_ticketMessage.go
  1287  func (t *ticketMessage) List(ctx context.Context, req *ListTicketMessageReq, options ...larkcore.RequestOptionFunc) (*ListTicketMessageResp, error) {
  1288  	// 发起请求
  1289  	apiReq := req.apiReq
  1290  	apiReq.ApiPath = "/open-apis/helpdesk/v1/tickets/:ticket_id/messages"
  1291  	apiReq.HttpMethod = http.MethodGet
  1292  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
  1293  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1294  	if err != nil {
  1295  		return nil, err
  1296  	}
  1297  	// 反序列响应结果
  1298  	resp := &ListTicketMessageResp{ApiResp: apiResp}
  1299  	err = apiResp.JSONUnmarshalBody(resp)
  1300  	if err != nil {
  1301  		return nil, err
  1302  	}
  1303  	return resp, err
  1304  }
  1305  
  1306  // 创建工单自定义字段
  1307  //
  1308  // - 该接口用于创建自定义字段
  1309  //
  1310  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/create
  1311  //
  1312  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/create_ticketCustomizedField.go
  1313  func (t *ticketCustomizedField) Create(ctx context.Context, req *CreateTicketCustomizedFieldReq, options ...larkcore.RequestOptionFunc) (*CreateTicketCustomizedFieldResp, error) {
  1314  	// 发起请求
  1315  	apiReq := req.apiReq
  1316  	apiReq.ApiPath = "/open-apis/helpdesk/v1/ticket_customized_fields"
  1317  	apiReq.HttpMethod = http.MethodPost
  1318  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
  1319  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1320  	if err != nil {
  1321  		return nil, err
  1322  	}
  1323  	// 反序列响应结果
  1324  	resp := &CreateTicketCustomizedFieldResp{ApiResp: apiResp}
  1325  	err = apiResp.JSONUnmarshalBody(resp)
  1326  	if err != nil {
  1327  		return nil, err
  1328  	}
  1329  	return resp, err
  1330  }
  1331  
  1332  // 删除工单自定义字段
  1333  //
  1334  // - 该接口用于删除工单自定义字段。
  1335  //
  1336  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/delete
  1337  //
  1338  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/delete_ticketCustomizedField.go
  1339  func (t *ticketCustomizedField) Delete(ctx context.Context, req *DeleteTicketCustomizedFieldReq, options ...larkcore.RequestOptionFunc) (*DeleteTicketCustomizedFieldResp, error) {
  1340  	// 发起请求
  1341  	apiReq := req.apiReq
  1342  	apiReq.ApiPath = "/open-apis/helpdesk/v1/ticket_customized_fields/:ticket_customized_field_id"
  1343  	apiReq.HttpMethod = http.MethodDelete
  1344  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
  1345  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1346  	if err != nil {
  1347  		return nil, err
  1348  	}
  1349  	// 反序列响应结果
  1350  	resp := &DeleteTicketCustomizedFieldResp{ApiResp: apiResp}
  1351  	err = apiResp.JSONUnmarshalBody(resp)
  1352  	if err != nil {
  1353  		return nil, err
  1354  	}
  1355  	return resp, err
  1356  }
  1357  
  1358  // 获取工单自定义字段
  1359  //
  1360  // - 该接口用于获取工单自定义字段详情。
  1361  //
  1362  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/get
  1363  //
  1364  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/get_ticketCustomizedField.go
  1365  func (t *ticketCustomizedField) Get(ctx context.Context, req *GetTicketCustomizedFieldReq, options ...larkcore.RequestOptionFunc) (*GetTicketCustomizedFieldResp, error) {
  1366  	// 发起请求
  1367  	apiReq := req.apiReq
  1368  	apiReq.ApiPath = "/open-apis/helpdesk/v1/ticket_customized_fields/:ticket_customized_field_id"
  1369  	apiReq.HttpMethod = http.MethodGet
  1370  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
  1371  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1372  	if err != nil {
  1373  		return nil, err
  1374  	}
  1375  	// 反序列响应结果
  1376  	resp := &GetTicketCustomizedFieldResp{ApiResp: apiResp}
  1377  	err = apiResp.JSONUnmarshalBody(resp)
  1378  	if err != nil {
  1379  		return nil, err
  1380  	}
  1381  	return resp, err
  1382  }
  1383  
  1384  // 获取全部工单自定义字段
  1385  //
  1386  // - 该接口用于获取全部工单自定义字段。
  1387  //
  1388  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/list
  1389  //
  1390  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/list_ticketCustomizedField.go
  1391  func (t *ticketCustomizedField) List(ctx context.Context, req *ListTicketCustomizedFieldReq, options ...larkcore.RequestOptionFunc) (*ListTicketCustomizedFieldResp, error) {
  1392  	// 发起请求
  1393  	apiReq := req.apiReq
  1394  	apiReq.ApiPath = "/open-apis/helpdesk/v1/ticket_customized_fields"
  1395  	apiReq.HttpMethod = http.MethodGet
  1396  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
  1397  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1398  	if err != nil {
  1399  		return nil, err
  1400  	}
  1401  	// 反序列响应结果
  1402  	resp := &ListTicketCustomizedFieldResp{ApiResp: apiResp}
  1403  	err = apiResp.JSONUnmarshalBody(resp)
  1404  	if err != nil {
  1405  		return nil, err
  1406  	}
  1407  	return resp, err
  1408  }
  1409  
  1410  // 更新工单自定义字段
  1411  //
  1412  // - 该接口用于更新自定义字段。
  1413  //
  1414  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/patch
  1415  //
  1416  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/helpdeskv1/patch_ticketCustomizedField.go
  1417  func (t *ticketCustomizedField) Patch(ctx context.Context, req *PatchTicketCustomizedFieldReq, options ...larkcore.RequestOptionFunc) (*PatchTicketCustomizedFieldResp, error) {
  1418  	// 发起请求
  1419  	apiReq := req.apiReq
  1420  	apiReq.ApiPath = "/open-apis/helpdesk/v1/ticket_customized_fields/:ticket_customized_field_id"
  1421  	apiReq.HttpMethod = http.MethodPatch
  1422  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser}
  1423  	apiResp, err := larkcore.Request(ctx, apiReq, t.service.config, options...)
  1424  	if err != nil {
  1425  		return nil, err
  1426  	}
  1427  	// 反序列响应结果
  1428  	resp := &PatchTicketCustomizedFieldResp{ApiResp: apiResp}
  1429  	err = apiResp.JSONUnmarshalBody(resp)
  1430  	if err != nil {
  1431  		return nil, err
  1432  	}
  1433  	return resp, err
  1434  }