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  }