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

     1  // Package okr 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 larkokr
    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) *OkrService {
    24  	o := &OkrService{config: config}
    25  	o.Image = &image{service: o}
    26  	o.Okr = &okr{service: o}
    27  	o.Period = &period{service: o}
    28  	o.ProgressRecord = &progressRecord{service: o}
    29  	o.UserOkr = &userOkr{service: o}
    30  	return o
    31  }
    32  
    33  type OkrService struct {
    34  	config         *larkcore.Config
    35  	Image          *image          // 图片
    36  	Okr            *okr            // OKR
    37  	Period         *period         // OKR周期
    38  	ProgressRecord *progressRecord // OKR进展记录
    39  	UserOkr        *userOkr        // 用户OKR
    40  }
    41  
    42  type image struct {
    43  	service *OkrService
    44  }
    45  type okr struct {
    46  	service *OkrService
    47  }
    48  type period struct {
    49  	service *OkrService
    50  }
    51  type progressRecord struct {
    52  	service *OkrService
    53  }
    54  type userOkr struct {
    55  	service *OkrService
    56  }
    57  
    58  // 上传图片
    59  //
    60  // - 上传图片
    61  //
    62  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/okr-v1/image/upload
    63  //
    64  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/okrv1/upload_image.go
    65  func (i *image) Upload(ctx context.Context, req *UploadImageReq, options ...larkcore.RequestOptionFunc) (*UploadImageResp, error) {
    66  	options = append(options, larkcore.WithFileUpload())
    67  	// 发起请求
    68  	apiReq := req.apiReq
    69  	apiReq.ApiPath = "/open-apis/okr/v1/images/upload"
    70  	apiReq.HttpMethod = http.MethodPost
    71  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
    72  	apiResp, err := larkcore.Request(ctx, apiReq, i.service.config, options...)
    73  	if err != nil {
    74  		return nil, err
    75  	}
    76  	// 反序列响应结果
    77  	resp := &UploadImageResp{ApiResp: apiResp}
    78  	err = apiResp.JSONUnmarshalBody(resp)
    79  	if err != nil {
    80  		return nil, err
    81  	}
    82  	return resp, err
    83  }
    84  
    85  // 批量获取OKR
    86  //
    87  // - 根据OKR id批量获取OKR
    88  //
    89  // - 使用<md-tag mode="inline" type="token-tenant">tenant_access_token</md-tag>需要额外申请权限<md-perm ;href="/ssl:ttdoc/ukTMukTMukTM/uQjN3QjL0YzN04CN2cDN">以应用身份访问OKR信息</md-perm>
    90  //
    91  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/okr-v1/okr/batch_get
    92  //
    93  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/okrv1/batchGet_okr.go
    94  func (o *okr) BatchGet(ctx context.Context, req *BatchGetOkrReq, options ...larkcore.RequestOptionFunc) (*BatchGetOkrResp, error) {
    95  	// 发起请求
    96  	apiReq := req.apiReq
    97  	apiReq.ApiPath = "/open-apis/okr/v1/okrs/batch_get"
    98  	apiReq.HttpMethod = http.MethodGet
    99  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   100  	apiResp, err := larkcore.Request(ctx, apiReq, o.service.config, options...)
   101  	if err != nil {
   102  		return nil, err
   103  	}
   104  	// 反序列响应结果
   105  	resp := &BatchGetOkrResp{ApiResp: apiResp}
   106  	err = apiResp.JSONUnmarshalBody(resp)
   107  	if err != nil {
   108  		return nil, err
   109  	}
   110  	return resp, err
   111  }
   112  
   113  // 获取OKR周期列表
   114  //
   115  // - 获取OKR周期列表
   116  //
   117  // - 使用<md-tag mode="inline" type="token-tenant">tenant_access_token</md-tag>需要额外申请权限<md-perm ;href="/ssl:ttdoc/ukTMukTMukTM/uQjN3QjL0YzN04CN2cDN">以应用身份访问OKR信息</md-perm>
   118  //
   119  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/okr-v1/period/list
   120  //
   121  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/okrv1/list_period.go
   122  func (p *period) List(ctx context.Context, req *ListPeriodReq, options ...larkcore.RequestOptionFunc) (*ListPeriodResp, error) {
   123  	// 发起请求
   124  	apiReq := req.apiReq
   125  	apiReq.ApiPath = "/open-apis/okr/v1/periods"
   126  	apiReq.HttpMethod = http.MethodGet
   127  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant}
   128  	apiResp, err := larkcore.Request(ctx, apiReq, p.service.config, options...)
   129  	if err != nil {
   130  		return nil, err
   131  	}
   132  	// 反序列响应结果
   133  	resp := &ListPeriodResp{ApiResp: apiResp}
   134  	err = apiResp.JSONUnmarshalBody(resp)
   135  	if err != nil {
   136  		return nil, err
   137  	}
   138  	return resp, err
   139  }
   140  
   141  // 创建OKR进展记录
   142  //
   143  // - 创建OKR进展记录
   144  //
   145  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/okr-v1/progress_record/create
   146  //
   147  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/okrv1/create_progressRecord.go
   148  func (p *progressRecord) Create(ctx context.Context, req *CreateProgressRecordReq, options ...larkcore.RequestOptionFunc) (*CreateProgressRecordResp, error) {
   149  	// 发起请求
   150  	apiReq := req.apiReq
   151  	apiReq.ApiPath = "/open-apis/okr/v1/progress_records"
   152  	apiReq.HttpMethod = http.MethodPost
   153  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   154  	apiResp, err := larkcore.Request(ctx, apiReq, p.service.config, options...)
   155  	if err != nil {
   156  		return nil, err
   157  	}
   158  	// 反序列响应结果
   159  	resp := &CreateProgressRecordResp{ApiResp: apiResp}
   160  	err = apiResp.JSONUnmarshalBody(resp)
   161  	if err != nil {
   162  		return nil, err
   163  	}
   164  	return resp, err
   165  }
   166  
   167  // 删除OKR进展记录
   168  //
   169  // - 根据ID删除OKR进展记录
   170  //
   171  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/okr-v1/progress_record/delete
   172  //
   173  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/okrv1/delete_progressRecord.go
   174  func (p *progressRecord) Delete(ctx context.Context, req *DeleteProgressRecordReq, options ...larkcore.RequestOptionFunc) (*DeleteProgressRecordResp, error) {
   175  	// 发起请求
   176  	apiReq := req.apiReq
   177  	apiReq.ApiPath = "/open-apis/okr/v1/progress_records/:progress_id"
   178  	apiReq.HttpMethod = http.MethodDelete
   179  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   180  	apiResp, err := larkcore.Request(ctx, apiReq, p.service.config, options...)
   181  	if err != nil {
   182  		return nil, err
   183  	}
   184  	// 反序列响应结果
   185  	resp := &DeleteProgressRecordResp{ApiResp: apiResp}
   186  	err = apiResp.JSONUnmarshalBody(resp)
   187  	if err != nil {
   188  		return nil, err
   189  	}
   190  	return resp, err
   191  }
   192  
   193  // 获取OKR进展记录
   194  //
   195  // - 根据ID获取OKR进展记录详情
   196  //
   197  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/okr-v1/progress_record/get
   198  //
   199  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/okrv1/get_progressRecord.go
   200  func (p *progressRecord) Get(ctx context.Context, req *GetProgressRecordReq, options ...larkcore.RequestOptionFunc) (*GetProgressRecordResp, error) {
   201  	// 发起请求
   202  	apiReq := req.apiReq
   203  	apiReq.ApiPath = "/open-apis/okr/v1/progress_records/:progress_id"
   204  	apiReq.HttpMethod = http.MethodGet
   205  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   206  	apiResp, err := larkcore.Request(ctx, apiReq, p.service.config, options...)
   207  	if err != nil {
   208  		return nil, err
   209  	}
   210  	// 反序列响应结果
   211  	resp := &GetProgressRecordResp{ApiResp: apiResp}
   212  	err = apiResp.JSONUnmarshalBody(resp)
   213  	if err != nil {
   214  		return nil, err
   215  	}
   216  	return resp, err
   217  }
   218  
   219  // 更新OKR进展记录
   220  //
   221  // - 根据OKR进展记录ID更新进展详情
   222  //
   223  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/okr-v1/progress_record/update
   224  //
   225  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/okrv1/update_progressRecord.go
   226  func (p *progressRecord) Update(ctx context.Context, req *UpdateProgressRecordReq, options ...larkcore.RequestOptionFunc) (*UpdateProgressRecordResp, error) {
   227  	// 发起请求
   228  	apiReq := req.apiReq
   229  	apiReq.ApiPath = "/open-apis/okr/v1/progress_records/:progress_id"
   230  	apiReq.HttpMethod = http.MethodPut
   231  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant, larkcore.AccessTokenTypeUser}
   232  	apiResp, err := larkcore.Request(ctx, apiReq, p.service.config, options...)
   233  	if err != nil {
   234  		return nil, err
   235  	}
   236  	// 反序列响应结果
   237  	resp := &UpdateProgressRecordResp{ApiResp: apiResp}
   238  	err = apiResp.JSONUnmarshalBody(resp)
   239  	if err != nil {
   240  		return nil, err
   241  	}
   242  	return resp, err
   243  }
   244  
   245  // 获取用户的OKR列表
   246  //
   247  // - 根据用户的id获取OKR列表
   248  //
   249  // - 使用<md-tag mode="inline" type="token-tenant">tenant_access_token</md-tag>需要额外申请权限<md-perm ;href="/ssl:ttdoc/ukTMukTMukTM/uQjN3QjL0YzN04CN2cDN">以应用身份访问OKR信息</md-perm>
   250  //
   251  // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/okr-v1/user-okr/list
   252  //
   253  // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/okrv1/list_userOkr.go
   254  func (u *userOkr) List(ctx context.Context, req *ListUserOkrReq, options ...larkcore.RequestOptionFunc) (*ListUserOkrResp, error) {
   255  	// 发起请求
   256  	apiReq := req.apiReq
   257  	apiReq.ApiPath = "/open-apis/okr/v1/users/:user_id/okrs"
   258  	apiReq.HttpMethod = http.MethodGet
   259  	apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeUser, larkcore.AccessTokenTypeTenant}
   260  	apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...)
   261  	if err != nil {
   262  		return nil, err
   263  	}
   264  	// 反序列响应结果
   265  	resp := &ListUserOkrResp{ApiResp: apiResp}
   266  	err = apiResp.JSONUnmarshalBody(resp)
   267  	if err != nil {
   268  		return nil, err
   269  	}
   270  	return resp, err
   271  }