github.com/polarismesh/polaris@v1.17.8/apiserver/httpserver/docs/config_server_apidoc.go (about) 1 /** 2 * Tencent is pleased to support the open source community by making Polaris available. 3 * 4 * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. 5 * 6 * Licensed under the BSD 3-Clause License (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * https://opensource.org/licenses/BSD-3-Clause 11 * 12 * Unless required by applicable law or agreed to in writing, software distributed 13 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 14 * CONDITIONS OF ANY KIND, either express or implied. See the License for the 15 * specific language governing permissions and limitations under the License. 16 */ 17 18 package docs 19 20 import ( 21 "github.com/emicklei/go-restful/v3" 22 restfulspec "github.com/polarismesh/go-restful-openapi/v2" 23 "github.com/polarismesh/specification/source/go/api/v1/config_manage" 24 apiconfig "github.com/polarismesh/specification/source/go/api/v1/config_manage" 25 ) 26 27 var ( 28 configConsoleApiTags = []string{"ConfigConsole"} 29 configClientApiTags = []string{"Client"} 30 ) 31 32 func EnrichCreateConfigFileGroupApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 33 return r. 34 Doc("创建配置文件组"). 35 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 36 Reads(apiconfig.ConfigFileGroup{}). 37 Returns(0, "", BaseResponse{}) 38 } 39 40 func EnrichQueryConfigFileGroupsApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 41 return r. 42 Doc("搜索配置文件组"). 43 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 44 Param(restful.QueryParameter("namespace", "命名空间,不填表示全部命名空间"). 45 DataType(typeNameString).Required(false)). 46 Param(restful.QueryParameter("group", "配置文件分组名,模糊搜索"). 47 DataType(typeNameString).Required(false)). 48 Param(restful.QueryParameter("fileName", "配置文件名称,模糊搜索"). 49 DataType(typeNameString).Required(false)). 50 Param(restful.QueryParameter("offset", "翻页偏移量 默认为 0"). 51 DataType(typeNameInteger). 52 Required(false).DefaultValue("0")). 53 Param(restful.QueryParameter("limit", "一页大小,最大为 100"). 54 DataType(typeNameInteger). 55 Required(true).DefaultValue("100")). 56 Returns(0, "", struct { 57 BatchQueryResponse 58 ConfigFileGroups []config_manage.ConfigFileGroup `json:"configFileGroups,omitempty"` 59 }{}) 60 } 61 62 func EnrichDeleteConfigFileGroupApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 63 return r. 64 Doc("删除配置文件组"). 65 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 66 Param(restful.QueryParameter("namespace", "命名空间").DataType(typeNameString).Required(true)). 67 Param(restful.QueryParameter("group", "配置文件分组").DataType(typeNameString).Required(true)). 68 Returns(0, "", BaseResponse{}) 69 } 70 71 func EnrichUpdateConfigFileGroupApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 72 return r. 73 Doc("更新配置文件组"). 74 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 75 Reads(apiconfig.ConfigFileGroup{}). 76 Returns(0, "", BaseResponse{}) 77 } 78 79 func EnrichCreateConfigFileApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 80 return r. 81 Doc("创建配置文件"). 82 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 83 Reads(apiconfig.ConfigFile{}). 84 Returns(0, "", BaseResponse{}) 85 } 86 87 func EnrichUpsertAndReleaseConfigFileApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 88 return r. 89 Doc("创建/更新并发布配置文件"). 90 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 91 Reads(apiconfig.ConfigFilePublishInfo{}). 92 Returns(0, "", BaseResponse{}) 93 } 94 95 func EnrichGetConfigFileApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 96 return r. 97 Doc("拉取配置"). 98 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 99 Param(restful.QueryParameter("namespace", "命名空间").DataType(typeNameString).Required(true)). 100 Param(restful.QueryParameter("group", "配置文件分组").DataType(typeNameString).Required(true)). 101 Param(restful.QueryParameter("name", "配置文件名").DataType(typeNameString).Required(true)). 102 Returns(0, "", struct { 103 BaseResponse 104 ConfigFile config_manage.ConfigFile `json:"configFile,omitempty"` 105 }{}) 106 } 107 108 func EnrichQueryConfigFilesByGroupApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 109 return r. 110 Doc("搜索配置文件"). 111 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 112 Param(restful.QueryParameter("namespace", "命名空间").DataType(typeNameString).Required(false)). 113 Param(restful.QueryParameter("group", "配置文件分组").DataType(typeNameString).Required(false)). 114 Param(restful.QueryParameter("offset", "翻页偏移量 默认为 0").DataType(typeNameInteger). 115 Required(false).DefaultValue("0")). 116 Param(restful.QueryParameter("limit", "一页大小,最大为 100").DataType(typeNameInteger). 117 Required(true).DefaultValue("100")). 118 Returns(0, "", struct { 119 BatchQueryResponse 120 ConfigFiles []config_manage.ConfigFile `json:"configFiles,omitempty"` 121 }{}) 122 } 123 124 func EnrichSearchConfigFileApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 125 return r. 126 Doc("搜索配置文件"). 127 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 128 Param(restful.QueryParameter("namespace", "命名空间").DataType(typeNameString).Required(false)). 129 Param(restful.QueryParameter("group", "配置文件分组").DataType(typeNameString).Required(false)). 130 Param(restful.QueryParameter("name", "配置文件").DataType(typeNameString).Required(false)). 131 Param(restful.QueryParameter("tags", "格式:key1,value1,key2,value2").DataType(typeNameString).Required(false)). 132 Param(restful.QueryParameter("offset", "翻页偏移量 默认为 0").DataType(typeNameInteger). 133 Required(false).DefaultValue("0")). 134 Param(restful.QueryParameter("limit", "一页大小,最大为 100").DataType(typeNameInteger). 135 Required(true).DefaultValue("100")). 136 Returns(0, "", struct { 137 BatchQueryResponse 138 ConfigFiles []config_manage.ConfigFile `json:"configFiles,omitempty"` 139 }{}) 140 } 141 142 func EnrichUpdateConfigFileApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 143 return r. 144 Doc("更新配置文件"). 145 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 146 Reads(apiconfig.ConfigFile{}). 147 Returns(0, "", BaseResponse{}) 148 } 149 150 func EnrichDeleteConfigFileApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 151 return r. 152 Doc("删除配置文件"). 153 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 154 Param(restful.QueryParameter("namespace", "命名空间").DataType(typeNameString).Required(true)). 155 Param(restful.QueryParameter("group", "配置文件分组").DataType(typeNameString).Required(true)). 156 Param(restful.QueryParameter("name", "配置文件").DataType(typeNameString).Required(true)). 157 Param(restful.QueryParameter("deleteBy", "操作人").DataType(typeNameString).Required(false)). 158 Returns(0, "", BaseResponse{}) 159 } 160 161 func EnrichBatchDeleteConfigFileApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 162 return r. 163 Doc("批量删除配置文件"). 164 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 165 Param(restful.QueryParameter("deleteBy", "操作人").DataType(typeNameString).Required(false)). 166 Reads([]apiconfig.ConfigFile{}). 167 Returns(0, "", BaseResponse{}) 168 } 169 170 func EnrichExportConfigFileApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 171 return r. 172 Doc("导出配置文件"). 173 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 174 Reads(apiconfig.ConfigFileExportRequest{}). 175 ReturnsWithHeaders(0, "", nil, map[string]restful.Header{ 176 "Content-Type": { 177 Items: &restful.Items{ 178 Type: "string", 179 Default: "application/zip", 180 }, 181 }, 182 "Content-Disposition": { 183 Items: &restful.Items{ 184 Type: "string", 185 Default: "attachment; filename=config.zip", 186 }, 187 }, 188 }) 189 } 190 191 func EnrichImportConfigFileApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 192 return r. 193 Doc("导入配置文件"). 194 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 195 Param(restful.QueryParameter("namespace", "命名空间").DataType(typeNameString).Required(true)). 196 Param(restful.QueryParameter("group", "配置文件分组").DataType(typeNameString).Required(false)). 197 Param(restful.MultiPartFormParameter("conflict_handling", 198 "配置文件冲突处理,跳过skip,覆盖overwrite").DataType(typeNameString).Required(true)). 199 Param(restful.MultiPartFormParameter("config", "配置文件").DataType("file").Required(true)). 200 Returns(0, "", config_manage.ConfigImportResponse{}) 201 } 202 203 func EnrichPublishConfigFileApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 204 return r. 205 Doc("发布配置文件"). 206 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 207 Reads(apiconfig.ConfigFileRelease{}). 208 Returns(0, "", BaseResponse{}) 209 } 210 211 func EnrichGetConfigFileReleaseApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 212 return r. 213 Doc("获取配置文件最后一次全量发布信息"). 214 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 215 Param(restful.QueryParameter("namespace", "命名空间").DataType(typeNameString).Required(true)). 216 Param(restful.QueryParameter("group", "配置文件分组").DataType(typeNameString).Required(true)). 217 Param(restful.QueryParameter("name", "配置文件").DataType(typeNameString).Required(true)). 218 Returns(0, "", struct { 219 BaseResponse 220 ConfigFileRelease config_manage.ConfigFileRelease `json:"configFileRelease,omitempty"` 221 }{}) 222 } 223 224 func EnrichGetConfigFileReleaseHistoryApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 225 return r. 226 Doc("获取配置文件发布历史记录"). 227 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 228 Param(restful.QueryParameter("namespace", "命名空间").DataType(typeNameString).Required(true)). 229 Param(restful.QueryParameter("group", "配置文件分组").DataType(typeNameString).Required(false)). 230 Param(restful.QueryParameter("name", "配置文件").DataType(typeNameString).Required(false)). 231 Param(restful.QueryParameter("offset", "翻页偏移量 默认为 0").DataType(typeNameInteger). 232 Required(false).DefaultValue("0")). 233 Param(restful.QueryParameter("limit", "一页大小,最大为 100").DataType(typeNameInteger). 234 Required(true).DefaultValue("100")). 235 Returns(0, "", struct { 236 BatchQueryResponse 237 ConfigFileReleaseHistories []config_manage.ConfigFileReleaseHistory `json:"configFileReleaseHistories,omitempty"` 238 }{}) 239 } 240 241 func EnrichGetAllConfigFileTemplatesApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 242 return r. 243 Doc("获取配置模板"). 244 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 245 Returns(0, "", struct { 246 BatchQueryResponse 247 ConfigFileTemplates []config_manage.ConfigFileTemplate `json:"configFileTemplates,omitempty"` 248 }{}) 249 } 250 251 func EnrichCreateConfigFileTemplateApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 252 return r. 253 Doc("创建配置模板"). 254 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 255 Reads(config_manage.ConfigFileTemplate{}). 256 Returns(0, "", BaseResponse{}) 257 } 258 259 func EnrichGetConfigFileForClientApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 260 return r. 261 Doc("拉取配置"). 262 Metadata(restfulspec.KeyOpenAPITags, configClientApiTags). 263 Param(restful.QueryParameter("namespace", "命名空间").DataType(typeNameString).Required(true)). 264 Param(restful.QueryParameter("group", "配置文件分组").DataType(typeNameString).Required(true)). 265 Param(restful.QueryParameter("fileName", "配置文件名").DataType(typeNameString).Required(true)). 266 Param(restful.QueryParameter("version", "配置文件客户端版本号,刚启动时设置为 0"). 267 DataType(typeNameInteger).Required(true)). 268 Returns(0, "", config_manage.ConfigClientResponse{}) 269 } 270 271 func EnrichWatchConfigFileForClientApiDocs(r *restful.RouteBuilder) *restful.RouteBuilder { 272 return r. 273 Doc("监听配置"). 274 Metadata(restfulspec.KeyOpenAPITags, configClientApiTags). 275 Reads(apiconfig.ClientWatchConfigFileRequest{}, "通过 Http LongPolling 机制订阅配置变更。"). 276 Returns(0, "", config_manage.ConfigClientResponse{}) 277 } 278 279 func EnrichGetConfigFileMetadataList(r *restful.RouteBuilder) *restful.RouteBuilder { 280 return r. 281 Doc("监听配置"). 282 Metadata(restfulspec.KeyOpenAPITags, configClientApiTags). 283 Reads(apiconfig.ClientWatchConfigFileRequest{}, "通过 Http LongPolling 机制订阅配置变更。"). 284 Returns(0, "", config_manage.ConfigClientResponse{}) 285 } 286 287 func EnrichGetAllConfigEncryptAlgorithms(r *restful.RouteBuilder) *restful.RouteBuilder { 288 return r. 289 Doc("返回当前配置加解密的算法"). 290 Metadata(restfulspec.KeyOpenAPITags, configConsoleApiTags). 291 Returns(0, "", config_manage.ConfigEncryptAlgorithmResponse{}) 292 }