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 }