From 3538b7039e083f32a1a4b77534207be021232551 Mon Sep 17 00:00:00 2001 From: windsonsea Date: Thu, 4 May 2023 11:32:15 +0800 Subject: [PATCH] migrate openapi docs from daodocs --- .gitignore | 15 + docs/openapi/ghippo/v0.16.0.json | 11046 +++++++++++ docs/openapi/ghippo/v0.16.0.md | 1 + docs/openapi/ghippo/v0.16.1.json | 11046 +++++++++++ docs/openapi/ghippo/v0.16.1.md | 1 + docs/openapi/images/index.png | Bin 369155 -> 0 bytes docs/openapi/index.md | 65 +- docs/openapi/insight/v0.16.0-alpha1.md | 1 - .../{v0.16.0-alpha1.json => v0.16.0.json} | 2 +- docs/openapi/insight/v0.16.0.md | 1 + docs/openapi/kairship/v0.8.0.json | 16374 ++++++++++++++++ docs/openapi/kairship/v0.8.0.md | 1 + docs/openapi/mcamel/elasticsearch-index.md | 2 - docs/openapi/mcamel/elasticsearch-v0.7.1.json | 3031 +++ docs/openapi/mcamel/elasticsearch-v0.7.1.md | 1 + docs/openapi/mcamel/kafka-index.md | 2 - docs/openapi/mcamel/kafka-v0.5.1.json | 3033 +++ docs/openapi/mcamel/kafka-v0.5.1.md | 1 + docs/openapi/mcamel/minio-index.md | 2 - docs/openapi/mcamel/minio-v0.5.1.json | 3146 +++ docs/openapi/mcamel/minio-v0.5.1.md | 1 + docs/openapi/mcamel/mysql-index.md | 2 - docs/openapi/mcamel/mysql-v0.8.1.json | 5098 +++++ docs/openapi/mcamel/mysql-v0.8.1.md | 1 + docs/openapi/mcamel/postgresql-index.md | 5 - docs/openapi/mcamel/postgresql-v0.1.2.json | 3236 +++ docs/openapi/mcamel/postgresql-v0.1.2.md | 1 + docs/openapi/mcamel/rabbitmq-index.md | 2 - docs/openapi/mcamel/rabbitmq-v0.10.1.json | 3023 +++ docs/openapi/mcamel/rabbitmq-v0.10.1.md | 1 + docs/openapi/mcamel/redis-index.md | 2 - docs/openapi/mcamel/redis-v0.7.1.json | 4746 +++++ docs/openapi/mcamel/redis-v0.7.1.md | 1 + docs/openapi/midware.md | 68 +- docs/openapi/mspider/index.md | 2 - docs/openapi/spidernet/index.md | 2 - docs/openapi/spidernet/v0.6.0.json | 2475 +++ docs/openapi/spidernet/v0.6.0.md | 1 + openapi-nav.yml | 37 +- 39 files changed, 66415 insertions(+), 60 deletions(-) create mode 100644 docs/openapi/ghippo/v0.16.0.json create mode 100644 docs/openapi/ghippo/v0.16.0.md create mode 100644 docs/openapi/ghippo/v0.16.1.json create mode 100644 docs/openapi/ghippo/v0.16.1.md delete mode 100644 docs/openapi/images/index.png delete mode 100644 docs/openapi/insight/v0.16.0-alpha1.md rename docs/openapi/insight/{v0.16.0-alpha1.json => v0.16.0.json} (99%) create mode 100644 docs/openapi/insight/v0.16.0.md create mode 100644 docs/openapi/kairship/v0.8.0.json create mode 100644 docs/openapi/kairship/v0.8.0.md delete mode 100644 docs/openapi/mcamel/elasticsearch-index.md create mode 100644 docs/openapi/mcamel/elasticsearch-v0.7.1.json create mode 100644 docs/openapi/mcamel/elasticsearch-v0.7.1.md delete mode 100644 docs/openapi/mcamel/kafka-index.md create mode 100644 docs/openapi/mcamel/kafka-v0.5.1.json create mode 100644 docs/openapi/mcamel/kafka-v0.5.1.md delete mode 100644 docs/openapi/mcamel/minio-index.md create mode 100644 docs/openapi/mcamel/minio-v0.5.1.json create mode 100644 docs/openapi/mcamel/minio-v0.5.1.md delete mode 100644 docs/openapi/mcamel/mysql-index.md create mode 100644 docs/openapi/mcamel/mysql-v0.8.1.json create mode 100644 docs/openapi/mcamel/mysql-v0.8.1.md delete mode 100644 docs/openapi/mcamel/postgresql-index.md create mode 100644 docs/openapi/mcamel/postgresql-v0.1.2.json create mode 100644 docs/openapi/mcamel/postgresql-v0.1.2.md delete mode 100644 docs/openapi/mcamel/rabbitmq-index.md create mode 100644 docs/openapi/mcamel/rabbitmq-v0.10.1.json create mode 100644 docs/openapi/mcamel/rabbitmq-v0.10.1.md delete mode 100644 docs/openapi/mcamel/redis-index.md create mode 100644 docs/openapi/mcamel/redis-v0.7.1.json create mode 100644 docs/openapi/mcamel/redis-v0.7.1.md delete mode 100644 docs/openapi/mspider/index.md delete mode 100644 docs/openapi/spidernet/index.md create mode 100644 docs/openapi/spidernet/v0.6.0.json create mode 100644 docs/openapi/spidernet/v0.6.0.md diff --git a/.gitignore b/.gitignore index 68bc17f9..82435359 100644 --- a/.gitignore +++ b/.gitignore @@ -152,6 +152,21 @@ dmypy.json # Cython debug symbols cython_debug/ +# doc builds +.venv +builds +temp_dir +.DS_Store +_book/ +.idea/ +.vscode/ +public/ +scripts/config.py +__pycache__ +.VSCodeCounter +docs/zh/site/ +docs/en/site/ + # PyCharm # JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore diff --git a/docs/openapi/ghippo/v0.16.0.json b/docs/openapi/ghippo/v0.16.0.json new file mode 100644 index 00000000..9cfea4a4 --- /dev/null +++ b/docs/openapi/ghippo/v0.16.0.json @@ -0,0 +1,11046 @@ +{ + "swagger": "2.0", + "info": { + "title": "全局管理", + "version": "v0.16.0" + }, + "tags": [ + { + "name": "About" + }, + { + "name": "Audit" + }, + { + "name": "BatchAudits" + }, + { + "name": "Client" + }, + { + "name": "Account" + }, + { + "name": "GProducts" + }, + { + "name": "GProductLicenses" + }, + { + "name": "Group" + }, + { + "name": "IDP" + }, + { + "name": "Ldap" + }, + { + "name": "Login" + }, + { + "name": "LoginPage" + }, + { + "name": "Message" + }, + { + "name": "OIDC" + }, + { + "name": "Openapi" + }, + { + "name": "ProductNavigator" + }, + { + "name": "Publish" + }, + { + "name": "RecordFiling" + }, + { + "name": "Role" + }, + { + "name": "SecurityPolicy" + }, + { + "name": "SmtpSetting" + }, + { + "name": "Theme" + }, + { + "name": "TopNavigator" + }, + { + "name": "Users" + }, + { + "name": "Workspace" + }, + { + "name": "AuditV1alpha2" + }, + { + "name": "AuditV1alpha3" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/ghippo.io/v1alpha1/.well-known/openid-configuration": { + "get": { + "operationId": "OIDC_WellKnown", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcWellKnownResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "OIDC" + ] + } + }, + "/apis/ghippo.io/v1alpha1/about/developers": { + "get": { + "operationId": "About_ListDevelopers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/aboutListDevelopersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "About" + ] + } + }, + "/apis/ghippo.io/v1alpha1/about/opensources": { + "get": { + "operationId": "About_ListOpenSources", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/aboutListOpenSourcesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "description": "page: 当前页码,默认值为1", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "每页数量,默认为 10", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "About" + ] + } + }, + "/apis/ghippo.io/v1alpha1/about/versions": { + "get": { + "operationId": "About_ListGProductVersions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/aboutListGProductVersionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "About" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits": { + "get": { + "operationId": "Audit_ListAudit", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditListAuditResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/batch": { + "post": { + "operationId": "BatchAudits_BatchInsertAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/batchauditBatchInsertAuditsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/batchauditBatchInsertAuditsRequest" + } + } + ], + "tags": [ + "BatchAudits" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/clear": { + "get": { + "operationId": "Audit_GetAutoClearAuditTime", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditGetAutoClearAuditTimeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/external": { + "get": { + "summary": "来自外部传递进来的审计日志,用于不经过apiserver的请求,例如直接请求keycloak的请求,由前端埋点调用", + "operationId": "Audit_ExternalAudit", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditExternalAuditResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "externalType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "loginFailed", + "forgetPassword", + "resetPassword" + ], + "default": "loginFailed" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "code", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/limit-range": { + "get": { + "operationId": "Audit_GetLimitRangeTime", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditGetLimitRangeTimeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/reports/resources": { + "get": { + "operationId": "Audit_GetAuditResourceReport", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditGetAuditResourceReportResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/reports/users": { + "get": { + "operationId": "Audit_GetAuditUserReport", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditGetAuditUserReportResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/{id}": { + "get": { + "operationId": "Audit_GetAudit", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditGetAuditResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/auth-token": { + "get": { + "operationId": "Openapi_AuthToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditAuthTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Openapi" + ] + } + }, + "/apis/ghippo.io/v1alpha1/certs": { + "get": { + "operationId": "Openapi_Certs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditCertsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Openapi" + ] + } + }, + "/apis/ghippo.io/v1alpha1/clients": { + "get": { + "operationId": "Client_ListClients", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clientListClientsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "clientId", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Client" + ] + }, + "post": { + "operationId": "Client_CreateClient", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clientCreateClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/clientCreateClientRequest" + } + } + ], + "tags": [ + "Client" + ] + } + }, + "/apis/ghippo.io/v1alpha1/clients/{id}": { + "get": { + "operationId": "Client_GetClient", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clientGetClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Client" + ] + }, + "delete": { + "operationId": "Client_DeleteClient", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clientDeleteClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Client" + ] + }, + "put": { + "operationId": "Client_UpdateClient", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clientUpdateClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "baseUrl": { + "type": "string", + "title": "repeated string redirect_uris = 4 [(validate.rules).repeated.min_items = 1];" + } + } + } + } + ], + "tags": [ + "Client" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user": { + "get": { + "operationId": "Account_GetUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserGetUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/accesstoken": { + "post": { + "operationId": "Account_CreateAccessToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserCreateAccessTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/currentuserCreateAccessTokenRequest" + } + } + ], + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/accesstokens": { + "get": { + "operationId": "Account_ListAccessTokens", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserListAccessTokensResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/accesstokens/{id}": { + "delete": { + "operationId": "Account_DeleteAccessToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserDeleteAccessTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/email": { + "put": { + "operationId": "Account_UpdateEmail", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserUpdateEmailResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/currentuserUpdateEmailRequest" + } + } + ], + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/global-permissions": { + "get": { + "operationId": "Account_GetGlobalPermissions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserGetGlobalPermissionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/language": { + "put": { + "operationId": "Account_UpdateLanguage", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserUpdateLanguageResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/currentuserUpdateLanguageRequest" + } + } + ], + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/password": { + "put": { + "operationId": "Account_UpdatePassword", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserUpdatePasswordResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/currentuserUpdatePasswordRequest" + } + } + ], + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/exclusiveresource-types": { + "get": { + "operationId": "Workspace_ListExclusiveResourceTypes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListExclusiveResourceTypesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folderrolenames": { + "get": { + "operationId": "Role_ListFolderRoleNames", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListFolderRoleNamesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folderroles": { + "get": { + "summary": "to be deprecated after several months", + "operationId": "Role_ListFolderRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListFolderRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folderroles/{name}/members-folders": { + "get": { + "operationId": "Role_ListMembersFoldersByFolderRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListMembersFoldersByFolderRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders": { + "get": { + "operationId": "Workspace_ListFolders", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListFoldersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + }, + "post": { + "operationId": "Workspace_CreateFolder", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceCreateFolderResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/workspaceCreateFolderRequest" + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders-tree": { + "get": { + "operationId": "Workspace_ListFolderTree", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListFolderTreeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}": { + "get": { + "operationId": "Workspace_GetFolder", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceGetFolderResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + }, + "delete": { + "summary": "TODO: sub folder删不删?", + "operationId": "Workspace_DeleteFolder", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceDeleteFolderResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + }, + "put": { + "operationId": "Workspace_UpdateFolder", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceUpdateFolderResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "title": "string name = 1 [(validate.rules).string.min_len = 1];" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/authorize": { + "post": { + "operationId": "Workspace_Authorize", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceAuthorizeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "roleName": { + "type": "string" + }, + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "memberId": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/deauthorize": { + "put": { + "operationId": "Workspace_Deauthorize", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceDeauthorizeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "roleName": { + "type": "string" + }, + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "memberId": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/groups": { + "get": { + "operationId": "Workspace_FolderListGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceFolderListGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/members-roles": { + "get": { + "operationId": "Workspace_ListMembersRolesByFolder", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListMembersRolesByFolderResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "memberName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "memberType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "roleName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/permissions": { + "get": { + "operationId": "Workspace_FolderListPermissions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceFolderListPermissionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/reauthorize": { + "put": { + "operationId": "Workspace_Reauthorize", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceReauthorizeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "oldRoleName": { + "type": "string" + }, + "newRoleName": { + "type": "string" + }, + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "memberId": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/users": { + "get": { + "operationId": "Workspace_FolderListUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceFolderListUsersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "pageSize", + "description": "每页条数", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "当前页", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/globalrole/{name}": { + "get": { + "summary": "to be deprecated after several months", + "operationId": "Role_GetGlobalRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleGetGlobalRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/globalroles": { + "get": { + "summary": "to be deprecated after several months", + "operationId": "Role_ListGlobalRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListGlobalRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/globalroles/{name}/subjects": { + "get": { + "summary": "to be deprecated after several months", + "operationId": "Role_ListGlobalRoleSubjects", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListGlobalRoleSubjectsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproduct-licenses": { + "get": { + "operationId": "GProductLicenses_ListGProductLicenses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseListGProductLicensesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "GProductLicenses" + ] + }, + "put": { + "operationId": "GProductLicenses_UpdateGProductLicenses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseUpdateGProductLicensesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/gproductlicenseUpdateGProductLicensesRequest" + } + } + ], + "tags": [ + "GProductLicenses" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproduct-licenses/esn": { + "get": { + "operationId": "GProductLicenses_GetGProductLicensesESN", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseGetGProductLicensesESNResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "GProductLicenses" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproduct-licenses/over-quota": { + "get": { + "operationId": "GProductLicenses_GetGProductLicensesOverQuota", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseGetGProductLicensesOverQuotaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "GProductLicenses" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproduct-licenses/yaml": { + "get": { + "operationId": "GProductLicenses_GetGProductLicensesYaml", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseGetGProductLicenseYamlResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "GProductLicenses" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproduct-licenses/{id}": { + "get": { + "operationId": "GProductLicenses_GetGProductLicenses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseGetGProductLicensesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "GProductLicenses" + ] + }, + "delete": { + "operationId": "GProductLicenses_DeleteGProductLicenses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseDeleteProductLicensesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "GProductLicenses" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproducts": { + "get": { + "operationId": "GProducts_ListGProducts", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductListGProductsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "GProducts" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups": { + "get": { + "operationId": "Group_ListGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupListGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Group" + ] + }, + "post": { + "operationId": "Group_CreateGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupCreateGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/groupCreateGroupRequest" + } + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups/{id}": { + "get": { + "operationId": "Group_GetGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupGetGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Group" + ] + }, + "delete": { + "operationId": "Group_DeleteGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupDeleteGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Group" + ] + }, + "put": { + "operationId": "Group_UpdateGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupUpdateGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups/{id}/members": { + "get": { + "operationId": "Group_GroupMembers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupGroupMembersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups/{id}/members/{userId}": { + "delete": { + "operationId": "Group_DeleteUserFromGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupDeleteUserFromGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "userId", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Group" + ] + }, + "post": { + "operationId": "Group_AddUserToGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupAddUserToGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "userId", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups/{id}/roles": { + "get": { + "operationId": "Group_ListGroupRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupListGroupRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "role type", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "authorized", + "description": "是否授权", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Group" + ] + }, + "put": { + "operationId": "Group_UpdateGroupRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupUpdateGroupRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "addRoles": { + "type": "array", + "items": { + "type": "string" + } + }, + "removeRoles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups/{id}/subjects": { + "get": { + "operationId": "Group_ListGroupSubjects", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupListGroupSubjectResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/idp": { + "get": { + "operationId": "IDP_GetIDP", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpGetIDPResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "IDP" + ] + }, + "delete": { + "operationId": "IDP_DeleteIDP", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpDeleteIDPResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "IDP" + ] + }, + "post": { + "operationId": "IDP_CreateIDP", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpCreateIDPResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/idpCreateIDPRequest" + } + } + ], + "tags": [ + "IDP" + ] + }, + "put": { + "operationId": "IDP_UpdateIDP", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpUpdateIDPResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/idpUpdateIDPRequest" + } + } + ], + "tags": [ + "IDP" + ] + } + }, + "/apis/ghippo.io/v1alpha1/idp/redirect-url": { + "get": { + "operationId": "IDP_GetRedirectUrl", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpGetRedirectUrlResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "IDP" + ] + } + }, + "/apis/ghippo.io/v1alpha1/idp/wellknown-url": { + "get": { + "operationId": "IDP_GetWellKnownUrl", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpGetWellKnownUrlResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "IDP" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap": { + "get": { + "operationId": "Ldap_GetLdap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapGetLdapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Ldap" + ] + }, + "post": { + "operationId": "Ldap_CreateLdap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapCreateLdapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ldapCreateLdapRequest" + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap/{id}": { + "delete": { + "operationId": "Ldap_DeleteLdap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapDeleteLdapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Ldap" + ] + }, + "put": { + "operationId": "Ldap_UpdateLdap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapUpdateLdapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "vendor": { + "type": "string", + "title": "LDAP vendor (provider), only is other" + }, + "startTls": { + "type": "string", + "description": "Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling." + }, + "ldapProtocol": { + "type": "string" + }, + "ldapHost": { + "type": "string" + }, + "usersDn": { + "type": "string", + "title": "Full DN of LDAP tree where your users are. This DN is the parent of LDAP users.\nIt could be for example 'ou=users,dc=example,dc=com' assuming that your typical user will have DN like 'uid=john,ou=users,dc=example,dc=com'" + }, + "bindDn": { + "type": "string", + "title": "DN of LDAP admin, which will be used by Keycloak to access LDAP server" + }, + "bindCredential": { + "type": "string", + "description": "Password of LDAP admin." + }, + "userObjectClasses": { + "type": "string", + "description": "All values of LDAP objectClass attribute for users in LDAP divided by comma.\nFor example: 'inetOrgPerson, organizationalPerson' .\nNewly created Keycloak users will be written to LDAP with all those object classes and existing LDAP user records are found just if they contain all those object classes." + }, + "usernameLdapAttribute": { + "type": "string", + "title": "Name of LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it can be 'uid'.\nFor Active directory it can be 'sAMAccountName' or 'cn'.\nThe attribute should be filled for all LDAP user records you want to import from LDAP to Keycloak" + }, + "fullSyncPeriod": { + "type": "string", + "title": "Period for full synchronization in seconds: -1 手动同步" + }, + "rdnLdapAttribute": { + "type": "string", + "description": "Name of the LDAP attribute, which is used as RDN (top attribute) of typical user DN.\nUsually it's the same as the Username LDAP attribute, however it is not required.\nFor example for Active directory, it is common to use 'cn' as RDN attribute when username attribute might be 'sAMAccountName'." + }, + "uuidLdapAttribute": { + "type": "string", + "description": "Name of the LDAP attribute, which is used as a unique object identifier (UUID) for objects in LDAP.\nFor many LDAP server vendors, it is 'entryUUID'; however some are different.\nFor example, for Active directory it should be 'objectGUID'.\nIf your LDAP server does not support the notion of UUID, you can use any other attribute that is supposed to be unique among LDAP users in tree.\nFor example 'uid' or 'entryDN'." + }, + "editMode": { + "type": "string", + "description": "READ_ONLY is a read-only LDAP store.\nWRITABLE means data will be synced back to LDAP on demand." + }, + "readTimeout": { + "type": "string", + "description": "LDAP read timeout in milliseconds. This timeout applies for LDAP read operations." + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap/{id}/group": { + "get": { + "operationId": "Ldap_GetLdapGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapGetLdapGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Ldap" + ] + }, + "post": { + "operationId": "Ldap_CreateLdapGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapCreateLdapGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "groupDn": { + "type": "string" + }, + "groupObjectClasses": { + "type": "string" + }, + "groupNameLdapAttribute": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap/{id}/sync": { + "get": { + "operationId": "Ldap_SyncUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapSyncUsersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap/{ldapId}/group/{id}": { + "delete": { + "operationId": "Ldap_DeleteLdapGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapDeleteLdapGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "ldapId", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Ldap" + ] + }, + "put": { + "operationId": "Ldap_UpdateLdapGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapUpdateLdapGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "ldapId", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "groupDn": { + "type": "string" + }, + "groupObjectClasses": { + "type": "string" + }, + "groupNameLdapAttribute": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap/{ldapId}/group/{id}/sync": { + "get": { + "operationId": "Ldap_SyncLdapGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapSyncLdapGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "ldapId", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/login": { + "get": { + "operationId": "Login_RedirectLogin", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginLoginGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "callbackUrl", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Login" + ] + }, + "post": { + "operationId": "Login_OIDCLogin", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginLoginPostResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/loginLoginPostRequest" + } + } + ], + "tags": [ + "Login" + ] + } + }, + "/apis/ghippo.io/v1alpha1/login-page/info": { + "get": { + "operationId": "LoginPage_GetInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginpageGetLoginPageInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "LoginPage" + ] + }, + "put": { + "operationId": "LoginPage_UpdateInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginpageUpdateLoginPageInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/loginpageUpdateLoginPageInfoRequest" + } + } + ], + "tags": [ + "LoginPage" + ] + } + }, + "/apis/ghippo.io/v1alpha1/login-page/reset": { + "post": { + "operationId": "LoginPage_ResetInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginpageResetLoginPageInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "LoginPage" + ] + } + }, + "/apis/ghippo.io/v1alpha1/login-page/version": { + "get": { + "operationId": "LoginPage_GetVersion", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginpageGetLoginPageVersionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "LoginPage" + ] + } + }, + "/apis/ghippo.io/v1alpha1/logout": { + "delete": { + "operationId": "Login_OIDCLogout", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginLogoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Login" + ] + } + }, + "/apis/ghippo.io/v1alpha1/messages": { + "get": { + "operationId": "Message_ListMessages", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageListMessagesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "unreadCount", + "description": "是否只返回统计未读数量", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "read", + "description": "是否只返回已读或未读,传\"read\"或\"unread\"来区分,不传返回已读和未读的消息", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "read", + "unread" + ], + "default": "all" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/messages/count": { + "get": { + "operationId": "Message_GetMessagesCount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageGetMessagesCountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/messages/delete": { + "post": { + "operationId": "Message_DeleteMessages", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageDeleteMessagesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/messageDeleteMessagesRequest" + } + } + ], + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/messages/toggle-unread": { + "get": { + "operationId": "Message_ToggleUnreadMessage", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageToggleUnreadMessageResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "next", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/messages/{id}": { + "get": { + "operationId": "Message_GetMessage", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageGetMessageResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/oidc/ghippo-client-config": { + "get": { + "operationId": "OIDC_GhippoClientConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcGhippoClientConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "OIDC" + ] + } + }, + "/apis/ghippo.io/v1alpha1/oidc/logout": { + "get": { + "operationId": "OIDC_RedirectFrontendLogout", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcRedirectFrontendLogoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "OIDC" + ] + }, + "delete": { + "operationId": "OIDC_OIDCLogout", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcOIDCLogoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "OIDC" + ] + } + }, + "/apis/ghippo.io/v1alpha1/oidc/token": { + "post": { + "operationId": "OIDC_OIDCToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcOIDCTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/oidcOIDCTokenRequest" + } + } + ], + "tags": [ + "OIDC" + ] + } + }, + "/apis/ghippo.io/v1alpha1/oidc/userinfo": { + "get": { + "operationId": "OIDC_OIDCUserInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcOIDCUserInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "OIDC" + ] + } + }, + "/apis/ghippo.io/v1alpha1/permissions": { + "get": { + "operationId": "Role_ListAllPermissions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListAllPermissionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/platformrolenames": { + "get": { + "operationId": "Role_ListPlatformRoleNames", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListPlatformRoleNamesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/platformroles/{name}/members": { + "get": { + "operationId": "Role_ListMembersByPlatformRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListMembersByPlatformRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/product-nav/info": { + "get": { + "operationId": "ProductNavigator_Info", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/productnavProductNavResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "ProductNavigator" + ] + } + }, + "/apis/ghippo.io/v1alpha1/publish/messages": { + "post": { + "operationId": "Publish_PublishMessage", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/publishPublishMessageResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/publishPublishMessageRequest" + } + } + ], + "tags": [ + "Publish" + ] + } + }, + "/apis/ghippo.io/v1alpha1/read-messages": { + "post": { + "operationId": "Message_SetReadMessages", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageSetReadMessagesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/messageSetReadMessagesRequest" + } + } + ], + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/record_filing": { + "get": { + "operationId": "RecordFiling_GetRecordFiling", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/recordFilingGetRecordFilingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "RecordFiling" + ] + }, + "put": { + "operationId": "RecordFiling_UpdateRecordFiling", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/recordFilingUpdateRecordFilingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/recordFilingUpdateRecordFilingRequest" + } + } + ], + "tags": [ + "RecordFiling" + ] + } + }, + "/apis/ghippo.io/v1alpha1/record_filing/reset": { + "post": { + "operationId": "RecordFiling_ResetRecordFiling", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/recordFilingResetRecordFilingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "RecordFiling" + ] + } + }, + "/apis/ghippo.io/v1alpha1/refresh-token": { + "post": { + "operationId": "Login_RefreshToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginRefreshTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/loginRefreshTokenRequest" + } + } + ], + "tags": [ + "Login" + ] + } + }, + "/apis/ghippo.io/v1alpha1/resourcequota-types": { + "get": { + "operationId": "Workspace_ListResourceQuotaTypes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListResourceQuotaTypesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/roles": { + "get": { + "operationId": "Role_ListRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "pageSize", + "description": "每页条数", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "当前页", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "roleType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "query_all_role_type", + "query_system", + "query_custom" + ], + "default": "query_all_role_type" + }, + { + "name": "scope", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "query_all_auth_scope", + "query_platform", + "query_folder", + "query_workspace" + ], + "default": "query_all_auth_scope" + } + ], + "tags": [ + "Role" + ] + }, + "post": { + "operationId": "Role_CreateRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleCreateRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/roleCreateRoleRequest" + } + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/roles/check-role-name/{name}": { + "get": { + "operationId": "Role_CheckRoleName", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleCheckRoleNameResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/roles/role-member-count/{name}": { + "get": { + "operationId": "Role_GetRoleMemberCount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleGetRoleMemberCountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/roles/{name}": { + "get": { + "operationId": "Role_GetRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleGetRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Role" + ] + }, + "delete": { + "operationId": "Role_DeleteRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleDeleteRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Role" + ] + }, + "put": { + "operationId": "Role_UpdateRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleUpdateRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "title": "globalRoleType type = 2;" + }, + "perms": { + "type": "array", + "items": { + "$ref": "#/definitions/rolePermission" + }, + "title": "AuthScope scope = 3;" + } + } + } + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/securitypolicy/accountlockout": { + "get": { + "operationId": "SecurityPolicy_GetAccountLockoutPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicyGetAccountLockoutPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SecurityPolicy" + ] + }, + "put": { + "operationId": "SecurityPolicy_SetAccountLockoutPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicySetAccountLockoutPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/securitypolicySetAccountLockoutPolicyRequest" + } + } + ], + "tags": [ + "SecurityPolicy" + ] + } + }, + "/apis/ghippo.io/v1alpha1/securitypolicy/logout": { + "get": { + "operationId": "SecurityPolicy_GetLogoutPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicyGetLogoutPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SecurityPolicy" + ] + }, + "put": { + "operationId": "SecurityPolicy_SetLogoutPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicySetLogoutPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/securitypolicySetLogoutPolicyRequest" + } + } + ], + "tags": [ + "SecurityPolicy" + ] + } + }, + "/apis/ghippo.io/v1alpha1/securitypolicy/password": { + "get": { + "operationId": "SecurityPolicy_GetPasswordPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicyGetPasswordPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SecurityPolicy" + ] + }, + "put": { + "operationId": "SecurityPolicy_SetPasswordPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicySetPasswordPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/securitypolicySetPasswordPolicyRequest" + } + } + ], + "tags": [ + "SecurityPolicy" + ] + } + }, + "/apis/ghippo.io/v1alpha1/securitypolicy/sessiontimeout": { + "get": { + "operationId": "SecurityPolicy_GetSessionTimeout", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicyGetSessionTimeoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SecurityPolicy" + ] + }, + "put": { + "operationId": "SecurityPolicy_SetSessionTimeout", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicySetSessionTimeoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/securitypolicySetSessionTimeoutRequest" + } + } + ], + "tags": [ + "SecurityPolicy" + ] + } + }, + "/apis/ghippo.io/v1alpha1/sharedresource-types": { + "get": { + "operationId": "Workspace_ListSharedResourceTypes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListSharedResourceTypesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/smtp-setting": { + "get": { + "operationId": "SmtpSetting_GetSmtpServer", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/smtpsettingGetSmtpServerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SmtpSetting" + ] + }, + "put": { + "operationId": "SmtpSetting_SetSmtpServer", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/smtpsettingSetSmtpServerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/smtpsettingSetSmtpServerRequest" + } + } + ], + "tags": [ + "SmtpSetting" + ] + } + }, + "/apis/ghippo.io/v1alpha1/smtp-setting/conn-test": { + "post": { + "operationId": "SmtpSetting_SmtpServerConnTest", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/smtpsettingSmtpConnTestResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/smtpsettingSmtpConnTestRequest" + } + } + ], + "tags": [ + "SmtpSetting" + ] + } + }, + "/apis/ghippo.io/v1alpha1/testLdapAuthentication": { + "post": { + "operationId": "Ldap_TestLdapAuthentication", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapTestLdapAuthenticationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ldapTestLdapAuthenticationRequest" + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/testLdapConnection": { + "post": { + "operationId": "Ldap_TestLdapConnection", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapTestLdapConnectionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ldapTestLdapConnectionRequest" + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/login_page": { + "get": { + "operationId": "Theme_GetLoginThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeGetLoginThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + }, + "post": { + "operationId": "Theme_SetLoginThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeSetLoginThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/themeSetLoginThemeConfigRequest" + } + } + ], + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/login_page.css": { + "get": { + "operationId": "Theme_GetLoginThemeCSS", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apiHttpBody" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/login_page/reset": { + "post": { + "operationId": "Theme_ResetLoginThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeResetLoginThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/theme": { + "get": { + "operationId": "Theme_GetThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeGetThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + }, + "post": { + "operationId": "Theme_SetThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeSetThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/themeSetThemeConfigRequest" + } + } + ], + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/theme.css": { + "get": { + "operationId": "Theme_GetThemeCSS", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apiHttpBody" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/theme/reset": { + "post": { + "operationId": "Theme_ResetThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeResetThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/top-nav": { + "post": { + "operationId": "TopNavigator_SetTopNav", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/topnavSetTopNavResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/topnavSetTopNavRequest" + } + } + ], + "tags": [ + "TopNavigator" + ] + } + }, + "/apis/ghippo.io/v1alpha1/top-nav/info": { + "get": { + "operationId": "TopNavigator_Info", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/topnavTopNavResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "TopNavigator" + ] + } + }, + "/apis/ghippo.io/v1alpha1/top-nav/reset": { + "post": { + "operationId": "TopNavigator_ResetTopNav", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/topnavResetTopNavResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "TopNavigator" + ] + } + }, + "/apis/ghippo.io/v1alpha1/update-quota-check": { + "post": { + "operationId": "Workspace_UpdateQuotaCheck", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceUpdateQuotaCheckResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/workspaceUpdateQuotaCheckRequest" + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users": { + "get": { + "operationId": "Users_ListUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userListUsersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "pageSize", + "description": "每页条数", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "当前页", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Users" + ] + }, + "post": { + "operationId": "Users_CreateUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userCreateUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/userCreateUserRequest" + } + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/check/{username}": { + "get": { + "operationId": "Users_CheckUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userCheckUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "username", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}": { + "get": { + "operationId": "Users_GetUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userGetUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Users" + ] + }, + "delete": { + "operationId": "Users_DeleteUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userDeleteUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Users" + ] + }, + "put": { + "operationId": "Users_UpdateUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userUpdateUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "email": { + "type": "string" + }, + "description": { + "type": "string" + }, + "firstname": { + "type": "string" + }, + "lastname": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/accesstoken": { + "post": { + "operationId": "Users_CreateUserAccessToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userCreateUserAccessTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "expiredAt": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/accesstokens": { + "get": { + "operationId": "Users_ListUserAccessTokens", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userListUserAccessTokensResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/accesstokens/{aid}": { + "delete": { + "operationId": "Users_DeleteUserAccessToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userDeleteUserAccessTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "aid", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/groups": { + "get": { + "operationId": "Users_ListUserGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userListUserGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/password": { + "put": { + "operationId": "Users_SetUserPassword", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userSetUserPasswordResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/roles": { + "get": { + "operationId": "Users_ListUserRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userListUserRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "role type", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "authorized", + "description": "是否授权", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Users" + ] + }, + "put": { + "operationId": "Users_UpdateUserRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userUpdateUserRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "addRoles": { + "type": "array", + "items": { + "type": "string" + } + }, + "removeRoles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/subjects": { + "get": { + "operationId": "Users_ListUserSubjects", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userListUserSubjectResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspace-sharedresource-quota": { + "get": { + "operationId": "Workspace_GetWorkspaceSharedResourceQuota", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceGetWorkspaceSharedResourceQuotaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "resourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "notFormatted", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspace-sharedresource-quota-hard": { + "put": { + "operationId": "Workspace_SetQuotaHardForWorkspaceSharedResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceSetQuotaHardForWorkspaceSharedResourceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/workspaceSetQuotaHardForWorkspaceSharedResourceRequest" + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspacerolenames": { + "get": { + "operationId": "Role_ListWorkspaceRoleNames", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListWorkspaceRoleNamesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaceroles": { + "get": { + "summary": "to be deprecated after several months", + "operationId": "Role_ListWorkspaceRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListWorkspaceRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaceroles/{name}/members-workspaces": { + "get": { + "operationId": "Role_ListMembersWorkspacesByWorkspaceRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListMembersWorkspacesByWorkspaceRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces": { + "get": { + "operationId": "Workspace_ListWorkspaces", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListWorkspacesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + }, + "post": { + "operationId": "Workspace_CreateWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceCreateWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/workspaceCreateWorkspaceRequest" + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}": { + "get": { + "operationId": "Workspace_GetWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceGetWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + }, + "delete": { + "summary": "TODO: sub ws删不删?", + "operationId": "Workspace_DeleteWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceDeleteWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/available-exclusiveresources": { + "get": { + "operationId": "Workspace_ListAvailableExclusiveResourcesByWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListAvailableExclusiveResourcesByWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "resourceType", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/available-sharedresources": { + "get": { + "operationId": "Workspace_ListAvailableSharedResourcesByWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListAvailableSharedResourcesByWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "resourceType", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/bind-exclusiveresource": { + "post": { + "operationId": "Workspace_BindExclusiveResourceToWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceBindExclusiveResourceToWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceScope": { + "type": "string" + }, + "gproduct": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/bind-sharedresource": { + "post": { + "operationId": "Workspace_BindSharedResourceToWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceBindSharedResourceToWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceScope": { + "type": "string" + }, + "gproduct": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/bind-sharedresource-setquota": { + "post": { + "operationId": "Workspace_BindSharedResourceAndSetQuotaHardToWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceBindSharedResourceAndSetQuotaHardToWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "cluster 资源 resource_scope 为空\nstring resource_scope = 4 [(validate.rules).string.min_len = 1];", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "gproduct": { + "type": "string" + }, + "quotaHard": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/exclusiveresources": { + "get": { + "operationId": "Workspace_ListExclusiveResourcesByWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListExclusiveResourcesByWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "resourceType", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/members-roles": { + "get": { + "operationId": "Workspace_ListMembersRolesByWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListMembersRolesByWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "memberName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/sharedresources": { + "get": { + "operationId": "Workspace_ListSharedResourcesByWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListSharedResourcesByWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/unbind-resource": { + "put": { + "operationId": "Workspace_UnbindResourceFromWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceUnbindResourceFromWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceScope": { + "type": "string" + }, + "gproduct": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha2/audits/clear": { + "post": { + "operationId": "AuditV1alpha2_ClearAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv2ClearAuditsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv2ClearAuditsRequest" + } + } + ], + "tags": [ + "AuditV1alpha2" + ] + }, + "put": { + "operationId": "AuditV1alpha2_SetAutoClearAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv2SetAutoClearAuditsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv2SetAutoClearAuditsRequest" + } + } + ], + "tags": [ + "AuditV1alpha2" + ] + } + }, + "/apis/ghippo.io/v1alpha2/audits/export": { + "get": { + "operationId": "AuditV1alpha2_ExportAudit", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apiHttpBody" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AuditV1alpha2" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits": { + "get": { + "operationId": "AuditV1alpha3_ListAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3ListAuditsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "gproduct", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/clear": { + "post": { + "operationId": "AuditV1alpha3_ClearAuditsNow", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3ClearAuditsNowResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv3ClearAuditsNowRequest" + } + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/export": { + "get": { + "operationId": "AuditV1alpha3_ExportAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apiHttpBody" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "gproduct", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/kube": { + "get": { + "operationId": "AuditV1alpha3_ListKubeAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3ListKubeAuditsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/kube/clear": { + "post": { + "operationId": "AuditV1alpha3_ClearKubeAuditsNow", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3ClearKubeAuditsNowResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv3ClearKubeAuditsNowRequest" + } + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/kube/export": { + "get": { + "operationId": "AuditV1alpha3_ExportKubeAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apiHttpBody" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/kube/{id}": { + "get": { + "operationId": "AuditV1alpha3_GetKubeAuditDetail", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3GetKubeAuditDetailResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/set-auto-clear": { + "put": { + "operationId": "AuditV1alpha3_SetAutoClearAuditSetting", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3SetAutoClearAuditSettingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv3SetAutoClearAuditSettingRequest" + } + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/set-auto-clear/kube": { + "put": { + "operationId": "AuditV1alpha3_SetAutoClearKubeAuditSetting", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3SetAutoClearKubeAuditSettingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv3SetAutoClearKubeAuditSettingRequest" + } + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/{id}": { + "get": { + "operationId": "AuditV1alpha3_GetAuditDetail", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3GetAuditDetailResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + } + }, + "definitions": { + "aboutDeveloper": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "aboutGProductVersion": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "aboutListDevelopersResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/aboutDeveloper" + } + } + } + }, + "aboutListGProductVersionsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/aboutGProductVersion" + } + } + } + }, + "aboutListOpenSourcesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/aboutOpenSource" + } + }, + "pagination": { + "$ref": "#/definitions/aboutPagination" + } + } + }, + "aboutOpenSource": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "开源软件名称" + }, + "license": { + "type": "string", + "title": "开源协议" + } + } + }, + "aboutPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "apiHttpBody": { + "type": "object", + "properties": { + "contentType": { + "type": "string", + "description": "The HTTP Content-Type header value specifying the content type of the body." + }, + "data": { + "type": "string", + "format": "byte", + "description": "The HTTP request/response body as raw binary." + }, + "extensions": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + }, + "description": "Application specific response metadata. Must be set in the first response\nfor streaming APIs." + } + }, + "description": "Message that represents an arbitrary HTTP body. It should only be used for\npayload formats that can't be represented as JSON, such as raw binary or\nan HTML page.\n\n\nThis message can be used both in streaming and non-streaming API methods in\nthe request as well as the response.\n\nIt can be used as a top-level request field, which is convenient if one\nwants to extract parameters from either the URL or HTTP template into the\nrequest fields and also want access to the raw HTTP body.\n\nExample:\n\n message GetResourceRequest {\n // A unique request id.\n string request_id = 1;\n\n // The raw HTTP body is bound to this field.\n google.api.HttpBody http_body = 2;\n\n }\n\n service ResourceService {\n rpc GetResource(GetResourceRequest)\n returns (google.api.HttpBody);\n rpc UpdateResource(google.api.HttpBody)\n returns (google.protobuf.Empty);\n\n }\n\nExample with streaming methods:\n\n service CaldavService {\n rpc GetCalendar(stream google.api.HttpBody)\n returns (stream google.api.HttpBody);\n rpc UpdateCalendar(stream google.api.HttpBody)\n returns (stream google.api.HttpBody);\n\n }\n\nUse of this type only changes how the request and response bodies are\nhandled, all other features will continue to work unchanged." + }, + "auditAuditInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "auditName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/auditStatusType" + }, + "user": { + "type": "string" + }, + "client": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "createdAt": { + "type": "string" + } + } + }, + "auditAuthTokenResponse": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "auditCertsResponse": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "$ref": "#/definitions/auditKey" + } + } + } + }, + "auditExternalAuditResponse": { + "type": "object" + }, + "auditExternalType": { + "type": "string", + "enum": [ + "loginFailed", + "forgetPassword", + "resetPassword" + ], + "default": "loginFailed" + }, + "auditGetAuditResourceReportResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/auditResourceReport" + } + } + } + }, + "auditGetAuditResponse": { + "type": "object", + "properties": { + "audit": { + "type": "string" + } + } + }, + "auditGetAuditUserReportResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/auditUserReport" + } + } + } + }, + "auditGetAutoClearAuditTimeResponse": { + "type": "object", + "properties": { + "kubeDays": { + "type": "integer", + "format": "int32" + }, + "ghippoDays": { + "type": "integer", + "format": "int32" + } + } + }, + "auditGetLimitRangeTimeResponse": { + "type": "object", + "properties": { + "day": { + "type": "integer", + "format": "int32" + } + } + }, + "auditKey": { + "type": "object", + "properties": { + "kid": { + "type": "string" + }, + "kty": { + "type": "string" + }, + "e": { + "type": "string" + }, + "n": { + "type": "string" + }, + "alg": { + "type": "string" + }, + "use": { + "type": "string" + } + } + }, + "auditListAuditResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/auditAuditInfo" + } + }, + "pagination": { + "$ref": "#/definitions/auditPagination" + } + } + }, + "auditPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "auditResourceReport": { + "type": "object", + "properties": { + "ResourceType": { + "type": "string" + }, + "EventName": { + "type": "string" + }, + "Count": { + "type": "integer", + "format": "int32" + } + } + }, + "auditSearchType": { + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + "auditStatusType": { + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + "auditUserReport": { + "type": "object", + "properties": { + "UserName": { + "type": "string" + }, + "TotalCount": { + "type": "integer", + "format": "int32" + }, + "SuccessCount": { + "type": "integer", + "format": "int32" + }, + "FailedCount": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv2ClearAuditsRequest": { + "type": "object", + "properties": { + "isKube": { + "type": "boolean" + }, + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv2ClearAuditsResponse": { + "type": "object" + }, + "auditv2SearchType": { + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + "auditv2SetAutoClearAuditsRequest": { + "type": "object", + "properties": { + "isKube": { + "type": "boolean" + }, + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv2SetAutoClearAuditsResponse": { + "type": "object" + }, + "auditv2StatusType": { + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + "auditv3AuditInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "auditName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "gproduct": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/auditv3StatusType" + }, + "user": { + "type": "string" + }, + "client": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "createdAt": { + "type": "string" + } + } + }, + "auditv3ClearAuditsNowRequest": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv3ClearAuditsNowResponse": { + "type": "object" + }, + "auditv3ClearKubeAuditsNowRequest": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv3ClearKubeAuditsNowResponse": { + "type": "object" + }, + "auditv3GetAuditDetailResponse": { + "type": "object", + "properties": { + "audit": { + "type": "string" + } + } + }, + "auditv3GetKubeAuditDetailResponse": { + "type": "object", + "properties": { + "audit": { + "type": "string" + } + } + }, + "auditv3KubeAuditInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "auditName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/auditv3StatusType" + }, + "user": { + "type": "string" + }, + "client": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "createdAt": { + "type": "string" + } + } + }, + "auditv3ListAuditsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/auditv3AuditInfo" + } + }, + "pagination": { + "$ref": "#/definitions/auditv3Pagination" + } + } + }, + "auditv3ListKubeAuditsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/auditv3KubeAuditInfo" + } + }, + "pagination": { + "$ref": "#/definitions/auditv3Pagination" + } + } + }, + "auditv3Pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv3SearchType": { + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + "auditv3SetAutoClearAuditSettingRequest": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv3SetAutoClearAuditSettingResponse": { + "type": "object" + }, + "auditv3SetAutoClearKubeAuditSettingRequest": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv3SetAutoClearKubeAuditSettingResponse": { + "type": "object" + }, + "auditv3StatusType": { + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + "batchauditBatchInsertAuditsRequest": { + "type": "object", + "properties": { + "audits": { + "type": "string" + } + }, + "title": "@openapiv2-ignore" + }, + "batchauditBatchInsertAuditsResponse": { + "type": "object", + "title": "@openapiv2-ignore" + }, + "clientClientInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "secret": { + "type": "string", + "title": "bool enabled = 4;\nrepeated string redirect_uris = 5;" + }, + "baseUrl": { + "type": "string" + } + } + }, + "clientCreateClientRequest": { + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "baseUrl": { + "type": "string" + } + } + }, + "clientCreateClientResponse": { + "type": "object" + }, + "clientDeleteClientResponse": { + "type": "object" + }, + "clientGetClientResponse": { + "type": "object", + "properties": { + "client": { + "$ref": "#/definitions/clientClientInfo" + } + } + }, + "clientListClientsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/clientClientInfo" + } + } + } + }, + "clientUpdateClientResponse": { + "type": "object" + }, + "currentuserAccessToken": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "expiredAt": { + "type": "string" + } + } + }, + "currentuserCreateAccessTokenRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "expiredAt": { + "type": "string" + } + } + }, + "currentuserCreateAccessTokenResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "token": { + "type": "string" + } + } + }, + "currentuserDeleteAccessTokenResponse": { + "type": "object" + }, + "currentuserGetGlobalPermissionsResponse": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "items": { + "$ref": "#/definitions/currentuserGlobalPermission" + } + } + } + }, + "currentuserGetUserResponse": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "locale": { + "type": "string" + } + } + }, + "currentuserGlobalPermission": { + "type": "string", + "enum": [ + "Unknown", + "ListUser", + "CreateUser", + "UpdateUser", + "DeleteUser", + "AuthorizeUser", + "ListGroup", + "CreateGroup", + "UpdateGroup", + "DeleteGroup", + "UpdateGroupUser", + "AuthorizeGroup", + "GetRole", + "GetIdp", + "CreateIdp", + "UpdateIdp", + "DeleteIdp", + "GetAudit", + "DeleteAudit", + "GetSecurityPolicy", + "UpdateSecurityPolicy", + "GetSMTP", + "UpdateSMTP", + "GetAppearance", + "UpdateAppearance", + "GetLicense", + "UpdateLicense", + "DeleteLicense", + "GetWorkspace", + "GetAboutPlatform", + "DeleteRole", + "UpdateRole", + "CreateRole", + "AccountingAndBilling", + "ReportManagement" + ], + "default": "Unknown" + }, + "currentuserListAccessTokensResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/currentuserAccessToken" + } + } + } + }, + "currentuserUpdateEmailRequest": { + "type": "object", + "properties": { + "email": { + "type": "string" + } + } + }, + "currentuserUpdateEmailResponse": { + "type": "object" + }, + "currentuserUpdateLanguageRequest": { + "type": "object", + "properties": { + "locale": { + "type": "string" + } + } + }, + "currentuserUpdateLanguageResponse": { + "type": "object" + }, + "currentuserUpdatePasswordRequest": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + } + }, + "currentuserUpdatePasswordResponse": { + "type": "object" + }, + "gproductGProduct": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "uiAssetsUrl": { + "type": "string" + }, + "needImportLicense": { + "type": "boolean" + } + } + }, + "gproductListGProductsResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/gproductGProduct" + } + } + } + }, + "gproductlicenseDeleteProductLicensesResponse": { + "type": "object" + }, + "gproductlicenseGProductLicense": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "module": { + "type": "string" + }, + "level": { + "type": "string" + }, + "status": { + "type": "string" + }, + "expiredAt": { + "type": "string" + } + } + }, + "gproductlicenseGProductLicenseInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "module": { + "type": "string" + }, + "licenseKey": { + "type": "string" + }, + "licenseLevel": { + "type": "string" + }, + "physicalUsedCpu": { + "type": "string" + }, + "physicalMaxCpu": { + "type": "string" + }, + "virtualUsedCpu": { + "type": "string" + }, + "virtualMaxCpu": { + "type": "string" + }, + "expiredAt": { + "type": "string" + }, + "usedNode": { + "type": "string" + }, + "maxNode": { + "type": "string" + } + } + }, + "gproductlicenseGetGProductLicenseYamlResponse": { + "type": "object", + "properties": { + "yaml": { + "type": "string" + } + } + }, + "gproductlicenseGetGProductLicensesESNResponse": { + "type": "object", + "properties": { + "esn": { + "type": "string" + } + } + }, + "gproductlicenseGetGProductLicensesOverQuotaResponse": { + "type": "object", + "properties": { + "licenses": { + "type": "array", + "items": { + "$ref": "#/definitions/gproductlicenseGProductLicense" + } + } + } + }, + "gproductlicenseGetGProductLicensesResponse": { + "type": "object", + "properties": { + "license": { + "$ref": "#/definitions/gproductlicenseGProductLicenseInfo" + } + } + }, + "gproductlicenseListGProductLicensesResponse": { + "type": "object", + "properties": { + "licenses": { + "type": "array", + "items": { + "$ref": "#/definitions/gproductlicenseGProductLicense" + } + } + } + }, + "gproductlicenseUpdateGProductLicensesRequest": { + "type": "object", + "properties": { + "yaml": { + "type": "string" + } + } + }, + "gproductlicenseUpdateGProductLicensesResponse": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "licenses": { + "type": "array", + "items": { + "$ref": "#/definitions/gproductlicenseGProductLicense" + } + } + } + }, + "groupAddUserToGroupResponse": { + "type": "object" + }, + "groupCreateGroupRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "groupCreateGroupResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "groupDeleteGroupResponse": { + "type": "object" + }, + "groupDeleteUserFromGroupResponse": { + "type": "object" + }, + "groupGetGroupResponse": { + "type": "object", + "properties": { + "group": { + "$ref": "#/definitions/groupGroupInfo" + } + } + }, + "groupGroupInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "userCount": { + "type": "integer", + "format": "int64" + }, + "description": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "canAuthorize": { + "type": "boolean" + } + } + }, + "groupGroupMembersResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/groupPagination" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/groupUser" + } + } + } + }, + "groupGroupSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "type": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "subjectName": { + "type": "string" + } + } + }, + "groupListGroupRolesResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/groupPagination" + }, + "authorizedCount": { + "type": "integer", + "format": "int64" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/groupRoleInfo" + } + } + } + }, + "groupListGroupSubjectResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/groupPagination" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/groupGroupSubject" + } + } + } + }, + "groupListGroupsResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/groupPagination" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/groupGroupInfo" + } + } + } + }, + "groupPagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "total": { + "type": "integer", + "format": "int32" + } + } + }, + "groupRoleInfo": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "authorized": { + "type": "boolean" + } + } + }, + "groupUpdateGroupResponse": { + "type": "object" + }, + "groupUpdateGroupRolesResponse": { + "type": "object" + }, + "groupUser": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "description": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + }, + "idpClientAuthentications": { + "type": "string", + "enum": [ + "client_secret_post", + "client_secret_basic", + "client_secret_jwt", + "private_key_jwt" + ], + "default": "client_secret_post" + }, + "idpCreateIDPRequest": { + "type": "object", + "properties": { + "displayName": { + "type": "string", + "title": "string id = 1;\nstring alias = 1 [(validate.rules).string.min_len = 1];" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "clientAuthentications": { + "$ref": "#/definitions/idpClientAuthentications" + }, + "providerId": { + "$ref": "#/definitions/idpProviderType" + }, + "authorizationUrl": { + "type": "string", + "title": "bool enabled = 6;" + }, + "userInfoUrl": { + "type": "string" + }, + "tokenUrl": { + "type": "string" + }, + "logoutUrl": { + "type": "string" + }, + "enableAutoLinkFlow": { + "type": "boolean" + } + } + }, + "idpCreateIDPResponse": { + "type": "object" + }, + "idpDeleteIDPResponse": { + "type": "object" + }, + "idpGetIDPResponse": { + "type": "object", + "properties": { + "displayName": { + "type": "string", + "title": "string id = 1;\nstring alias = 1;" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "clientAuthentications": { + "$ref": "#/definitions/idpClientAuthentications" + }, + "providerId": { + "$ref": "#/definitions/idpProviderType" + }, + "authorizationUrl": { + "type": "string", + "title": "bool enabled = 6;" + }, + "userInfoUrl": { + "type": "string" + }, + "tokenUrl": { + "type": "string" + }, + "logoutUrl": { + "type": "string" + }, + "enableAutoLinkFlow": { + "type": "boolean" + } + } + }, + "idpGetRedirectUrlResponse": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + } + }, + "idpGetWellKnownUrlResponse": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + } + }, + "idpProviderType": { + "type": "string", + "enum": [ + "oidc" + ], + "default": "oidc" + }, + "idpUpdateIDPRequest": { + "type": "object", + "properties": { + "displayName": { + "type": "string", + "title": "string alias = 1 [(validate.rules).string.min_len = 1];" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "clientAuthentications": { + "$ref": "#/definitions/idpClientAuthentications" + }, + "providerId": { + "$ref": "#/definitions/idpProviderType" + }, + "authorizationUrl": { + "type": "string", + "title": "bool enabled = 7;" + }, + "userInfoUrl": { + "type": "string" + }, + "tokenUrl": { + "type": "string" + }, + "logoutUrl": { + "type": "string" + }, + "enableAutoLinkFlow": { + "type": "boolean" + } + } + }, + "idpUpdateIDPResponse": { + "type": "object" + }, + "ldapCreateLdapGroupResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "ldapCreateLdapRequest": { + "type": "object", + "properties": { + "vendor": { + "type": "string", + "title": "LDAP vendor (provider), only is other" + }, + "startTls": { + "type": "string", + "description": "Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling." + }, + "ldapProtocol": { + "type": "string" + }, + "ldapHost": { + "type": "string" + }, + "usersDn": { + "type": "string", + "title": "Full DN of LDAP tree where your users are. This DN is the parent of LDAP users.\nIt could be for example 'ou=users,dc=example,dc=com' assuming that your typical user will have DN like 'uid=john,ou=users,dc=example,dc=com'" + }, + "bindDn": { + "type": "string", + "title": "DN of LDAP admin, which will be used by Keycloak to access LDAP server" + }, + "bindCredential": { + "type": "string", + "description": "Password of LDAP admin." + }, + "userObjectClasses": { + "type": "string", + "description": "All values of LDAP objectClass attribute for users in LDAP divided by comma.\nFor example: 'inetOrgPerson, organizationalPerson' .\nNewly created Keycloak users will be written to LDAP with all those object classes and existing LDAP user records are found just if they contain all those object classes." + }, + "usernameLdapAttribute": { + "type": "string", + "title": "Name of LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it can be 'uid'.\nFor Active directory it can be 'sAMAccountName' or 'cn'.\nThe attribute should be filled for all LDAP user records you want to import from LDAP to Keycloak" + }, + "fullSyncPeriod": { + "type": "string", + "title": "Period for full synchronization in seconds: -1 手动同步" + }, + "rdnLdapAttribute": { + "type": "string", + "description": "Name of the LDAP attribute, which is used as RDN (top attribute) of typical user DN.\nUsually it's the same as the Username LDAP attribute, however it is not required.\nFor example for Active directory, it is common to use 'cn' as RDN attribute when username attribute might be 'sAMAccountName'." + }, + "uuidLdapAttribute": { + "type": "string", + "description": "Name of the LDAP attribute, which is used as a unique object identifier (UUID) for objects in LDAP.\nFor many LDAP server vendors, it is 'entryUUID'; however some are different.\nFor example, for Active directory it should be 'objectGUID'.\nIf your LDAP server does not support the notion of UUID, you can use any other attribute that is supposed to be unique among LDAP users in tree.\nFor example 'uid' or 'entryDN'." + }, + "editMode": { + "type": "string", + "description": "READ_ONLY is a read-only LDAP store.\nWRITABLE means data will be synced back to LDAP on demand." + }, + "readTimeout": { + "type": "string", + "description": "LDAP read timeout in milliseconds. This timeout applies for LDAP read operations." + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + } + }, + "ldapCreateLdapResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "ldapDeleteLdapGroupResponse": { + "type": "object" + }, + "ldapDeleteLdapResponse": { + "type": "object" + }, + "ldapGetLdapGroupResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "groupDn": { + "type": "string" + }, + "groupObjectClasses": { + "type": "string" + }, + "groupNameLdapAttribute": { + "type": "string" + } + } + }, + "ldapGetLdapResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "vendor": { + "type": "string" + }, + "startTls": { + "type": "string" + }, + "ldapProtocol": { + "type": "string" + }, + "ldapHost": { + "type": "string" + }, + "usersDn": { + "type": "string" + }, + "bindDn": { + "type": "string" + }, + "bindCredential": { + "type": "string" + }, + "userObjectClasses": { + "type": "string" + }, + "usernameLdapAttribute": { + "type": "string" + }, + "fullSyncPeriod": { + "type": "string" + }, + "rdnLdapAttribute": { + "type": "string" + }, + "uuidLdapAttribute": { + "type": "string" + }, + "editMode": { + "type": "string" + }, + "readTimeout": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + } + }, + "ldapSyncLdapGroupsResponse": { + "type": "object", + "properties": { + "ignored": { + "type": "boolean" + }, + "added": { + "type": "integer", + "format": "int32" + }, + "updated": { + "type": "integer", + "format": "int32" + }, + "removed": { + "type": "integer", + "format": "int32" + }, + "failed": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "string" + } + } + }, + "ldapSyncUsersResponse": { + "type": "object", + "properties": { + "ignored": { + "type": "boolean" + }, + "added": { + "type": "integer", + "format": "int32" + }, + "updated": { + "type": "integer", + "format": "int32" + }, + "removed": { + "type": "integer", + "format": "int32" + }, + "failed": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "string" + } + } + }, + "ldapTestLdapAuthenticationRequest": { + "type": "object", + "properties": { + "bindDn": { + "type": "string", + "title": "DN of LDAP admin, which will be used by Keycloak to access LDAP server" + }, + "bindCredential": { + "type": "string", + "description": "Password of LDAP admin." + }, + "connectionUrl": { + "type": "string", + "title": "Connection URL to your LDAP server" + }, + "connectionTimeout": { + "type": "string", + "title": "LDAP Connection Timeout in milliseconds: 选填" + }, + "action": { + "type": "string", + "title": "测试事件类型: 选填, testAuthentication" + }, + "startTls": { + "type": "string", + "title": "Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling. 选填" + }, + "useTruststoreSpi": { + "type": "string", + "title": "Specifies whether LDAP connection will use the truststore SPI with the truststore configured.\n'Always' means that it will always use it.\n'Never' means that it will not use it.\n'Only for ldaps' means that it will use if your connection URL use ldaps.\n选填" + }, + "componentId": { + "type": "string", + "title": "Ldap id: 选填, uuid. 如果 bind_credential 的值等于 \"**********\", 则此字段是必填参" + } + } + }, + "ldapTestLdapAuthenticationResponse": { + "type": "object" + }, + "ldapTestLdapConnectionRequest": { + "type": "object", + "properties": { + "connectionUrl": { + "type": "string", + "title": "Connection URL to your LDAP server" + }, + "bindDn": { + "type": "string", + "title": "DN of LDAP admin, which will be used by Keycloak to access LDAP server: 选填" + }, + "bindCredential": { + "type": "string", + "title": "Password of LDAP admin. 选填" + }, + "connectionTimeout": { + "type": "string", + "title": "LDAP Connection Timeout in milliseconds: 选填" + }, + "action": { + "type": "string", + "title": "测试事件类型: 选填, testConnection" + }, + "startTls": { + "type": "string", + "description": "Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling." + }, + "useTruststoreSpi": { + "type": "string", + "title": "Specifies whether LDAP connection will use the truststore SPI with the truststore configured.\n'Always' means that it will always use it.\n'Never' means that it will not use it.\n'Only for ldaps' means that it will use if your connection URL use ldaps.\n选填" + }, + "componentId": { + "type": "string", + "title": "Ldap id: 选填, uuid" + } + } + }, + "ldapTestLdapConnectionResponse": { + "type": "object" + }, + "ldapUpdateLdapGroupResponse": { + "type": "object" + }, + "ldapUpdateLdapResponse": { + "type": "object" + }, + "loginLoginGetResponse": { + "type": "object" + }, + "loginLoginPostRequest": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "state": { + "type": "string" + }, + "sessionState": { + "type": "string" + }, + "callbackUrl": { + "type": "string" + } + } + }, + "loginLoginPostResponse": { + "type": "object", + "properties": { + "idToken": { + "type": "string" + }, + "refreshToken": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "loginLogoutResponse": { + "type": "object" + }, + "loginRefreshTokenRequest": { + "type": "object", + "properties": { + "refreshToken": { + "type": "string" + } + } + }, + "loginRefreshTokenResponse": { + "type": "object", + "properties": { + "idToken": { + "type": "string" + }, + "refreshToken": { + "type": "string" + } + } + }, + "loginpageGetLoginPageInfoResponse": { + "type": "object", + "properties": { + "version": { + "type": "integer", + "format": "int32" + }, + "platformName": { + "type": "string" + }, + "copyright": { + "type": "string" + }, + "tabName": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "favicon": { + "type": "string" + }, + "background": { + "type": "string" + }, + "customBg": { + "type": "boolean" + } + } + }, + "loginpageGetLoginPageVersionResponse": { + "type": "object", + "properties": { + "version": { + "type": "integer", + "format": "int32" + } + } + }, + "loginpageResetLoginPageInfoResponse": { + "type": "object" + }, + "loginpageUpdateLoginPageInfoRequest": { + "type": "object", + "properties": { + "platformName": { + "type": "string" + }, + "copyright": { + "type": "string" + }, + "tabName": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "favicon": { + "type": "string" + }, + "background": { + "type": "string" + } + } + }, + "loginpageUpdateLoginPageInfoResponse": { + "type": "object" + }, + "messageDeleteMessagesRequest": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + }, + "messageDeleteMessagesResponse": { + "type": "object" + }, + "messageGetMessageResponse": { + "type": "object", + "properties": { + "message": { + "$ref": "#/definitions/messageMessageInfo" + } + } + }, + "messageGetMessagesCountResponse": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "readTotal": { + "type": "integer", + "format": "int32" + }, + "unreadTotal": { + "type": "integer", + "format": "int32" + } + } + }, + "messageListMessagesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/messageMessageInfo" + } + }, + "pagination": { + "$ref": "#/definitions/messagePagination" + } + } + }, + "messageMessageInfo": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "message": { + "type": "string" + }, + "read": { + "$ref": "#/definitions/messageReadType" + }, + "createdAt": { + "type": "string" + } + } + }, + "messagePagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "messageReadType": { + "type": "string", + "enum": [ + "all", + "read", + "unread" + ], + "default": "all" + }, + "messageSetReadMessagesRequest": { + "type": "object", + "properties": { + "all": { + "type": "boolean" + }, + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + }, + "messageSetReadMessagesResponse": { + "type": "object" + }, + "messageToggleUnreadMessageResponse": { + "type": "object", + "properties": { + "message": { + "$ref": "#/definitions/messageMessageInfo" + } + } + }, + "oidcGhippoClientConfigResponse": { + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "groupsClaim": { + "type": "string" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "userClaim": { + "type": "string" + }, + "clientSecret": { + "type": "string" + } + } + }, + "oidcOIDCLogoutResponse": { + "type": "object" + }, + "oidcOIDCTokenRequest": { + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "grantType": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "code": { + "type": "string", + "title": "string response_type = 4 [(validate.rules).string.min_len = 1];" + }, + "redirectUri": { + "type": "string" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "refreshToken": { + "type": "string" + }, + "scope": { + "type": "string" + } + } + }, + "oidcOIDCTokenResponse": { + "type": "object", + "properties": { + "accessToken": { + "type": "string" + }, + "idToken": { + "type": "string" + }, + "expiresIn": { + "type": "integer", + "format": "int32" + }, + "refreshExpiresIn": { + "type": "integer", + "format": "int32" + }, + "refreshToken": { + "type": "string" + }, + "tokenType": { + "type": "string" + }, + "notBeforePolicy": { + "type": "integer", + "format": "int32" + }, + "sessionState": { + "type": "string" + }, + "scope": { + "type": "string" + } + } + }, + "oidcOIDCUserInfoResponse": { + "type": "object", + "properties": { + "sub": { + "type": "string" + }, + "preferredUsername": { + "type": "string" + }, + "email": { + "type": "string" + }, + "locale": { + "type": "string" + } + } + }, + "oidcRedirectFrontendLogoutResponse": { + "type": "object" + }, + "oidcWellKnownResponse": { + "type": "object", + "properties": { + "issuer": { + "type": "string" + }, + "authorizationEndpoint": { + "type": "string" + }, + "tokenEndpoint": { + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "userinfoEndpoint": { + "type": "string" + }, + "introspectionEndpoint": { + "type": "string" + }, + "idTokenSigningAlgValuesSupported": { + "type": "array", + "items": { + "type": "string" + } + }, + "endSessionEndpoint": { + "type": "string" + } + } + }, + "productnavProductMenu": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "iconUrl": { + "type": "string" + }, + "target": { + "type": "string" + }, + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/productnavProductMenu" + } + } + } + }, + "productnavProductNavCategory": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/productnavProductMenu" + } + } + } + }, + "productnavProductNavResponse": { + "type": "object", + "properties": { + "categories": { + "type": "array", + "items": { + "$ref": "#/definitions/productnavProductNavCategory" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "publishPublishMessageRequest": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "type": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "message": { + "type": "string" + }, + "messageUid": { + "type": "string" + } + } + }, + "publishPublishMessageResponse": { + "type": "object" + }, + "recordFilingGetRecordFilingResponse": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "icps": { + "$ref": "#/definitions/recordFilingicps" + }, + "polices": { + "$ref": "#/definitions/recordFilingpolices" + } + } + }, + "recordFilingResetRecordFilingResponse": { + "type": "object" + }, + "recordFilingUpdateRecordFilingRequest": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "icps": { + "$ref": "#/definitions/recordFilingicps" + }, + "polices": { + "$ref": "#/definitions/recordFilingpolices" + } + } + }, + "recordFilingUpdateRecordFilingResponse": { + "type": "object" + }, + "recordFilingicps": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "copyright": { + "type": "string" + }, + "names": { + "type": "array", + "items": { + "$ref": "#/definitions/recordFilingname" + } + } + } + }, + "recordFilingname": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "link": { + "type": "boolean" + } + } + }, + "recordFilingpolices": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "names": { + "type": "array", + "items": { + "$ref": "#/definitions/recordFilingname" + } + } + } + }, + "roleAuthScope": { + "type": "string", + "enum": [ + "platform", + "folder", + "workspace" + ], + "default": "platform", + "title": "- platform: unknown_auth_scope = 0;" + }, + "roleAuthScopeAllPermissions": { + "type": "object", + "properties": { + "authScope": { + "$ref": "#/definitions/roleAuthScope" + }, + "categoryPerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleCategoryAllPermissions" + } + } + } + }, + "roleCategory": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "localizedName": { + "type": "string" + } + } + }, + "roleCategoryAllPermissions": { + "type": "object", + "properties": { + "category": { + "$ref": "#/definitions/roleCategory" + }, + "resourcePerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleResourceAllPermissions" + } + } + } + }, + "roleCategoryPermissions": { + "type": "object", + "properties": { + "category": { + "$ref": "#/definitions/roleCategory" + }, + "resourcePerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleResourcePermissions" + } + } + } + }, + "roleCheckRoleNameResponse": { + "type": "object", + "properties": { + "exist": { + "type": "boolean" + } + } + }, + "roleCreateRoleRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string", + "title": "string gproduct = 2 [(validate.rules).string = {min_len: 1, max_len: 63}];\nglobalRoleType type = 3;" + }, + "scope": { + "$ref": "#/definitions/roleAuthScope" + }, + "perms": { + "type": "array", + "items": { + "$ref": "#/definitions/rolePermission" + } + } + } + }, + "roleCreateRoleResponse": { + "type": "object" + }, + "roleDeleteRoleResponse": { + "type": "object" + }, + "roleGProduct": { + "type": "object", + "properties": { + "gproduct": { + "type": "string" + }, + "localizedName": { + "type": "string" + } + } + }, + "roleGProductAllPermissions": { + "type": "object", + "properties": { + "gproduct": { + "$ref": "#/definitions/roleGProduct" + }, + "authscopePerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleAuthScopeAllPermissions" + }, + "title": "map gproduct = 1;" + } + } + }, + "roleGProductPermissions": { + "type": "object", + "properties": { + "gproduct": { + "$ref": "#/definitions/roleGProduct", + "title": "string gproduct = 1;" + }, + "categoryPerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleCategoryPermissions" + } + } + } + }, + "roleGetGlobalRoleResponse": { + "type": "object", + "properties": { + "role": { + "$ref": "#/definitions/roleGlobalRoleInfo" + } + }, + "title": "to be deprecated after several months" + }, + "roleGetRoleMemberCountResponse": { + "type": "object", + "properties": { + "userCount": { + "type": "integer", + "format": "int32" + }, + "groupCount": { + "type": "integer", + "format": "int32" + } + } + }, + "roleGetRoleResponse": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/roleglobalRoleType" + }, + "description": { + "type": "string" + }, + "scope": { + "$ref": "#/definitions/roleAuthScope" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "gproductPerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleGProductPermissions" + } + } + } + }, + "roleGlobalRoleInfo": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/roleglobalRoleType" + }, + "description": { + "type": "string" + }, + "composite": { + "type": "boolean" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "title": "to be deprecated after several months" + }, + "roleListAllPermissionsResponse": { + "type": "object", + "properties": { + "gproductPerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleGProductAllPermissions" + } + } + } + }, + "roleListFolderRoleNamesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleRoleName" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListFolderRolesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleWorkspaceRoleInfo" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + }, + "title": "to be deprecated after several months" + }, + "roleListGlobalRoleSubjectsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleSubject" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + }, + "title": "to be deprecated after several months" + }, + "roleListGlobalRolesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleGlobalRoleInfo" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + }, + "title": "to be deprecated after several months" + }, + "roleListMembersByPlatformRoleResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleMember" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListMembersFoldersByFolderRoleResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleMemberFolder" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListMembersWorkspacesByWorkspaceRoleResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleMemberWorkspace" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListPlatformRoleNamesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleRoleName" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListRolesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleRoleInfo" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListWorkspaceRoleNamesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleRoleName" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListWorkspaceRolesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleWorkspaceRoleInfo" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + }, + "title": "to be deprecated after several months" + }, + "roleMember": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "roleMemberFolder": { + "type": "object", + "properties": { + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "folderId": { + "type": "integer", + "format": "int32" + }, + "folderAlias": { + "type": "string" + }, + "memberId": { + "type": "string" + } + } + }, + "roleMemberWorkspace": { + "type": "object", + "properties": { + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "workspaceId": { + "type": "integer", + "format": "int32" + }, + "workspaceAlias": { + "type": "string" + }, + "memberId": { + "type": "string" + } + } + }, + "rolePagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "rolePermission": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "gproduct": { + "type": "string" + } + } + }, + "roleQueryAuthScope": { + "type": "string", + "enum": [ + "query_all_auth_scope", + "query_platform", + "query_folder", + "query_workspace" + ], + "default": "query_all_auth_scope" + }, + "roleQueryRoleType": { + "type": "string", + "enum": [ + "query_all_role_type", + "query_system", + "query_custom" + ], + "default": "query_all_role_type" + }, + "roleResourceAction": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "localizedName": { + "type": "string" + } + } + }, + "roleResourceActionWithDependency": { + "type": "object", + "properties": { + "action": { + "$ref": "#/definitions/roleResourceAction" + }, + "dependPerms": { + "type": "array", + "items": { + "$ref": "#/definitions/rolePermission" + } + } + } + }, + "roleResourceAllPermissions": { + "type": "object", + "properties": { + "resourceType": { + "$ref": "#/definitions/roleResourceType" + }, + "actions": { + "type": "array", + "items": { + "$ref": "#/definitions/roleResourceActionWithDependency" + } + } + } + }, + "roleResourcePermissions": { + "type": "object", + "properties": { + "resourceType": { + "$ref": "#/definitions/roleResourceType" + }, + "actions": { + "type": "array", + "items": { + "$ref": "#/definitions/roleResourceAction" + } + } + } + }, + "roleResourceType": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "localizedName": { + "type": "string" + } + } + }, + "roleRoleInfo": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/roleglobalRoleType" + }, + "description": { + "type": "string" + }, + "scope": { + "$ref": "#/definitions/roleAuthScope" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + }, + "roleRoleName": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "authScope": { + "$ref": "#/definitions/roleAuthScope" + }, + "description": { + "type": "string" + } + } + }, + "roleSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "type": { + "type": "string" + }, + "subjectName": { + "type": "string" + } + }, + "title": "to be deprecated after several months" + }, + "roleUpdateRoleResponse": { + "type": "object" + }, + "roleWorkspaceRoleInfo": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string" + }, + "authScope": { + "type": "string" + }, + "gproduct": { + "type": "string" + } + }, + "title": "to be deprecated after several months" + }, + "roleglobalRoleType": { + "type": "string", + "enum": [ + "system", + "custom" + ], + "default": "system", + "title": "TODO: 改为 RoleType" + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "securitypolicyGetAccountLockoutPolicyResponse": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "maxLoginFailures": { + "type": "integer", + "format": "int32" + }, + "maxFailuresWaitSeconds": { + "type": "integer", + "format": "int32" + }, + "failureResetSeconds": { + "type": "integer", + "format": "int32" + } + } + }, + "securitypolicyGetLogoutPolicyResponse": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "securitypolicyGetPasswordPolicyResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/securitypolicyPasswordPolicyInfo" + } + } + } + }, + "securitypolicyGetSessionTimeoutResponse": { + "type": "object", + "properties": { + "timeoutSeconds": { + "type": "integer", + "format": "int32" + } + } + }, + "securitypolicyPasswordPolicyInfo": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/securitypolicyPasswordPolicyType" + }, + "value": { + "type": "string" + } + } + }, + "securitypolicyPasswordPolicyType": { + "type": "string", + "enum": [ + "MinimumLengthLabel", + "NotRecentlyUsedLabel", + "NotUsernameLabel", + "NotEmailLabel", + "DigitsLabel", + "UppercaseCharactersLabel", + "LowercaseCharactersLabel", + "SpecialCharactersLabel", + "ExpirePasswordLabel" + ], + "default": "MinimumLengthLabel" + }, + "securitypolicySetAccountLockoutPolicyRequest": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "maxLoginFailures": { + "type": "integer", + "format": "int32", + "title": "failures count >= 0" + }, + "maxFailuresWaitSeconds": { + "type": "integer", + "format": "int32", + "title": "Lock time >= 60s" + }, + "failureResetSeconds": { + "type": "integer", + "format": "int32", + "title": "reset time >= 60s" + } + } + }, + "securitypolicySetAccountLockoutPolicyResponse": { + "type": "object" + }, + "securitypolicySetLogoutPolicyRequest": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "securitypolicySetLogoutPolicyResponse": { + "type": "object" + }, + "securitypolicySetPasswordPolicyRequest": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/securitypolicyPasswordPolicyInfo" + } + } + } + }, + "securitypolicySetPasswordPolicyResponse": { + "type": "object" + }, + "securitypolicySetSessionTimeoutRequest": { + "type": "object", + "properties": { + "timeoutSeconds": { + "type": "integer", + "format": "int32", + "title": "timeout > 3600s" + } + } + }, + "securitypolicySetSessionTimeoutResponse": { + "type": "object" + }, + "smtpsettingGetSmtpServerResponse": { + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "ssl": { + "type": "boolean" + }, + "starttls": { + "type": "boolean" + }, + "from": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "smtpsettingSetSmtpServerRequest": { + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "ssl": { + "type": "boolean" + }, + "starttls": { + "type": "boolean" + }, + "from": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "smtpsettingSetSmtpServerResponse": { + "type": "object" + }, + "smtpsettingSmtpConnTestRequest": { + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "ssl": { + "type": "boolean" + }, + "starttls": { + "type": "boolean" + }, + "from": { + "type": "string" + }, + "to": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "smtpsettingSmtpConnTestResponse": { + "type": "object" + }, + "themeGetLoginThemeConfigResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "css": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + }, + "themeGetThemeConfigResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "css": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + }, + "themeResetLoginThemeConfigResponse": { + "type": "object" + }, + "themeResetThemeConfigResponse": { + "type": "object" + }, + "themeSetLoginThemeConfigRequest": { + "type": "object", + "properties": { + "css": { + "type": "string" + } + } + }, + "themeSetLoginThemeConfigResponse": { + "type": "object" + }, + "themeSetThemeConfigRequest": { + "type": "object", + "properties": { + "css": { + "type": "string" + } + } + }, + "themeSetThemeConfigResponse": { + "type": "object" + }, + "topnavResetTopNavResponse": { + "type": "object" + }, + "topnavSetTopNavRequest": { + "type": "object", + "properties": { + "icon": { + "type": "string" + }, + "favicon": { + "type": "string" + }, + "tabName": { + "type": "string" + } + } + }, + "topnavSetTopNavResponse": { + "type": "object" + }, + "topnavTopNavResponse": { + "type": "object", + "properties": { + "icon": { + "type": "string" + }, + "favicon": { + "type": "string" + }, + "tabName": { + "type": "string" + } + } + }, + "userAccessToken": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "expiredAt": { + "type": "string" + } + } + }, + "userCheckUserResponse": { + "type": "object", + "properties": { + "existed": { + "type": "boolean" + } + } + }, + "userCreateUserAccessTokenResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "token": { + "type": "string" + } + } + }, + "userCreateUserRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "description": { + "type": "string" + }, + "temporary": { + "type": "boolean" + } + } + }, + "userCreateUserResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "userDeleteUserAccessTokenResponse": { + "type": "object" + }, + "userDeleteUserResponse": { + "type": "object" + }, + "userGetUserResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "description": { + "type": "string" + }, + "firstname": { + "type": "string" + }, + "lastname": { + "type": "string" + }, + "source": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "lastLoginAt": { + "type": "string" + }, + "canAuthorize": { + "type": "boolean" + } + } + }, + "userGroup": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "userListUserAccessTokensResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/userAccessToken" + } + } + } + }, + "userListUserGroupsResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/userPagination" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/userGroup" + } + } + } + }, + "userListUserRolesResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/userPagination" + }, + "authorizedCount": { + "type": "integer", + "format": "int64" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/userRoleInfo" + } + } + } + }, + "userListUserSubjectResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/userPagination" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/userUserSubject" + } + } + } + }, + "userListUsersResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/userGetUserResponse" + } + }, + "pagination": { + "$ref": "#/definitions/userPagination" + } + } + }, + "userPagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "total": { + "type": "integer", + "format": "int32" + } + } + }, + "userRoleInfo": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "authorized": { + "type": "boolean" + } + } + }, + "userSetUserPasswordResponse": { + "type": "object" + }, + "userUpdateUserResponse": { + "type": "object" + }, + "userUpdateUserRolesResponse": { + "type": "object" + }, + "userUserSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "subjectName": { + "type": "string" + } + } + }, + "workspaceAuthorizeResponse": { + "type": "object" + }, + "workspaceBindExclusiveResourceToWorkspaceResponse": { + "type": "object" + }, + "workspaceBindSharedResourceAndSetQuotaHardToWorkspaceResponse": { + "type": "object" + }, + "workspaceBindSharedResourceToWorkspaceResponse": { + "type": "object" + }, + "workspaceClusterStatus": { + "type": "string", + "enum": [ + "StatusUnknown", + "StatusRunning", + "StatusNotRunning" + ], + "default": "StatusUnknown" + }, + "workspaceCreateFolderRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "alias": { + "type": "string" + }, + "parentFolderId": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceCreateFolderResponse": { + "type": "object", + "properties": { + "folderId": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceCreateWorkspaceRequest": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "title": "string name = 1 [(validate.rules).string.max_len = 64];" + }, + "parentFolderId": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceCreateWorkspaceResponse": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceDeauthorizeResponse": { + "type": "object" + }, + "workspaceDeleteFolderResponse": { + "type": "object" + }, + "workspaceDeleteWorkspaceResponse": { + "type": "object" + }, + "workspaceFolderInfo": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "alias": { + "type": "string" + } + } + }, + "workspaceFolderListGroupsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceGroup" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceFolderListPermissionsResponse": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceFolderPermission" + } + } + } + }, + "workspaceFolderListUsersResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceUser" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceFolderPermission": { + "type": "string", + "enum": [ + "Unknown", + "CreateFolder", + "UpdateFolder", + "GetFolder", + "DeleteFolder", + "AuthorizeFolder", + "CreateWorkspace", + "UpdateWorkspace", + "GetWorkspace", + "DeleteWorkspace", + "AuthorizeWorkspace", + "ResourceBindingWorkspace", + "UpdateResourceQuotaWorkspace" + ], + "default": "Unknown" + }, + "workspaceFolderTree": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "alias": { + "type": "string" + }, + "isWorkspace": { + "type": "boolean" + }, + "parentId": { + "type": "integer", + "format": "int32" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceFolderTree" + } + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceFolderPermission" + } + }, + "resourceKind": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceWorkspaceResourceKindEnum" + } + } + } + }, + "workspaceGetFolderResponse": { + "type": "object", + "properties": { + "folder": { + "$ref": "#/definitions/workspaceFolderInfo" + } + } + }, + "workspaceGetWorkspaceResponse": { + "type": "object", + "properties": { + "workspace": { + "$ref": "#/definitions/workspaceWorkspaceInfo" + } + } + }, + "workspaceGetWorkspaceSharedResourceQuotaResponse": { + "type": "object", + "properties": { + "setting": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "allocatable": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "used": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "workspaceGroup": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "userCount": { + "type": "integer", + "format": "int64" + }, + "description": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "canAuthorize": { + "type": "boolean" + }, + "authorized": { + "type": "boolean" + } + } + }, + "workspaceListAvailableExclusiveResourcesByWorkspaceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceResourceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListAvailableSharedResourcesByWorkspaceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceResourceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListExclusiveResourceTypesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "workspaceListExclusiveResourcesByWorkspaceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceWorkspacesResourceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListFolderTreeResponse": { + "type": "object", + "properties": { + "folderTree": { + "$ref": "#/definitions/workspaceFolderTree" + }, + "defaultId": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceListFoldersResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceFolderInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListMembersRolesByFolderResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceMemberRoleFolderInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListMembersRolesByWorkspaceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceMemberRoleWorkspaceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListResourceQuotaTypesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "workspaceListSharedResourceTypesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "workspaceListSharedResourcesByWorkspaceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceWorkspacesResourceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListWorkspacesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceWorkspaceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceMemberRoleFolderInfo": { + "type": "object", + "properties": { + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "folderId": { + "type": "integer", + "format": "int32" + }, + "memberId": { + "type": "string" + } + } + }, + "workspaceMemberRoleWorkspaceInfo": { + "type": "object", + "properties": { + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "workspaceId": { + "type": "integer", + "format": "int32" + }, + "memberId": { + "type": "string" + } + } + }, + "workspacePagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceReauthorizeResponse": { + "type": "object" + }, + "workspaceResourceInfo": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "gproduct": { + "type": "string" + }, + "resourceScope": { + "type": "string" + }, + "bound": { + "type": "boolean" + }, + "clusterStatus": { + "$ref": "#/definitions/workspaceClusterStatus" + } + } + }, + "workspaceSetQuotaHardForWorkspaceSharedResourceRequest": { + "type": "object", + "properties": { + "workspaceResourceId": { + "type": "integer", + "format": "int32" + }, + "quotaHard": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "workspaceSetQuotaHardForWorkspaceSharedResourceResponse": { + "type": "object" + }, + "workspaceUnbindResourceFromWorkspaceResponse": { + "type": "object" + }, + "workspaceUpdateFolderResponse": { + "type": "object" + }, + "workspaceUpdateQuotaCheckRequest": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "gproduct": { + "type": "string" + }, + "resourceScope": { + "type": "string", + "title": "cluster 资源 resource_scope 为空" + }, + "workspaceId": { + "type": "integer", + "format": "int32" + }, + "quotaHard": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "workspaceUpdateQuotaCheckResponse": { + "type": "object", + "properties": { + "passed": { + "type": "boolean" + }, + "reason": { + "type": "string" + } + } + }, + "workspaceUser": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "description": { + "type": "string" + }, + "firstname": { + "type": "string" + }, + "lastname": { + "type": "string" + }, + "source": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "canAuthorize": { + "type": "boolean" + }, + "authorized": { + "type": "boolean" + } + } + }, + "workspaceWorkspaceInfo": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "alias": { + "type": "string" + } + } + }, + "workspaceWorkspaceResourceKindEnum": { + "type": "string", + "enum": [ + "resource_group", + "shared_resource", + "registry" + ], + "default": "resource_group" + }, + "workspaceWorkspacesResourceInfo": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceScope": { + "type": "string" + }, + "gproduct": { + "type": "string" + }, + "workspaceId": { + "type": "integer", + "format": "int32" + }, + "workspaceResourceId": { + "type": "integer", + "format": "int32" + }, + "module": { + "type": "string" + }, + "clusterStatus": { + "$ref": "#/definitions/workspaceClusterStatus" + } + } + } + } +} diff --git a/docs/openapi/ghippo/v0.16.0.md b/docs/openapi/ghippo/v0.16.0.md new file mode 100644 index 00000000..b53803c4 --- /dev/null +++ b/docs/openapi/ghippo/v0.16.0.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/ghippo/v0.16.1.json b/docs/openapi/ghippo/v0.16.1.json new file mode 100644 index 00000000..de1b5ec9 --- /dev/null +++ b/docs/openapi/ghippo/v0.16.1.json @@ -0,0 +1,11046 @@ +{ + "swagger": "2.0", + "info": { + "title": "全局管理", + "version": "v0.16.1" + }, + "tags": [ + { + "name": "About" + }, + { + "name": "Audit" + }, + { + "name": "BatchAudits" + }, + { + "name": "Client" + }, + { + "name": "Account" + }, + { + "name": "GProducts" + }, + { + "name": "GProductLicenses" + }, + { + "name": "Group" + }, + { + "name": "IDP" + }, + { + "name": "Ldap" + }, + { + "name": "Login" + }, + { + "name": "LoginPage" + }, + { + "name": "Message" + }, + { + "name": "OIDC" + }, + { + "name": "Openapi" + }, + { + "name": "ProductNavigator" + }, + { + "name": "Publish" + }, + { + "name": "RecordFiling" + }, + { + "name": "Role" + }, + { + "name": "SecurityPolicy" + }, + { + "name": "SmtpSetting" + }, + { + "name": "Theme" + }, + { + "name": "TopNavigator" + }, + { + "name": "Users" + }, + { + "name": "Workspace" + }, + { + "name": "AuditV1alpha2" + }, + { + "name": "AuditV1alpha3" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/ghippo.io/v1alpha1/.well-known/openid-configuration": { + "get": { + "operationId": "OIDC_WellKnown", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcWellKnownResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "OIDC" + ] + } + }, + "/apis/ghippo.io/v1alpha1/about/developers": { + "get": { + "operationId": "About_ListDevelopers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/aboutListDevelopersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "About" + ] + } + }, + "/apis/ghippo.io/v1alpha1/about/opensources": { + "get": { + "operationId": "About_ListOpenSources", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/aboutListOpenSourcesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "description": "page: 当前页码,默认值为1", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "每页数量,默认为 10", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "About" + ] + } + }, + "/apis/ghippo.io/v1alpha1/about/versions": { + "get": { + "operationId": "About_ListGProductVersions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/aboutListGProductVersionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "About" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits": { + "get": { + "operationId": "Audit_ListAudit", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditListAuditResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/batch": { + "post": { + "operationId": "BatchAudits_BatchInsertAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/batchauditBatchInsertAuditsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/batchauditBatchInsertAuditsRequest" + } + } + ], + "tags": [ + "BatchAudits" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/clear": { + "get": { + "operationId": "Audit_GetAutoClearAuditTime", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditGetAutoClearAuditTimeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/external": { + "get": { + "summary": "来自外部传递进来的审计日志,用于不经过apiserver的请求,例如直接请求keycloak的请求,由前端埋点调用", + "operationId": "Audit_ExternalAudit", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditExternalAuditResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "externalType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "loginFailed", + "forgetPassword", + "resetPassword" + ], + "default": "loginFailed" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "code", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/limit-range": { + "get": { + "operationId": "Audit_GetLimitRangeTime", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditGetLimitRangeTimeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/reports/resources": { + "get": { + "operationId": "Audit_GetAuditResourceReport", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditGetAuditResourceReportResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/reports/users": { + "get": { + "operationId": "Audit_GetAuditUserReport", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditGetAuditUserReportResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/audits/{id}": { + "get": { + "operationId": "Audit_GetAudit", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditGetAuditResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Audit" + ] + } + }, + "/apis/ghippo.io/v1alpha1/auth-token": { + "get": { + "operationId": "Openapi_AuthToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditAuthTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Openapi" + ] + } + }, + "/apis/ghippo.io/v1alpha1/certs": { + "get": { + "operationId": "Openapi_Certs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditCertsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Openapi" + ] + } + }, + "/apis/ghippo.io/v1alpha1/clients": { + "get": { + "operationId": "Client_ListClients", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clientListClientsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "clientId", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Client" + ] + }, + "post": { + "operationId": "Client_CreateClient", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clientCreateClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/clientCreateClientRequest" + } + } + ], + "tags": [ + "Client" + ] + } + }, + "/apis/ghippo.io/v1alpha1/clients/{id}": { + "get": { + "operationId": "Client_GetClient", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clientGetClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Client" + ] + }, + "delete": { + "operationId": "Client_DeleteClient", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clientDeleteClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Client" + ] + }, + "put": { + "operationId": "Client_UpdateClient", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clientUpdateClientResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "baseUrl": { + "type": "string", + "title": "repeated string redirect_uris = 4 [(validate.rules).repeated.min_items = 1];" + } + } + } + } + ], + "tags": [ + "Client" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user": { + "get": { + "operationId": "Account_GetUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserGetUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/accesstoken": { + "post": { + "operationId": "Account_CreateAccessToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserCreateAccessTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/currentuserCreateAccessTokenRequest" + } + } + ], + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/accesstokens": { + "get": { + "operationId": "Account_ListAccessTokens", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserListAccessTokensResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/accesstokens/{id}": { + "delete": { + "operationId": "Account_DeleteAccessToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserDeleteAccessTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/email": { + "put": { + "operationId": "Account_UpdateEmail", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserUpdateEmailResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/currentuserUpdateEmailRequest" + } + } + ], + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/global-permissions": { + "get": { + "operationId": "Account_GetGlobalPermissions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserGetGlobalPermissionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/language": { + "put": { + "operationId": "Account_UpdateLanguage", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserUpdateLanguageResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/currentuserUpdateLanguageRequest" + } + } + ], + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/current-user/password": { + "put": { + "operationId": "Account_UpdatePassword", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/currentuserUpdatePasswordResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/currentuserUpdatePasswordRequest" + } + } + ], + "tags": [ + "Account" + ] + } + }, + "/apis/ghippo.io/v1alpha1/exclusiveresource-types": { + "get": { + "operationId": "Workspace_ListExclusiveResourceTypes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListExclusiveResourceTypesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folderrolenames": { + "get": { + "operationId": "Role_ListFolderRoleNames", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListFolderRoleNamesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folderroles": { + "get": { + "summary": "to be deprecated after several months", + "operationId": "Role_ListFolderRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListFolderRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folderroles/{name}/members-folders": { + "get": { + "operationId": "Role_ListMembersFoldersByFolderRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListMembersFoldersByFolderRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders": { + "get": { + "operationId": "Workspace_ListFolders", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListFoldersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + }, + "post": { + "operationId": "Workspace_CreateFolder", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceCreateFolderResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/workspaceCreateFolderRequest" + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders-tree": { + "get": { + "operationId": "Workspace_ListFolderTree", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListFolderTreeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}": { + "get": { + "operationId": "Workspace_GetFolder", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceGetFolderResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + }, + "delete": { + "summary": "TODO: sub folder删不删?", + "operationId": "Workspace_DeleteFolder", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceDeleteFolderResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + }, + "put": { + "operationId": "Workspace_UpdateFolder", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceUpdateFolderResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "title": "string name = 1 [(validate.rules).string.min_len = 1];" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/authorize": { + "post": { + "operationId": "Workspace_Authorize", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceAuthorizeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "roleName": { + "type": "string" + }, + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "memberId": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/deauthorize": { + "put": { + "operationId": "Workspace_Deauthorize", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceDeauthorizeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "roleName": { + "type": "string" + }, + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "memberId": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/groups": { + "get": { + "operationId": "Workspace_FolderListGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceFolderListGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/members-roles": { + "get": { + "operationId": "Workspace_ListMembersRolesByFolder", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListMembersRolesByFolderResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "memberName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "memberType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "roleName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/permissions": { + "get": { + "operationId": "Workspace_FolderListPermissions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceFolderListPermissionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/reauthorize": { + "put": { + "operationId": "Workspace_Reauthorize", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceReauthorizeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "oldRoleName": { + "type": "string" + }, + "newRoleName": { + "type": "string" + }, + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "memberId": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/folders/{folderId}/users": { + "get": { + "operationId": "Workspace_FolderListUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceFolderListUsersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "folderId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "pageSize", + "description": "每页条数", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "当前页", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/globalrole/{name}": { + "get": { + "summary": "to be deprecated after several months", + "operationId": "Role_GetGlobalRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleGetGlobalRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/globalroles": { + "get": { + "summary": "to be deprecated after several months", + "operationId": "Role_ListGlobalRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListGlobalRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/globalroles/{name}/subjects": { + "get": { + "summary": "to be deprecated after several months", + "operationId": "Role_ListGlobalRoleSubjects", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListGlobalRoleSubjectsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproduct-licenses": { + "get": { + "operationId": "GProductLicenses_ListGProductLicenses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseListGProductLicensesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "GProductLicenses" + ] + }, + "put": { + "operationId": "GProductLicenses_UpdateGProductLicenses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseUpdateGProductLicensesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/gproductlicenseUpdateGProductLicensesRequest" + } + } + ], + "tags": [ + "GProductLicenses" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproduct-licenses/esn": { + "get": { + "operationId": "GProductLicenses_GetGProductLicensesESN", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseGetGProductLicensesESNResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "GProductLicenses" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproduct-licenses/over-quota": { + "get": { + "operationId": "GProductLicenses_GetGProductLicensesOverQuota", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseGetGProductLicensesOverQuotaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "GProductLicenses" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproduct-licenses/yaml": { + "get": { + "operationId": "GProductLicenses_GetGProductLicensesYaml", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseGetGProductLicenseYamlResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "GProductLicenses" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproduct-licenses/{id}": { + "get": { + "operationId": "GProductLicenses_GetGProductLicenses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseGetGProductLicensesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "GProductLicenses" + ] + }, + "delete": { + "operationId": "GProductLicenses_DeleteGProductLicenses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductlicenseDeleteProductLicensesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "GProductLicenses" + ] + } + }, + "/apis/ghippo.io/v1alpha1/gproducts": { + "get": { + "operationId": "GProducts_ListGProducts", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gproductListGProductsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "GProducts" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups": { + "get": { + "operationId": "Group_ListGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupListGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Group" + ] + }, + "post": { + "operationId": "Group_CreateGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupCreateGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/groupCreateGroupRequest" + } + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups/{id}": { + "get": { + "operationId": "Group_GetGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupGetGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Group" + ] + }, + "delete": { + "operationId": "Group_DeleteGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupDeleteGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Group" + ] + }, + "put": { + "operationId": "Group_UpdateGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupUpdateGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups/{id}/members": { + "get": { + "operationId": "Group_GroupMembers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupGroupMembersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups/{id}/members/{userId}": { + "delete": { + "operationId": "Group_DeleteUserFromGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupDeleteUserFromGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "userId", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Group" + ] + }, + "post": { + "operationId": "Group_AddUserToGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupAddUserToGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "userId", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups/{id}/roles": { + "get": { + "operationId": "Group_ListGroupRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupListGroupRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "role type", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "authorized", + "description": "是否授权", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Group" + ] + }, + "put": { + "operationId": "Group_UpdateGroupRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupUpdateGroupRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "addRoles": { + "type": "array", + "items": { + "type": "string" + } + }, + "removeRoles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/groups/{id}/subjects": { + "get": { + "operationId": "Group_ListGroupSubjects", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/groupListGroupSubjectResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Group" + ] + } + }, + "/apis/ghippo.io/v1alpha1/idp": { + "get": { + "operationId": "IDP_GetIDP", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpGetIDPResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "IDP" + ] + }, + "delete": { + "operationId": "IDP_DeleteIDP", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpDeleteIDPResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "IDP" + ] + }, + "post": { + "operationId": "IDP_CreateIDP", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpCreateIDPResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/idpCreateIDPRequest" + } + } + ], + "tags": [ + "IDP" + ] + }, + "put": { + "operationId": "IDP_UpdateIDP", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpUpdateIDPResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/idpUpdateIDPRequest" + } + } + ], + "tags": [ + "IDP" + ] + } + }, + "/apis/ghippo.io/v1alpha1/idp/redirect-url": { + "get": { + "operationId": "IDP_GetRedirectUrl", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpGetRedirectUrlResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "IDP" + ] + } + }, + "/apis/ghippo.io/v1alpha1/idp/wellknown-url": { + "get": { + "operationId": "IDP_GetWellKnownUrl", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/idpGetWellKnownUrlResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "IDP" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap": { + "get": { + "operationId": "Ldap_GetLdap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapGetLdapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Ldap" + ] + }, + "post": { + "operationId": "Ldap_CreateLdap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapCreateLdapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ldapCreateLdapRequest" + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap/{id}": { + "delete": { + "operationId": "Ldap_DeleteLdap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapDeleteLdapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Ldap" + ] + }, + "put": { + "operationId": "Ldap_UpdateLdap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapUpdateLdapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "vendor": { + "type": "string", + "title": "LDAP vendor (provider), only is other" + }, + "startTls": { + "type": "string", + "description": "Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling." + }, + "ldapProtocol": { + "type": "string" + }, + "ldapHost": { + "type": "string" + }, + "usersDn": { + "type": "string", + "title": "Full DN of LDAP tree where your users are. This DN is the parent of LDAP users.\nIt could be for example 'ou=users,dc=example,dc=com' assuming that your typical user will have DN like 'uid=john,ou=users,dc=example,dc=com'" + }, + "bindDn": { + "type": "string", + "title": "DN of LDAP admin, which will be used by Keycloak to access LDAP server" + }, + "bindCredential": { + "type": "string", + "description": "Password of LDAP admin." + }, + "userObjectClasses": { + "type": "string", + "description": "All values of LDAP objectClass attribute for users in LDAP divided by comma.\nFor example: 'inetOrgPerson, organizationalPerson' .\nNewly created Keycloak users will be written to LDAP with all those object classes and existing LDAP user records are found just if they contain all those object classes." + }, + "usernameLdapAttribute": { + "type": "string", + "title": "Name of LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it can be 'uid'.\nFor Active directory it can be 'sAMAccountName' or 'cn'.\nThe attribute should be filled for all LDAP user records you want to import from LDAP to Keycloak" + }, + "fullSyncPeriod": { + "type": "string", + "title": "Period for full synchronization in seconds: -1 手动同步" + }, + "rdnLdapAttribute": { + "type": "string", + "description": "Name of the LDAP attribute, which is used as RDN (top attribute) of typical user DN.\nUsually it's the same as the Username LDAP attribute, however it is not required.\nFor example for Active directory, it is common to use 'cn' as RDN attribute when username attribute might be 'sAMAccountName'." + }, + "uuidLdapAttribute": { + "type": "string", + "description": "Name of the LDAP attribute, which is used as a unique object identifier (UUID) for objects in LDAP.\nFor many LDAP server vendors, it is 'entryUUID'; however some are different.\nFor example, for Active directory it should be 'objectGUID'.\nIf your LDAP server does not support the notion of UUID, you can use any other attribute that is supposed to be unique among LDAP users in tree.\nFor example 'uid' or 'entryDN'." + }, + "editMode": { + "type": "string", + "description": "READ_ONLY is a read-only LDAP store.\nWRITABLE means data will be synced back to LDAP on demand." + }, + "readTimeout": { + "type": "string", + "description": "LDAP read timeout in milliseconds. This timeout applies for LDAP read operations." + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap/{id}/group": { + "get": { + "operationId": "Ldap_GetLdapGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapGetLdapGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Ldap" + ] + }, + "post": { + "operationId": "Ldap_CreateLdapGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapCreateLdapGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "groupDn": { + "type": "string" + }, + "groupObjectClasses": { + "type": "string" + }, + "groupNameLdapAttribute": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap/{id}/sync": { + "get": { + "operationId": "Ldap_SyncUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapSyncUsersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap/{ldapId}/group/{id}": { + "delete": { + "operationId": "Ldap_DeleteLdapGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapDeleteLdapGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "ldapId", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Ldap" + ] + }, + "put": { + "operationId": "Ldap_UpdateLdapGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapUpdateLdapGroupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "ldapId", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "groupDn": { + "type": "string" + }, + "groupObjectClasses": { + "type": "string" + }, + "groupNameLdapAttribute": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/ldap/{ldapId}/group/{id}/sync": { + "get": { + "operationId": "Ldap_SyncLdapGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapSyncLdapGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "ldapId", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/login": { + "get": { + "operationId": "Login_RedirectLogin", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginLoginGetResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "callbackUrl", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Login" + ] + }, + "post": { + "operationId": "Login_OIDCLogin", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginLoginPostResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/loginLoginPostRequest" + } + } + ], + "tags": [ + "Login" + ] + } + }, + "/apis/ghippo.io/v1alpha1/login-page/info": { + "get": { + "operationId": "LoginPage_GetInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginpageGetLoginPageInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "LoginPage" + ] + }, + "put": { + "operationId": "LoginPage_UpdateInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginpageUpdateLoginPageInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/loginpageUpdateLoginPageInfoRequest" + } + } + ], + "tags": [ + "LoginPage" + ] + } + }, + "/apis/ghippo.io/v1alpha1/login-page/reset": { + "post": { + "operationId": "LoginPage_ResetInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginpageResetLoginPageInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "LoginPage" + ] + } + }, + "/apis/ghippo.io/v1alpha1/login-page/version": { + "get": { + "operationId": "LoginPage_GetVersion", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginpageGetLoginPageVersionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "LoginPage" + ] + } + }, + "/apis/ghippo.io/v1alpha1/logout": { + "delete": { + "operationId": "Login_OIDCLogout", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginLogoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Login" + ] + } + }, + "/apis/ghippo.io/v1alpha1/messages": { + "get": { + "operationId": "Message_ListMessages", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageListMessagesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "unreadCount", + "description": "是否只返回统计未读数量", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "read", + "description": "是否只返回已读或未读,传\"read\"或\"unread\"来区分,不传返回已读和未读的消息", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "read", + "unread" + ], + "default": "all" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/messages/count": { + "get": { + "operationId": "Message_GetMessagesCount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageGetMessagesCountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/messages/delete": { + "post": { + "operationId": "Message_DeleteMessages", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageDeleteMessagesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/messageDeleteMessagesRequest" + } + } + ], + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/messages/toggle-unread": { + "get": { + "operationId": "Message_ToggleUnreadMessage", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageToggleUnreadMessageResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "next", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/messages/{id}": { + "get": { + "operationId": "Message_GetMessage", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageGetMessageResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/oidc/ghippo-client-config": { + "get": { + "operationId": "OIDC_GhippoClientConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcGhippoClientConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "OIDC" + ] + } + }, + "/apis/ghippo.io/v1alpha1/oidc/logout": { + "get": { + "operationId": "OIDC_RedirectFrontendLogout", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcRedirectFrontendLogoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "OIDC" + ] + }, + "delete": { + "operationId": "OIDC_OIDCLogout", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcOIDCLogoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "OIDC" + ] + } + }, + "/apis/ghippo.io/v1alpha1/oidc/token": { + "post": { + "operationId": "OIDC_OIDCToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcOIDCTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/oidcOIDCTokenRequest" + } + } + ], + "tags": [ + "OIDC" + ] + } + }, + "/apis/ghippo.io/v1alpha1/oidc/userinfo": { + "get": { + "operationId": "OIDC_OIDCUserInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/oidcOIDCUserInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "OIDC" + ] + } + }, + "/apis/ghippo.io/v1alpha1/permissions": { + "get": { + "operationId": "Role_ListAllPermissions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListAllPermissionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/platformrolenames": { + "get": { + "operationId": "Role_ListPlatformRoleNames", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListPlatformRoleNamesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/platformroles/{name}/members": { + "get": { + "operationId": "Role_ListMembersByPlatformRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListMembersByPlatformRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/product-nav/info": { + "get": { + "operationId": "ProductNavigator_Info", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/productnavProductNavResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "ProductNavigator" + ] + } + }, + "/apis/ghippo.io/v1alpha1/publish/messages": { + "post": { + "operationId": "Publish_PublishMessage", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/publishPublishMessageResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/publishPublishMessageRequest" + } + } + ], + "tags": [ + "Publish" + ] + } + }, + "/apis/ghippo.io/v1alpha1/read-messages": { + "post": { + "operationId": "Message_SetReadMessages", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/messageSetReadMessagesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/messageSetReadMessagesRequest" + } + } + ], + "tags": [ + "Message" + ] + } + }, + "/apis/ghippo.io/v1alpha1/record_filing": { + "get": { + "operationId": "RecordFiling_GetRecordFiling", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/recordFilingGetRecordFilingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "RecordFiling" + ] + }, + "put": { + "operationId": "RecordFiling_UpdateRecordFiling", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/recordFilingUpdateRecordFilingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/recordFilingUpdateRecordFilingRequest" + } + } + ], + "tags": [ + "RecordFiling" + ] + } + }, + "/apis/ghippo.io/v1alpha1/record_filing/reset": { + "post": { + "operationId": "RecordFiling_ResetRecordFiling", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/recordFilingResetRecordFilingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "RecordFiling" + ] + } + }, + "/apis/ghippo.io/v1alpha1/refresh-token": { + "post": { + "operationId": "Login_RefreshToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/loginRefreshTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/loginRefreshTokenRequest" + } + } + ], + "tags": [ + "Login" + ] + } + }, + "/apis/ghippo.io/v1alpha1/resourcequota-types": { + "get": { + "operationId": "Workspace_ListResourceQuotaTypes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListResourceQuotaTypesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/roles": { + "get": { + "operationId": "Role_ListRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "pageSize", + "description": "每页条数", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "当前页", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "roleType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "query_all_role_type", + "query_system", + "query_custom" + ], + "default": "query_all_role_type" + }, + { + "name": "scope", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "query_all_auth_scope", + "query_platform", + "query_folder", + "query_workspace" + ], + "default": "query_all_auth_scope" + } + ], + "tags": [ + "Role" + ] + }, + "post": { + "operationId": "Role_CreateRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleCreateRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/roleCreateRoleRequest" + } + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/roles/check-role-name/{name}": { + "get": { + "operationId": "Role_CheckRoleName", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleCheckRoleNameResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/roles/role-member-count/{name}": { + "get": { + "operationId": "Role_GetRoleMemberCount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleGetRoleMemberCountResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/roles/{name}": { + "get": { + "operationId": "Role_GetRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleGetRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Role" + ] + }, + "delete": { + "operationId": "Role_DeleteRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleDeleteRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Role" + ] + }, + "put": { + "operationId": "Role_UpdateRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleUpdateRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "title": "globalRoleType type = 2;" + }, + "perms": { + "type": "array", + "items": { + "$ref": "#/definitions/rolePermission" + }, + "title": "AuthScope scope = 3;" + } + } + } + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/securitypolicy/accountlockout": { + "get": { + "operationId": "SecurityPolicy_GetAccountLockoutPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicyGetAccountLockoutPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SecurityPolicy" + ] + }, + "put": { + "operationId": "SecurityPolicy_SetAccountLockoutPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicySetAccountLockoutPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/securitypolicySetAccountLockoutPolicyRequest" + } + } + ], + "tags": [ + "SecurityPolicy" + ] + } + }, + "/apis/ghippo.io/v1alpha1/securitypolicy/logout": { + "get": { + "operationId": "SecurityPolicy_GetLogoutPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicyGetLogoutPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SecurityPolicy" + ] + }, + "put": { + "operationId": "SecurityPolicy_SetLogoutPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicySetLogoutPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/securitypolicySetLogoutPolicyRequest" + } + } + ], + "tags": [ + "SecurityPolicy" + ] + } + }, + "/apis/ghippo.io/v1alpha1/securitypolicy/password": { + "get": { + "operationId": "SecurityPolicy_GetPasswordPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicyGetPasswordPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SecurityPolicy" + ] + }, + "put": { + "operationId": "SecurityPolicy_SetPasswordPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicySetPasswordPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/securitypolicySetPasswordPolicyRequest" + } + } + ], + "tags": [ + "SecurityPolicy" + ] + } + }, + "/apis/ghippo.io/v1alpha1/securitypolicy/sessiontimeout": { + "get": { + "operationId": "SecurityPolicy_GetSessionTimeout", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicyGetSessionTimeoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SecurityPolicy" + ] + }, + "put": { + "operationId": "SecurityPolicy_SetSessionTimeout", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/securitypolicySetSessionTimeoutResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/securitypolicySetSessionTimeoutRequest" + } + } + ], + "tags": [ + "SecurityPolicy" + ] + } + }, + "/apis/ghippo.io/v1alpha1/sharedresource-types": { + "get": { + "operationId": "Workspace_ListSharedResourceTypes", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListSharedResourceTypesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/smtp-setting": { + "get": { + "operationId": "SmtpSetting_GetSmtpServer", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/smtpsettingGetSmtpServerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SmtpSetting" + ] + }, + "put": { + "operationId": "SmtpSetting_SetSmtpServer", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/smtpsettingSetSmtpServerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/smtpsettingSetSmtpServerRequest" + } + } + ], + "tags": [ + "SmtpSetting" + ] + } + }, + "/apis/ghippo.io/v1alpha1/smtp-setting/conn-test": { + "post": { + "operationId": "SmtpSetting_SmtpServerConnTest", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/smtpsettingSmtpConnTestResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/smtpsettingSmtpConnTestRequest" + } + } + ], + "tags": [ + "SmtpSetting" + ] + } + }, + "/apis/ghippo.io/v1alpha1/testLdapAuthentication": { + "post": { + "operationId": "Ldap_TestLdapAuthentication", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapTestLdapAuthenticationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ldapTestLdapAuthenticationRequest" + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/testLdapConnection": { + "post": { + "operationId": "Ldap_TestLdapConnection", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/ldapTestLdapConnectionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ldapTestLdapConnectionRequest" + } + } + ], + "tags": [ + "Ldap" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/login_page": { + "get": { + "operationId": "Theme_GetLoginThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeGetLoginThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + }, + "post": { + "operationId": "Theme_SetLoginThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeSetLoginThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/themeSetLoginThemeConfigRequest" + } + } + ], + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/login_page.css": { + "get": { + "operationId": "Theme_GetLoginThemeCSS", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apiHttpBody" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/login_page/reset": { + "post": { + "operationId": "Theme_ResetLoginThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeResetLoginThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/theme": { + "get": { + "operationId": "Theme_GetThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeGetThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + }, + "post": { + "operationId": "Theme_SetThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeSetThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/themeSetThemeConfigRequest" + } + } + ], + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/theme.css": { + "get": { + "operationId": "Theme_GetThemeCSS", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apiHttpBody" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/themes/theme/reset": { + "post": { + "operationId": "Theme_ResetThemeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/themeResetThemeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Theme" + ] + } + }, + "/apis/ghippo.io/v1alpha1/top-nav": { + "post": { + "operationId": "TopNavigator_SetTopNav", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/topnavSetTopNavResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/topnavSetTopNavRequest" + } + } + ], + "tags": [ + "TopNavigator" + ] + } + }, + "/apis/ghippo.io/v1alpha1/top-nav/info": { + "get": { + "operationId": "TopNavigator_Info", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/topnavTopNavResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "TopNavigator" + ] + } + }, + "/apis/ghippo.io/v1alpha1/top-nav/reset": { + "post": { + "operationId": "TopNavigator_ResetTopNav", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/topnavResetTopNavResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "TopNavigator" + ] + } + }, + "/apis/ghippo.io/v1alpha1/update-quota-check": { + "post": { + "operationId": "Workspace_UpdateQuotaCheck", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceUpdateQuotaCheckResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/workspaceUpdateQuotaCheckRequest" + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users": { + "get": { + "operationId": "Users_ListUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userListUsersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "pageSize", + "description": "每页条数", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "当前页", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Users" + ] + }, + "post": { + "operationId": "Users_CreateUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userCreateUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/userCreateUserRequest" + } + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/check/{username}": { + "get": { + "operationId": "Users_CheckUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userCheckUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "username", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}": { + "get": { + "operationId": "Users_GetUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userGetUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Users" + ] + }, + "delete": { + "operationId": "Users_DeleteUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userDeleteUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Users" + ] + }, + "put": { + "operationId": "Users_UpdateUser", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userUpdateUserResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "email": { + "type": "string" + }, + "description": { + "type": "string" + }, + "firstname": { + "type": "string" + }, + "lastname": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/accesstoken": { + "post": { + "operationId": "Users_CreateUserAccessToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userCreateUserAccessTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "expiredAt": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/accesstokens": { + "get": { + "operationId": "Users_ListUserAccessTokens", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userListUserAccessTokensResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/accesstokens/{aid}": { + "delete": { + "operationId": "Users_DeleteUserAccessToken", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userDeleteUserAccessTokenResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "aid", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/groups": { + "get": { + "operationId": "Users_ListUserGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userListUserGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/password": { + "put": { + "operationId": "Users_SetUserPassword", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userSetUserPasswordResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/roles": { + "get": { + "operationId": "Users_ListUserRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userListUserRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "description": "搜索关键字", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "role type", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "authorized", + "description": "是否授权", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Users" + ] + }, + "put": { + "operationId": "Users_UpdateUserRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userUpdateUserRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "addRoles": { + "type": "array", + "items": { + "type": "string" + } + }, + "removeRoles": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/users/{id}/subjects": { + "get": { + "operationId": "Users_ListUserSubjects", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/userListUserSubjectResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Users" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspace-sharedresource-quota": { + "get": { + "operationId": "Workspace_GetWorkspaceSharedResourceQuota", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceGetWorkspaceSharedResourceQuotaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "resourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "notFormatted", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspace-sharedresource-quota-hard": { + "put": { + "operationId": "Workspace_SetQuotaHardForWorkspaceSharedResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceSetQuotaHardForWorkspaceSharedResourceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/workspaceSetQuotaHardForWorkspaceSharedResourceRequest" + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspacerolenames": { + "get": { + "operationId": "Role_ListWorkspaceRoleNames", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListWorkspaceRoleNamesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaceroles": { + "get": { + "summary": "to be deprecated after several months", + "operationId": "Role_ListWorkspaceRoles", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListWorkspaceRolesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaceroles/{name}/members-workspaces": { + "get": { + "operationId": "Role_ListMembersWorkspacesByWorkspaceRole", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/roleListMembersWorkspacesByWorkspaceRoleResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "search", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Role" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces": { + "get": { + "operationId": "Workspace_ListWorkspaces", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListWorkspacesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + }, + "post": { + "operationId": "Workspace_CreateWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceCreateWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/workspaceCreateWorkspaceRequest" + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}": { + "get": { + "operationId": "Workspace_GetWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceGetWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + }, + "delete": { + "summary": "TODO: sub ws删不删?", + "operationId": "Workspace_DeleteWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceDeleteWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/available-exclusiveresources": { + "get": { + "operationId": "Workspace_ListAvailableExclusiveResourcesByWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListAvailableExclusiveResourcesByWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "resourceType", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/available-sharedresources": { + "get": { + "operationId": "Workspace_ListAvailableSharedResourcesByWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListAvailableSharedResourcesByWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "resourceType", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/bind-exclusiveresource": { + "post": { + "operationId": "Workspace_BindExclusiveResourceToWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceBindExclusiveResourceToWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceScope": { + "type": "string" + }, + "gproduct": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/bind-sharedresource": { + "post": { + "operationId": "Workspace_BindSharedResourceToWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceBindSharedResourceToWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceScope": { + "type": "string" + }, + "gproduct": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/bind-sharedresource-setquota": { + "post": { + "operationId": "Workspace_BindSharedResourceAndSetQuotaHardToWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceBindSharedResourceAndSetQuotaHardToWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "cluster 资源 resource_scope 为空\nstring resource_scope = 4 [(validate.rules).string.min_len = 1];", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "gproduct": { + "type": "string" + }, + "quotaHard": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/exclusiveresources": { + "get": { + "operationId": "Workspace_ListExclusiveResourcesByWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListExclusiveResourcesByWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "resourceType", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/members-roles": { + "get": { + "operationId": "Workspace_ListMembersRolesByWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListMembersRolesByWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "memberName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/sharedresources": { + "get": { + "operationId": "Workspace_ListSharedResourcesByWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceListSharedResourcesByWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "resourceName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha1/workspaces/{workspaceId}/unbind-resource": { + "put": { + "operationId": "Workspace_UnbindResourceFromWorkspace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/workspaceUnbindResourceFromWorkspaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceScope": { + "type": "string" + }, + "gproduct": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/ghippo.io/v1alpha2/audits/clear": { + "post": { + "operationId": "AuditV1alpha2_ClearAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv2ClearAuditsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv2ClearAuditsRequest" + } + } + ], + "tags": [ + "AuditV1alpha2" + ] + }, + "put": { + "operationId": "AuditV1alpha2_SetAutoClearAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv2SetAutoClearAuditsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv2SetAutoClearAuditsRequest" + } + } + ], + "tags": [ + "AuditV1alpha2" + ] + } + }, + "/apis/ghippo.io/v1alpha2/audits/export": { + "get": { + "operationId": "AuditV1alpha2_ExportAudit", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apiHttpBody" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AuditV1alpha2" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits": { + "get": { + "operationId": "AuditV1alpha3_ListAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3ListAuditsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "gproduct", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/clear": { + "post": { + "operationId": "AuditV1alpha3_ClearAuditsNow", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3ClearAuditsNowResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv3ClearAuditsNowRequest" + } + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/export": { + "get": { + "operationId": "AuditV1alpha3_ExportAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apiHttpBody" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "gproduct", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/kube": { + "get": { + "operationId": "AuditV1alpha3_ListKubeAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3ListKubeAuditsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "搜索偏移量", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "分页大小", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/kube/clear": { + "post": { + "operationId": "AuditV1alpha3_ClearKubeAuditsNow", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3ClearKubeAuditsNowResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv3ClearKubeAuditsNowRequest" + } + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/kube/export": { + "get": { + "operationId": "AuditV1alpha3_ExportKubeAudits", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apiHttpBody" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "start", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceType", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sourceName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterName", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + { + "name": "searchType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + { + "name": "searchUser", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/kube/{id}": { + "get": { + "operationId": "AuditV1alpha3_GetKubeAuditDetail", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3GetKubeAuditDetailResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/set-auto-clear": { + "put": { + "operationId": "AuditV1alpha3_SetAutoClearAuditSetting", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3SetAutoClearAuditSettingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv3SetAutoClearAuditSettingRequest" + } + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/set-auto-clear/kube": { + "put": { + "operationId": "AuditV1alpha3_SetAutoClearKubeAuditSetting", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3SetAutoClearKubeAuditSettingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/auditv3SetAutoClearKubeAuditSettingRequest" + } + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + }, + "/apis/ghippo.io/v1alpha3/audits/{id}": { + "get": { + "operationId": "AuditV1alpha3_GetAuditDetail", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/auditv3GetAuditDetailResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AuditV1alpha3" + ] + } + } + }, + "definitions": { + "aboutDeveloper": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "aboutGProductVersion": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "aboutListDevelopersResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/aboutDeveloper" + } + } + } + }, + "aboutListGProductVersionsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/aboutGProductVersion" + } + } + } + }, + "aboutListOpenSourcesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/aboutOpenSource" + } + }, + "pagination": { + "$ref": "#/definitions/aboutPagination" + } + } + }, + "aboutOpenSource": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "开源软件名称" + }, + "license": { + "type": "string", + "title": "开源协议" + } + } + }, + "aboutPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "apiHttpBody": { + "type": "object", + "properties": { + "contentType": { + "type": "string", + "description": "The HTTP Content-Type header value specifying the content type of the body." + }, + "data": { + "type": "string", + "format": "byte", + "description": "The HTTP request/response body as raw binary." + }, + "extensions": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + }, + "description": "Application specific response metadata. Must be set in the first response\nfor streaming APIs." + } + }, + "description": "Message that represents an arbitrary HTTP body. It should only be used for\npayload formats that can't be represented as JSON, such as raw binary or\nan HTML page.\n\n\nThis message can be used both in streaming and non-streaming API methods in\nthe request as well as the response.\n\nIt can be used as a top-level request field, which is convenient if one\nwants to extract parameters from either the URL or HTTP template into the\nrequest fields and also want access to the raw HTTP body.\n\nExample:\n\n message GetResourceRequest {\n // A unique request id.\n string request_id = 1;\n\n // The raw HTTP body is bound to this field.\n google.api.HttpBody http_body = 2;\n\n }\n\n service ResourceService {\n rpc GetResource(GetResourceRequest)\n returns (google.api.HttpBody);\n rpc UpdateResource(google.api.HttpBody)\n returns (google.protobuf.Empty);\n\n }\n\nExample with streaming methods:\n\n service CaldavService {\n rpc GetCalendar(stream google.api.HttpBody)\n returns (stream google.api.HttpBody);\n rpc UpdateCalendar(stream google.api.HttpBody)\n returns (stream google.api.HttpBody);\n\n }\n\nUse of this type only changes how the request and response bodies are\nhandled, all other features will continue to work unchanged." + }, + "auditAuditInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "auditName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/auditStatusType" + }, + "user": { + "type": "string" + }, + "client": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "createdAt": { + "type": "string" + } + } + }, + "auditAuthTokenResponse": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "auditCertsResponse": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "$ref": "#/definitions/auditKey" + } + } + } + }, + "auditExternalAuditResponse": { + "type": "object" + }, + "auditExternalType": { + "type": "string", + "enum": [ + "loginFailed", + "forgetPassword", + "resetPassword" + ], + "default": "loginFailed" + }, + "auditGetAuditResourceReportResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/auditResourceReport" + } + } + } + }, + "auditGetAuditResponse": { + "type": "object", + "properties": { + "audit": { + "type": "string" + } + } + }, + "auditGetAuditUserReportResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/auditUserReport" + } + } + } + }, + "auditGetAutoClearAuditTimeResponse": { + "type": "object", + "properties": { + "kubeDays": { + "type": "integer", + "format": "int32" + }, + "ghippoDays": { + "type": "integer", + "format": "int32" + } + } + }, + "auditGetLimitRangeTimeResponse": { + "type": "object", + "properties": { + "day": { + "type": "integer", + "format": "int32" + } + } + }, + "auditKey": { + "type": "object", + "properties": { + "kid": { + "type": "string" + }, + "kty": { + "type": "string" + }, + "e": { + "type": "string" + }, + "n": { + "type": "string" + }, + "alg": { + "type": "string" + }, + "use": { + "type": "string" + } + } + }, + "auditListAuditResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/auditAuditInfo" + } + }, + "pagination": { + "$ref": "#/definitions/auditPagination" + } + } + }, + "auditPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "auditResourceReport": { + "type": "object", + "properties": { + "ResourceType": { + "type": "string" + }, + "EventName": { + "type": "string" + }, + "Count": { + "type": "integer", + "format": "int32" + } + } + }, + "auditSearchType": { + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + "auditStatusType": { + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + "auditUserReport": { + "type": "object", + "properties": { + "UserName": { + "type": "string" + }, + "TotalCount": { + "type": "integer", + "format": "int32" + }, + "SuccessCount": { + "type": "integer", + "format": "int32" + }, + "FailedCount": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv2ClearAuditsRequest": { + "type": "object", + "properties": { + "isKube": { + "type": "boolean" + }, + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv2ClearAuditsResponse": { + "type": "object" + }, + "auditv2SearchType": { + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + "auditv2SetAutoClearAuditsRequest": { + "type": "object", + "properties": { + "isKube": { + "type": "boolean" + }, + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv2SetAutoClearAuditsResponse": { + "type": "object" + }, + "auditv2StatusType": { + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + "auditv3AuditInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "auditName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "gproduct": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/auditv3StatusType" + }, + "user": { + "type": "string" + }, + "client": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "createdAt": { + "type": "string" + } + } + }, + "auditv3ClearAuditsNowRequest": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv3ClearAuditsNowResponse": { + "type": "object" + }, + "auditv3ClearKubeAuditsNowRequest": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv3ClearKubeAuditsNowResponse": { + "type": "object" + }, + "auditv3GetAuditDetailResponse": { + "type": "object", + "properties": { + "audit": { + "type": "string" + } + } + }, + "auditv3GetKubeAuditDetailResponse": { + "type": "object", + "properties": { + "audit": { + "type": "string" + } + } + }, + "auditv3KubeAuditInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "auditName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/auditv3StatusType" + }, + "user": { + "type": "string" + }, + "client": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "createdAt": { + "type": "string" + } + } + }, + "auditv3ListAuditsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/auditv3AuditInfo" + } + }, + "pagination": { + "$ref": "#/definitions/auditv3Pagination" + } + } + }, + "auditv3ListKubeAuditsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/auditv3KubeAuditInfo" + } + }, + "pagination": { + "$ref": "#/definitions/auditv3Pagination" + } + } + }, + "auditv3Pagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv3SearchType": { + "type": "string", + "enum": [ + "fuzzy", + "exact" + ], + "default": "fuzzy" + }, + "auditv3SetAutoClearAuditSettingRequest": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv3SetAutoClearAuditSettingResponse": { + "type": "object" + }, + "auditv3SetAutoClearKubeAuditSettingRequest": { + "type": "object", + "properties": { + "days": { + "type": "integer", + "format": "int32" + } + } + }, + "auditv3SetAutoClearKubeAuditSettingResponse": { + "type": "object" + }, + "auditv3StatusType": { + "type": "string", + "enum": [ + "all", + "succeeded", + "failed" + ], + "default": "all" + }, + "batchauditBatchInsertAuditsRequest": { + "type": "object", + "properties": { + "audits": { + "type": "string" + } + }, + "title": "@openapiv2-ignore" + }, + "batchauditBatchInsertAuditsResponse": { + "type": "object", + "title": "@openapiv2-ignore" + }, + "clientClientInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "secret": { + "type": "string", + "title": "bool enabled = 4;\nrepeated string redirect_uris = 5;" + }, + "baseUrl": { + "type": "string" + } + } + }, + "clientCreateClientRequest": { + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "baseUrl": { + "type": "string" + } + } + }, + "clientCreateClientResponse": { + "type": "object" + }, + "clientDeleteClientResponse": { + "type": "object" + }, + "clientGetClientResponse": { + "type": "object", + "properties": { + "client": { + "$ref": "#/definitions/clientClientInfo" + } + } + }, + "clientListClientsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/clientClientInfo" + } + } + } + }, + "clientUpdateClientResponse": { + "type": "object" + }, + "currentuserAccessToken": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "expiredAt": { + "type": "string" + } + } + }, + "currentuserCreateAccessTokenRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "expiredAt": { + "type": "string" + } + } + }, + "currentuserCreateAccessTokenResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "token": { + "type": "string" + } + } + }, + "currentuserDeleteAccessTokenResponse": { + "type": "object" + }, + "currentuserGetGlobalPermissionsResponse": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "items": { + "$ref": "#/definitions/currentuserGlobalPermission" + } + } + } + }, + "currentuserGetUserResponse": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "locale": { + "type": "string" + } + } + }, + "currentuserGlobalPermission": { + "type": "string", + "enum": [ + "Unknown", + "ListUser", + "CreateUser", + "UpdateUser", + "DeleteUser", + "AuthorizeUser", + "ListGroup", + "CreateGroup", + "UpdateGroup", + "DeleteGroup", + "UpdateGroupUser", + "AuthorizeGroup", + "GetRole", + "GetIdp", + "CreateIdp", + "UpdateIdp", + "DeleteIdp", + "GetAudit", + "DeleteAudit", + "GetSecurityPolicy", + "UpdateSecurityPolicy", + "GetSMTP", + "UpdateSMTP", + "GetAppearance", + "UpdateAppearance", + "GetLicense", + "UpdateLicense", + "DeleteLicense", + "GetWorkspace", + "GetAboutPlatform", + "DeleteRole", + "UpdateRole", + "CreateRole", + "AccountingAndBilling", + "ReportManagement" + ], + "default": "Unknown" + }, + "currentuserListAccessTokensResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/currentuserAccessToken" + } + } + } + }, + "currentuserUpdateEmailRequest": { + "type": "object", + "properties": { + "email": { + "type": "string" + } + } + }, + "currentuserUpdateEmailResponse": { + "type": "object" + }, + "currentuserUpdateLanguageRequest": { + "type": "object", + "properties": { + "locale": { + "type": "string" + } + } + }, + "currentuserUpdateLanguageResponse": { + "type": "object" + }, + "currentuserUpdatePasswordRequest": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + } + }, + "currentuserUpdatePasswordResponse": { + "type": "object" + }, + "gproductGProduct": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "uiAssetsUrl": { + "type": "string" + }, + "needImportLicense": { + "type": "boolean" + } + } + }, + "gproductListGProductsResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/gproductGProduct" + } + } + } + }, + "gproductlicenseDeleteProductLicensesResponse": { + "type": "object" + }, + "gproductlicenseGProductLicense": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "module": { + "type": "string" + }, + "level": { + "type": "string" + }, + "status": { + "type": "string" + }, + "expiredAt": { + "type": "string" + } + } + }, + "gproductlicenseGProductLicenseInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "module": { + "type": "string" + }, + "licenseKey": { + "type": "string" + }, + "licenseLevel": { + "type": "string" + }, + "physicalUsedCpu": { + "type": "string" + }, + "physicalMaxCpu": { + "type": "string" + }, + "virtualUsedCpu": { + "type": "string" + }, + "virtualMaxCpu": { + "type": "string" + }, + "expiredAt": { + "type": "string" + }, + "usedNode": { + "type": "string" + }, + "maxNode": { + "type": "string" + } + } + }, + "gproductlicenseGetGProductLicenseYamlResponse": { + "type": "object", + "properties": { + "yaml": { + "type": "string" + } + } + }, + "gproductlicenseGetGProductLicensesESNResponse": { + "type": "object", + "properties": { + "esn": { + "type": "string" + } + } + }, + "gproductlicenseGetGProductLicensesOverQuotaResponse": { + "type": "object", + "properties": { + "licenses": { + "type": "array", + "items": { + "$ref": "#/definitions/gproductlicenseGProductLicense" + } + } + } + }, + "gproductlicenseGetGProductLicensesResponse": { + "type": "object", + "properties": { + "license": { + "$ref": "#/definitions/gproductlicenseGProductLicenseInfo" + } + } + }, + "gproductlicenseListGProductLicensesResponse": { + "type": "object", + "properties": { + "licenses": { + "type": "array", + "items": { + "$ref": "#/definitions/gproductlicenseGProductLicense" + } + } + } + }, + "gproductlicenseUpdateGProductLicensesRequest": { + "type": "object", + "properties": { + "yaml": { + "type": "string" + } + } + }, + "gproductlicenseUpdateGProductLicensesResponse": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "licenses": { + "type": "array", + "items": { + "$ref": "#/definitions/gproductlicenseGProductLicense" + } + } + } + }, + "groupAddUserToGroupResponse": { + "type": "object" + }, + "groupCreateGroupRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "groupCreateGroupResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "groupDeleteGroupResponse": { + "type": "object" + }, + "groupDeleteUserFromGroupResponse": { + "type": "object" + }, + "groupGetGroupResponse": { + "type": "object", + "properties": { + "group": { + "$ref": "#/definitions/groupGroupInfo" + } + } + }, + "groupGroupInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "userCount": { + "type": "integer", + "format": "int64" + }, + "description": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "canAuthorize": { + "type": "boolean" + } + } + }, + "groupGroupMembersResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/groupPagination" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/groupUser" + } + } + } + }, + "groupGroupSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "type": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "subjectName": { + "type": "string" + } + } + }, + "groupListGroupRolesResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/groupPagination" + }, + "authorizedCount": { + "type": "integer", + "format": "int64" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/groupRoleInfo" + } + } + } + }, + "groupListGroupSubjectResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/groupPagination" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/groupGroupSubject" + } + } + } + }, + "groupListGroupsResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/groupPagination" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/groupGroupInfo" + } + } + } + }, + "groupPagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "total": { + "type": "integer", + "format": "int32" + } + } + }, + "groupRoleInfo": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "authorized": { + "type": "boolean" + } + } + }, + "groupUpdateGroupResponse": { + "type": "object" + }, + "groupUpdateGroupRolesResponse": { + "type": "object" + }, + "groupUser": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "description": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + }, + "idpClientAuthentications": { + "type": "string", + "enum": [ + "client_secret_post", + "client_secret_basic", + "client_secret_jwt", + "private_key_jwt" + ], + "default": "client_secret_post" + }, + "idpCreateIDPRequest": { + "type": "object", + "properties": { + "displayName": { + "type": "string", + "title": "string id = 1;\nstring alias = 1 [(validate.rules).string.min_len = 1];" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "clientAuthentications": { + "$ref": "#/definitions/idpClientAuthentications" + }, + "providerId": { + "$ref": "#/definitions/idpProviderType" + }, + "authorizationUrl": { + "type": "string", + "title": "bool enabled = 6;" + }, + "userInfoUrl": { + "type": "string" + }, + "tokenUrl": { + "type": "string" + }, + "logoutUrl": { + "type": "string" + }, + "enableAutoLinkFlow": { + "type": "boolean" + } + } + }, + "idpCreateIDPResponse": { + "type": "object" + }, + "idpDeleteIDPResponse": { + "type": "object" + }, + "idpGetIDPResponse": { + "type": "object", + "properties": { + "displayName": { + "type": "string", + "title": "string id = 1;\nstring alias = 1;" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "clientAuthentications": { + "$ref": "#/definitions/idpClientAuthentications" + }, + "providerId": { + "$ref": "#/definitions/idpProviderType" + }, + "authorizationUrl": { + "type": "string", + "title": "bool enabled = 6;" + }, + "userInfoUrl": { + "type": "string" + }, + "tokenUrl": { + "type": "string" + }, + "logoutUrl": { + "type": "string" + }, + "enableAutoLinkFlow": { + "type": "boolean" + } + } + }, + "idpGetRedirectUrlResponse": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + } + }, + "idpGetWellKnownUrlResponse": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + } + }, + "idpProviderType": { + "type": "string", + "enum": [ + "oidc" + ], + "default": "oidc" + }, + "idpUpdateIDPRequest": { + "type": "object", + "properties": { + "displayName": { + "type": "string", + "title": "string alias = 1 [(validate.rules).string.min_len = 1];" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "clientAuthentications": { + "$ref": "#/definitions/idpClientAuthentications" + }, + "providerId": { + "$ref": "#/definitions/idpProviderType" + }, + "authorizationUrl": { + "type": "string", + "title": "bool enabled = 7;" + }, + "userInfoUrl": { + "type": "string" + }, + "tokenUrl": { + "type": "string" + }, + "logoutUrl": { + "type": "string" + }, + "enableAutoLinkFlow": { + "type": "boolean" + } + } + }, + "idpUpdateIDPResponse": { + "type": "object" + }, + "ldapCreateLdapGroupResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "ldapCreateLdapRequest": { + "type": "object", + "properties": { + "vendor": { + "type": "string", + "title": "LDAP vendor (provider), only is other" + }, + "startTls": { + "type": "string", + "description": "Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling." + }, + "ldapProtocol": { + "type": "string" + }, + "ldapHost": { + "type": "string" + }, + "usersDn": { + "type": "string", + "title": "Full DN of LDAP tree where your users are. This DN is the parent of LDAP users.\nIt could be for example 'ou=users,dc=example,dc=com' assuming that your typical user will have DN like 'uid=john,ou=users,dc=example,dc=com'" + }, + "bindDn": { + "type": "string", + "title": "DN of LDAP admin, which will be used by Keycloak to access LDAP server" + }, + "bindCredential": { + "type": "string", + "description": "Password of LDAP admin." + }, + "userObjectClasses": { + "type": "string", + "description": "All values of LDAP objectClass attribute for users in LDAP divided by comma.\nFor example: 'inetOrgPerson, organizationalPerson' .\nNewly created Keycloak users will be written to LDAP with all those object classes and existing LDAP user records are found just if they contain all those object classes." + }, + "usernameLdapAttribute": { + "type": "string", + "title": "Name of LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it can be 'uid'.\nFor Active directory it can be 'sAMAccountName' or 'cn'.\nThe attribute should be filled for all LDAP user records you want to import from LDAP to Keycloak" + }, + "fullSyncPeriod": { + "type": "string", + "title": "Period for full synchronization in seconds: -1 手动同步" + }, + "rdnLdapAttribute": { + "type": "string", + "description": "Name of the LDAP attribute, which is used as RDN (top attribute) of typical user DN.\nUsually it's the same as the Username LDAP attribute, however it is not required.\nFor example for Active directory, it is common to use 'cn' as RDN attribute when username attribute might be 'sAMAccountName'." + }, + "uuidLdapAttribute": { + "type": "string", + "description": "Name of the LDAP attribute, which is used as a unique object identifier (UUID) for objects in LDAP.\nFor many LDAP server vendors, it is 'entryUUID'; however some are different.\nFor example, for Active directory it should be 'objectGUID'.\nIf your LDAP server does not support the notion of UUID, you can use any other attribute that is supposed to be unique among LDAP users in tree.\nFor example 'uid' or 'entryDN'." + }, + "editMode": { + "type": "string", + "description": "READ_ONLY is a read-only LDAP store.\nWRITABLE means data will be synced back to LDAP on demand." + }, + "readTimeout": { + "type": "string", + "description": "LDAP read timeout in milliseconds. This timeout applies for LDAP read operations." + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + } + }, + "ldapCreateLdapResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "ldapDeleteLdapGroupResponse": { + "type": "object" + }, + "ldapDeleteLdapResponse": { + "type": "object" + }, + "ldapGetLdapGroupResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "groupDn": { + "type": "string" + }, + "groupObjectClasses": { + "type": "string" + }, + "groupNameLdapAttribute": { + "type": "string" + } + } + }, + "ldapGetLdapResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "vendor": { + "type": "string" + }, + "startTls": { + "type": "string" + }, + "ldapProtocol": { + "type": "string" + }, + "ldapHost": { + "type": "string" + }, + "usersDn": { + "type": "string" + }, + "bindDn": { + "type": "string" + }, + "bindCredential": { + "type": "string" + }, + "userObjectClasses": { + "type": "string" + }, + "usernameLdapAttribute": { + "type": "string" + }, + "fullSyncPeriod": { + "type": "string" + }, + "rdnLdapAttribute": { + "type": "string" + }, + "uuidLdapAttribute": { + "type": "string" + }, + "editMode": { + "type": "string" + }, + "readTimeout": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + } + }, + "ldapSyncLdapGroupsResponse": { + "type": "object", + "properties": { + "ignored": { + "type": "boolean" + }, + "added": { + "type": "integer", + "format": "int32" + }, + "updated": { + "type": "integer", + "format": "int32" + }, + "removed": { + "type": "integer", + "format": "int32" + }, + "failed": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "string" + } + } + }, + "ldapSyncUsersResponse": { + "type": "object", + "properties": { + "ignored": { + "type": "boolean" + }, + "added": { + "type": "integer", + "format": "int32" + }, + "updated": { + "type": "integer", + "format": "int32" + }, + "removed": { + "type": "integer", + "format": "int32" + }, + "failed": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "string" + } + } + }, + "ldapTestLdapAuthenticationRequest": { + "type": "object", + "properties": { + "bindDn": { + "type": "string", + "title": "DN of LDAP admin, which will be used by Keycloak to access LDAP server" + }, + "bindCredential": { + "type": "string", + "description": "Password of LDAP admin." + }, + "connectionUrl": { + "type": "string", + "title": "Connection URL to your LDAP server" + }, + "connectionTimeout": { + "type": "string", + "title": "LDAP Connection Timeout in milliseconds: 选填" + }, + "action": { + "type": "string", + "title": "测试事件类型: 选填, testAuthentication" + }, + "startTls": { + "type": "string", + "title": "Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling. 选填" + }, + "useTruststoreSpi": { + "type": "string", + "title": "Specifies whether LDAP connection will use the truststore SPI with the truststore configured.\n'Always' means that it will always use it.\n'Never' means that it will not use it.\n'Only for ldaps' means that it will use if your connection URL use ldaps.\n选填" + }, + "componentId": { + "type": "string", + "title": "Ldap id: 选填, uuid. 如果 bind_credential 的值等于 \"**********\", 则此字段是必填参" + } + } + }, + "ldapTestLdapAuthenticationResponse": { + "type": "object" + }, + "ldapTestLdapConnectionRequest": { + "type": "object", + "properties": { + "connectionUrl": { + "type": "string", + "title": "Connection URL to your LDAP server" + }, + "bindDn": { + "type": "string", + "title": "DN of LDAP admin, which will be used by Keycloak to access LDAP server: 选填" + }, + "bindCredential": { + "type": "string", + "title": "Password of LDAP admin. 选填" + }, + "connectionTimeout": { + "type": "string", + "title": "LDAP Connection Timeout in milliseconds: 选填" + }, + "action": { + "type": "string", + "title": "测试事件类型: 选填, testConnection" + }, + "startTls": { + "type": "string", + "description": "Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling." + }, + "useTruststoreSpi": { + "type": "string", + "title": "Specifies whether LDAP connection will use the truststore SPI with the truststore configured.\n'Always' means that it will always use it.\n'Never' means that it will not use it.\n'Only for ldaps' means that it will use if your connection URL use ldaps.\n选填" + }, + "componentId": { + "type": "string", + "title": "Ldap id: 选填, uuid" + } + } + }, + "ldapTestLdapConnectionResponse": { + "type": "object" + }, + "ldapUpdateLdapGroupResponse": { + "type": "object" + }, + "ldapUpdateLdapResponse": { + "type": "object" + }, + "loginLoginGetResponse": { + "type": "object" + }, + "loginLoginPostRequest": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "state": { + "type": "string" + }, + "sessionState": { + "type": "string" + }, + "callbackUrl": { + "type": "string" + } + } + }, + "loginLoginPostResponse": { + "type": "object", + "properties": { + "idToken": { + "type": "string" + }, + "refreshToken": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "loginLogoutResponse": { + "type": "object" + }, + "loginRefreshTokenRequest": { + "type": "object", + "properties": { + "refreshToken": { + "type": "string" + } + } + }, + "loginRefreshTokenResponse": { + "type": "object", + "properties": { + "idToken": { + "type": "string" + }, + "refreshToken": { + "type": "string" + } + } + }, + "loginpageGetLoginPageInfoResponse": { + "type": "object", + "properties": { + "version": { + "type": "integer", + "format": "int32" + }, + "platformName": { + "type": "string" + }, + "copyright": { + "type": "string" + }, + "tabName": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "favicon": { + "type": "string" + }, + "background": { + "type": "string" + }, + "customBg": { + "type": "boolean" + } + } + }, + "loginpageGetLoginPageVersionResponse": { + "type": "object", + "properties": { + "version": { + "type": "integer", + "format": "int32" + } + } + }, + "loginpageResetLoginPageInfoResponse": { + "type": "object" + }, + "loginpageUpdateLoginPageInfoRequest": { + "type": "object", + "properties": { + "platformName": { + "type": "string" + }, + "copyright": { + "type": "string" + }, + "tabName": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "favicon": { + "type": "string" + }, + "background": { + "type": "string" + } + } + }, + "loginpageUpdateLoginPageInfoResponse": { + "type": "object" + }, + "messageDeleteMessagesRequest": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + }, + "messageDeleteMessagesResponse": { + "type": "object" + }, + "messageGetMessageResponse": { + "type": "object", + "properties": { + "message": { + "$ref": "#/definitions/messageMessageInfo" + } + } + }, + "messageGetMessagesCountResponse": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "readTotal": { + "type": "integer", + "format": "int32" + }, + "unreadTotal": { + "type": "integer", + "format": "int32" + } + } + }, + "messageListMessagesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/messageMessageInfo" + } + }, + "pagination": { + "$ref": "#/definitions/messagePagination" + } + } + }, + "messageMessageInfo": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "message": { + "type": "string" + }, + "read": { + "$ref": "#/definitions/messageReadType" + }, + "createdAt": { + "type": "string" + } + } + }, + "messagePagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "messageReadType": { + "type": "string", + "enum": [ + "all", + "read", + "unread" + ], + "default": "all" + }, + "messageSetReadMessagesRequest": { + "type": "object", + "properties": { + "all": { + "type": "boolean" + }, + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + }, + "messageSetReadMessagesResponse": { + "type": "object" + }, + "messageToggleUnreadMessageResponse": { + "type": "object", + "properties": { + "message": { + "$ref": "#/definitions/messageMessageInfo" + } + } + }, + "oidcGhippoClientConfigResponse": { + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "groupsClaim": { + "type": "string" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "userClaim": { + "type": "string" + }, + "clientSecret": { + "type": "string" + } + } + }, + "oidcOIDCLogoutResponse": { + "type": "object" + }, + "oidcOIDCTokenRequest": { + "type": "object", + "properties": { + "clientId": { + "type": "string" + }, + "grantType": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "code": { + "type": "string", + "title": "string response_type = 4 [(validate.rules).string.min_len = 1];" + }, + "redirectUri": { + "type": "string" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "refreshToken": { + "type": "string" + }, + "scope": { + "type": "string" + } + } + }, + "oidcOIDCTokenResponse": { + "type": "object", + "properties": { + "accessToken": { + "type": "string" + }, + "idToken": { + "type": "string" + }, + "expiresIn": { + "type": "integer", + "format": "int32" + }, + "refreshExpiresIn": { + "type": "integer", + "format": "int32" + }, + "refreshToken": { + "type": "string" + }, + "tokenType": { + "type": "string" + }, + "notBeforePolicy": { + "type": "integer", + "format": "int32" + }, + "sessionState": { + "type": "string" + }, + "scope": { + "type": "string" + } + } + }, + "oidcOIDCUserInfoResponse": { + "type": "object", + "properties": { + "sub": { + "type": "string" + }, + "preferredUsername": { + "type": "string" + }, + "email": { + "type": "string" + }, + "locale": { + "type": "string" + } + } + }, + "oidcRedirectFrontendLogoutResponse": { + "type": "object" + }, + "oidcWellKnownResponse": { + "type": "object", + "properties": { + "issuer": { + "type": "string" + }, + "authorizationEndpoint": { + "type": "string" + }, + "tokenEndpoint": { + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "userinfoEndpoint": { + "type": "string" + }, + "introspectionEndpoint": { + "type": "string" + }, + "idTokenSigningAlgValuesSupported": { + "type": "array", + "items": { + "type": "string" + } + }, + "endSessionEndpoint": { + "type": "string" + } + } + }, + "productnavProductMenu": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "iconUrl": { + "type": "string" + }, + "target": { + "type": "string" + }, + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/productnavProductMenu" + } + } + } + }, + "productnavProductNavCategory": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/productnavProductMenu" + } + } + } + }, + "productnavProductNavResponse": { + "type": "object", + "properties": { + "categories": { + "type": "array", + "items": { + "$ref": "#/definitions/productnavProductNavCategory" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "publishPublishMessageRequest": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "type": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "message": { + "type": "string" + }, + "messageUid": { + "type": "string" + } + } + }, + "publishPublishMessageResponse": { + "type": "object" + }, + "recordFilingGetRecordFilingResponse": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "icps": { + "$ref": "#/definitions/recordFilingicps" + }, + "polices": { + "$ref": "#/definitions/recordFilingpolices" + } + } + }, + "recordFilingResetRecordFilingResponse": { + "type": "object" + }, + "recordFilingUpdateRecordFilingRequest": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "icps": { + "$ref": "#/definitions/recordFilingicps" + }, + "polices": { + "$ref": "#/definitions/recordFilingpolices" + } + } + }, + "recordFilingUpdateRecordFilingResponse": { + "type": "object" + }, + "recordFilingicps": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "copyright": { + "type": "string" + }, + "names": { + "type": "array", + "items": { + "$ref": "#/definitions/recordFilingname" + } + } + } + }, + "recordFilingname": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "link": { + "type": "boolean" + } + } + }, + "recordFilingpolices": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "names": { + "type": "array", + "items": { + "$ref": "#/definitions/recordFilingname" + } + } + } + }, + "roleAuthScope": { + "type": "string", + "enum": [ + "platform", + "folder", + "workspace" + ], + "default": "platform", + "title": "- platform: unknown_auth_scope = 0;" + }, + "roleAuthScopeAllPermissions": { + "type": "object", + "properties": { + "authScope": { + "$ref": "#/definitions/roleAuthScope" + }, + "categoryPerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleCategoryAllPermissions" + } + } + } + }, + "roleCategory": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "localizedName": { + "type": "string" + } + } + }, + "roleCategoryAllPermissions": { + "type": "object", + "properties": { + "category": { + "$ref": "#/definitions/roleCategory" + }, + "resourcePerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleResourceAllPermissions" + } + } + } + }, + "roleCategoryPermissions": { + "type": "object", + "properties": { + "category": { + "$ref": "#/definitions/roleCategory" + }, + "resourcePerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleResourcePermissions" + } + } + } + }, + "roleCheckRoleNameResponse": { + "type": "object", + "properties": { + "exist": { + "type": "boolean" + } + } + }, + "roleCreateRoleRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string", + "title": "string gproduct = 2 [(validate.rules).string = {min_len: 1, max_len: 63}];\nglobalRoleType type = 3;" + }, + "scope": { + "$ref": "#/definitions/roleAuthScope" + }, + "perms": { + "type": "array", + "items": { + "$ref": "#/definitions/rolePermission" + } + } + } + }, + "roleCreateRoleResponse": { + "type": "object" + }, + "roleDeleteRoleResponse": { + "type": "object" + }, + "roleGProduct": { + "type": "object", + "properties": { + "gproduct": { + "type": "string" + }, + "localizedName": { + "type": "string" + } + } + }, + "roleGProductAllPermissions": { + "type": "object", + "properties": { + "gproduct": { + "$ref": "#/definitions/roleGProduct" + }, + "authscopePerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleAuthScopeAllPermissions" + }, + "title": "map gproduct = 1;" + } + } + }, + "roleGProductPermissions": { + "type": "object", + "properties": { + "gproduct": { + "$ref": "#/definitions/roleGProduct", + "title": "string gproduct = 1;" + }, + "categoryPerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleCategoryPermissions" + } + } + } + }, + "roleGetGlobalRoleResponse": { + "type": "object", + "properties": { + "role": { + "$ref": "#/definitions/roleGlobalRoleInfo" + } + }, + "title": "to be deprecated after several months" + }, + "roleGetRoleMemberCountResponse": { + "type": "object", + "properties": { + "userCount": { + "type": "integer", + "format": "int32" + }, + "groupCount": { + "type": "integer", + "format": "int32" + } + } + }, + "roleGetRoleResponse": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/roleglobalRoleType" + }, + "description": { + "type": "string" + }, + "scope": { + "$ref": "#/definitions/roleAuthScope" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "gproductPerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleGProductPermissions" + } + } + } + }, + "roleGlobalRoleInfo": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/roleglobalRoleType" + }, + "description": { + "type": "string" + }, + "composite": { + "type": "boolean" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "title": "to be deprecated after several months" + }, + "roleListAllPermissionsResponse": { + "type": "object", + "properties": { + "gproductPerms": { + "type": "array", + "items": { + "$ref": "#/definitions/roleGProductAllPermissions" + } + } + } + }, + "roleListFolderRoleNamesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleRoleName" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListFolderRolesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleWorkspaceRoleInfo" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + }, + "title": "to be deprecated after several months" + }, + "roleListGlobalRoleSubjectsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleSubject" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + }, + "title": "to be deprecated after several months" + }, + "roleListGlobalRolesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleGlobalRoleInfo" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + }, + "title": "to be deprecated after several months" + }, + "roleListMembersByPlatformRoleResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleMember" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListMembersFoldersByFolderRoleResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleMemberFolder" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListMembersWorkspacesByWorkspaceRoleResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleMemberWorkspace" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListPlatformRoleNamesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleRoleName" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListRolesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleRoleInfo" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListWorkspaceRoleNamesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleRoleName" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + } + }, + "roleListWorkspaceRolesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/roleWorkspaceRoleInfo" + } + }, + "pagination": { + "$ref": "#/definitions/rolePagination" + } + }, + "title": "to be deprecated after several months" + }, + "roleMember": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "roleMemberFolder": { + "type": "object", + "properties": { + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "folderId": { + "type": "integer", + "format": "int32" + }, + "folderAlias": { + "type": "string" + }, + "memberId": { + "type": "string" + } + } + }, + "roleMemberWorkspace": { + "type": "object", + "properties": { + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "workspaceId": { + "type": "integer", + "format": "int32" + }, + "workspaceAlias": { + "type": "string" + }, + "memberId": { + "type": "string" + } + } + }, + "rolePagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "rolePermission": { + "type": "object", + "properties": { + "action": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "gproduct": { + "type": "string" + } + } + }, + "roleQueryAuthScope": { + "type": "string", + "enum": [ + "query_all_auth_scope", + "query_platform", + "query_folder", + "query_workspace" + ], + "default": "query_all_auth_scope" + }, + "roleQueryRoleType": { + "type": "string", + "enum": [ + "query_all_role_type", + "query_system", + "query_custom" + ], + "default": "query_all_role_type" + }, + "roleResourceAction": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "localizedName": { + "type": "string" + } + } + }, + "roleResourceActionWithDependency": { + "type": "object", + "properties": { + "action": { + "$ref": "#/definitions/roleResourceAction" + }, + "dependPerms": { + "type": "array", + "items": { + "$ref": "#/definitions/rolePermission" + } + } + } + }, + "roleResourceAllPermissions": { + "type": "object", + "properties": { + "resourceType": { + "$ref": "#/definitions/roleResourceType" + }, + "actions": { + "type": "array", + "items": { + "$ref": "#/definitions/roleResourceActionWithDependency" + } + } + } + }, + "roleResourcePermissions": { + "type": "object", + "properties": { + "resourceType": { + "$ref": "#/definitions/roleResourceType" + }, + "actions": { + "type": "array", + "items": { + "$ref": "#/definitions/roleResourceAction" + } + } + } + }, + "roleResourceType": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "localizedName": { + "type": "string" + } + } + }, + "roleRoleInfo": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/roleglobalRoleType" + }, + "description": { + "type": "string" + }, + "scope": { + "$ref": "#/definitions/roleAuthScope" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + }, + "roleRoleName": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "authScope": { + "$ref": "#/definitions/roleAuthScope" + }, + "description": { + "type": "string" + } + } + }, + "roleSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "type": { + "type": "string" + }, + "subjectName": { + "type": "string" + } + }, + "title": "to be deprecated after several months" + }, + "roleUpdateRoleResponse": { + "type": "object" + }, + "roleWorkspaceRoleInfo": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string" + }, + "authScope": { + "type": "string" + }, + "gproduct": { + "type": "string" + } + }, + "title": "to be deprecated after several months" + }, + "roleglobalRoleType": { + "type": "string", + "enum": [ + "system", + "custom" + ], + "default": "system", + "title": "TODO: 改为 RoleType" + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "securitypolicyGetAccountLockoutPolicyResponse": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "maxLoginFailures": { + "type": "integer", + "format": "int32" + }, + "maxFailuresWaitSeconds": { + "type": "integer", + "format": "int32" + }, + "failureResetSeconds": { + "type": "integer", + "format": "int32" + } + } + }, + "securitypolicyGetLogoutPolicyResponse": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "securitypolicyGetPasswordPolicyResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/securitypolicyPasswordPolicyInfo" + } + } + } + }, + "securitypolicyGetSessionTimeoutResponse": { + "type": "object", + "properties": { + "timeoutSeconds": { + "type": "integer", + "format": "int32" + } + } + }, + "securitypolicyPasswordPolicyInfo": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/securitypolicyPasswordPolicyType" + }, + "value": { + "type": "string" + } + } + }, + "securitypolicyPasswordPolicyType": { + "type": "string", + "enum": [ + "MinimumLengthLabel", + "NotRecentlyUsedLabel", + "NotUsernameLabel", + "NotEmailLabel", + "DigitsLabel", + "UppercaseCharactersLabel", + "LowercaseCharactersLabel", + "SpecialCharactersLabel", + "ExpirePasswordLabel" + ], + "default": "MinimumLengthLabel" + }, + "securitypolicySetAccountLockoutPolicyRequest": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "maxLoginFailures": { + "type": "integer", + "format": "int32", + "title": "failures count >= 0" + }, + "maxFailuresWaitSeconds": { + "type": "integer", + "format": "int32", + "title": "Lock time >= 60s" + }, + "failureResetSeconds": { + "type": "integer", + "format": "int32", + "title": "reset time >= 60s" + } + } + }, + "securitypolicySetAccountLockoutPolicyResponse": { + "type": "object" + }, + "securitypolicySetLogoutPolicyRequest": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "securitypolicySetLogoutPolicyResponse": { + "type": "object" + }, + "securitypolicySetPasswordPolicyRequest": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/securitypolicyPasswordPolicyInfo" + } + } + } + }, + "securitypolicySetPasswordPolicyResponse": { + "type": "object" + }, + "securitypolicySetSessionTimeoutRequest": { + "type": "object", + "properties": { + "timeoutSeconds": { + "type": "integer", + "format": "int32", + "title": "timeout > 3600s" + } + } + }, + "securitypolicySetSessionTimeoutResponse": { + "type": "object" + }, + "smtpsettingGetSmtpServerResponse": { + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "ssl": { + "type": "boolean" + }, + "starttls": { + "type": "boolean" + }, + "from": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "smtpsettingSetSmtpServerRequest": { + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "ssl": { + "type": "boolean" + }, + "starttls": { + "type": "boolean" + }, + "from": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "smtpsettingSetSmtpServerResponse": { + "type": "object" + }, + "smtpsettingSmtpConnTestRequest": { + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "ssl": { + "type": "boolean" + }, + "starttls": { + "type": "boolean" + }, + "from": { + "type": "string" + }, + "to": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "smtpsettingSmtpConnTestResponse": { + "type": "object" + }, + "themeGetLoginThemeConfigResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "css": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + }, + "themeGetThemeConfigResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "css": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + }, + "themeResetLoginThemeConfigResponse": { + "type": "object" + }, + "themeResetThemeConfigResponse": { + "type": "object" + }, + "themeSetLoginThemeConfigRequest": { + "type": "object", + "properties": { + "css": { + "type": "string" + } + } + }, + "themeSetLoginThemeConfigResponse": { + "type": "object" + }, + "themeSetThemeConfigRequest": { + "type": "object", + "properties": { + "css": { + "type": "string" + } + } + }, + "themeSetThemeConfigResponse": { + "type": "object" + }, + "topnavResetTopNavResponse": { + "type": "object" + }, + "topnavSetTopNavRequest": { + "type": "object", + "properties": { + "icon": { + "type": "string" + }, + "favicon": { + "type": "string" + }, + "tabName": { + "type": "string" + } + } + }, + "topnavSetTopNavResponse": { + "type": "object" + }, + "topnavTopNavResponse": { + "type": "object", + "properties": { + "icon": { + "type": "string" + }, + "favicon": { + "type": "string" + }, + "tabName": { + "type": "string" + } + } + }, + "userAccessToken": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "expiredAt": { + "type": "string" + } + } + }, + "userCheckUserResponse": { + "type": "object", + "properties": { + "existed": { + "type": "boolean" + } + } + }, + "userCreateUserAccessTokenResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "token": { + "type": "string" + } + } + }, + "userCreateUserRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "description": { + "type": "string" + }, + "temporary": { + "type": "boolean" + } + } + }, + "userCreateUserResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "userDeleteUserAccessTokenResponse": { + "type": "object" + }, + "userDeleteUserResponse": { + "type": "object" + }, + "userGetUserResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "description": { + "type": "string" + }, + "firstname": { + "type": "string" + }, + "lastname": { + "type": "string" + }, + "source": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "lastLoginAt": { + "type": "string" + }, + "canAuthorize": { + "type": "boolean" + } + } + }, + "userGroup": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "userListUserAccessTokensResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/userAccessToken" + } + } + } + }, + "userListUserGroupsResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/userPagination" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/userGroup" + } + } + } + }, + "userListUserRolesResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/userPagination" + }, + "authorizedCount": { + "type": "integer", + "format": "int64" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/userRoleInfo" + } + } + } + }, + "userListUserSubjectResponse": { + "type": "object", + "properties": { + "pagination": { + "$ref": "#/definitions/userPagination" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/userUserSubject" + } + } + } + }, + "userListUsersResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/userGetUserResponse" + } + }, + "pagination": { + "$ref": "#/definitions/userPagination" + } + } + }, + "userPagination": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "total": { + "type": "integer", + "format": "int32" + } + } + }, + "userRoleInfo": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "authorized": { + "type": "boolean" + } + } + }, + "userSetUserPasswordResponse": { + "type": "object" + }, + "userUpdateUserResponse": { + "type": "object" + }, + "userUpdateUserRolesResponse": { + "type": "object" + }, + "userUserSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "subjectName": { + "type": "string" + } + } + }, + "workspaceAuthorizeResponse": { + "type": "object" + }, + "workspaceBindExclusiveResourceToWorkspaceResponse": { + "type": "object" + }, + "workspaceBindSharedResourceAndSetQuotaHardToWorkspaceResponse": { + "type": "object" + }, + "workspaceBindSharedResourceToWorkspaceResponse": { + "type": "object" + }, + "workspaceClusterStatus": { + "type": "string", + "enum": [ + "StatusUnknown", + "StatusRunning", + "StatusNotRunning" + ], + "default": "StatusUnknown" + }, + "workspaceCreateFolderRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "alias": { + "type": "string" + }, + "parentFolderId": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceCreateFolderResponse": { + "type": "object", + "properties": { + "folderId": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceCreateWorkspaceRequest": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "title": "string name = 1 [(validate.rules).string.max_len = 64];" + }, + "parentFolderId": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceCreateWorkspaceResponse": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceDeauthorizeResponse": { + "type": "object" + }, + "workspaceDeleteFolderResponse": { + "type": "object" + }, + "workspaceDeleteWorkspaceResponse": { + "type": "object" + }, + "workspaceFolderInfo": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "alias": { + "type": "string" + } + } + }, + "workspaceFolderListGroupsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceGroup" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceFolderListPermissionsResponse": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceFolderPermission" + } + } + } + }, + "workspaceFolderListUsersResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceUser" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceFolderPermission": { + "type": "string", + "enum": [ + "Unknown", + "CreateFolder", + "UpdateFolder", + "GetFolder", + "DeleteFolder", + "AuthorizeFolder", + "CreateWorkspace", + "UpdateWorkspace", + "GetWorkspace", + "DeleteWorkspace", + "AuthorizeWorkspace", + "ResourceBindingWorkspace", + "UpdateResourceQuotaWorkspace" + ], + "default": "Unknown" + }, + "workspaceFolderTree": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "alias": { + "type": "string" + }, + "isWorkspace": { + "type": "boolean" + }, + "parentId": { + "type": "integer", + "format": "int32" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceFolderTree" + } + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceFolderPermission" + } + }, + "resourceKind": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceWorkspaceResourceKindEnum" + } + } + } + }, + "workspaceGetFolderResponse": { + "type": "object", + "properties": { + "folder": { + "$ref": "#/definitions/workspaceFolderInfo" + } + } + }, + "workspaceGetWorkspaceResponse": { + "type": "object", + "properties": { + "workspace": { + "$ref": "#/definitions/workspaceWorkspaceInfo" + } + } + }, + "workspaceGetWorkspaceSharedResourceQuotaResponse": { + "type": "object", + "properties": { + "setting": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "allocatable": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "used": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "workspaceGroup": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "userCount": { + "type": "integer", + "format": "int64" + }, + "description": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "canAuthorize": { + "type": "boolean" + }, + "authorized": { + "type": "boolean" + } + } + }, + "workspaceListAvailableExclusiveResourcesByWorkspaceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceResourceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListAvailableSharedResourcesByWorkspaceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceResourceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListExclusiveResourceTypesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "workspaceListExclusiveResourcesByWorkspaceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceWorkspacesResourceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListFolderTreeResponse": { + "type": "object", + "properties": { + "folderTree": { + "$ref": "#/definitions/workspaceFolderTree" + }, + "defaultId": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceListFoldersResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceFolderInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListMembersRolesByFolderResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceMemberRoleFolderInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListMembersRolesByWorkspaceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceMemberRoleWorkspaceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListResourceQuotaTypesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "workspaceListSharedResourceTypesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "workspaceListSharedResourcesByWorkspaceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceWorkspacesResourceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceListWorkspacesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/workspaceWorkspaceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/workspacePagination" + } + } + }, + "workspaceMemberRoleFolderInfo": { + "type": "object", + "properties": { + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "folderId": { + "type": "integer", + "format": "int32" + }, + "memberId": { + "type": "string" + } + } + }, + "workspaceMemberRoleWorkspaceInfo": { + "type": "object", + "properties": { + "memberName": { + "type": "string" + }, + "memberType": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "workspaceId": { + "type": "integer", + "format": "int32" + }, + "memberId": { + "type": "string" + } + } + }, + "workspacePagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + } + } + }, + "workspaceReauthorizeResponse": { + "type": "object" + }, + "workspaceResourceInfo": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "gproduct": { + "type": "string" + }, + "resourceScope": { + "type": "string" + }, + "bound": { + "type": "boolean" + }, + "clusterStatus": { + "$ref": "#/definitions/workspaceClusterStatus" + } + } + }, + "workspaceSetQuotaHardForWorkspaceSharedResourceRequest": { + "type": "object", + "properties": { + "workspaceResourceId": { + "type": "integer", + "format": "int32" + }, + "quotaHard": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "workspaceSetQuotaHardForWorkspaceSharedResourceResponse": { + "type": "object" + }, + "workspaceUnbindResourceFromWorkspaceResponse": { + "type": "object" + }, + "workspaceUpdateFolderResponse": { + "type": "object" + }, + "workspaceUpdateQuotaCheckRequest": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "gproduct": { + "type": "string" + }, + "resourceScope": { + "type": "string", + "title": "cluster 资源 resource_scope 为空" + }, + "workspaceId": { + "type": "integer", + "format": "int32" + }, + "quotaHard": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "workspaceUpdateQuotaCheckResponse": { + "type": "object", + "properties": { + "passed": { + "type": "boolean" + }, + "reason": { + "type": "string" + } + } + }, + "workspaceUser": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "description": { + "type": "string" + }, + "firstname": { + "type": "string" + }, + "lastname": { + "type": "string" + }, + "source": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "canAuthorize": { + "type": "boolean" + }, + "authorized": { + "type": "boolean" + } + } + }, + "workspaceWorkspaceInfo": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "alias": { + "type": "string" + } + } + }, + "workspaceWorkspaceResourceKindEnum": { + "type": "string", + "enum": [ + "resource_group", + "shared_resource", + "registry" + ], + "default": "resource_group" + }, + "workspaceWorkspacesResourceInfo": { + "type": "object", + "properties": { + "resourceName": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resourceScope": { + "type": "string" + }, + "gproduct": { + "type": "string" + }, + "workspaceId": { + "type": "integer", + "format": "int32" + }, + "workspaceResourceId": { + "type": "integer", + "format": "int32" + }, + "module": { + "type": "string" + }, + "clusterStatus": { + "$ref": "#/definitions/workspaceClusterStatus" + } + } + } + } +} diff --git a/docs/openapi/ghippo/v0.16.1.md b/docs/openapi/ghippo/v0.16.1.md new file mode 100644 index 00000000..fed84062 --- /dev/null +++ b/docs/openapi/ghippo/v0.16.1.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/images/index.png b/docs/openapi/images/index.png deleted file mode 100644 index 011481dfa8e51d8a76719d3f991148b5141567c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369155 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

(GDy) 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%0A{y4r~IeI2bOq42v5_!9S4sUi0?kY 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 Bv_1d; diff --git a/docs/openapi/index.md b/docs/openapi/index.md index 7c8e83bf..043d4606 100644 --- a/docs/openapi/index.md +++ b/docs/openapi/index.md @@ -1,31 +1,68 @@ ---- -hide: - - toc ---- - # OpenAPI 文档汇总 本页列出 DCE 5.0 相关模块的 OpenAPI 文档,方便以程序方式调用。

+ +## 其他 + +以下 OpenAPI 文档将于稍后添加。 + +
+ - :octicons-container-16: **容器管理 OpenAPI** -- :material-monitor-dashboard: **[可观测性 OpenAPI](./insight/v0.16.0-alpha1.md)** - :material-microsoft-azure-devops: **应用工作台 OpenAPI** -- :material-cloud-check: **多云编排 OpenAPI** - :material-engine: **微服务引擎 OpenAPI** -- :material-table-refresh: **[服务网格 OpenAPI](./mspider/v0.105.1.md)** -- :material-middleware: **[中间件 OpenAPI](./midware.md)** - :material-warehouse: **镜像仓库 OpenAPI** -- :material-dot-net: **[网络 OpenAPI](./spidernet/v0.5.0.md)** - :floppy_disk: **存储 OpenAPI** -- :material-more: **更多 OpenAPI**
!!! tip - 蓝色文字表示该模块已添加 OpenAPI 文档。参阅 [OpenAPI 制作流程](./api-doc-flow.md)。 + 参阅 [OpenAPI 制作流程](./api-doc-flow.md)。 -![OpenAPI and Swagger](./images/index.png) +![OpenAPI and Swagger](https://docs.daocloud.io/daocloud-docs-images/docs/openapi/images/index.png) diff --git a/docs/openapi/insight/v0.16.0-alpha1.md b/docs/openapi/insight/v0.16.0-alpha1.md deleted file mode 100644 index 715af50b..00000000 --- a/docs/openapi/insight/v0.16.0-alpha1.md +++ /dev/null @@ -1 +0,0 @@ -# diff --git a/docs/openapi/insight/v0.16.0-alpha1.json b/docs/openapi/insight/v0.16.0.json similarity index 99% rename from docs/openapi/insight/v0.16.0-alpha1.json rename to docs/openapi/insight/v0.16.0.json index e2521f79..6ab8e769 100644 --- a/docs/openapi/insight/v0.16.0-alpha1.json +++ b/docs/openapi/insight/v0.16.0.json @@ -2,7 +2,7 @@ "swagger": "2.0", "info": { "title": "可观测性", - "version": "v0.16.0-alpha1" + "version": "v0.16.0" }, "tags": [ { diff --git a/docs/openapi/insight/v0.16.0.md b/docs/openapi/insight/v0.16.0.md new file mode 100644 index 00000000..b53803c4 --- /dev/null +++ b/docs/openapi/insight/v0.16.0.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/kairship/v0.8.0.json b/docs/openapi/kairship/v0.8.0.json new file mode 100644 index 00000000..0e55a3d9 --- /dev/null +++ b/docs/openapi/kairship/v0.8.0.json @@ -0,0 +1,16374 @@ +{ + "swagger": "2.0", + "info": { + "title": "多云编排", + "version": "v0.8.0" + }, + "tags": [ + { + "name": "Aggregation" + }, + { + "name": "Apiextensions" + }, + { + "name": "Apps" + }, + { + "name": "Batch" + }, + { + "name": "CloudShell" + }, + { + "name": "Cluster" + }, + { + "name": "Core" + }, + { + "name": "Image" + }, + { + "name": "Insight" + }, + { + "name": "Instance" + }, + { + "name": "Networking" + }, + { + "name": "Policy" + }, + { + "name": "Workspace" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/kairship.io/v1alpha1/instances": { + "get": { + "summary": "ListInstances list all karmadaDeployment cr.", + "operationId": "Instance_ListInstances", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstanceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "description": "Name of instance.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the instance list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the instance list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Instance" + ] + }, + "post": { + "summary": "CreateInstance create karmadadeploy to instance karmada on the cluster.", + "operationId": "Instance_CreateInstance", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1Instance" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha1CreateInstanceRequest" + } + } + ], + "tags": [ + "Instance" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/aggregationresource": { + "post": { + "summary": "CreateClusterAggregationResource create multi resource for kairship.", + "operationId": "Aggregation_CreateClusterAggregationResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ClusterAggregationResource" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified propagation policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/v1alpha1ClusterAggregationResource" + }, + "gvr": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1GVR" + }, + "description": "GVR represents the resource gvr of CustomResources." + } + } + } + } + ], + "tags": [ + "Aggregation" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/cloudshells": { + "post": { + "summary": "CreateCloudShell create a cloudshell in golobal cluster.", + "operationId": "CloudShell_CreateCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance specified the karmada instance name for cloudshell.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/v1alpha1CloudShell", + "description": "cloud_shell defines the data of cloud shell." + } + }, + "title": "CreateIngressResponse the response of create cluster ingresses" + } + } + ], + "tags": [ + "CloudShell" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/cloudshells/{name}": { + "get": { + "summary": "GetCloudShell get a cloudshell in golobal cluster.", + "operationId": "CloudShell_GetCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance specified the karmada instance name for cloudshell.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name specified the cloudshell name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShell" + ] + }, + "delete": { + "summary": "DeleteCloudShell delete a cloudshell in golobal cluster.", + "operationId": "CloudShell_DeleteCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance specified the karmada instance name for cloudshell.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name specified the cloudshell name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShell" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusteroverridepolicies": { + "get": { + "summary": "ListOverridePolicies return all OverridePolicy for a given namespace and instance", + "operationId": "Policy_ListClusterOverridePolicies", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListClusterOverridePoliciesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "karmada instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "kind", + "description": "The kind of service.\nIf the kind is Deployment,\nthis presents the name of the deployment.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "kindName", + "description": "Name of kind.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "name", + "description": "Name stands for service name, used for fuzzy search.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "apiVersion", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "post": { + "summary": "CreateClusterOverridePolicy creates an override policy under the namespaces of a specific instance", + "operationId": "Policy_CreateClusterOverridePolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateClusterOverridePolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified override policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the OverridePolicy YAML details" + } + } + } + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusteroverridepolicies/{name}": { + "get": { + "summary": "GetClusterOverridePolicy gets override policy under the namespaces of a specific instance", + "operationId": "Policy_GetClusterOverridePolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetClusterOverridePolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the override belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "delete": { + "summary": "DeleteClusterOverridePolicy deletes an override policy under the namespaces of a specific instance", + "operationId": "Policy_DeleteClusterOverridePolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the override policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of override policy", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "put": { + "summary": "UpdateClusterOverridePolicy patches an override policy under the namespaces of a specific instance", + "operationId": "Policy_UpdateClusterOverridePolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateClusterOverridePolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the override policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name of the override policy.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The json data of updating." + } + }, + "description": "The request of updating deployment." + } + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusteroverridepolicies/{name}/json": { + "get": { + "summary": "GetClusterOverridePolicyJSON gets override policy by JSON under the namespaces of a specific instance", + "operationId": "Policy_GetClusterOverridePolicyJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetClusterOverridePolicyJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the override belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusterpropagationpolicies": { + "get": { + "summary": "ListPropagationPolicies return all ClusterPropagationPolicy for a given instance and namespace", + "operationId": "Policy_ListClusterPropagationPolicies", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListClusterPropagationPoliciesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "karmada instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "kind", + "description": "The kind of service.\nIf the kind is Deployment,\nthis presents the name of the deployment.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "kindName", + "description": "Name of kind.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "name", + "description": "Name stands for service name, used for fuzzy search.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "apiVersion", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "post": { + "summary": "CreateClusterPropagationPolicy creates a propagation policy under the namespaces of a specific instance", + "operationId": "Policy_CreateClusterPropagationPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateClusterPropagationPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified Cluster propagation policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the ClusterPropagationPolicy YAML details" + } + } + } + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusterpropagationpolicies/{name}": { + "get": { + "summary": "GetClusterPropagationPolicy gets propagation policy under the namespaces of a specific instance", + "operationId": "Policy_GetClusterPropagationPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetClusterPropagationPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the propagation belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "delete": { + "summary": "DeleteClusterPropagationPolicy deletes a propagation policy under the namespaces of a specific instance", + "operationId": "Policy_DeleteClusterPropagationPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the propagation policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of propagation policy", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "put": { + "summary": "UpdateClusterPropagationPolicy updates a propagation policy under the namespaces of a specific instance", + "operationId": "Policy_UpdateClusterPropagationPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateClusterPropagationPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the propagation policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name of the propagation policy.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The json data of updating." + } + }, + "description": "The request of updating deployment." + } + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusterpropagationpolicies/{name}/json": { + "get": { + "summary": "GetClusterPropagationPolicyJSON gets propagation policy by JSON under the namespaces of a specific instance", + "operationId": "Policy_GetClusterPropagationPolicyJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetClusterPropagationPolicyJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the propagation belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusters": { + "get": { + "summary": "ListJoinedCluster Get the list of clusters that have been added to karmada", + "operationId": "Cluster_ListJoinedClusters", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListClustersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "role", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "kubernetesVersion", + "description": "KUBERNETESVERSION cluster k8s version use to support search sub cluster at\nListClusters", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Phases is used for filter.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "managedBy", + "description": "ManagedBy represents who manages the cluster", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the cluster list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the cluster list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "name", + "description": "Name of cluster.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "region", + "description": "Region represents the region of the member cluster locate in.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "provider", + "description": "Provider represents the cloud provider name of the member cluster.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "zone", + "description": "Zone represents the zone of the member cluster locate in.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter clusters.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter the clusters.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterSelector", + "description": "A cluster selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "allCluster", + "description": "list all kpanda clusters", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusters-labels": { + "get": { + "summary": "ListClustersLabels list all member cluster labels.", + "operationId": "Cluster_ListClustersLabels", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListClustersLabelsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "karmada instance", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusters-locations": { + "get": { + "summary": "ListClustersDeploymentLocationSummary all kpanda-cluster's zones and regions.", + "operationId": "Cluster_ListClustersLocationSummary", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListClustersLocationsSummaryResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusters/{cluster}/ingressclasssummary": { + "get": { + "summary": "ListIngressClassSummary gets a list of ingressClass simple information\nfrom the system by given cluster name", + "operationId": "Networking_ListIngressClassForMemberCluster", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListIngressClassSummaryResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance is the ingressClass belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "Cluster is the name of the cluster, return all the ingress of the cluster\nbe specified.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Networking" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusters/{cluster}/namespaces/{namespace}/cronjobs/{cronjob}/jobs": { + "get": { + "summary": "ListJobsByCronJobsName lists Jobs By CronJobs's Name under the namespaces\nof a specific instance", + "operationId": "Batch_ListJobsByCronJobsName", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListJobsByCronJobNameResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the cronjob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "Cluster represents which cluster the job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the cronjob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cronjob", + "description": "Cronjob name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "phase", + "description": "Represents the current state of a cron job.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the job list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the job list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "name", + "description": "Cronjob name.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzyName", + "description": "FuzzyName is used to fuzzy search by multiple parameters including name.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusters/{cluster}/namespaces/{namespace}/pods": { + "get": { + "summary": "ListPodsForMemberCluster will list all pod by given instance, cluster and namespace", + "operationId": "Core_ListPodsForMemberCluster", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListPodsForMemberClusterResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the pod was populated by.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "Cluster represents which cluster the pod belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced pod.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "kind", + "description": "The kind of pod.\n\n - KIND_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Deployment: A Deployment provides declarative updates for Pods and ReplicaSets.\n - StatefulSet: StatefulSet is the workload API object used to manage stateful\napplications.\n - DaemonSet: A DaemonSet ensures that all (or some) Nodes run a copy of a Pod.\n - Service: Service to expose an application running on a set of Pods.\n - Job: Job is used to express a one-time task.\n - CronJob: CronJob runs repeatedly according to its time schedule.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Deployment", + "StatefulSet", + "DaemonSet", + "Service", + "Job", + "CronJob" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "Name of kind.\nIf the kind is Deployment,\nthis presents the name of the deployment.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "name", + "description": "Name stands for pod name, used for fuzzy search.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Phases is used for filter.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusters/{cluster}/namespaces/{namespace}/secrets": { + "get": { + "summary": "ListSecretsForMemberCluster will list all secrets by given instance, cluster and namespace", + "operationId": "Core_ListSecretsForMemberCluster", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListSecretsForMemberClusterResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the secret belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "Cluster represents which cluster the services belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced secret.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "The name use to search specific secret", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusters/{cluster}/namespaces/{namespace}/services": { + "get": { + "summary": "ListServicesForMemberCluster will list all services by given instance, cluster and namespace", + "operationId": "Core_ListServicesForMemberCluster", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListServicesForMemberClusterResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "Cluster represents which cluster the services belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "kind", + "description": "The kind of service.\nIf the kind is Deployment,\nthis presents the name of the deployment.\n\n - Deployment: A Deployment provides declarative updates for Pods and ReplicaSets.\n - StatefulSet: StatefulSet is the workload API object used to manage stateful\napplications.\n - DaemonSet: A DaemonSet ensures that all (or some) Nodes run a copy of a Pod.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Deployment", + "StatefulSet", + "DaemonSet" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "Name of kind.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "name", + "description": "Name stands for service name, used for fuzzy search.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the service list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the service list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "type", + "description": "Type is a array used for frontend filter.\nUse examples: type=CLUSTER_IP&type=NODE_PORT.\n\n - SERVICE_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - ClusterIP: ClusterIP means a service will only be accessible inside the cluster, via\nthe cluster IP.\n - NodePort: NodePort means a service will be exposed on one port of every node, in\naddition to 'ClusterIP' type.\n - LoadBalancer: LoadBalancer means a service will be exposed via an external load balancer\n(if the cloud provider supports it), in addition to 'NodePort' type.\n - ExternalName: ExternalName means a service consists of only a reference to an external\nname that kubedns or equivalent will return as a CNAME record, with no\nexposing or proxying of any pods involved.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "SERVICE_TYPE_UNSPECIFIED", + "ClusterIP", + "NodePort", + "LoadBalancer", + "ExternalName" + ] + }, + "collectionFormat": "multi" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/clusters/{name}": { + "delete": { + "summary": "RemoveJoinedCluster Remove the cluster that has been added to karmada", + "operationId": "Cluster_RemoveJoinedCluster", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "karmada instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "cluster name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster.metadata.name", + "description": "Name must be unique within a namespace. Is required when creating\nresources, although some resources may allow a client to request the\ngeneration of an appropriate name automatically. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.metadata.namespace", + "description": "Namespace defines the space within each name must be unique. An empty\nnamespace is equivalent to the \"default\" namespace, but \"default\" is the\ncanonical representation. Not all objects are required to be scoped to a\nnamespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/namespaces\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.metadata.uid", + "description": "UID is the unique in time and space value for this object. It is typically\ngenerated by the server on successful creation of a resource and is not\nallowed to change on PUT operations.\n\nPopulated by the system.\nRead-only.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#uids\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.metadata.resourceVersion", + "description": "An opaque value that represents the internal version of this object that\ncan be used by clients to determine when objects have changed. May be used\nfor optimistic concurrency, change detection, and the watch operation on a\nresource or set of resources. Clients must treat these values as opaque and\npassed unmodified back to the server. They may only be valid for a\nparticular resource or set of resources.\n\nPopulated by the system.\nRead-only.\nValue must be treated as opaque by clients and .\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.metadata.creationTimestamp", + "description": "CreationTimestamp is a timestamp representing the server time when this\nobject was created. It is not guaranteed to be set in happens-before order\nacross separate operations. Clients may not set this value. It is\nrepresented in RFC3339 form and is in UTC.\n\nPopulated by the system.\nRead-only.\nNull for lists.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n+optional", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.metadata.deletionTimestamp", + "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be\ndeleted. This field is set by the server when a graceful deletion is\nrequested by the user, and is not directly settable by a client. The\nresource is expected to be deleted (no longer visible from resource lists,\nand not reachable by name) after the time in this field, once the\nfinalizers list is empty. As long as the finalizers list contains items,\ndeletion is blocked. Once the deletionTimestamp is set, this value may not\nbe unset or be set further into the future, although it may be shortened or\nthe resource may be deleted prior to this time. For example, a user may\nrequest that a pod is deleted in 30 seconds. The Kubelet will react by\nsending a graceful termination signal to the containers in the pod. After\nthat 30 seconds, the Kubelet will send a hard termination signal (SIGKILL)\nto the container and after cleanup, remove the pod from the API. In the\npresence of network partitions, this object may still exist after this\ntimestamp, until an administrator or automated process can determine the\nresource is fully terminated.\nIf not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested.\nRead-only.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n+optional", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "cluster.metadata.cluster", + "description": "The name of the cluster which the object belongs to.\nThis is used to distinguish resources with same name and namespace in\ndifferent clusters. This field is not set anywhere right now and apiserver\nis going to ignore it if set in create or update request.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.metadata.workspaceAlias", + "description": "The name of the workspace which the object belongs to.\nThis is used to distinguish resources with same name and namespace in\ndifferent workspaces. This field is not set anywhere right now and\napiserver is going to ignore it if set in create or update request.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.metadata.finalizers", + "description": "Must be empty before the object is deleted from the registry. Each entry\nis an identifier for the responsible component that will remove the entry\nfrom the list. If the deletionTimestamp of the object is non-nil, entries\nin this list can only be removed.\nFinalizers may be processed and removed in any order. Order is NOT enforced\nbecause it introduces significant risk of stuck finalizers.\nfinalizers is a shared field, any actor with permission can reorder it.\nIf the finalizer list is processed in order, then this can lead to a situation\nin which the component responsible for the first finalizer in the list is\nwaiting for a signal (field value, external system, or other) produced by a\ncomponent responsible for a finalizer later in the list, resulting in a deadlock.\nWithout enforced ordering finalizers are free to order amongst themselves and\nare not vulnerable to ordering changes in the list.\n+optional\n+patchStrategy=merge", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.spec.provider", + "description": "Provider represents the cloud provider name of the member cluster.\n\n - GENERIC: Generic\nGENERIC indicates other providers\n - DAOCLOUD_KUBESPRAY: DaoCloud\nDAOCLOUD_KUBESPRAY indicates a provider of DaoCloud's KubeSpray Engine\n - DAOCLOUD_CLUSTER_API: DAOCLOUD_CLUSTER_API indicates a provider of DaoCloud's Cluster API Engine\n - DAOCLOUD_DCE4: DAOCLOUD_DCE4 indicates a provider of DaoCloud's DCE4 Engine\n - REDHAT_OPENSHIFT4: OverSea Distribtion\nREDHAT_OPENSHIFT4 indicates a provider of RedHat Openshift4\n - SUSE_RANCHER: SUSE_RANCHER indicates a provider of SUSE Rancher\n - VMWARE_TANZU: VMWARE_TANZU indicates a provider of VMware Tanzu\n - AWS_EKS: Public Cloud\nAWS_EKS indicates a provider of AWS EKS\n - ALIYUN_ACK: ALIYUN_ACK indicates a provider of Aliyun ACK\n - TENCENT_TKE: TENCENT_TKE indicates a provider of Tencent TKE.\n - HUAWEI_CCE: TENCENT_TKE indicates a provider of Huawei CCE.\n - MICROSOFT_AZURE: MICROSOFT_AZURE=11; indicates a provider of Microsoft Azure.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "GENERIC", + "DAOCLOUD_KUBESPRAY", + "DAOCLOUD_CLUSTER_API", + "DAOCLOUD_DCE4", + "REDHAT_OPENSHIFT4", + "SUSE_RANCHER", + "VMWARE_TANZU", + "AWS_EKS", + "ALIYUN_ACK", + "TENCENT_TKE", + "HUAWEI_CCE", + "MICROSOFT_AZURE" + ], + "default": "GENERIC" + }, + { + "name": "cluster.spec.apiEndpoint", + "description": "The API endpoint of the member cluster. This can be a hostname,\nhostname:port, IP or IP:port.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.spec.region", + "description": "Region represents the region of the member cluster locate in.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.spec.zone", + "description": "Zone represents the zone of the member cluster locate in.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.spec.roles", + "description": "Roles represents the roles of cluster.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "cluster.spec.managedBy", + "description": "ManagedBy is used for worker cluster to show\ncluster is controlled by.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.spec.aliasName", + "description": "AliasName represents the alias of the cluster.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.spec.secretRef.name", + "description": "Name is the name of resource being referenced.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.spec.secretRef.namespace", + "description": "Namespace is the namespace for the resource being referenced.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.spec.secretRef.resourceVersion", + "description": "ResourceVersion is the version of resource being referenced.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.status.kubernetesVersion", + "description": "KubernetesVersion represents version of the member cluster.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.status.kubeSystemID", + "description": "KubeSystemId represents the uuid of sub cluster kube-system namespace.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.status.serviceCIDR", + "description": "ServiceCIDR represents the service network CIDR.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.status.podCIDR", + "description": "PodCIDR represents the pod network CIDR.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster.status.phase", + "description": "Condition represents the status of the member cluster.\n\n - CLUSTER_PHASE_UNSPECIFIED: The cluster state is unspecified.\n - UNKNOWN: The cluster state is unknown.\n - CREATING: The cluster is being created.\n - RUNNING: The cluster is running.\n - UPDATING: The cluster is updating.\n - DELETING: The cluster is being deleted.\n - FAILED: The cluster operations failed.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "CLUSTER_PHASE_UNSPECIFIED", + "UNKNOWN", + "CREATING", + "RUNNING", + "UPDATING", + "DELETING", + "FAILED" + ], + "default": "CLUSTER_PHASE_UNSPECIFIED" + }, + { + "name": "cluster.status.cpuUsage", + "description": "The cpu usage of the member cluster.", + "in": "query", + "required": false, + "type": "number", + "format": "double" + }, + { + "name": "cluster.status.memoryUsage", + "description": "The memory usage of the member cluster.", + "in": "query", + "required": false, + "type": "number", + "format": "double" + }, + { + "name": "cluster.status.proxyMode", + "description": "ProxyMode represents the kube-proxy mode of the member cluster.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + }, + "post": { + "summary": "JoinCluster join the kpanda cluster to karmada.", + "operationId": "Cluster_JoinCluster", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "karmada instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "cluster name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "cluster": { + "$ref": "#/definitions/v1alpha1Cluster", + "title": "the joined member cluster" + } + }, + "title": "Join cluster into karamada control plane," + } + } + ], + "tags": [ + "Cluster" + ] + }, + "put": { + "summary": "UpdateJoinedCluster Update the cluster that has been added to karmada", + "operationId": "Cluster_UpdateJoinedCluster", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ClusterResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "karmada instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "cluster name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "cluster": { + "$ref": "#/definitions/v1alpha1Cluster", + "title": "the joined member cluster" + } + }, + "title": "Join cluster into karamada control plane," + } + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/configmaps": { + "get": { + "summary": "ListInstanceMaps lists all the configmaps", + "operationId": "Core_ListInstanceConfigMaps", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListConfigMapsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the configmap belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced ConfigMap.\nThis field is required in all cases.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "name", + "description": "name is used for query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/crd-groups": { + "get": { + "summary": "ListCustomResourceDefinitionGroups lists all groups of customResourceDefinitions in the specified cluster", + "operationId": "Apiextensions_ListCustomResourceDefinitionGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListCustomResourceDefinitionGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster to request", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/cronjobs": { + "get": { + "summary": "ListClusterCronJobs lists instance cronJobs under the namespaces of a\nspecific cluster", + "operationId": "Batch_ListInstanceCronJobs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstanceCronJobsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified service belongs to.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Status represents the current state of a job.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "name", + "description": "Name of the job.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzyName", + "description": "FuzzyName is used to fuzzy search by multiple parameters including name.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/customresourcedefinitions": { + "get": { + "summary": "ListCustomResourceDefinitions lists customResourceDefinitions in the specified cluster", + "operationId": "Apiextensions_ListCustomResourceDefinitions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListCustomResourceDefinitionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster cluster to be queried", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name search the custom resource definitions fo name", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "status", + "description": "Status search the custom resource definitions fo status", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "group", + "description": "Group is to filter customResourceDefinitions by group.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzyName", + "description": "FuzzyName is used to fuzzy search by multiple parameters including name.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + }, + "post": { + "summary": "CreateCustomResourceDefinition creates a customResourceDefinition to the\nsystem by given customResourceDefinition data", + "operationId": "Apiextensions_CreateCustomResourceDefinition", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateCustomResourceDefinitionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster the specified customResourceDefinition belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the customResourceDefinition YAML details." + } + }, + "title": "CreateCustomResourceDefinitionRequest represents post request to a\ncustomResourceDefinition" + } + } + ], + "tags": [ + "Apiextensions" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/customresourcedefinitions/{name}": { + "get": { + "summary": "GetCustomResourceDefinition gets a customResourceDefinition from\nthe system by given customResourceDefinition name", + "operationId": "Apiextensions_GetCustomResourceDefinition", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CustomResourceDefinition" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResourceDefinition belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResourceDefinition.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + }, + "delete": { + "summary": "DeleteCustomResourceDefinition deletes a customResourceDefinition from the\nsystem by given customResourceDefinition name", + "operationId": "Apiextensions_DeleteCustomResourceDefinition", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster the specified customResourceDefinition belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name is the metadata.name of the referenced customResourceDefinition.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + }, + "put": { + "summary": "UpdateCustomResourceDefinition updates a customResourceDefinition from the\nsystem by given customResourceDefinition name", + "operationId": "Apiextensions_UpdateCustomResourceDefinition", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateCustomResourceDefinitionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster the specified customResourceDefinition belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents for the resource name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the customResourceDefinition YAML details." + } + }, + "title": "UpdateCustomResourceDefinitionRequest represents put request to a\ncustomResourceDefinition" + } + } + ], + "tags": [ + "Apiextensions" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/customresourcedefinitions/{name}/json": { + "get": { + "summary": "GetCustomResourceDefinitionJSON gets a customResourceDefinition json from\nthe system by given customResourceDefinition name", + "operationId": "Apiextensions_GetCustomResourceDefinitionJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetCustomResourceDefinitionJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResourceDefinition belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResourceDefinition.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/deployments": { + "get": { + "summary": "ListInstanceDeployments lists one instance all namespace's deployments", + "operationId": "Apps_ListInstanceDeployments", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstanceDeploymentsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Phase represents the phase of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Apps" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/descheduler": { + "get": { + "summary": "GetInstanceDescheduler get instance descheduler configuration", + "operationId": "Instance_GetInstanceDescheduler", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetInstanceDeschedulerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Instance" + ] + }, + "put": { + "summary": "UpdateInstanceDescheduler Update instance descheduler configuration", + "operationId": "Instance_UpdateInstanceDescheduler", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Descheduler enabled" + }, + "timeout": { + "$ref": "#/definitions/v1alpha1DeschedulerTimeout", + "title": "Descheduler timeput" + } + } + } + } + ], + "tags": [ + "Instance" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/events": { + "get": { + "summary": "ListInstanceEvents lists all events in the specified cluster,\nregardless of namespace.", + "operationId": "Core_ListInstanceEvents", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstanceEventsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance the events belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "type", + "description": "Type is used for query, showing events of specified type.\nUse example: type=WARNING&type=NORMAL.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ] + }, + "collectionFormat": "multi" + }, + { + "name": "kind", + "description": "Kind is used for query, showing events of specified involvedObject kind,\ne.g. Node.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "name", + "description": "Name is used for query, showing events of specified involvedObject name,\ne.g. node‘s name when kind is Node.\n+optional", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/events/kinds": { + "get": { + "summary": "ListInstanceEventKinds lists all involvedObject's kinds of events in the\nspecified cluster, regardless of namespace.", + "operationId": "Core_ListInstanceEventKinds", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstanceEventKindsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance the events belongs to.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/failover": { + "get": { + "summary": "GetInstanceFailover get instance Failover configuration", + "operationId": "Instance_GetInstanceFailover", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetInstanceFailoverResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Instance" + ] + }, + "put": { + "summary": "UpdateInstanceFailover Update instance Failover configuration", + "operationId": "Instance_UpdateInstanceFailover", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Failover enabled" + }, + "timeout": { + "$ref": "#/definitions/v1alpha1FailoverTimeout", + "title": "Failover timeout" + } + } + } + } + ], + "tags": [ + "Instance" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/gvr/{group}/{version}/namespaces/{namespace}/{resource}": { + "get": { + "summary": "ListCustomResources lists customResources of namespaced scope from the\nsystem", + "operationId": "Apiextensions_ListCustomResources", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListCustomResourcesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResources belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResources.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResources.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the CustomResources belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResources, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "name is used for query.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "kind", + "description": "kind represents the resource kind of CustomResources.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + }, + "post": { + "summary": "CreateCustomResource creates a customResource of namespaced scope to the\nsystem by given customResource data", + "operationId": "Apiextensions_CreateCustomResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateCustomResourceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the CustomResource YAML details." + } + }, + "title": "CreateCustomResourceRequest represents create request to create one\nCustomResource of namespaced scope" + } + } + ], + "tags": [ + "Apiextensions" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/gvr/{group}/{version}/namespaces/{namespace}/{resource}/{name}": { + "get": { + "summary": "GetCustomResource gets a customResource of namespaced scope from\nthe system", + "operationId": "Apiextensions_GetCustomResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CustomResource" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResource.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + }, + "delete": { + "summary": "DeleteCustomResource deletes a customResource of namespaced scope from the\nsystem by given customResource name", + "operationId": "Apiextensions_DeleteCustomResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResource.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + }, + "put": { + "summary": "UpdateCustomResource updates a customResource of namespaced scope from the\nsystem by given customResource name", + "operationId": "Apiextensions_UpdateCustomResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateCustomResourceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the CustomResource YAML details." + } + }, + "title": "UpdateCustomResourceRequest represents update request to update one\nCustomResource of namespaced scope" + } + } + ], + "tags": [ + "Apiextensions" + ] + }, + "patch": { + "summary": "PatchCustomResource patches a customResource of cluster scope from\nthe system by given customResource name", + "operationId": "Apiextensions_PatchCustomResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PatchCustomResourceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "patchType": { + "$ref": "#/definitions/PatchCustomResourceRequestPatchType", + "description": "The patch type for patching the resources." + }, + "data": { + "type": "string", + "description": "The data field is the CustomResource YAML details." + }, + "subResources": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "title": "PatchCustomResourceRequest represents patch request to update one\nCustomResource of cluster scope" + } + } + ], + "tags": [ + "Apiextensions" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/gvr/{group}/{version}/namespaces/{namespace}/{resource}/{name}/json": { + "get": { + "summary": "GetCustomResourceJSON gets a customResource of namespaced scope json from\nthe system", + "operationId": "Apiextensions_GetCustomResourceJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetCustomResourceJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResource.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/gvr/{group}/{version}/{resource}": { + "get": { + "summary": "ListClusterCustomResources lists customResources of cluster scope", + "operationId": "Apiextensions_ListClusterCustomResources", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListClusterCustomResourcesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResources belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResources.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResources.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResources, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "name is used for query.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "fuzzyName", + "description": "FuzzyName is used to fuzzy search by multiple parameters including name.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "kind", + "description": "kind represents the resource kind of CustomResources.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + }, + "post": { + "summary": "CreateClusterCustomResource creates a customResource of cluster scope to\nthe system by given customResource data", + "operationId": "Apiextensions_CreateClusterCustomResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateClusterCustomResourceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the CustomResource YAML details." + } + }, + "title": "CreateClusterCustomResourceRequest represents create request to create one\nCustomResource of cluster scope" + } + } + ], + "tags": [ + "Apiextensions" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/gvr/{group}/{version}/{resource}/{name}": { + "get": { + "summary": "GetClusterCustomResource gets a customResource of cluster scope", + "operationId": "Apiextensions_GetClusterCustomResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CustomResource" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResource.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + }, + "delete": { + "summary": "DeleteClusterCustomResource deletes a customResource of cluster scope from\nthe system by given customResource name", + "operationId": "Apiextensions_DeleteClusterCustomResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResource.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + }, + "put": { + "summary": "UpdateClusterCustomResource updates a customResource of cluster scope from\nthe system by given customResource name", + "operationId": "Apiextensions_UpdateClusterCustomResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateClusterCustomResourceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the CustomResource YAML details." + } + }, + "title": "UpdateClusterCustomResourceRequest represents update request to update one\nCustomResource of cluster scope" + } + } + ], + "tags": [ + "Apiextensions" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/gvr/{group}/{version}/{resource}/{name}/json": { + "get": { + "summary": "GetClusterCustomResourceJSON gets a customResource json of cluster scope", + "operationId": "Apiextensions_GetClusterCustomResourceJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetClusterCustomResourceJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the CustomResource belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "group", + "description": "Group represents the resource group of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "version", + "description": "Version represents the resource version of CustomResource.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resource", + "description": "Resource represents the resource name of CustomResource, which is plural.\nYou can find it in plural field of related CRD definition.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of CustomResource.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apiextensions" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/ingresses": { + "get": { + "summary": "ListInstanceIngresses lists all ingresses in the specified instance.", + "operationId": "Networking_ListInstanceIngresses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstanceIngressesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster is the name of the cluster, must be specified,\nwill return all the ingress of the cluster.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is the number of pages at the beginning.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the number of every page displayed.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy defines sort field, please see message kairship.io.api.types.SortBy.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy defines the type of sort, default type asc, can also specify desc.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "name", + "description": "Name is the name of the ingress.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzyName", + "description": "FuzzyName is used to fuzzy search by multiple parameters including name.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Networking" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/jobs": { + "get": { + "summary": "ListInstanceJobs list jobs of a karmada instance", + "operationId": "Batch_ListInstanceJobs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstanceJobsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified service belongs to.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Status represents the current state of a job.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "name", + "description": "Name of the job.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzyName", + "description": "FuzzyName is used to fuzzy search by multiple parameters including name.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/kubeconfig": { + "post": { + "summary": "CreateInstanceAdminKubeConfig create kubeconfig of the karmada instance", + "operationId": "Instance_CreateInstanceAdminKubeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateInstanceKubeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "expirationSeconds": { + "type": "integer", + "format": "int32", + "description": "ExpirationSeconds is the requested duration of validity of the request." + } + }, + "title": "CreateInstanceKubeConfigRequest defines params of create karmada instance kubeConfig" + } + } + ], + "tags": [ + "Instance" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/member-clusters/{cluster}/deployments": { + "get": { + "summary": "ListMemberClusterDeployments lists deployments of member cluster of karmada instance.", + "operationId": "Apps_ListMemberClusterAllDeployments", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListMemberClusterDeploymentsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "cluster represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Apps" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/member-clusters/{cluster}/ingresses": { + "get": { + "summary": "ListMemberClusterAllIngresses lists ingresses of member cluster of karmada instance.", + "operationId": "Networking_ListMemberClusterAllIngresses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListMemberClusterIngressesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the ingress belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "cluster represents which karmada instance the ingress belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the ingress belongs to.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Networking" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/member-clusters/{cluster}/namespaces/{namespace}/deployments": { + "get": { + "summary": "ListMemberClusterDeployments lists deployments of member cluster of karmada instance.", + "operationId": "Apps_ListMemberClusterDeployments", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListMemberClusterDeploymentsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "cluster represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Apps" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/member-clusters/{cluster}/namespaces/{namespace}/deployments/{name}:promote": { + "post": { + "summary": "PromoteMemberClusterDeployment promote specified deployment of member cluster to multi-cloud deployment.", + "operationId": "Apps_PromoteMemberClusterDeployment", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "Instclusterance represents which karmada member cluster the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of deployment", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "services": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Service is the deployment dependency resource" + } + }, + "title": "PromoteMemberClusterDeploymentRequest the request of promote deployment of member cluster" + } + } + ], + "tags": [ + "Apps" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/member-clusters/{cluster}/namespaces/{namespace}/ingresses": { + "get": { + "summary": "ListMemberClusterIngresses lists ingresses of member cluster of karmada instance.", + "operationId": "Networking_ListMemberClusterIngresses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListMemberClusterIngressesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the ingress belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "cluster represents which karmada instance the ingress belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the ingress belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Networking" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/member-clusters/{cluster}/namespaces/{namespace}/ingresses/{name}:promote": { + "post": { + "summary": "PromoteMemberClusterIngress promote specified ingress of member cluster to multi-cloud ingress.", + "operationId": "Networking_PromoteMemberClusterIngress", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the ingress belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "Instclusterance represents which karmada member cluster the ingress belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the ingress belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of ingress", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + } + ], + "tags": [ + "Networking" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/member-clusters/{cluster}/namespaces/{namespace}/services": { + "get": { + "summary": "ListMemberClusterServices lists services of member cluster of karmada instance.", + "operationId": "Core_ListMemberClusterServices", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListMemberClusterServicesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the serivce belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "cluster represents which karmada instance the serivce belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the serivce belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "kind", + "description": "The kind of service.\nIf the kind is Deployment,\nthis presents the name of the deployment.\n\n - Deployment: A Deployment provides declarative updates for Pods and ReplicaSets.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Deployment" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "Name of kind.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/member-clusters/{cluster}/namespaces/{namespace}/services/{name}:promote": { + "post": { + "summary": "PromoteMemberClusterService promote specified service of member cluster to multi-cloud service.", + "operationId": "Core_PromoteMemberClusterService", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "Instclusterance represents which karmada member cluster the service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of service", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/member-clusters/{cluster}/namespacesummary": { + "get": { + "operationId": "Core_ListMemberClusterNamespaceSummary", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListMemberClusterNamespaceSummaryResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the namespace summary list belong to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/member-clusters/{cluster}/services": { + "get": { + "summary": "ListMemberClusterAllServices lists services of member cluster of karmada instance.", + "operationId": "Core_ListMemberClusterAllServices", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListMemberClusterServicesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the serivce belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "cluster", + "description": "cluster represents which karmada instance the serivce belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the serivce belongs to.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "kind", + "description": "The kind of service.\nIf the kind is Deployment,\nthis presents the name of the deployment.\n\n - Deployment: A Deployment provides declarative updates for Pods and ReplicaSets.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Deployment" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "Name of kind.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/metric": { + "get": { + "operationId": "Insight_QueryMetric", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PrometheusQueryResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "query", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "time", + "description": "Optional, current server time is used if the time parameter is omitted.", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + } + ], + "tags": [ + "Insight" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces": { + "get": { + "summary": "ListNamespaces gets all the namespaces of given cluster", + "operationId": "Core_ListNamespaces", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListNamespacesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Clusters is to filter namespaces by cluster names", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name is to filter namespaces by namespace name", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the job list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the job list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Core" + ] + }, + "post": { + "summary": "CreateNamespace creates a namespace from the system by given namespace name", + "operationId": "Core_CreateNamespace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateNamespaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified namespace belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the service YAML details." + } + }, + "description": "Get Create Namespace information." + } + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/aggregationresource": { + "post": { + "summary": "CreateAggregationResource create multi resource for kairship.", + "operationId": "Aggregation_CreateAggregationResource", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1AggregationResource" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified propagation policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/v1alpha1AggregationResource" + }, + "gvr": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1GVR" + }, + "description": "GVR represents the resource gvr of CustomResources." + } + } + } + } + ], + "tags": [ + "Aggregation" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/configmaps": { + "get": { + "summary": "ListConfigMaps lists configmaps in the specified instance and namespace.", + "operationId": "Core_ListConfigMaps", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListConfigMapsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the configmap belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced ConfigMap.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "name", + "description": "name is used for query.\n+optional", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "post": { + "summary": "CreateConfigMap creates a configMap under the namespaces of a specific\ninstance", + "operationId": "Core_CreateConfigMap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateConfigMapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified configmap belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in yaml", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the ConfigMap YAML details" + } + } + } + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/configmaps/{name}": { + "get": { + "summary": "GetConfigMap gets a configMap under the namespaces of a specific instance", + "operationId": "Core_GetConfigMap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ConfigMap" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the configmap belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced ConfigMap.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "delete": { + "summary": "DeleteConfigMap deletes a configMap under the namespaces of a specific\ninstance", + "operationId": "Core_DeleteConfigMap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the configmap belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced ConfigMap.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name is the metadata.name of the referenced ConfigMap.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "put": { + "summary": "UpdateConfigMap updates a configMap under the namespaces of a specific\ninstance", + "operationId": "Core_UpdateConfigMap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateConfigMapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified configmap belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced ConfigMap.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "data The data field is the ConfigMap YAML details" + } + } + } + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/configmaps/{name}/json": { + "get": { + "summary": "GetConfigMapJSON gets a configMap json under the namespaces of a specific\ninstance", + "operationId": "Core_GetConfigMapJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetConfigMapJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the configmap belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced ConfigMap.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "patch": { + "summary": "PatchConfigMap patchs a configMap under the namespaces of a specific\ninstance", + "operationId": "Core_PatchConfigMap", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PatchConfigMapResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the configmap belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced ConfigMap.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "The data is the YAML details" + } + } + } + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/cronjobs": { + "get": { + "summary": "ListCronJobs Lists cronJobs in a specific instance", + "operationId": "Batch_ListCronJobs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListCronJobsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of job to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Phase represents the phase of job to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Batch" + ] + }, + "post": { + "summary": "CreateCronjob create job to a karmada instance.", + "operationId": "Batch_CreateCronJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateCronJobResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified CronJob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in yaml", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the CronJob YAML details" + } + } + } + } + ], + "tags": [ + "Batch" + ] + }, + "put": { + "summary": "UpdateCronJob update cronjob to a karmada instance.", + "operationId": "Batch_UpdateCronJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateCronJobResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified CronJob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in yaml", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the CronJob YAML details" + } + } + } + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/cronjobs/{name}": { + "get": { + "summary": "GetCronJob gets a cronJob under the namespaces of a specific instance", + "operationId": "Batch_GetCronJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CronJob" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the cronjob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the cronjob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Cronjob name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Batch" + ] + }, + "delete": { + "summary": "DeleteCronJob deletes a cronJob under the namespaces of a specific instance", + "operationId": "Batch_DeleteCronJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the cronjob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the cronjob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Cronjob name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/cronjobs/{name}/json": { + "get": { + "summary": "GetCronJobJSON get a cronjob json data under the namespaces of a karmada instance.", + "operationId": "Batch_GetCronJobJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetCronJobJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the CronJob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced CronJob.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/cronjobs/{name}:pause": { + "post": { + "summary": "PauseCronJob pauses a cronjob under the namespaces of a specific\ncluster", + "operationId": "Batch_PauseCronJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PauseCronJobResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the cronjob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the cronjob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of cronjob", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "paused": { + "type": "boolean", + "description": "Paused indicates that the cronjob is paused." + } + }, + "title": "PauseCronJobRequest the request of pause cronjob" + } + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/cronjobs/{name}:resume": { + "post": { + "summary": "ResumeCronJob resumes a cronjob under the namespaces of a specific\ninstance", + "operationId": "Batch_ResumeCronJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ResumeCronJobResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the cronjob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the cronjob belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of cronjob", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "paused": { + "type": "boolean", + "description": "Paused indicates that the cronjob is paused." + } + }, + "title": "ResumeCronJobRequest the request of resume CronJob" + } + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/deployments": { + "get": { + "summary": "ListDeployments lists deployments", + "operationId": "Apps_ListDeployments", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListDeploymentsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Phase represents the phase of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Apps" + ] + }, + "post": { + "summary": "CreateDeployment creates a deployment under the namespaces of a specific\ninstance", + "operationId": "Apps_CreateDeployment", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateDeploymentResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in yaml", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the Deployment YAML details" + } + } + } + } + ], + "tags": [ + "Apps" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/deployments/{name}": { + "get": { + "summary": "GetDeployment gets a deployment under the namespaces of a specific cluster", + "operationId": "Apps_GetDeployment", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1Deployment" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the workload belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the workload belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of deployment to belongs to.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apps" + ] + }, + "delete": { + "summary": "DeleteDeployment deletes a deployment under the namespaces of a specific\ninstance", + "operationId": "Apps_DeleteDeployment", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of deployment", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apps" + ] + }, + "put": { + "summary": "UpdateDeployment update a deployment under the namespaces of a\nspecific instance", + "operationId": "Apps_UpdateDeployment", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateDeploymentResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified Deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in yaml", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name of the deployment.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the Deployment YAML details" + } + } + } + } + ], + "tags": [ + "Apps" + ] + }, + "patch": { + "summary": "PatchDeployment patches a deployment under the namespaces of a\nspecific instance", + "operationId": "Apps_PatchDeployment", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PatchDeploymentResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "The namespace which the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name of the deployment.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The json data of patch." + } + }, + "description": "The request of patching deployment." + } + } + ], + "tags": [ + "Apps" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/deployments/{name}/json": { + "get": { + "summary": "GetDeploymentJSON gets deployment by JSON under the namespaces of a specific\ninstance", + "operationId": "Apps_GetDeploymentJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetDeploymentJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the configmap belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced Deployment.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Apps" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/deployments/{name}:pause": { + "post": { + "summary": "PauseDeployment pauses a deployment under the namespaces of a specific\ninstance", + "operationId": "Apps_PauseDeployment", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PauseDeploymentResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of deployment", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + } + ], + "tags": [ + "Apps" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/deployments/{name}:restart": { + "post": { + "summary": "RestartDeployment restarts a deployment under the namespaces of a specific\ninstance", + "operationId": "Apps_RestartDeployment", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1RestartDeploymentResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of deployment", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + } + ], + "tags": [ + "Apps" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/deployments/{name}:resume": { + "post": { + "summary": "ResumeDeployment resumes a deployment under the namespaces of a specific\ninstance", + "operationId": "Apps_ResumeDeployment", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ResumeDeploymentResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of deployment", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + } + ], + "tags": [ + "Apps" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/ingresses": { + "get": { + "summary": "ListIngresses lists all ingresses in the specified instance and namespace.", + "operationId": "Networking_ListIngresses", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListIngressesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance is the name of the instance, return all the ingress of the cluster\nbe specified.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace specified the namespace of ingress.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is the number of pages at the beginning.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the number of every page displayed.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy defines sort field, please see message kairship.io.api.types.SortBy.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy defines the type of sort, default type asc, can also specify desc.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "name", + "description": "Name is the name of the ingress.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzyName", + "description": "FuzzyName is used to fuzzy search by multiple parameters including name.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Networking" + ] + }, + "post": { + "summary": "CreateIngress creates a ingress in the specified cluster and namespace.", + "operationId": "Networking_CreateIngress", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateIngressResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance is the name of the instance, return all the ingress of the cluster\nbe specified.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace specified the namespace of ingress.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the ingress YAML details." + } + }, + "title": "CreateIngressRequest the request of create cluster ingresses" + } + } + ], + "tags": [ + "Networking" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/ingresses/{name}": { + "get": { + "summary": "GetIngress gets the ingress by namespace and name.", + "operationId": "Networking_GetIngress", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1Ingress" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster is the name of the cluster, return all the ingress of the cluster\nbe specified.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace specified the namespace of ingress.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name is the name of the ingress.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Networking" + ] + }, + "delete": { + "summary": "DeleteIngress deletes the ingress by name.", + "operationId": "Networking_DeleteIngress", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster is the name of the cluster, return all the ingress of the cluster\nbe specified.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace specified the namespace of ingress.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name is the name of ingress.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Networking" + ] + }, + "put": { + "summary": "UpdateIngress updates the specified ingress, the body must be a JSON\nstring.", + "operationId": "Networking_UpdateIngress", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateIngressResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance is the name of the instance, return all the ingress of the cluster\nbe specified.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace specified the namespace of ingress.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name is the name of ingress.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the ingress YAML details." + } + }, + "title": "UpdateIngressRequest the request of update cluster ingresses" + } + } + ], + "tags": [ + "Networking" + ] + }, + "patch": { + "summary": "PatchIngress patches the specified ingress, the body must be a JSON string.", + "operationId": "Networking_PatchIngress", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PatchIngressResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance is the name of the cluster, return all the ingress of the cluster\nbe specified.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace specified the namespace of ingress.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name represents for the resource name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The data defines the update details of ingress." + } + }, + "title": "PatchIngressRequest the request of patch cluster ingresses" + } + } + ], + "tags": [ + "Networking" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/ingresses/{name}/json": { + "get": { + "summary": "GetIngressJSON gets the ingress by namespace and name, returns a string in JSON\nformat.", + "operationId": "Networking_GetIngressJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetIngressJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance is the name of the instance, return all the ingress of the cluster\nbe specified.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace specified the namespace of ingress.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name is the name of the ingress.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "stable", + "description": "If stable is true, the v1 version under the corresponding package will be returned.", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Networking" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/jobs": { + "get": { + "summary": "ListJobs lists jobs in a karmada instance", + "operationId": "Batch_ListJobs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListJobsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of job to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Phase represents the phase of job to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Batch" + ] + }, + "post": { + "summary": "CreateJob create job to a karmada instance.", + "operationId": "Batch_CreateJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateJobResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified Job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in yaml", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the Job YAML details" + } + } + } + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/jobs/{name}": { + "get": { + "summary": "GetJob gets a job under the namespaces of a karmada instance.", + "operationId": "Batch_GetJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1Job" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name of the job.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Batch" + ] + }, + "delete": { + "summary": "DeleteJob deletes a job under the namespaces of a karmada instance.", + "operationId": "Batch_DeleteJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name of the job.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/jobs/{name}/json": { + "get": { + "summary": "GetJobJSON get a job json data under the namespaces of a karmada instance.", + "operationId": "Batch_GetJobJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetJobJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the Job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced Job.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/jobs/{name}:restart": { + "post": { + "summary": "RestartJob restarts a job under the namespaces of a karmada instance.", + "operationId": "Batch_RestartJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1RestartJobResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified job belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name of the job.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string", + "description": "ResourceVersion of the job." + } + }, + "description": "Get restart job information." + } + } + ], + "tags": [ + "Batch" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/overridepolicies": { + "get": { + "summary": "ListOverridePolicies return all OverridePolicy for a given namespace and instance", + "operationId": "Policy_ListOverridePolicies", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListOverridePoliciesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "karmada instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced pod.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "kind", + "description": "The kind of service.\nIf the kind is Deployment,\nthis presents the name of the deployment.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "kindName", + "description": "Name of kind.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "name", + "description": "Name stands for service name, used for fuzzy search.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "apiVersion", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "post": { + "summary": "CreateOverridePolicy creates an override policy under the namespaces of a specific instance", + "operationId": "Policy_CreateOverridePolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateOverridePolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified override policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in yaml", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the OverridePolicy YAML details" + } + } + } + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/overridepolicies/{name}": { + "get": { + "summary": "GetOverridePolicy gets override policy under the namespaces of a specific instance", + "operationId": "Policy_GetOverridePolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetOverridePolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the override belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced OverridePolicy.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "delete": { + "summary": "DeleteOverridePolicy deletes an override policy under the namespaces of a specific instance", + "operationId": "Policy_DeleteOverridePolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the override policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the override policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of override policy", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "put": { + "summary": "UpdateOverridePolicy patches an override policy under the namespaces of a specific instance", + "operationId": "Policy_UpdateOverridePolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateOverridePolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the override policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "The namespace which the override policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name of the override policy.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The json data of updating." + } + }, + "description": "The request of updating deployment." + } + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/overridepolicies/{name}/json": { + "get": { + "summary": "GetOverridePolicyJSON gets override policy by JSON under the namespaces of a specific instance", + "operationId": "Policy_GetOverridePolicyJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/apipolicyv1alpha1GetOverridePolicyJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the override belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced OverridePolicy.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/propagationpolicies": { + "get": { + "summary": "ListPropagationPolicies return all PropagationPolicy for a given instance and namespace", + "operationId": "Policy_ListPropagationPolicies", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListPropagationPoliciesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "karmada instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced pod.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "kind", + "description": "The kind of service.\nIf the kind is Deployment,\nthis presents the name of the deployment.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "kindName", + "description": "Name of kind.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "name", + "description": "Name stands for service name, used for fuzzy search.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "apiVersion", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "post": { + "summary": "CreatePropagationPolicy creates a propagation policy under the namespaces of a specific instance", + "operationId": "Policy_CreatePropagationPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreatePropagationPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified propagation policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in yaml", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the PropagationPolicy YAML details" + } + } + } + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/propagationpolicies/{name}": { + "get": { + "summary": "GetPropagationPolicy gets propagation policy under the namespaces of a specific instance", + "operationId": "Policy_GetPropagationPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetPropagationPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the propagation belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced PropagationPolicy.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "delete": { + "summary": "DeletePropagationPolicy deletes a propagation policy under the namespaces of a specific instance", + "operationId": "Policy_DeletePropagationPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the propagation policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the propagation policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents the name of propagation policy", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + }, + "put": { + "summary": "UpdatePropagationPolicy updates a propagation policy under the namespaces of a specific instance", + "operationId": "Policy_UpdatePropagationPolicy", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdatePropagationPolicyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the propagation policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "The namespace which the propagation policy belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name of the propagation policy.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The json data of updating." + } + }, + "description": "The request of updating deployment." + } + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/propagationpolicies/{name}/json": { + "get": { + "summary": "GetPropagationPolicyJSON gets propagation policy by JSON under the namespaces of a specific instance", + "operationId": "Policy_GetPropagationPolicyJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetPropagationPolicyJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which instance the propagation belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced PropagationPolicy.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/registries": { + "get": { + "summary": "ListRegistries returns a list of registries", + "operationId": "Image_ListRegistries", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListRegistriesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "global", + "description": "Global is to list all global registries.", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "workspaceId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Image" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/registries/{registry}/projects": { + "get": { + "summary": "ListProjects returns a list of projects of specified registry", + "operationId": "Image_ListProjects", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListProjectsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "registry", + "description": "Registry is registry name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "public", + "description": "Public is distinguish public projects and private projects.", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "workspaceId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Image" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/registries/{registry}/projects/{project}/repositories": { + "get": { + "summary": "ListRepositories returns a list of image names of specified project", + "operationId": "Image_ListRepositories", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListRepositoriesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "registry", + "description": "Registry is registry name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Project is the project to request, \"/\" is a possible value.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "fuzzyName", + "description": "FuzzyName is used to fuzzy search by multiple parameters including name.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "showArtifacts", + "description": "ShowArtifacts is to list artifacts of per image, default false.", + "in": "query", + "required": false, + "type": "boolean" + }, + { + "name": "workspaceId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Image" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/registries/{registry}/projects/{project}/repositories/{repository}/artifacts": { + "get": { + "summary": "ListArtifacts returns a list of tags of specified image", + "operationId": "Image_ListArtifacts", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListArtifactsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "registry", + "description": "Registry is registry name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "project", + "description": "Project is the project to request.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "repository", + "description": "Repository is image name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "workspaceId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Image" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/secrets": { + "get": { + "summary": "ListSecrets lists secrets", + "operationId": "Core_ListSecrets", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListSecretsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the secret belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced secret.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "The name use to search specific secret", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "post": { + "summary": "CreateSecret creates a secret under the namespaces of a specific\ninstance", + "operationId": "Core_CreateSecret", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateSecretResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the secret belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in yaml", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the Secret YAML details" + } + }, + "description": "Create Secret in the cluster." + } + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/secrets/{name}": { + "get": { + "summary": "GetSecret gets a secret under the namespaces of a specific cluster", + "operationId": "Core_GetSecret", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1Secret" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the secret belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced secret.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Secret name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "delete": { + "summary": "DeleteSecret deletes a secret under the namespaces of a specific\ninstance", + "operationId": "Core_DeleteSecret", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the secret belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced secret.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Secret name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "put": { + "summary": "UpdateSecret updates a secret under the namespaces of a\nspecific instance", + "operationId": "Core_UpdateSecret", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateSecretResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the secret belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced secret.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Secret name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the Secret YAML details" + } + }, + "description": "Update Secret in the cluster." + } + } + ], + "tags": [ + "Core" + ] + }, + "patch": { + "summary": "PatchSecret patches a secret under the namespaces of a\nspecific instance", + "operationId": "Core_PatchSecret", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PatchSecretResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the secret belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced secret.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name represents for the resource name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The data is the secret YAML details." + } + }, + "description": "Patches the current secret." + } + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/secrets/{name}/json": { + "get": { + "summary": "GetSecretJSON gets secret by JSON under the namespaces of a specific\ninstance", + "operationId": "Core_GetSecretJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetSecretJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the secret belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced secret.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Secret name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/services": { + "get": { + "summary": "ListServices lists services", + "operationId": "Core_ListServices", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListServicesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "kind", + "description": "The kind of service.\nIf the kind is Deployment,\nthis presents the name of the deployment.\n\n - Deployment: A Deployment provides declarative updates for Pods and ReplicaSets.\n - StatefulSet: StatefulSet is the workload API object used to manage stateful\napplications.\n - DaemonSet: A DaemonSet ensures that all (or some) Nodes run a copy of a Pod.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Deployment", + "StatefulSet", + "DaemonSet" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "Name of kind.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "name", + "description": "Name stands for service name, used for fuzzy search.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the service list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "orderBy", + "description": "OrderBy determines the service list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "type", + "description": "Type is a array used for frontend filter.\nUse examples: type=CLUSTER_IP&type=NODE_PORT.\n\n - SERVICE_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - ClusterIP: ClusterIP means a service will only be accessible inside the cluster, via\nthe cluster IP.\n - NodePort: NodePort means a service will be exposed on one port of every node, in\naddition to 'ClusterIP' type.\n - LoadBalancer: LoadBalancer means a service will be exposed via an external load balancer\n(if the cloud provider supports it), in addition to 'NodePort' type.\n - ExternalName: ExternalName means a service consists of only a reference to an external\nname that kubedns or equivalent will return as a CNAME record, with no\nexposing or proxying of any pods involved.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "SERVICE_TYPE_UNSPECIFIED", + "ClusterIP", + "NodePort", + "LoadBalancer", + "ExternalName" + ] + }, + "collectionFormat": "multi" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "post": { + "summary": "CreateService creates a service under the namespaces of a specific\ninstance", + "operationId": "Core_CreateService", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1CreateServiceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in\nyaml", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "Data is the Service YAML details" + } + }, + "description": "Create Service in the cluster." + } + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/services/{name}": { + "get": { + "summary": "GetService gets a service under the namespaces of a specific cluster", + "operationId": "Core_GetService", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1Service" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents for the service name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "delete": { + "summary": "DeleteService deletes a service under the namespaces of a specific\ninstance", + "operationId": "Core_DeleteService", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster represents which cluster the service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced service.\nThis field is required in all cases.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents for the service name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "put": { + "summary": "UpdateService updates a service under the namespaces of a\nspecific instance", + "operationId": "Core_UpdateService", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateServiceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents for the service name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "Data is the Service YAML details" + } + }, + "description": "Update the Service information." + } + } + ], + "tags": [ + "Core" + ] + }, + "patch": { + "summary": "PatchService patches a service under the namespaces of a\nspecific instance", + "operationId": "Core_PatchService", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PatchServiceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name represents for the resource name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The data is the service YAML details." + } + } + } + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/services/{name}/json": { + "get": { + "summary": "GetServiceJSON gets service by JSON under the namespaces of a specific\ninstance", + "operationId": "Core_GetServiceJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetServiceJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents for the service name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{namespace}/workloadservices": { + "post": { + "summary": "CreateWorkloadService creates a service under the namespaces of a specific\ninstance and auto create related propagation propagationpolicy according to\na given workload", + "operationId": "Core_CreateWorkloadService", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "When the current namespace is named, the priority is higher than that in\nworkloadService", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "kind": { + "$ref": "#/definitions/v1alpha1CreateWorkloadServiceRequestKind", + "description": "The kind of service.\nIf the kind is Deployment,\nthis presents the name of the deployment." + }, + "kindName": { + "type": "string", + "description": "Name of kind." + }, + "data": { + "type": "string", + "title": "Data is the Service YAML details" + } + }, + "description": "Create Service in the cluster." + } + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{name}": { + "get": { + "summary": "GetNamespace gets a namespace from the system by given namespace\nname", + "operationId": "Core_GetNamespace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetNamespaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster the namespace belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents for the requested namespace name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "delete": { + "summary": "DeleteNamespace deletes a namespace from the system by given namespace name", + "operationId": "Core_DeleteNamespace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified namespace belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name represents for the resource name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + }, + "put": { + "summary": "UpdateNamespace updates a namespace from the system by given namespace name", + "operationId": "Core_UpdateNamespace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateNamespaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified namespace belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name represents for the resource name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the namespace YAML details." + } + }, + "description": "Update Namespace information." + } + } + ], + "tags": [ + "Core" + ] + }, + "patch": { + "summary": "PatchNamespace patches a namespace from the system by given namespace name", + "operationId": "Core_PatchNamespace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PatchNamespaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified namespace belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "The name represents for the resource name.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the namespace YAML details." + } + } + } + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespaces/{name}/json": { + "get": { + "summary": "GetNamespaceJSON gets a namespace json from the system by given namespace\nname", + "operationId": "Core_GetNamespaceJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetNamespaceJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Cluster the namespace belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name represents for the requested namespace name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/namespacesummary": { + "get": { + "summary": "ListNamespaceSummary gets a list of namespace simple information\nfrom the system by given instance name", + "operationId": "Core_ListNamespaceSummary", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListNamespaceSummaryResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the namespace summary list belong to.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/overridepolicies": { + "get": { + "summary": "ListInstanceOverridePolicies return all OverridePolicy for a given instance", + "operationId": "Policy_ListInstanceOverridePolicies", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstanceOverridePoliciesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Phase represents the phase of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/propagationpolicies": { + "get": { + "summary": "ListInstancePropagationPolicies return all PropagationPolicy for a given instance", + "operationId": "Policy_ListInstancePropagationPolicies", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstancePropagationPoliciesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the deployment belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page is current page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size is the data number shown per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "Name represents the name of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Phase represents the phase of workloads to search", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Policy" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/range-metric": { + "get": { + "operationId": "Insight_QueryRangeMetric", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1PrometheusQueryRangeResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "query", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "start", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "end", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "step", + "in": "query", + "required": false, + "type": "number", + "format": "double" + } + ], + "tags": [ + "Insight" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/secrets": { + "get": { + "summary": "ListInstanceSecrets lists all secrets of the instance", + "operationId": "Core_ListInstanceSecrets", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListSecretsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance represents which karmada instance the secret belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "namespace", + "description": "Namespace is the metadata.namespace of the referenced secret.\nThis field is required in all cases.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "name", + "description": "The name use to search specific secret", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "SortDir determines the list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{instance}/services": { + "get": { + "summary": "ListInstanceServices lists all the services", + "operationId": "Core_ListInstanceServices", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstanceServicesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "Instance the specified service belongs to.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "Name stands for service name, used for fuzzy search.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the service list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the service list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "type", + "description": "Type is a array used for frontend filter.\nUse examples: type=CLUSTER_IP&type=NODE_PORT.\n\n - SERVICE_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - ClusterIP: ClusterIP means a service will only be accessible inside the cluster, via\nthe cluster IP.\n - NodePort: NodePort means a service will be exposed on one port of every node, in\naddition to 'ClusterIP' type.\n - LoadBalancer: LoadBalancer means a service will be exposed via an external load balancer\n(if the cloud provider supports it), in addition to 'NodePort' type.\n - ExternalName: ExternalName means a service consists of only a reference to an external\nname that kubedns or equivalent will return as a CNAME record, with no\nexposing or proxying of any pods involved.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "SERVICE_TYPE_UNSPECIFIED", + "ClusterIP", + "NodePort", + "LoadBalancer", + "ExternalName" + ] + }, + "collectionFormat": "multi" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Core" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{name}": { + "get": { + "summary": "GetInstance get the karmadadeployment cr.", + "operationId": "Instance_GetInstance", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1Instance" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "description": "name specified the instance name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Instance" + ] + }, + "delete": { + "summary": "DeleteInstance delete the karmadadeployment cr.", + "operationId": "Instance_DeleteInstance", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "description": "name specified the instance name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Instance" + ] + }, + "put": { + "summary": "UpdateInstance updates a instance specific instance name.", + "operationId": "Instance_UpdateInstance", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1UpdateInstanceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "description": "The name of the instance.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The json data of update instance." + } + }, + "description": "UpdateInstanceRequest defines reuqest params of update instance." + } + } + ], + "tags": [ + "Instance" + ] + } + }, + "/apis/kairship.io/v1alpha1/instances/{name}/json": { + "get": { + "summary": "GetInstance get the karmadadeployment cr json data.", + "operationId": "Instance_GetInstanceJSON", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1GetInstanceJSONResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "description": "name specified the instance name.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Instance" + ] + } + }, + "/apis/kairship.io/v1alpha1/kpanda-clusters": { + "get": { + "summary": "ListClusters return all cluster from kpanda.", + "operationId": "Cluster_ListClusters", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListClustersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "role", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "kubernetesVersion", + "description": "KUBERNETESVERSION cluster k8s version use to support search sub cluster at\nListClusters", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "phase", + "description": "Phases is used for filter.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "managedBy", + "description": "ManagedBy represents who manages the cluster", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "sortBy", + "description": "SortBy determines the cluster list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the cluster list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + }, + { + "name": "name", + "description": "Name of cluster.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "region", + "description": "Region represents the region of the member cluster locate in.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "provider", + "description": "Provider represents the cloud provider name of the member cluster.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "zone", + "description": "Zone represents the zone of the member cluster locate in.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "labelSelector", + "description": "LabelSelector is the format after labels.FormatLabels used to filter clusters.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fieldSelector", + "description": "FieldSelector is the format after labels.FormatLabels used to filter the clusters.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "clusterSelector", + "description": "A cluster selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "allCluster", + "description": "list all kpanda clusters", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/kairship.io/v1alpha1/registries/kangaroo": { + "get": { + "summary": "DetectKangaroo returns whether the kangaroo is installed.", + "operationId": "Image_DetectKangaroo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1DetectKangarooResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Image" + ] + } + }, + "/apis/kairship.io/v1alpha1/workspace-management/instances": { + "get": { + "summary": "ListInstances Query all instances.", + "operationId": "Workspace_ListInstances", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListInstancesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance name.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the instance list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the instance list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/kairship.io/v1alpha1/workspace-management/instances/-/actions": { + "post": { + "summary": "BindInstances Bind/UnBind an instance to a workspace.", + "operationId": "Workspace_BindInstances", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1BindInstancesAction" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha1BindInstancesAction" + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/kairship.io/v1alpha1/workspace-management/namespaces": { + "get": { + "summary": "ListNamespaceInstances List all namespaces in an instance.", + "operationId": "Workspace_ListNamespaceInstances", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListNamespaceInstancesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "instance", + "description": "instance name.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "namespace", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the instance list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the instance list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/kairship.io/v1alpha1/workspace-management/namespaces/-/actions": { + "post": { + "summary": "BindNamespaceInstances Bind/Unbind a namespace in an instance to the workspace.", + "operationId": "Workspace_BindNamespaceInstances", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1BindNamespaceInstancesAction" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha1BindNamespaceInstancesAction" + } + } + ], + "tags": [ + "Workspace" + ] + } + }, + "/apis/kairship.io/v1alpha1/workspace-management/workspaces": { + "get": { + "summary": "ListWorkspaces List all workspaces", + "operationId": "Workspace_ListWorkspaces", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListWorkspacesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspace", + "description": "workspace name.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "description": "Size per page requested.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "description": "SortBy determines the instance list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": "OrderBy determines the instance list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc" + } + ], + "tags": [ + "Workspace" + ] + } + } + }, + "definitions": { + "CronJobStatusCronJobCondition": { + "type": "object", + "properties": { + "jobName": { + "type": "string", + "description": "The name of job." + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/typesCondition" + }, + "description": "Current condition of job." + } + }, + "description": "Current condition of cronjob." + }, + "CronJobStatusCronJobState": { + "type": "string", + "enum": [ + "CRONJOB_STATE_UNSPECIFIED", + "Waiting", + "Activated", + "Stopped", + "Deleting" + ], + "default": "CRONJOB_STATE_UNSPECIFIED", + "description": "Current state of a cron job.\n\n - CRONJOB_STATE_UNSPECIFIED: CronJob is unspecified.\n - Waiting: Waiting for cronjob ready.\n - Activated: The number of pending and running pods.\n - Stopped: CronJob has stopped.\n - Deleting: CronJob is being deleted." + }, + "CustomResourceDefinitionSpecResourceScope": { + "type": "string", + "enum": [ + "RESOURCE_SCOPE_UNSPECIFIED", + "NAMESPACED", + "CLUSTER" + ], + "default": "RESOURCE_SCOPE_UNSPECIFIED", + "description": "- RESOURCE_SCOPE_UNSPECIFIED: ResourceScope is unspecified\n - NAMESPACED: Represents which namespace the belongs to.\n - CLUSTER: Cluster the specified belongs to.", + "title": "ResourceScope is an enum defining the different scopes available to a\ncustom resource" + }, + "InstanceStatusState": { + "type": "string", + "enum": [ + "INSTANCE_STATE_UNSPECIFIED", + "INSTANCE_STATE_INPROCESS", + "INSTANCE_STATE_RUNNING", + "INSTANCE_STATE_TERMINAL", + "INSTANCE_STATE_UNAVAILABLE", + "INSTANCE_STATE_UNKNOWN" + ], + "default": "INSTANCE_STATE_UNSPECIFIED", + "description": "State describe the state of instance.\n\n - INSTANCE_STATE_UNSPECIFIED: Unspecified is only a meaningless placeholder, to avoid zero not return.\n - INSTANCE_STATE_INPROCESS: Inprocess is phase karmada instances being installed.\n - INSTANCE_STATE_RUNNING: Running represents karmada instance can be used normally.\n - INSTANCE_STATE_TERMINAL: Terminal is phase karmada instance being deleted.\n - INSTANCE_STATE_UNAVAILABLE: Unavailable represents karmada instance is unusual.\n - INSTANCE_STATE_UNKNOWN: UNKNOWN represents karmada instance is unknown." + }, + "JobStatusJobState": { + "type": "string", + "enum": [ + "JOB_STATE_UNSPECIFIED", + "Waiting", + "Running", + "Completed", + "Deleting", + "Failed" + ], + "default": "JOB_STATE_UNSPECIFIED", + "description": "Current state of a job.\n\n - JOB_STATE_UNSPECIFIED: Job is unspecified.\n - Waiting: Waiting for job ready.\n - Running: Job is working.\n - Completed: Jobs has completed.\n - Deleting: Jobs is being deleted.\n - Failed: Jobs is not ready to work ." + }, + "ListNamespaceSummaryResponseScope": { + "type": "string", + "enum": [ + "SCOPE_UNSPECIFIED", + "Instance", + "Namespace" + ], + "default": "SCOPE_UNSPECIFIED", + "description": "Scope is an enum defining the different scopes available to the namespaces.\nAllowed values are `Instance` and `Namespace`." + }, + "PatchCustomResourceRequestPatchType": { + "type": "string", + "enum": [ + "PATCH_TYPE_UNSPECIFIED", + "PATCH_TYPE_JSON", + "PATCH_TYPE_MERGE", + "PATCH_TYPE_STRATEGIC_MERGE", + "PATCH_TYPE_APPLY" + ], + "default": "PATCH_TYPE_UNSPECIFIED" + }, + "PodStatusOwnedBy": { + "type": "object", + "properties": { + "kind": { + "$ref": "#/definitions/PodStatusOwnedByKind", + "description": "The kind of pod." + }, + "name": { + "type": "string", + "title": "Name is the related workload name" + } + }, + "title": "OwnedBy states which workload the pod belongs to" + }, + "PodStatusOwnedByKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "DEPLOYMENT", + "STATEFULSET", + "DAEMONSET", + "REPLICASET" + ], + "default": "KIND_UNSPECIFIED", + "description": "- KIND_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - DEPLOYMENT: A Deployment provides declarative updates for Pods and ReplicaSets.\n - STATEFULSET: StatefulSet is the workload API object used to manage stateful\napplications.\n - DAEMONSET: A DaemonSet ensures that all (or some) Nodes run a copy of a Pod.\n - REPLICASET: A pod's owner replicaSet", + "title": "Kind includes deployment, statefulset, daemonset" + }, + "apicorev1alpha1ServiceType": { + "type": "string", + "enum": [ + "SERVICE_TYPE_UNSPECIFIED", + "ClusterIP", + "NodePort", + "LoadBalancer", + "ExternalName" + ], + "default": "SERVICE_TYPE_UNSPECIFIED", + "description": "- SERVICE_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - ClusterIP: ClusterIP means a service will only be accessible inside the cluster, via\nthe cluster IP.\n - NodePort: NodePort means a service will be exposed on one port of every node, in\naddition to 'ClusterIP' type.\n - LoadBalancer: LoadBalancer means a service will be exposed via an external load balancer\n(if the cloud provider supports it), in addition to 'NodePort' type.\n - ExternalName: ExternalName means a service consists of only a reference to an external\nname that kubedns or equivalent will return as a CNAME record, with no\nexposing or proxying of any pods involved.", + "title": "ServiceType string describes ingress methods for a service" + }, + "apicorev1alpha1Toleration": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The key to project." + }, + "operator": { + "type": "string", + "description": "Represents a key's relationship to a set of values." + }, + "value": { + "type": "string", + "description": "An array of string values." + }, + "effect": { + "type": "string", + "description": "Valid effects are NoSchedule, PreferNoSchedule, and NoExecute." + }, + "tolerationSeconds": { + "type": "string", + "format": "int64" + } + }, + "description": "Taint tolerations to static pods,\nso they are not evicted when there are node problems." + }, + "apiinstancev1alpha1ServiceType": { + "type": "string", + "enum": [ + "SERVICE_TYPE_UNSPECIFIED", + "ClusterIP", + "NodePort" + ], + "default": "SERVICE_TYPE_UNSPECIFIED", + "description": "- SERVICE_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - ClusterIP: ClusterIP means a service will only be accessible inside the cluster, via\nthe cluster IP.\n - NodePort: NodePort means a service will be exposed on one port of every node, in\naddition to 'ClusterIP' type.", + "title": "ServiceType string describes ingress methods for a service" + }, + "apinetworkingv1alpha1LoadBalancerStatus": { + "type": "object", + "properties": { + "ingress": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1LoadBalancerIngress" + }, + "description": "Ingress is a list containing ingress points for the load-balancer.\nTraffic intended for the service should be sent to these ingress points." + } + }, + "title": "LoadBalancerStatus represents the status of a load-balancer" + }, + "apipolicyv1alpha1GetOverridePolicyJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the OverridePolicy YAML details" + } + }, + "description": "OverridePolicy data information in json format." + }, + "apipolicyv1alpha1Toleration": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The key to project." + }, + "operator": { + "type": "string", + "description": "Represents a key's relationship to a set of values." + }, + "value": { + "type": "string", + "description": "An array of string values." + }, + "effect": { + "type": "string", + "description": "Valid effects are NoSchedule, PreferNoSchedule, and NoExecute." + }, + "tolerationSeconds": { + "type": "string", + "format": "int64" + } + }, + "description": "Taint tolerations to static pods,\nso they are not evicted when there are node problems." + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string" + } + }, + "additionalProperties": {} + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "typesClusterFieldSelector": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/typesClusterSelectorRequirement" + } + } + }, + "description": "FieldSelector is a field filter." + }, + "typesClusterSelectorOperator": { + "type": "string", + "enum": [ + "In", + "NotIn", + "Exists", + "DoesNotExist", + "Gt", + "Lt" + ], + "default": "In" + }, + "typesClusterSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "operator": { + "$ref": "#/definitions/typesClusterSelectorOperator" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "typesCondition": { + "type": "object", + "properties": { + "lastTransitionTime": { + "type": "string", + "title": "Last time the condition transitioned from one status to another.\n+optional" + }, + "lastUpdateTime": { + "type": "string", + "title": "Last time we got an update on a given condition.\n+optional" + }, + "message": { + "type": "string", + "title": "A human readable message indicating details about the transition.\n+optional" + }, + "reason": { + "type": "string", + "title": "The reason for the condition's last transition.\n+optional" + }, + "status": { + "type": "string", + "description": "Status of the condition, one of True, False, Unknown." + }, + "type": { + "type": "string", + "description": "Type of condition." + } + }, + "description": "Condition describes the state of a referent at a certain point." + }, + "typesLabelSelector": { + "type": "object", + "properties": { + "matchLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "matchLabels is a map of {key,value} pairs. A single {key,value} in the\nmatchLabels map is equivalent to an element of matchExpressions, whose key\nfield is \"key\", the operator is \"In\", and the values array contains only\n\"value\". The requirements are ANDed. +optional" + }, + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/typesLabelSelectorRequirement" + }, + "title": "matchExpressions is a list of label selector requirements. The requirements\nare ANDed. +optional" + } + }, + "description": "A label selector is a label query over a set of resources. The result of\nmatchLabels and matchExpressions are ANDed. An empty label selector matches\nall objects. A null label selector matches no objects." + }, + "typesLabelSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "key is the label key that the selector applies to." + }, + "operator": { + "type": "string", + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." + }, + "values": { + "type": "array", + "items": { + "type": "string" + }, + "title": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or\nDoesNotExist, the values array must be empty. This array is replaced during\na strategic merge patch. +optional" + } + }, + "description": "A label selector requirement is a selector that contains values, a key, and\nan operator that relates the key and values." + }, + "typesObjectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name must be unique within a namespace. Is required when creating\nresources, although some resources may allow a client to request the\ngeneration of an appropriate name automatically. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\n+optional" + }, + "namespace": { + "type": "string", + "description": "Namespace defines the space within each name must be unique. An empty\nnamespace is equivalent to the \"default\" namespace, but \"default\" is the\ncanonical representation. Not all objects are required to be scoped to a\nnamespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/namespaces\n+optional" + }, + "uid": { + "type": "string", + "description": "UID is the unique in time and space value for this object. It is typically\ngenerated by the server on successful creation of a resource and is not\nallowed to change on PUT operations.\n\nPopulated by the system.\nRead-only.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#uids\n+optional" + }, + "resourceVersion": { + "type": "string", + "description": "An opaque value that represents the internal version of this object that\ncan be used by clients to determine when objects have changed. May be used\nfor optimistic concurrency, change detection, and the watch operation on a\nresource or set of resources. Clients must treat these values as opaque and\npassed unmodified back to the server. They may only be valid for a\nparticular resource or set of resources.\n\nPopulated by the system.\nRead-only.\nValue must be treated as opaque by clients and .\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency" + }, + "creationTimestamp": { + "type": "string", + "format": "int64", + "description": "CreationTimestamp is a timestamp representing the server time when this\nobject was created. It is not guaranteed to be set in happens-before order\nacross separate operations. Clients may not set this value. It is\nrepresented in RFC3339 form and is in UTC.\n\nPopulated by the system.\nRead-only.\nNull for lists.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n+optional" + }, + "deletionTimestamp": { + "type": "string", + "format": "int64", + "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be\ndeleted. This field is set by the server when a graceful deletion is\nrequested by the user, and is not directly settable by a client. The\nresource is expected to be deleted (no longer visible from resource lists,\nand not reachable by name) after the time in this field, once the\nfinalizers list is empty. As long as the finalizers list contains items,\ndeletion is blocked. Once the deletionTimestamp is set, this value may not\nbe unset or be set further into the future, although it may be shortened or\nthe resource may be deleted prior to this time. For example, a user may\nrequest that a pod is deleted in 30 seconds. The Kubelet will react by\nsending a graceful termination signal to the containers in the pod. After\nthat 30 seconds, the Kubelet will send a hard termination signal (SIGKILL)\nto the container and after cleanup, remove the pod from the API. In the\npresence of network partitions, this object may still exist after this\ntimestamp, until an administrator or automated process can determine the\nresource is fully terminated.\nIf not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested.\nRead-only.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n+optional" + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.\nMore info: http://kubernetes.io/docs/user-guide/labels\n+optional" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Annotations is an unstructured key value map stored with a resource that\nmay be set by external tools to store and retrieve arbitrary metadata. They\nare not queryable and should be preserved when modifying objects. More\ninfo: http://kubernetes.io/docs/user-guide/annotations +optional" + }, + "ownerReferences": { + "type": "array", + "items": { + "$ref": "#/definitions/typesOwnerReference" + }, + "title": "List of objects depended by this object. If ALL objects in the list have\nbeen deleted, this object will be garbage collected. If this object is\nmanaged by a controller, then an entry in this list will point to this\ncontroller, with the controller field set to true. There cannot be more\nthan one managing controller. +optional +patchMergeKey=uid\n+patchStrategy=merge" + }, + "cluster": { + "type": "string", + "description": "The name of the cluster which the object belongs to.\nThis is used to distinguish resources with same name and namespace in\ndifferent clusters. This field is not set anywhere right now and apiserver\nis going to ignore it if set in create or update request." + }, + "workspaceAlias": { + "type": "string", + "description": "The name of the workspace which the object belongs to.\nThis is used to distinguish resources with same name and namespace in\ndifferent workspaces. This field is not set anywhere right now and\napiserver is going to ignore it if set in create or update request." + }, + "finalizers": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Must be empty before the object is deleted from the registry. Each entry\nis an identifier for the responsible component that will remove the entry\nfrom the list. If the deletionTimestamp of the object is non-nil, entries\nin this list can only be removed.\nFinalizers may be processed and removed in any order. Order is NOT enforced\nbecause it introduces significant risk of stuck finalizers.\nfinalizers is a shared field, any actor with permission can reorder it.\nIf the finalizer list is processed in order, then this can lead to a situation\nin which the component responsible for the first finalizer in the list is\nwaiting for a signal (field value, external system, or other) produced by a\ncomponent responsible for a finalizer later in the list, resulting in a deadlock.\nWithout enforced ordering finalizers are free to order amongst themselves and\nare not vulnerable to ordering changes in the list.\n+optional\n+patchStrategy=merge" + } + }, + "description": "ObjectMeta is metadata that all persisted resources must have, which includes\nall objects users must create." + }, + "typesOwnerReference": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "title": "UID of the referent.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#uids" + }, + "controller": { + "type": "boolean", + "title": "If true, this reference points to the managing controller.\n+optional" + } + }, + "description": "OwnerReference contains enough information to let you identify an owning\nobject. An owning object must be in the same namespace as the dependent, or\nbe cluster-scoped, so there is no namespace field." + }, + "typesPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32", + "description": "Total is the total number of referents." + }, + "page": { + "type": "integer", + "format": "int32", + "description": "Page is current page." + }, + "pageSize": { + "type": "integer", + "format": "int32", + "description": "PageSize is the data number shown per page." + }, + "pages": { + "type": "integer", + "format": "int32", + "description": "Pages is the number of pages." + } + }, + "description": "Pagination is for data paging." + }, + "typesRollingUpdate": { + "type": "object", + "properties": { + "maxSurge": { + "type": "string", + "title": "The maximum number of pods that can be scheduled above the desired number\nof pods. Value can be an absolute number (ex: 5) or a percentage of desired\npods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number\nis calculated from percentage by rounding up. Defaults to 25%. Example:\nwhen this is set to 30%, the new ReplicaSet can be scaled up immediately\nwhen the rolling update starts, such that the total number of old and new\npods do not exceed 130% of desired pods. Once old pods have been killed,\nnew ReplicaSet can be scaled up further, ensuring that total number of pods\nrunning at any time during the update is at most 130% of desired pods.\n+optional" + }, + "maxUnavailable": { + "type": "string", + "title": "The maximum number of pods that can be unavailable during the update.\nValue can be an absolute number (ex: 5) or a percentage of desired pods\n(ex: 10%). Absolute number is calculated from percentage by rounding down.\nThis can not be 0 if MaxSurge is 0.\nDefaults to 25%.\nExample: when this is set to 30%, the old ReplicaSet can be scaled down to\n70% of desired pods immediately when the rolling update starts. Once new\npods are ready, old ReplicaSet can be scaled down further, followed by\nscaling up the new ReplicaSet, ensuring that the total number of pods\navailable at all times during the update is at least 70% of desired pods.\n+optional" + } + }, + "description": "Spec to control the desired behavior of rolling update." + }, + "typesSortBy": { + "type": "string", + "enum": [ + "SORT_BY_UNSPECIFIED", + "field_name", + "state", + "workspace", + "cluster", + "namespace", + "created_at" + ], + "default": "SORT_BY_UNSPECIFIED", + "description": "SortBy determines the data list order reference.\n\n - SORT_BY_UNSPECIFIED: Unspecified is default, no sorting.\n - field_name: Sort result by name.\n - state: TODO: Sort result by state not supported yet.\n - workspace: TODO: Sort result by workspace not supported yet.\n - cluster: Sort result by cluster name.\n - namespace: Sort result by namespace.\n - created_at: Sort result by creationTimestamp." + }, + "typesSortDir": { + "type": "string", + "enum": [ + "desc", + "asc" + ], + "default": "desc", + "description": "SortDir determines the data list order.\n\n - desc: Desc stands for descending order.\n - asc: Asc stands for ascending order." + }, + "typesTaint": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "Required. The taint key to be applied to a node." + }, + "value": { + "type": "string", + "description": "The taint value corresponding to the taint key." + }, + "effect": { + "$ref": "#/definitions/typesTaintEffect", + "description": "Valid effects are NoSchedule, PreferNoSchedule, and NoExecute." + } + } + }, + "typesTaintEffect": { + "type": "string", + "enum": [ + "TAINT_EFFECT_UNSPECIFIED", + "NoSchedule", + "PreferNoSchedule", + "NoExecute" + ], + "default": "TAINT_EFFECT_UNSPECIFIED", + "description": "Valid effects are NoSchedule, PreferNoSchedule, and NoExecute.\n\n - TAINT_EFFECT_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - NoSchedule: NoSchedule tries to avoid scheduling pods to nodes where they can't\ntolerate taints.\n - PreferNoSchedule: This is not mandatory tries to avoid scheduling pods to nodes.\n - NoExecute: NoExecute is not assign pod to or evicted pod from the node." + }, + "typesUpdateStrategy": { + "type": "object", + "properties": { + "rollingUpdate": { + "$ref": "#/definitions/typesRollingUpdate", + "title": "RollingUpdate is used to communicate parameters when Type is\nRollingUpdateType. +optional" + }, + "type": { + "type": "string", + "title": "Type indicates the type of the UpdateStrategy.\n+optional" + } + }, + "description": "UpdateStrategy indicates the strategy that the controller\nwill use to perform updates. It includes any additional parameters necessary\nto perform the update for the indicated strategy." + }, + "typesWorkloadState": { + "type": "string", + "enum": [ + "WORKLOAD_STATE_UNSPECIFIED", + "WORKLOAD_STATE_RUNNING", + "WORKLOAD_STATE_DELETING", + "WORKLOAD_STATE_NOT_READY", + "WORKLOAD_STATE_STOPPED", + "WORKLOAD_STATE_WAITING" + ], + "default": "WORKLOAD_STATE_UNSPECIFIED", + "description": "- WORKLOAD_STATE_UNSPECIFIED: Unspecified is only a meaningless placeholder, to avoid zero not return.\n - WORKLOAD_STATE_RUNNING: Running shows the referent is available.\n - WORKLOAD_STATE_DELETING: Deleting is when the referent will be deleted.\n - WORKLOAD_STATE_NOT_READY: NotReady shows the referent is unavailable.\n - WORKLOAD_STATE_STOPPED: Stopped indicates that the referent has 0 ready pods.\n - WORKLOAD_STATE_WAITING: Waiting indicates that the referent is paused.", + "title": "WorkloadState describes the state of\nworkload(deployments/daemonsets/statefulsets)" + }, + "v1JSON": { + "type": "object", + "properties": { + "raw": { + "type": "string", + "format": "byte" + } + }, + "description": "JSON represents any valid JSON value.\nThese types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil." + }, + "v1alpha1Action": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "BIND", + "UNBIND" + ], + "default": "UNSPECIFIED", + "title": "- UNSPECIFIED: Unspecified\n - BIND: 绑定\n - UNBIND: 解绑" + }, + "v1alpha1Affinity": { + "type": "object", + "properties": { + "nodeAffinity": { + "$ref": "#/definitions/v1alpha1NodeAffinity", + "title": "Describes node affinity scheduling rules for the pod.\n+optional" + }, + "podAffinity": { + "$ref": "#/definitions/v1alpha1PodAffinity", + "title": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the\nsame node, zone, etc. as some other pod(s)). +optional" + }, + "podAntiAffinity": { + "$ref": "#/definitions/v1alpha1PodAffinity", + "title": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod\nin the same node, zone, etc. as some other pod(s)). +optional" + } + }, + "description": "Affinity is a group of affinity scheduling rules." + }, + "v1alpha1AggregationResource": { + "type": "object", + "properties": { + "resources": { + "type": "array", + "items": { + "type": "string" + } + }, + "popagrationpolicies": { + "type": "array", + "items": { + "type": "string" + } + }, + "overridepolicies": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1alpha1Artifact": { + "type": "object", + "properties": { + "digest": { + "type": "string", + "description": "Digest is artifact digest." + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Tag" + }, + "description": "Tags is a list of tags." + }, + "imageSize": { + "type": "string", + "format": "int64", + "description": "Size of artifact. Unit: byte. 1024 GenericBinary." + }, + "pushTime": { + "type": "string", + "format": "int64", + "description": "First push time." + } + }, + "title": "Artifact is the concept of harbor artifact" + }, + "v1alpha1BindInstancesAction": { + "type": "object", + "properties": { + "instance": { + "type": "string", + "title": "instance name" + }, + "workspace": { + "$ref": "#/definitions/v1alpha1WorkspaceInfo", + "title": "workspace ID" + }, + "action": { + "$ref": "#/definitions/v1alpha1Action", + "title": "action" + } + } + }, + "v1alpha1BindNamespaceInstancesAction": { + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "instance": { + "type": "string", + "title": "instance name" + }, + "workspace": { + "$ref": "#/definitions/v1alpha1WorkspaceInfo" + }, + "action": { + "$ref": "#/definitions/v1alpha1Action", + "title": "action" + } + } + }, + "v1alpha1CloudShell": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "spec": { + "$ref": "#/definitions/v1alpha1CloudShellSpec", + "description": "CloudShellSpec defines the desired state of CloudShell." + }, + "status": { + "$ref": "#/definitions/v1alpha1CloudShellStatus", + "description": "CloudShellStatus defines the observed state of CloudShell." + } + }, + "description": "CloudShell is the Schema for the cloudshells API." + }, + "v1alpha1CloudShellSpec": { + "type": "object", + "properties": { + "commandAction": { + "type": "string", + "description": "command action specified a initialized command to cloudshell server." + }, + "once": { + "type": "boolean", + "title": "accept only one client and exit on disconnection" + }, + "ttl": { + "type": "integer", + "format": "int32", + "description": "ttl specified a period time that the cloudshell server pod is\nstop. if not to set, default 500s." + }, + "cleanup": { + "type": "boolean", + "description": "cleanup specified whether to delete cloudshell resources when\ncorresponding job status is completed." + } + }, + "description": "CloudShellSpec defines the desired state of CloudShell." + }, + "v1alpha1CloudShellStatus": { + "type": "object", + "properties": { + "phase": { + "type": "string", + "description": "phase specified status of cloudshell server." + }, + "accessUrl": { + "type": "string", + "description": "access url is be set to expose cloudshell server." + } + }, + "title": "CloudShellStatus defines the observed state of CloudShell.enum" + }, + "v1alpha1Cluster": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "spec": { + "$ref": "#/definitions/v1alpha1ClusterSpec", + "description": "ClusterSpec describes how the cluster execution will look like and when it\nwill actually run." + }, + "status": { + "$ref": "#/definitions/v1alpha1ClusterStatus", + "description": "ClusterStatus contains the cluster status." + } + } + }, + "v1alpha1ClusterAffinity": { + "type": "object", + "properties": { + "labelSelector": { + "$ref": "#/definitions/typesLabelSelector", + "title": "LabelSelector is a filter to select member clusters by labels.\nIf non-nil and non-empty, only the clusters match this filter will be selected.\n+optional" + }, + "clusterNames": { + "type": "array", + "items": { + "type": "string" + }, + "title": "ClusterNames is the list of clusters to be selected.\n+optional" + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + }, + "title": "ExcludedClusters is the list of clusters to be ignored.\n+optional" + }, + "fieldSelector": { + "$ref": "#/definitions/typesClusterFieldSelector", + "title": "FieldSelector is a filter to select member clusters by fields.\nIf non-nil and non-empty, only the clusters match this filter will be selected.\n+optional" + } + } + }, + "v1alpha1ClusterAffinityTerm": { + "type": "object", + "properties": { + "affinityName": { + "type": "string" + }, + "labelSelector": { + "$ref": "#/definitions/typesLabelSelector", + "title": "LabelSelector is a filter to select member clusters by labels.\nIf non-nil and non-empty, only the clusters match this filter will be selected.\n+optional" + }, + "clusterNames": { + "type": "array", + "items": { + "type": "string" + }, + "title": "ClusterNames is the list of clusters to be selected.\n+optional" + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + }, + "title": "ExcludedClusters is the list of clusters to be ignored.\n+optional" + }, + "fieldSelector": { + "$ref": "#/definitions/typesClusterFieldSelector", + "title": "FieldSelector is a filter to select member clusters by fields.\nIf non-nil and non-empty, only the clusters match this filter will be selected.\n+optional" + } + } + }, + "v1alpha1ClusterAggregationResource": { + "type": "object", + "properties": { + "resources": { + "type": "array", + "items": { + "type": "string" + } + }, + "clusterpopagrationpolicies": { + "type": "array", + "items": { + "type": "string" + } + }, + "clusteroverridepolicies": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1alpha1ClusterLabels": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "member cluster name" + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.\nMore info: http://kubernetes.io/docs/user-guide/labels\n+optional" + } + }, + "description": "ClusterLabels describe labels of member cluster." + }, + "v1alpha1ClusterLocation": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "region": { + "type": "string" + }, + "zone": { + "type": "string" + } + }, + "title": "ClusterLocation Cluster locations" + }, + "v1alpha1ClusterOverridePolicy": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1alpha1OverridePolicySpec", + "description": "Spec represents the desired behavior of OverridePolicy." + } + }, + "description": "ClusterOverridePolicy represents the policy that overrides a group of resources to one or more clusters." + }, + "v1alpha1ClusterPhase": { + "type": "string", + "enum": [ + "CLUSTER_PHASE_UNSPECIFIED", + "UNKNOWN", + "CREATING", + "RUNNING", + "UPDATING", + "DELETING", + "FAILED" + ], + "default": "CLUSTER_PHASE_UNSPECIFIED", + "description": " - CLUSTER_PHASE_UNSPECIFIED: The cluster state is unspecified.\n - UNKNOWN: The cluster state is unknown.\n - CREATING: The cluster is being created.\n - RUNNING: The cluster is running.\n - UPDATING: The cluster is updating.\n - DELETING: The cluster is being deleted.\n - FAILED: The cluster operations failed." + }, + "v1alpha1ClusterPreferences": { + "type": "object", + "properties": { + "staticWeightList": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1StaticClusterWeight" + }, + "title": "StaticWeightList defines the static cluster weight.\n+optional" + }, + "dynamicWeight": { + "$ref": "#/definitions/v1alpha1DynamicWeightFactor", + "title": "DynamicWeight specifies the factor to generates dynamic weight list.\nIf specified, StaticWeightList will be ignored.\n+kubebuilder:validation:Enum=AvailableReplicas\n+optional" + } + } + }, + "v1alpha1ClusterPropagationPolicy": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1alpha1PropagationPolicySpec", + "description": "Spec represents the desired behavior of PropagationPolicy." + } + }, + "description": "ClusterPropagationPolicy represents the cluster policy that propagates a group of resources to one or more clusters." + }, + "v1alpha1ClusterProvider": { + "type": "string", + "enum": [ + "GENERIC", + "DAOCLOUD_KUBESPRAY", + "DAOCLOUD_CLUSTER_API", + "DAOCLOUD_DCE4", + "REDHAT_OPENSHIFT4", + "SUSE_RANCHER", + "VMWARE_TANZU", + "AWS_EKS", + "ALIYUN_ACK", + "TENCENT_TKE", + "HUAWEI_CCE", + "MICROSOFT_AZURE" + ], + "default": "GENERIC", + "description": " - GENERIC: Generic\nGENERIC indicates other providers\n - DAOCLOUD_KUBESPRAY: DaoCloud\nDAOCLOUD_KUBESPRAY indicates a provider of DaoCloud's KubeSpray Engine\n - DAOCLOUD_CLUSTER_API: DAOCLOUD_CLUSTER_API indicates a provider of DaoCloud's Cluster API Engine\n - DAOCLOUD_DCE4: DAOCLOUD_DCE4 indicates a provider of DaoCloud's DCE4 Engine\n - REDHAT_OPENSHIFT4: OverSea Distribtion\nREDHAT_OPENSHIFT4 indicates a provider of RedHat Openshift4\n - SUSE_RANCHER: SUSE_RANCHER indicates a provider of SUSE Rancher\n - VMWARE_TANZU: VMWARE_TANZU indicates a provider of VMware Tanzu\n - AWS_EKS: Public Cloud\nAWS_EKS indicates a provider of AWS EKS\n - ALIYUN_ACK: ALIYUN_ACK indicates a provider of Aliyun ACK\n - TENCENT_TKE: TENCENT_TKE indicates a provider of Tencent TKE.\n - HUAWEI_CCE: TENCENT_TKE indicates a provider of Huawei CCE.\n - MICROSOFT_AZURE: MICROSOFT_AZURE=11; indicates a provider of Microsoft Azure." + }, + "v1alpha1ClusterProviderSummary": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name represents the cluster's name" + }, + "provider": { + "$ref": "#/definitions/v1alpha1ClusterProvider", + "title": "provider represents the cluster's provider" + } + } + }, + "v1alpha1ClusterResourceSummary": { + "type": "object", + "properties": { + "allocatable": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Allocatable represents the resources of a cluster that are available for scheduling.\nTotal amount of allocatable resources on all nodes.\n+optional" + }, + "allocated": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Allocated represents the resources of a cluster that have been scheduled.\nTotal amount of required resources of all Pods that have been scheduled to nodes.\n+optional" + } + } + }, + "v1alpha1ClusterResponse": { + "type": "object", + "properties": { + "cluster": { + "$ref": "#/definitions/v1alpha1Cluster", + "title": "the joined member cluster" + } + }, + "title": "Joined cluster into karamada control plane," + }, + "v1alpha1ClusterSpec": { + "type": "object", + "properties": { + "provider": { + "$ref": "#/definitions/v1alpha1ClusterProvider", + "description": "Provider represents the cloud provider name of the member cluster." + }, + "apiEndpoint": { + "type": "string", + "description": "The API endpoint of the member cluster. This can be a hostname,\nhostname:port, IP or IP:port." + }, + "region": { + "type": "string", + "description": "Region represents the region of the member cluster locate in." + }, + "zone": { + "type": "string", + "description": "Zone represents the zone of the member cluster locate in." + }, + "roles": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Roles represents the roles of cluster." + }, + "managedBy": { + "type": "string", + "description": "ManagedBy is used for worker cluster to show\ncluster is controlled by." + }, + "aliasName": { + "type": "string", + "description": "AliasName represents the alias of the cluster." + }, + "secretRef": { + "$ref": "#/definitions/v1alpha1LocalSecretReference", + "description": "SecretRef represents the secret contains mandatory credentials to access the member cluster." + }, + "taints": { + "type": "array", + "items": { + "$ref": "#/definitions/typesTaint" + }, + "title": "Taints attached to the member cluster.\nTaints on the cluster have the \"effect\" on\nany resource that does not tolerate the Taint.\n+optional" + } + } + }, + "v1alpha1ClusterStatus": { + "type": "object", + "properties": { + "kubernetesVersion": { + "type": "string", + "description": "KubernetesVersion represents version of the member cluster." + }, + "kubeSystemID": { + "type": "string", + "description": "KubeSystemId represents the uuid of sub cluster kube-system namespace." + }, + "serviceCIDR": { + "type": "string", + "description": "ServiceCIDR represents the service network CIDR." + }, + "podCIDR": { + "type": "string", + "description": "PodCIDR represents the pod network CIDR." + }, + "phase": { + "$ref": "#/definitions/v1alpha1ClusterPhase", + "description": "Condition represents the status of the member cluster." + }, + "cpuUsage": { + "type": "number", + "format": "double", + "description": "The cpu usage of the member cluster." + }, + "memoryUsage": { + "type": "number", + "format": "double", + "description": "The memory usage of the member cluster." + }, + "proxyMode": { + "type": "string", + "description": "ProxyMode represents the kube-proxy mode of the member cluster." + }, + "resourceSummary": { + "$ref": "#/definitions/v1alpha1ClusterResourceSummary", + "description": "ResourceSummary represents the resource of the member cluster." + } + } + }, + "v1alpha1CommandArgsOverrider": { + "type": "object", + "properties": { + "containerName": { + "type": "string", + "title": "The name of container\n+required" + }, + "operator": { + "$ref": "#/definitions/v1alpha1OverriderOperator", + "title": "Operator represents the operator which will apply on the command/args.\n+kubebuilder:validation:Enum=add;remove\n+required" + }, + "value": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Value to be applied to command/args.\nItems in Value which will be appended after command/args when Operator is 'add'.\nItems in Value which match in command/args will be deleted when Operator is 'remove'.\nIf Value is empty, then the command/args will remain the same.\n+optional" + } + } + }, + "v1alpha1ConfigMap": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "immutable": { + "type": "boolean", + "title": "Immutable, if set to true, ensures that data stored in the ConfigMap cannot\nbe updated (only object metadata can be modified).\nIf not set to true, the field can be modified at any time.\nDefaulted to nil.\n+optional" + }, + "data": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Data contains the configuration data.\nEach key must consist of alphanumeric characters, '-', '_' or '.'.\nValues with non-UTF-8 byte sequences must use the BinaryData field.\nThe keys stored in Data must not overlap with the keys in\nthe BinaryData field, this is enforced during validation process.\n+optional" + }, + "binaryData": { + "type": "object", + "additionalProperties": { + "type": "string", + "format": "byte" + }, + "title": "BinaryData contains the binary data.\nEach key must consist of alphanumeric characters, '-', '_' or '.'.\nBinaryData can contain byte sequences that are not in the UTF-8 range.\nThe keys stored in BinaryData must not overlap with the ones in\nthe Data field, this is enforced during validation process.\nUsing this field will require 1.10+ apiserver and\nkubelet.\n+optional" + } + }, + "description": "ConfigMap holds configuration data for pods to consume." + }, + "v1alpha1ConfigMapEnvSource": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This must match the Name of a Volume." + }, + "optional": { + "type": "boolean" + } + }, + "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment\nvariables with.\nThe contents of the target ConfigMap's Data field will represent the\nkey-value pairs as environment variables." + }, + "v1alpha1ConfigMapKeySelector": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The ConfigMap to select from." + }, + "key": { + "type": "string", + "description": "The key to select." + }, + "optional": { + "type": "boolean", + "title": "Specify whether the ConfigMap or its key must be defined\n+optional" + } + }, + "description": "ConfigMapKeySelector selects a key from a ConfigMap." + }, + "v1alpha1ConfigMapVolumeSource": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1KeyToPath" + }, + "title": "If unspecified, each key-value pair in the Data field of the referenced\nConfigMap will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the ConfigMap,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional" + }, + "defaultMode": { + "type": "integer", + "format": "int32", + "title": "Optional: mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0\nand 511. YAML accepts both octal and decimal values, JSON requires decimal\nvalues for mode bits. Defaults to 0644. Directories within the path are not\naffected by this setting. This might be in conflict with other options that\naffect the file mode, like fsGroup, and the result can be other mode bits\nset. +optional" + }, + "optional": { + "type": "boolean", + "title": "Specify whether the ConfigMap or its keys must be defined\n+optional" + } + }, + "description": "Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a\nvolume as files using the keys in the Data field as the file names, unless\nthe items element is populated with specific mappings of keys to paths.\nConfigMap volumes support ownership management and SELinux relabeling." + }, + "v1alpha1Container": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of Container." + }, + "image": { + "type": "string", + "description": "The used image of Container." + }, + "command": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The container command." + }, + "args": { + "type": "array", + "items": { + "type": "string" + } + }, + "workingDir": { + "type": "string" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Ports" + } + }, + "envFrom": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1EnvFromSource" + }, + "title": "EnvFromSource represents the source of a set of ConfigMaps" + }, + "env": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1EnvVar" + }, + "description": "EnvVar represents an environment variable present in a Container." + }, + "resources": { + "$ref": "#/definitions/v1alpha1ResourceRequirements", + "description": "Source represents a source for the value of an EnvVar." + }, + "volumeMounts": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1VolumeMount" + }, + "description": "VolumeMount describes a mounting of a Volume within a container." + }, + "livenessProbe": { + "$ref": "#/definitions/v1alpha1Probe", + "description": "Liveness probe is aimed to help in situarions where fluentd\nsilently hangs for no apparent reasons until manual restart.\nThe idea of this probe is that if fluentd is not queueing or\nflushing chunks for 5 minutes, something is not right. If\nyou want to change the fluentd configuration, reducing amount of\nlogs fluentd collects, consider changing the threshold or turning\nliveness probe off completely." + }, + "readinessProbe": { + "$ref": "#/definitions/v1alpha1Probe", + "description": "Readiness updates the cached pod status with the given readiness, and\ntriggers a status update." + }, + "startupProbe": { + "$ref": "#/definitions/v1alpha1Probe", + "description": "Startup updates the cached container status with the given startup, and\ntriggers a status update." + }, + "lifecycle": { + "$ref": "#/definitions/v1alpha1Lifecycle", + "description": "The life cycle of a Container." + }, + "imagePullPolicy": { + "type": "string", + "description": "Pull image policy." + }, + "securityContext": { + "$ref": "#/definitions/v1alpha1SecurityContext", + "description": "SecurityContext holds security attributes." + } + } + }, + "v1alpha1CreateClusterCustomResourceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the CustomResource YAML details." + } + }, + "title": "CreateClusterCustomResourceResponse represents response of creating one\nCustomResource of cluster scope" + }, + "v1alpha1CreateClusterOverridePolicyResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the OverridePolicy YAML details" + } + } + }, + "v1alpha1CreateClusterPropagationPolicyResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the PropagationPolicy YAML details" + } + } + }, + "v1alpha1CreateConfigMapResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the ConfigMap YAML details" + } + } + }, + "v1alpha1CreateCronJobResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the CronJob YAML details" + } + } + }, + "v1alpha1CreateCustomResourceDefinitionResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the customResourceDefinition YAML details." + } + }, + "title": "CreateCustomResourceDefinitionResponse represents response of creating\na createCustomResourceDefinition" + }, + "v1alpha1CreateCustomResourceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the CustomResource YAML details." + } + }, + "title": "CreateCustomResourceResponse represents response of creating one\nCustomResource of namespaced scope" + }, + "v1alpha1CreateDeploymentResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the Deployment YAML details" + } + } + }, + "v1alpha1CreateIngressResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the ingress YAML details." + } + }, + "title": "CreateIngressResponse the response of create cluster ingresses" + }, + "v1alpha1CreateInstanceKubeConfigResponse": { + "type": "object", + "properties": { + "kubeConfigString": { + "type": "string", + "title": "kube config string" + }, + "instance": { + "type": "string", + "description": "Instance represents which instance belongs to." + } + }, + "description": "CreateInstanceKubeConfigResponse returns a kubeconfig of Karmada instance." + }, + "v1alpha1CreateInstanceRequest": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "description": "cluster specified the instance cluster name." + }, + "data": { + "$ref": "#/definitions/v1alpha1Instance", + "description": "data defines the data of instance." + } + }, + "description": "CreateInstanceRequest the response of create instance." + }, + "v1alpha1CreateJobResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the Job YAML details" + } + } + }, + "v1alpha1CreateNamespaceResponse": { + "type": "object", + "properties": { + "namespace": { + "$ref": "#/definitions/v1alpha1Namespace" + } + }, + "description": "Create Namespace information." + }, + "v1alpha1CreateOverridePolicyResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the OverridePolicy YAML details" + } + } + }, + "v1alpha1CreatePropagationPolicyResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the PropagationPolicy YAML details" + } + } + }, + "v1alpha1CreateSecretResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the Secret YAML details" + } + }, + "description": "It returns the created Secret data information." + }, + "v1alpha1CreateServiceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "Data is the Service YAML details" + } + }, + "description": "It returns the created Service data information." + }, + "v1alpha1CreateWorkloadServiceRequestKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Deployment" + ], + "default": "KIND_UNSPECIFIED", + "description": " - Deployment: A Deployment provides declarative updates for Pods and ReplicaSets." + }, + "v1alpha1CronJob": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "title": "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n+optiona" + }, + "spec": { + "$ref": "#/definitions/v1alpha1CronJobSpec", + "description": "CronJobSpec describes how the job execution will look like and when it will actually run." + }, + "status": { + "$ref": "#/definitions/v1alpha1CronJobStatus", + "description": "CronJobStatus represents the current state of a cron job." + }, + "availed": { + "type": "integer", + "format": "int32", + "description": "The number of available cronjob." + }, + "total": { + "type": "integer", + "format": "int32", + "description": "The number of totally cronjob." + }, + "executionTimestamp": { + "type": "string", + "format": "int64", + "description": "Information when was the time the cronjob was successfully executed." + }, + "images": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Images the cronjob use." + } + }, + "description": "CronJob represents the configuration of a single cron job." + }, + "v1alpha1CronJobSpec": { + "type": "object", + "properties": { + "schedule": { + "type": "string", + "description": "The schedule in Cron format." + }, + "paused": { + "type": "boolean", + "description": "Indicates that the cronjob is paused." + } + }, + "description": "Specification of the desired behavior of a cron job, including the schedule." + }, + "v1alpha1CronJobStatus": { + "type": "object", + "properties": { + "phase": { + "$ref": "#/definitions/CronJobStatusCronJobState", + "description": "State of a cron job." + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/CronJobStatusCronJobCondition" + }, + "description": "Current condition of cronjob." + }, + "clusters": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterProviderSummary" + }, + "title": "Clusters represents target member clusters where the resource to be deployed" + } + }, + "description": "Current status of a cron job." + }, + "v1alpha1CustomResource": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "description": "Kind represents the kind of CustomResource." + }, + "apiVersion": { + "type": "string", + "description": "APIVersion represents the apiVersion of CustomResource." + }, + "name": { + "type": "string", + "description": "Name represents the name of CustomResource." + }, + "namespace": { + "type": "string", + "description": "Namespace represents which namespace the CustomResource belongs to." + }, + "creationTimestamp": { + "type": "string", + "format": "int64", + "description": "CreationTimestamp represents the creationTime of the CustomResource." + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.\nMore info: http://kubernetes.io/docs/user-guide/labels\n+optional" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "clusters": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterProviderSummary" + }, + "title": "Clusters represents target member clusters where the resource to be deployed" + }, + "propagationpolicies": { + "type": "array", + "items": { + "type": "string" + } + }, + "overridepolicies": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "title": "CustomResource represents the CustomResource message" + }, + "v1alpha1CustomResourceDefinition": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "title": "Metadata is that all persisted resources must have, which includes all\nobjects" + }, + "spec": { + "$ref": "#/definitions/v1alpha1CustomResourceDefinitionSpec", + "description": "Spec is the desired behavior of the CustomResource." + }, + "status": { + "$ref": "#/definitions/v1alpha1CustomResourceDefinitionStatus", + "description": "status is the status information of the CustomResource." + } + }, + "title": "CustomResourceDefinition message of CustomResource definition" + }, + "v1alpha1CustomResourceDefinitionNames": { + "type": "object", + "properties": { + "plural": { + "type": "string", + "description": "Plural is the plural name of the resource to serve. It must match the name\nof the CustomResourceDefinition-registration too: plural.group and it must\nbe all lowercase." + }, + "singular": { + "type": "string", + "title": "Singular is the singular name of the resource. It must be all lowercase\nDefaults to lowercased " + }, + "shortNames": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ShortNames are short names for the resource. It must be all lowercase." + }, + "kind": { + "type": "string", + "description": "Kind is the serialized kind of the resource. It is normally CamelCase and\nsingular." + }, + "listKind": { + "type": "string", + "description": "ListKind is the serialized kind of the list for this resource. Defaults to\nList." + }, + "categories": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Categories is a list of grouped resources custom resources belong to (e.g.\n'all') +optional" + } + }, + "title": "CustomResourceDefinitionNames message of CustomResource definition names" + }, + "v1alpha1CustomResourceDefinitionSpec": { + "type": "object", + "properties": { + "group": { + "type": "string", + "title": "Group is the group this resource belongs in" + }, + "names": { + "$ref": "#/definitions/v1alpha1CustomResourceDefinitionNames", + "title": "Names are the names used to describe this custom resource" + }, + "scope": { + "$ref": "#/definitions/CustomResourceDefinitionSpecResourceScope", + "title": "Scope indicates whether this resource is cluster or namespace scoped.\nDefault is namespaced" + }, + "versions": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1CustomResourceDefinitionVersion" + }, + "description": "Versions is the list of all supported versions for this resource.\nIf Version field is provided, this field is optional.\nValidation: All versions must use the same validation schema for now. i.e.,\ntop level Validation field is applied to all of these versions. Order: The\nversion name will be used to compute the order. If the version string is\n\"kube-like\", it will sort above non \"kube-like\" version strings, which are\nordered lexicographically. \"Kube-like\" versions start with a \"v\", then are\nfollowed by a number (the major version), then optionally the string\n\"alpha\" or \"beta\" and another number (the minor version). These are sorted\nfirst by GA > beta > alpha (where GA is a version with no suffix such as\nbeta or alpha), and then by comparing major version, then minor version. An\nexample sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1,\nv12alpha1, v11alpha2, foo1, foo10." + } + }, + "title": "CustomResourceDefinitionSpec message of CustomResource definition spec" + }, + "v1alpha1CustomResourceDefinitionStatus": { + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/typesCondition" + }, + "description": "Current condition of cluster." + } + }, + "title": "CustomResourceDefinitionStatus represents custom resource definition status" + }, + "v1alpha1CustomResourceDefinitionVersion": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name is the version name, e.g. “v1”, “v2beta1”, etc." + }, + "served": { + "type": "boolean", + "title": "Served is a flag enabling/disabling this version from being served via REST\nAPIs" + }, + "storage": { + "type": "boolean", + "description": "Storage flags the version as storage version. There must be exactly one\nflagged as storage version." + }, + "deprecated": { + "type": "boolean", + "description": "deprecated indicates this version of the custom resource API is deprecated.\nWhen set to true, API requests to this version receive a warning header in\nthe server response. Defaults to false." + } + }, + "title": "CustomResourceDefinitionVersion message of CustomResource definition version" + }, + "v1alpha1Deployment": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Metadata is that all persisted resources must have, which includes all objects\nusers must create." + }, + "spec": { + "$ref": "#/definitions/v1alpha1DeploymentSpec", + "title": "Specification of the desired behavior of the Deployment.\n+optional" + }, + "status": { + "$ref": "#/definitions/v1alpha1DeploymentStatus", + "title": "Most recently observed status of the Deployment.\n+optional" + }, + "revision": { + "type": "string", + "format": "int64", + "title": "The revision to rollback to. If set to 0, rollback to the last revision.\n+optional" + } + }, + "description": "Deployment provides declarative updates for Pods and ReplicaSets." + }, + "v1alpha1DeploymentSpec": { + "type": "object", + "properties": { + "template": { + "$ref": "#/definitions/v1alpha1PodTemplateSpec", + "title": "Template describes the data a pod should have when created from a template" + }, + "strategy": { + "$ref": "#/definitions/typesUpdateStrategy", + "description": "Strategy indicates the strategy that the controller\nwill use to perform updates. It includes any additional parameters necessary\nto perform the update for the indicated strategy." + }, + "paused": { + "type": "boolean", + "description": "Indicates that the deployment is paused." + } + }, + "description": "DeploymentSpec specifies the state of a Deployment." + }, + "v1alpha1DeploymentStatus": { + "type": "object", + "properties": { + "availableReplicas": { + "type": "integer", + "format": "int32", + "title": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.\n+optional" + }, + "readyReplicas": { + "type": "integer", + "format": "int32", + "title": "Total number of ready pods targeted by this deployment.\n+optional" + }, + "replicas": { + "type": "integer", + "format": "int32", + "title": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).\n+optional" + }, + "state": { + "$ref": "#/definitions/typesWorkloadState", + "title": "state describes the state of deployments" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/typesCondition" + }, + "description": "Current service state of deployments." + }, + "clusters": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterProviderSummary" + }, + "title": "Clusters represents target member clusters where the resource to be deployed" + } + }, + "description": "DeploymentStatus holds information about the observed status of a deployment." + }, + "v1alpha1DeschedulerTimeout": { + "type": "object", + "properties": { + "deschedulingInterval": { + "type": "string", + "format": "int64", + "description": "deschedulingInterval Time interval between two consecutive descheduler executions. Setting this value instructs the descheduler to run in a continuous loop at the interval specified." + }, + "unschedulableThreshold": { + "type": "string", + "format": "int64", + "description": "unschedulableThresholdThe period of pod unschedulable condition. This value is considered as a classification standard of unschedulable replicas." + } + } + }, + "v1alpha1DetectKangarooResponse": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "The kangaroo_enable indicates whether the kangaroo is installed" + } + } + }, + "v1alpha1DownwardAPIVolumeFile": { + "type": "object", + "properties": { + "path": { + "type": "string", + "title": "Required: Path is the relative path name of the file to be created. Must\nnot be absolute or contain the '..' path. Must be utf-8 encoded. The first\nitem of the relative path must not start with '..'" + }, + "fieldRef": { + "$ref": "#/definitions/v1alpha1ObjectFieldSelector", + "title": "Required: Selects a field of the pod: only annotations, labels, name and\nnamespace are supported. +optional" + }, + "resourceFieldRef": { + "$ref": "#/definitions/v1alpha1ResourceFieldSelector", + "title": "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently\nsupported. +optional" + }, + "mode": { + "type": "integer", + "format": "int32", + "title": "Optional: mode bits used to set permissions on this file, must be an octal\nvalue between 0000 and 0777 or a decimal value between 0 and 511. YAML\naccepts both octal and decimal values, JSON requires decimal values for\nmode bits. If not specified, the volume defaultMode will be used. This\nmight be in conflict with other options that affect the file mode, like\nfsGroup, and the result can be other mode bits set. +optional" + } + }, + "description": "DownwardAPIVolumeFile represents information to create the file containing\nthe pod field." + }, + "v1alpha1DownwardAPIVolumeSource": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1DownwardAPIVolumeFile" + }, + "title": "Items is a list of downward API volume file\n+optional" + }, + "DefaultMode": { + "type": "integer", + "format": "int32", + "title": "Optional: mode bits to use on created files by default. Must be a\nOptional: mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0\nand 511. YAML accepts both octal and decimal values, JSON requires decimal\nvalues for mode bits. Defaults to 0644. Directories within the path are not\naffected by this setting. This might be in conflict with other options that\naffect the file mode, like fsGroup, and the result can be other mode bits\nset. +optional" + } + }, + "description": "DownwardAPIVolumeSource represents a volume containing downward API info.\nDownward API volumes support ownership management and SELinux relabeling." + }, + "v1alpha1DynamicWeightFactor": { + "type": "string", + "enum": [ + "DYNAMIC_WEIGHT_FACTOR_UNSPECIFIED", + "AvailableReplicas" + ], + "default": "DYNAMIC_WEIGHT_FACTOR_UNSPECIFIED", + "description": "DynamicWeightByAvailableReplicas represents the cluster weight list should be generated according to\navailable resource (available replicas)." + }, + "v1alpha1EmptyDirVolumeSource": { + "type": "object", + "properties": { + "medium": { + "type": "string", + "title": "What type of storage medium should back this directory.\nThe default is \"\" which means to use the node's default medium.\nMust be an empty string (default) or Memory.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n+optional" + }, + "sizeLimit": { + "type": "string", + "format": "int64", + "title": "Total amount of local storage required for this EmptyDir volume.\nThe size limit is also applicable for memory medium.\nThe maximum usage on memory medium EmptyDir would be the minimum value\nbetween the SizeLimit specified here and the sum of memory limits of all\ncontainers in a pod. The default is nil which means that the limit is\nundefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir\n+optional" + } + }, + "description": "Represents an empty directory for a pod.\nEmpty directory volumes support ownership management and SELinux relabeling." + }, + "v1alpha1EnvFromSource": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "title": "An optional identifier to prepend to each key in the ConfigMap.\n+optional" + }, + "configMapRef": { + "$ref": "#/definitions/v1alpha1ConfigMapEnvSource", + "title": "The ConfigMap to select from.\n+optional" + }, + "secretRef": { + "$ref": "#/definitions/v1alpha1SecretEnvSource", + "title": "The Secret to select from.\n+optional" + } + }, + "title": "EnvFromSource represents the source of a set of ConfigMaps" + }, + "v1alpha1EnvVar": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of EnvVar." + }, + "value": { + "type": "string", + "description": "The value of EnvVar." + }, + "valueFrom": { + "$ref": "#/definitions/v1alpha1EnvVarSource", + "title": "List of sources to populate environment variables in the container.\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\nwill be reported as an event when the container is starting. When a key\nexists in multiple sources, the value associated with the last source will\ntake precedence. Values defined by an Env with a duplicate key will take\nprecedence. Cannot be updated.\"," + } + }, + "description": "Environment variable information." + }, + "v1alpha1EnvVarSource": { + "type": "object", + "properties": { + "fieldRef": { + "$ref": "#/definitions/v1alpha1ObjectFieldSelector", + "title": "Selects a field of the pod: supports metadata.name, metadata.namespace,\n`metadata.labels['']`, `metadata.annotations['']`, spec.nodeName,\nspec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\n+optional" + }, + "resourceFieldRef": { + "$ref": "#/definitions/v1alpha1ResourceFieldSelector", + "title": "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu,\nrequests.memory and requests.ephemeral-storage) are currently supported.\n+optional" + }, + "ConfigMapKeyRef": { + "$ref": "#/definitions/v1alpha1ConfigMapKeySelector", + "title": "Selects a key of a ConfigMap.\n+optional" + }, + "secretKeyRef": { + "$ref": "#/definitions/v1alpha1SecretKeySelector", + "title": "Selects a key of a secret in the pod's namespace\n+optional" + } + }, + "description": "EnvVarSource represents a source for the value of an EnvVar.\nOnly one of its fields may be set." + }, + "v1alpha1Event": { + "type": "object", + "properties": { + "involvedObject": { + "$ref": "#/definitions/v1alpha1ObjectReference", + "description": "The object that this event is about." + }, + "reason": { + "type": "string", + "description": "reason is why the action was taken. It is human-readable.\nThis field cannot be empty for new Events and it can have at most 128\ncharacters." + }, + "message": { + "type": "string", + "description": "A human-readable description of the status of this operation." + }, + "source": { + "$ref": "#/definitions/v1alpha1EventSource", + "description": "The component reporting this event. Should be a short machine\nunderstandable string." + }, + "lastTimestamp": { + "type": "string", + "format": "int64", + "description": "The time at which the most recent occurrence of this event was recorded." + }, + "type": { + "$ref": "#/definitions/v1alpha1EventType", + "description": "Type of this event (Normal, Warning), new types could be added in the\nfuture." + } + }, + "description": "Event is a report of an event somewhere in the instance. Events\nhave a limited retention time and triggers and messages may evolve\nwith time. Event consumers should not rely on the timing of an event\nwith a given Reason reflecting a consistent underlying trigger, or the\ncontinued existence of events with that Reason. Events should be\ntreated as informative, best-effort, supplemental data." + }, + "v1alpha1EventSource": { + "type": "object", + "properties": { + "component": { + "type": "string", + "title": "Component from which the event is generated.\n+optional" + }, + "host": { + "type": "string", + "title": "Node name on which the event is generated.\n+optional" + } + }, + "description": "EventSource contains information for an event." + }, + "v1alpha1EventType": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED", + "description": "Type of event (Normal, Warning), new types could be added in the\nfuture.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type." + }, + "v1alpha1ExecAction": { + "type": "object", + "properties": { + "command": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "description": "ExecAction describes a \"run in container\" action." + }, + "v1alpha1FailoverTimeout": { + "type": "object", + "properties": { + "failoverEvictionTimeout": { + "type": "string", + "format": "int64", + "description": "failoverEvictionTimeout Specifies the grace period for deleting scheduling result on failed clusters." + }, + "clusterMonitorPeriod": { + "type": "string", + "format": "int64", + "description": "clusterMonitorPeriod Specifies how often karmada-controller-manager monitors cluster health status." + }, + "clusterStartupGracePeriod": { + "type": "string", + "format": "int64", + "description": "clusterStartupGracePeriod Specifies the grace period of allowing a cluster to be unresponsive during startup before marking it unhealthy." + }, + "clusterMonitorGracePeriod": { + "type": "string", + "format": "int64", + "description": "clusterMonitorGracePeriod Specifies the grace period of allowing a running cluster to be unresponsive before marking it unhealthy." + }, + "gracefulEvictionTimeout": { + "type": "string", + "format": "int64", + "description": "gracefulEvictionTimeout Specifies the timeout period waiting for the graceful-eviction-controller performs the final removal since the workload(resource) has been moved to the graceful eviction tasks." + }, + "clusterSuccessThreshold": { + "type": "string", + "format": "int64", + "description": "clusterSuccessThreshold the duration of successes for the cluster to be considered healthy after recovery." + }, + "clusterFailureThreshold": { + "type": "string", + "format": "int64", + "description": "clusterFailureThreshold The duration of failure for the cluster to be considered unhealthy." + } + }, + "title": "FailoverTimeout Failover timeout" + }, + "v1alpha1GVR": { + "type": "object", + "properties": { + "group": { + "type": "string", + "description": "Group represents the resource group of CustomResources." + }, + "version": { + "type": "string", + "description": "Version represents the resource version of CustomResources." + }, + "resource": { + "type": "string", + "description": "Resource represents the resource name of CustomResources, which is plural.\nYou can find it in plural field of related CRD definition." + } + } + }, + "v1alpha1GetClusterCustomResourceJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the CustomResource YAML details" + } + }, + "title": "GetClusterCustomResourceJSONResponse represents response of get one\nCustomResource'json of cluster scope" + }, + "v1alpha1GetClusterOverridePolicyJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the OverridePolicy YAML details" + } + }, + "description": "ClusterOverridePolicy data information in json format." + }, + "v1alpha1GetClusterOverridePolicyResponse": { + "type": "object", + "properties": { + "clusterOverridePolicy": { + "$ref": "#/definitions/v1alpha1ClusterOverridePolicy", + "description": "The new state of the OverridePolicy." + } + }, + "title": "Get ClusterOverridePolicy represents the response of get one override policy" + }, + "v1alpha1GetClusterPropagationPolicyJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the ClusterPropagationPolicy YAML details" + } + }, + "description": "ClusterPropagationPolicy data information in json format." + }, + "v1alpha1GetClusterPropagationPolicyResponse": { + "type": "object", + "properties": { + "clusterPropagationPolicy": { + "$ref": "#/definitions/v1alpha1ClusterPropagationPolicy", + "description": "The new state of the propagationPolicy." + } + }, + "title": "Get PropagationPolicy represents the response of get one propagation policy" + }, + "v1alpha1GetConfigMapJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the ConfigMap YAML details" + } + }, + "description": "ConfigMap data information in json format." + }, + "v1alpha1GetCronJobJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the CronJob YAML details" + } + }, + "description": "CronJob data information in json format." + }, + "v1alpha1GetCustomResourceDefinitionJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the CustomResourceDefinition YAML details" + } + }, + "title": "GetCustomResourceDefinitionJSONResponse represents response of get one\nCustomResourceDefinition'json" + }, + "v1alpha1GetCustomResourceJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the CustomResource YAML details" + } + }, + "title": "GetCustomResourceJSONResponse represents response of get one\nCustomResource'json of namespaced scope" + }, + "v1alpha1GetDeploymentJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the Deployment YAML details" + } + }, + "description": "Deployment data information in json format." + }, + "v1alpha1GetIngressJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the ingress YAML details." + } + }, + "title": "GetIngressJSONResponse the response of get cluster ingresses json" + }, + "v1alpha1GetInstanceDeschedulerResponse": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Descheduler enabled" + }, + "timeout": { + "$ref": "#/definitions/v1alpha1DeschedulerTimeout" + } + } + }, + "v1alpha1GetInstanceFailoverResponse": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Failover enabled" + }, + "timeout": { + "$ref": "#/definitions/v1alpha1FailoverTimeout", + "title": "Failover timeout" + } + } + }, + "v1alpha1GetInstanceJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the ingress YAML details." + } + }, + "description": "GetInstanceJSONResponse the response of get instance json." + }, + "v1alpha1GetJobJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the Deployment YAML details" + } + }, + "description": "Job data information in json format." + }, + "v1alpha1GetNamespaceJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the Namespace YAML details" + } + } + }, + "v1alpha1GetNamespaceResponse": { + "type": "object", + "properties": { + "namespace": { + "$ref": "#/definitions/v1alpha1Namespace", + "title": "The data is the Namespace YAML details" + } + } + }, + "v1alpha1GetOverridePolicyResponse": { + "type": "object", + "properties": { + "overridePolicy": { + "$ref": "#/definitions/v1alpha1OverridePolicy", + "description": "The new state of the OverridePolicy." + } + }, + "title": "Get OverridePolicy represents the response of get one override policy" + }, + "v1alpha1GetPropagationPolicyJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the PropagationPolicy YAML details" + } + }, + "description": "PropagationPolicy data information in json format." + }, + "v1alpha1GetPropagationPolicyResponse": { + "type": "object", + "properties": { + "propagationPolicy": { + "$ref": "#/definitions/v1alpha1PropagationPolicy", + "description": "The new state of the propagationPolicy." + } + }, + "title": "Get PropagationPolicy represents the response of get one propagation policy" + }, + "v1alpha1GetSecretJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the Secret YAML details" + } + }, + "description": "It returns Secret data information in json format." + }, + "v1alpha1GetServiceJSONResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the Service YAML details." + } + }, + "description": "It returns Service data information in json format." + }, + "v1alpha1HTTPGetAction": { + "type": "object", + "properties": { + "path": { + "type": "string", + "title": "Path to access on the HTTP server.\n+optional" + }, + "port": { + "type": "string", + "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." + }, + "host": { + "type": "string", + "title": "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead.\n+optional" + }, + "scheme": { + "type": "string", + "title": "Scheme to use for connecting to the host.\nDefaults to HTTP.\n+optional" + } + }, + "description": "HTTPGetAction describes an action based on HTTP Get requests." + }, + "v1alpha1HTTPIngressPath": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Path is matched against the path of an incoming request." + }, + "pathType": { + "type": "string", + "description": "PathType determines the interpretation of the Path matching." + }, + "backend": { + "$ref": "#/definitions/v1alpha1IngressBackend", + "description": "Backend defines the referenced service endpoint to which the traffic will\nbe forwarded to." + } + }, + "description": "HTTPIngressPath associates a path with a backend. Incoming urls matching the\npath are forwarded to the backend." + }, + "v1alpha1HTTPIngressRuleValue": { + "type": "object", + "properties": { + "paths": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1HTTPIngressPath" + }, + "description": "A collection of paths that map requests to backends." + } + }, + "description": "HTTPIngressRuleValue is a list of http selectors pointing to backends.\nIn the example: http:///? -> backend where\nwhere parts of the url correspond to RFC 3986, this resource will be used\nto match against everything after the last '/' and before the first '?'\nor '#'." + }, + "v1alpha1Handler": { + "type": "object", + "properties": { + "exec": { + "$ref": "#/definitions/v1alpha1ExecAction", + "title": "Exec specifies the action to take.\n+optional" + }, + "httpGet": { + "$ref": "#/definitions/v1alpha1HTTPGetAction", + "title": "HTTPGet specifies the http request to perform.\n+optional" + }, + "TCPSocket": { + "$ref": "#/definitions/v1alpha1TCPSocketAction", + "title": "TCPSocket specifies an action involving a TCP port.\n+optional" + } + } + }, + "v1alpha1HostPathVolumeSource": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Path of the directory on the host.\nIf the path is a symlink, it will follow the link to the real path." + }, + "type": { + "type": "string", + "title": "Type for HostPath Volume\nDefaults to \"\"\n+optional" + } + }, + "description": "HostPathVolumeSource Represents a host path mapped into a pod.\nHost path volumes do not support ownership management or SELinux relabeling." + }, + "v1alpha1ImageComponent": { + "type": "string", + "enum": [ + "Registry", + "Repository", + "Tag" + ], + "default": "Registry", + "description": "ImageComponent indicates the components for image.\n\n - Registry: Registry is the registry component of an image with format '[registry/]repository[:tag]'.\n - Repository: Repository is the repository component of an image with format '[registry/]repository[:tag]'.\n - Tag: Tag is the tag component of an image with format '[registry/]repository[:tag]'." + }, + "v1alpha1ImageOverrider": { + "type": "object", + "properties": { + "predicate": { + "$ref": "#/definitions/v1alpha1ImagePredicate", + "title": "Predicate filters images before applying the rule.\nDefaults to nil, in that case, the system will automatically detect image fields if the resource type is\n+optional" + }, + "component": { + "$ref": "#/definitions/v1alpha1ImageComponent", + "description": "+kubebuilder:validation:Enum=Registry;Repository;Tag\n+required", + "title": "Component is part of image name.\nBasically we presume an image can be made of '[registry/]repository[:tag]'.\nThe registry could be:\n- k8s.gcr.io\n- fictional.registry.example:10443\nThe repository could be:\n- kube-apiserver\n- fictional/nginx\nThe tag cloud be:\n- latest\n- v1.19.1\n- @sha256:dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c" + }, + "operator": { + "$ref": "#/definitions/v1alpha1OverriderOperator", + "title": "Operator represents the operator which will apply on the image.\n+kubebuilder:validation:Enum=add;remove;replace\n+required" + }, + "value": { + "type": "string", + "title": "Value to be applied to image.\nMust not be empty when operator is 'add' or 'replace'.\nDefaults to empty and ignored when operator is 'remove'.\n+optional" + } + } + }, + "v1alpha1ImagePredicate": { + "type": "object", + "properties": { + "path": { + "type": "string", + "title": "Path indicates the path of target field\n+required" + } + }, + "description": "ImagePredicate describes images filter." + }, + "v1alpha1Images": { + "type": "object", + "properties": { + "karmadaRegistry": { + "type": "string", + "description": "karmada registry, default is \"swr.ap-southeast-1.myhuaweicloud.com\".\nall of karmada images is effect by the param." + }, + "karmadaVersion": { + "type": "string", + "description": "karmada images version, default is \"latest\".\nall of karmada images is effect by the param." + }, + "kubeRegistry": { + "type": "string", + "description": "the registry of kube-apiserver and kube-controller-manager, default is \"k8s.gcr.io\"." + }, + "kubeVersion": { + "type": "string", + "description": "the iamge version of kube-apiserver and kube-controller-manager." + }, + "dockerIoRegistry": { + "type": "string", + "description": "the registry of kubectl and cfssl, default is \"docker.daocloud.m.io\"." + } + } + }, + "v1alpha1Ingress": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "spec": { + "$ref": "#/definitions/v1alpha1IngressSpec", + "description": "Spec is the desired state of the Ingress." + }, + "status": { + "$ref": "#/definitions/v1alpha1IngressStatus", + "description": "Status is the current state of the Ingress." + } + }, + "description": "Ingress is a collection of rules that allow inbound connections to reach the\nendpoints defined by a backend. An Ingress can be configured to give services\nexternally-reachable urls, load balance traffic, terminate SSL, offer name\nbased virtual hosting etc." + }, + "v1alpha1IngressBackend": { + "type": "object", + "properties": { + "service": { + "$ref": "#/definitions/v1alpha1IngressServiceBackend", + "description": "Service references a Service as a Backend.\nThis is a mutually exclusive setting with \"Resource\"." + }, + "resource": { + "$ref": "#/definitions/v1alpha1TypedLocalObjectReference", + "description": "Resource is an ObjectRef to another Kubernetes resource in the namespace\nof the Ingress object. If resource is specified, a service.Name and\nservice.Port must not be specified.\nThis is a mutually exclusive setting with \"Service\"." + } + }, + "description": "IngressBackend describes all endpoints for a given service and port." + }, + "v1alpha1IngressClassSummary": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name is the name of ingress class" + }, + "isDefaultClass": { + "type": "boolean", + "description": "IsDefaultClass is used to indicate that an IngressClass should be considered default." + } + } + }, + "v1alpha1IngressRule": { + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "Host is the fully qualified domain name of a network host, as defined by\nRFC 3986." + }, + "http": { + "$ref": "#/definitions/v1alpha1HTTPIngressRuleValue", + "description": "HTTPIngressRuleValue is a list of http selectors pointing to backends." + } + }, + "description": "IngressRule represents the rules mapping the paths under a specified host to\nthe related backend services. Incoming requests are first evaluated for a host\nmatch, then routed to the backend associated with the matching IngressRuleValue." + }, + "v1alpha1IngressServiceBackend": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Name is the referenced service. The service must exist in" + }, + "port": { + "$ref": "#/definitions/v1alpha1IngressServiceBackendPort", + "title": "Port of the referenced service. A port name or port number" + } + }, + "description": "IngressServiceBackend references a Kubernetes Service as a Backend." + }, + "v1alpha1IngressServiceBackendPort": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name is the name of the port on the Service.\nThis is a mutually exclusive setting with \"Number\"." + }, + "number": { + "type": "integer", + "format": "int32", + "description": "Number is the numerical port number (e.g. 80) on the Service.\nThis is a mutually exclusive setting with \"Name\"." + } + }, + "description": "ServiceBackendPort is the service port being referenced." + }, + "v1alpha1IngressSpec": { + "type": "object", + "properties": { + "ingressClassName": { + "type": "string", + "title": "IngressClassName is the name of the IngressClass cluster resource.\nThe associated IngressClass defines which controller will implement the\nresource. This replaces the deprecated `kubernetes.io/ingress.class`\nannotation. For backwards compatibility, when that annotation is set, it\nmust be given precedence over this field. The controller may emit a\nwarning if the field and annotation have different values.\nImplementations of this API should ignore Ingresses without a class\nspecified. An IngressClass resource may be marked as default, which can\nbe used to set a default value for this field" + }, + "tls": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1IngressTLS" + }, + "description": "TLS configuration.\nCurrently the Ingress only supports a single TLS\nport, 443. If multiple members of this list specify different hosts, they\nwill be multiplexed on the same port according to the hostname specified\nthrough the SNI TLS extension, if the ingress controller fulfilling the\ningress supports SNI." + }, + "rules": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1IngressRule" + }, + "description": "A list of host rules used to configure the Ingress. If unspecified, or\nno rule matches, all traffic is sent to the default backend." + } + }, + "description": "IngressSpec is the desired state of the Ingress." + }, + "v1alpha1IngressStatus": { + "type": "object", + "properties": { + "loadBalancer": { + "$ref": "#/definitions/apinetworkingv1alpha1LoadBalancerStatus", + "description": "LoadBalancer contains the current status of the load-balancer." + }, + "clusters": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterProviderSummary" + }, + "title": "Clusters represents target member clusters where the resource to be deployed" + } + }, + "description": "IngressStatus is the current state of the Ingress." + }, + "v1alpha1IngressTLS": { + "type": "object", + "properties": { + "hosts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Hosts are a list of hosts included in the TLS certificate.\nThe values in this list must match the name/s used in the tlsSecret. Defaults to the\nwildcard host setting for the loadbalancer controller fulfilling this\nIngress, if left unspecified." + }, + "secretName": { + "type": "string", + "description": "SecretName is the name of the secret used to terminate TLS traffic on port\n443.\nField is left optional to allow TLS routing based on SNI\nhostname alone. If the SNI host in a listener conflicts with the \"Host\"\nheader field used by an IngressRule, the SNI host is used for termination\nand value of the Host header is used for routing." + } + }, + "description": "IngressTLS describes the transport layer security associated with an Ingress." + }, + "v1alpha1Instance": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "spec": { + "$ref": "#/definitions/v1alpha1InstanceSpec", + "description": "instanceSpec defines the desired behavior of the instance." + }, + "status": { + "$ref": "#/definitions/v1alpha1InstanceStatus", + "description": "instanceStatus defines the observed state of install." + } + }, + "description": "Instance enables declarative installation of karmada." + }, + "v1alpha1InstanceSpec": { + "type": "object", + "properties": { + "images": { + "$ref": "#/definitions/v1alpha1Images", + "description": "set global images registry and version, kubenetes original images and\nkarmada images can be set up separately. If there is nil, will use the\ndefault images to install." + }, + "namespace": { + "type": "string", + "description": "specified namespace to karmada, if not specified defualt\n\"karmada-system\"." + }, + "serviceType": { + "$ref": "#/definitions/apiinstancev1alpha1ServiceType", + "description": "ServiceType represents the sevice type of karmada apiserver.\nit is Nodeport by default." + }, + "secretRef": { + "$ref": "#/definitions/v1alpha1SecretRef", + "description": "SecretRef defines the kubeconfig of install cluster in secret." + } + }, + "description": "instanceSpec defines the desired behavior of the instance." + }, + "v1alpha1InstanceStatus": { + "type": "object", + "properties": { + "phase": { + "type": "string", + "description": "the karmada installtion phase, must be enum type." + }, + "controlPlaneReady": { + "type": "boolean", + "description": "ControlPlaneReady represent karmada cluster is health status." + }, + "karmadaVersion": { + "type": "string", + "description": "KarmadaVersion represente the karmada verison." + }, + "kubernetesVersion": { + "type": "string", + "description": "KubernetesVersion represente the karmada-apiserver version." + }, + "summary": { + "$ref": "#/definitions/v1alpha1InstanceStatusSummary", + "description": "Summary represents all summary info of member cluster resource." + }, + "state": { + "$ref": "#/definitions/InstanceStatusState", + "description": "State represents karmada instance current state." + } + }, + "description": "Most recently observed status of the instance." + }, + "v1alpha1InstanceStatusSummary": { + "type": "object", + "properties": { + "resourceTotalNum": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "description": "ResourceTotalNum represent the total number of distributed resource on karmada control plane.\ne.g: service, ingress, pvc, secret." + }, + "policyTotalNum": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + }, + "description": "PolicyTotalNum represent the total number of policy resource.\ne.g: PropagationPolicy, OverridePolicy." + }, + "clusterSummary": { + "$ref": "#/definitions/v1alpha1NumStatistic", + "description": "ClusterSummary represents the each member cluster summary." + }, + "nodeSummary": { + "$ref": "#/definitions/v1alpha1NumStatistic", + "description": "NodeSummary represents all nodes summary of all clusters." + }, + "resourceSummary": { + "$ref": "#/definitions/v1alpha1ResourceSummary", + "description": "ResourceSummary represents the summary of resources in all of the member cluster." + }, + "workLoadSummary": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/v1alpha1NumStatistic" + }, + "description": "WorkLoadSummary represents all workLoads summary of all clusters.\ne.g: deployment, statefulset." + } + }, + "description": "Summary represents all summary info of member cluster resource." + }, + "v1alpha1Job": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "spec": { + "$ref": "#/definitions/v1alpha1JobSpec", + "description": "JobSpec describes how the job execution will look like." + }, + "status": { + "$ref": "#/definitions/v1alpha1JobStatus", + "description": "JobStatus represents the current state of a Job." + }, + "executionTimestamp": { + "type": "string", + "format": "int64", + "description": "Information when was the time the job was successfully executed." + } + }, + "description": "Job represents the details information." + }, + "v1alpha1JobSpec": { + "type": "object", + "properties": { + "template": { + "$ref": "#/definitions/v1alpha1PodTemplateSpec", + "description": "Describes the pod that will be created when executing a job." + } + }, + "description": "JobSpec describes how the job execution will look like and when it will\nactually run." + }, + "v1alpha1JobStatus": { + "type": "object", + "properties": { + "active": { + "type": "integer", + "format": "int32", + "title": "The number of pending and running pods.\n+optional" + }, + "succeed": { + "type": "integer", + "format": "int32", + "title": "The number of pods which reached phase Succeeded.\n+optional" + }, + "failed": { + "type": "integer", + "format": "int32", + "title": "The number of pods which reached phase Failed.\n+optional" + }, + "phase": { + "$ref": "#/definitions/JobStatusJobState", + "description": "State of a job." + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/typesCondition" + }, + "description": "Current service state of job." + }, + "clusters": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterProviderSummary" + }, + "title": "Clusters represents target member clusters where the resource to be deployed" + } + }, + "description": "JobStatus represents the current state of a cron job." + }, + "v1alpha1KeyToPath": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The key to project." + }, + "path": { + "type": "string", + "description": "The relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'." + }, + "mode": { + "type": "integer", + "format": "int32", + "title": "Optional: mode bits to use on this file, should be a value between 0\nand 0777. If not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional" + } + }, + "description": "KeyToPath maps a string key to a path within a volume." + }, + "v1alpha1LabelAnnotationOverrider": { + "type": "object", + "properties": { + "operator": { + "$ref": "#/definitions/v1alpha1OverriderOperator", + "title": "Operator represents the operator which will apply on the workload.\n+kubebuilder:validation:Enum=add;remove;replace\n+required" + }, + "value": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Value to be applied to annotations/labels of workload.\nItems in Value which will be appended after annotations/labels when Operator is 'add'.\nItems in Value which match in annotations/labels will be deleted when Operator is 'remove'.\nItems in Value which match in annotations/labels will be replaced when Operator is 'replace'.\n+required" + } + }, + "title": "LabelAnnotationOverrider represents the rules dedicated to handling workload labels/annotations" + }, + "v1alpha1Lifecycle": { + "type": "object", + "properties": { + "PostStart": { + "$ref": "#/definitions/v1alpha1Handler", + "title": "PostStart is called immediately after a container is created. If the\nhandler fails, the container is terminated and restarted according to its\nrestart policy. Other management of the container blocks until the hook\ncompletes. More info:\nhttps://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n+optional" + }, + "preStop": { + "$ref": "#/definitions/v1alpha1Handler", + "title": "PreStop is called immediately before a container is terminated due to an\nAPI request or management event such as liveness/startup probe failure,\npreemption, resource contention, etc. The handler is not called if the\ncontainer crashes or exits. The Pod's termination grace period countdown\nbegins before the PreStop hook is executed. Regardless of the outcome of\nthe handler, the container will eventually terminate within the Pod's\ntermination grace period (unless delayed by finalizers). Other management\nof the container blocks until the hook completes or until the termination\ngrace period is reached. More info:\nhttps://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n+optional" + } + }, + "description": "Lifecycle describes actions that the management system should take in\nresponse to container lifecycle events. For the PostStart and PreStop\nlifecycle handlers, management of the container blocks until the action is\ncomplete, unless the container process fails, in which case the handler is\naborted." + }, + "v1alpha1ListArtifactsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Artifact" + }, + "description": "Items is a list of tag names." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "title": "ListArtifactsResponse returns a list of tags of specified image" + }, + "v1alpha1ListClusterCustomResourcesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1CustomResource" + }, + "title": "Data represents the response of CustomResource" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "title": "ListClusterCustomResourcesResponse represents list all CustomResources of\ncluster scope in cluster" + }, + "v1alpha1ListClusterOverridePoliciesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterOverridePolicy" + }, + "description": "Standard object's data." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "List of ClusterOverridePolicy information." + }, + "v1alpha1ListClusterPropagationPoliciesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterPropagationPolicy" + }, + "description": "Standard object's data." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "List of ClusterPropagationPolicy information." + }, + "v1alpha1ListClustersLabelsResponse": { + "type": "object", + "properties": { + "clusterLabels": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterLabels" + }, + "description": "ClustersLabels describe labels of member cluster." + } + }, + "description": "ListClustersLabelsResponse returns all member cluster labels of Karmada instance." + }, + "v1alpha1ListClustersLocationsSummaryResponse": { + "type": "object", + "properties": { + "locations": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterLocation" + }, + "title": "total clusters locations list" + } + }, + "description": "ListClustersLocationsSummaryResponse return all kpanda-cluster's zones and regions." + }, + "v1alpha1ListClustersResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Cluster" + }, + "title": "data The data field is the YAML details" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "Clusters information List." + }, + "v1alpha1ListConfigMapsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ConfigMap" + }, + "description": "Standard object's data." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + } + }, + "v1alpha1ListCronJobsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1CronJob" + }, + "description": "The data field is the cronjob YAML details." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "CronJob information List." + }, + "v1alpha1ListCustomResourceDefinitionGroupsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Items represents groups of customResourceDefinitions." + } + }, + "title": "ListCustomResourceDefinitionGroupsResponse represents a list of all groups of customResourceDefinitions" + }, + "v1alpha1ListCustomResourceDefinitionsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1CustomResourceDefinition" + }, + "description": "CustomResourceDefinition represents all custom resource definitions." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "title": "ListCustomResourceDefinitionsResponse represents response of list all\nCustomResourceDefinitions" + }, + "v1alpha1ListCustomResourcesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1CustomResource" + }, + "title": "Data represents the response of CustomResource" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "title": "ListCustomResourcesResponse represents list all of the CustomResources of\nnamespaced scope in cluster" + }, + "v1alpha1ListDeploymentsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Deployment" + }, + "title": "Data represents the kairship's workload types of inclusion" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "description": "Response message for the `ListDeployments` method." + }, + "v1alpha1ListIngressClassSummaryResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1IngressClassSummary" + } + } + } + }, + "v1alpha1ListIngressesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Ingress" + }, + "description": "Data is the ingress details." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Page defines the pagination detail be return." + } + }, + "title": "ListIngressesResponse the response of list one cluster ingresses" + }, + "v1alpha1ListInstanceCronJobsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1CronJob" + }, + "description": "The data field is the cronjob YAML details." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "Instance CronJob information List." + }, + "v1alpha1ListInstanceDeploymentsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Deployment" + }, + "title": "Data represents the kairship's workload types of inclusion" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "description": "Response message for the `ListInstanceDeployments` method." + }, + "v1alpha1ListInstanceEventKindsResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Data is the list of involvedObject'kinds of events." + } + }, + "description": "ListInstanceEventKindsResponse returns the list of involvedObject's kinds of\nevents." + }, + "v1alpha1ListInstanceEventsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Event" + }, + "description": "Data represents the returned event list." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination is for data paging." + } + }, + "description": "ListInstanceEventsResponse returns the list and pagination of events." + }, + "v1alpha1ListInstanceIngressesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Ingress" + }, + "description": "Data is the ingress details." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "title": "ListInstanceIngressesResponse the response of list all cluster ingresses" + }, + "v1alpha1ListInstanceJobsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Job" + }, + "description": "The data is the job YAML details." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "Instance Jobs information List." + }, + "v1alpha1ListInstanceOverridePoliciesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1OverridePolicy" + }, + "title": "Standard object's data" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "description": "Response message for the `ListInstanceOverridePolicies` method." + }, + "v1alpha1ListInstancePropagationPoliciesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1PropagationPolicy" + }, + "title": "Standard object's data" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "description": "Response message for the `ListInstancePropagationPolicies` method." + }, + "v1alpha1ListInstanceResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Instance" + }, + "title": "response instances YAML details" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "ListInstanceResponse defines response informations of list instances." + }, + "v1alpha1ListInstanceServicesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Service" + }, + "title": "Data represents the kairship's service" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "description": "Response message for the `ListInstanceServicesRequest` method." + }, + "v1alpha1ListInstancesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1WorkspaceInstance" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "pagination." + } + } + }, + "v1alpha1ListJobsByCronJobNameResponse": { + "type": "object", + "properties": { + "Cluster": { + "type": "string", + "description": "The data field is the cronjob YAML details." + }, + "jobs": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Job" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "title": "CronJob Name information List" + }, + "v1alpha1ListJobsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Job" + }, + "description": "The data is the job YAML details." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "Jobs information List." + }, + "v1alpha1ListMemberClusterDeploymentsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Deployment" + }, + "title": "Data represents the kairship's workload types of inclusion" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "description": "Response message for the `ListMemberClusterDeployments` method." + }, + "v1alpha1ListMemberClusterIngressesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Ingress" + }, + "description": "Data is the ingress details." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "description": "Response message for the `ListMemberClusterIngresses` method." + }, + "v1alpha1ListMemberClusterNamespaceSummaryResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1MemberClusterNamespaceSummary" + }, + "title": "Data is the returned namespace summary list" + } + } + }, + "v1alpha1ListMemberClusterServicesRequestKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Deployment" + ], + "default": "KIND_UNSPECIFIED", + "description": " - Deployment: A Deployment provides declarative updates for Pods and ReplicaSets." + }, + "v1alpha1ListMemberClusterServicesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Service" + }, + "title": "Data represents the kairship's workload types of inclusion" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "title": "Pagination is for data paging" + } + }, + "description": "Response message for the `ListMemberClusterServices` method." + }, + "v1alpha1ListNamespaceInstancesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1NamespaceInstance" + }, + "title": "Namespace binding" + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1ListNamespaceSummaryResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1NamespaceSummary" + }, + "title": "Data is the returned namespace summary list" + }, + "accessScope": { + "$ref": "#/definitions/ListNamespaceSummaryResponseScope", + "description": "AccessScope indicates whether the user has the cluster right." + } + } + }, + "v1alpha1ListNamespacesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Namespace" + }, + "title": "Data is the returned namespace list" + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + }, + "description": "ListNamespaceResponse is a list of Namespaces." + }, + "v1alpha1ListOverridePoliciesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1OverridePolicy" + }, + "description": "Standard object's data." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "List of OverridePolicy information." + }, + "v1alpha1ListPodsForMemberClusterRequestKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Deployment", + "StatefulSet", + "DaemonSet", + "Service", + "Job", + "CronJob" + ], + "default": "KIND_UNSPECIFIED", + "description": " - KIND_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Deployment: A Deployment provides declarative updates for Pods and ReplicaSets.\n - StatefulSet: StatefulSet is the workload API object used to manage stateful\napplications.\n - DaemonSet: A DaemonSet ensures that all (or some) Nodes run a copy of a Pod.\n - Service: Service to expose an application running on a set of Pods.\n - Job: Job is used to express a one-time task.\n - CronJob: CronJob runs repeatedly according to its time schedule." + }, + "v1alpha1ListPodsForMemberClusterResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Pod" + }, + "description": "Standard object's data." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "List of pod information." + }, + "v1alpha1ListProjectsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Items is a list of project names." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "title": "ListProjectsResponse returns a list of projects of a registry" + }, + "v1alpha1ListPropagationPoliciesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1PropagationPolicy" + }, + "description": "Standard object's data." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "List of PropagationPolicy information." + }, + "v1alpha1ListRegistriesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Registry" + }, + "title": "items is registry host" + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "title": "ListRegistriesResponse returns a list of registries" + }, + "v1alpha1ListRepositoriesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Repository" + }, + "description": "Items is a list of repositories." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "title": "ListRepositoriesResponse returns a list of projects of a registry" + }, + "v1alpha1ListSecretsForMemberClusterResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Secret" + }, + "description": "Secret name." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "The Secret list for the given namespace and name if it exists in the\ncluster." + }, + "v1alpha1ListSecretsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Secret" + }, + "description": "Secret name." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "List of Secrets data details." + }, + "v1alpha1ListServicesForMemberClusterRequestKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Deployment", + "StatefulSet", + "DaemonSet" + ], + "default": "KIND_UNSPECIFIED", + "description": " - Deployment: A Deployment provides declarative updates for Pods and ReplicaSets.\n - StatefulSet: StatefulSet is the workload API object used to manage stateful\napplications.\n - DaemonSet: A DaemonSet ensures that all (or some) Nodes run a copy of a Pod." + }, + "v1alpha1ListServicesForMemberClusterResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Service" + }, + "description": "The data field is the service YAML details." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "The Service list for the given namespace and name if it exists in the\ncluster." + }, + "v1alpha1ListServicesRequestKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Deployment", + "StatefulSet", + "DaemonSet" + ], + "default": "KIND_UNSPECIFIED", + "description": " - Deployment: A Deployment provides declarative updates for Pods and ReplicaSets.\n - StatefulSet: StatefulSet is the workload API object used to manage stateful\napplications.\n - DaemonSet: A DaemonSet ensures that all (or some) Nodes run a copy of a Pod." + }, + "v1alpha1ListServicesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Service" + }, + "description": "The data field is the service YAML details." + }, + "pagination": { + "$ref": "#/definitions/typesPagination", + "description": "Pagination returned contains current page, size, and total." + } + }, + "description": "The Service list for the given namespace and name if it exists in the\ncluster." + }, + "v1alpha1ListWorkspacesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1WorkspaceInfo" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1LoadBalancerIngress": { + "type": "object", + "properties": { + "ip": { + "type": "string", + "description": "IP is set for load-balancer ingress points that are IP based." + }, + "hostname": { + "type": "string", + "description": "Hostname is set for load-balancer ingress points that are DNS based." + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1PortStatus" + }, + "description": "Ports is a list of records of service ports.\nIf used, every port defined in the service should have an entry in it." + } + }, + "description": "LoadBalancerIngress represents the status of a load-balancer ingress point:\ntraffic intended for the service should be sent to an ingress point." + }, + "v1alpha1LocalSecretReference": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name is the name of resource being referenced." + }, + "namespace": { + "type": "string", + "description": "Namespace is the namespace for the resource being referenced." + }, + "resourceVersion": { + "type": "string", + "description": "ResourceVersion is the version of resource being referenced." + } + }, + "title": "SecretRef represents the secret contains mandatory credentials to access the member cluster.\nThe secret should hold credentials as follows:\n- secret.data.token\n- secret.data.caBundle\n+optional" + }, + "v1alpha1MemberClusterNamespaceSummary": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name must be unique within a instance." + }, + "instance": { + "type": "string", + "description": "Instance the namespace belongs to." + }, + "cluster": { + "type": "string" + } + } + }, + "v1alpha1Namespace": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "spec": { + "$ref": "#/definitions/v1alpha1NamespaceSpec", + "description": "NamespaceSpec describes how the namespace execution will look like and when\nit will actually run." + } + }, + "description": "Namespace provides a scope for Names." + }, + "v1alpha1NamespaceInstance": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "title": "namespace Name" + }, + "instance": { + "type": "string", + "title": "instance name" + }, + "workspace": { + "$ref": "#/definitions/v1alpha1WorkspaceInfo", + "title": "workspace name" + } + } + }, + "v1alpha1NamespaceSpec": { + "type": "object", + "properties": { + "Finalizers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "description": "NamespaceSpec describes the attributes on a Namespace." + }, + "v1alpha1NamespaceSummary": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name must be unique within a instance." + }, + "instance": { + "type": "string", + "description": "Instance the namespace belongs to." + } + } + }, + "v1alpha1NodeAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "$ref": "#/definitions/v1alpha1NodeSelector", + "title": "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to an update), the system\nmay or may not try to eventually evict the pod from its node.\n+optional" + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1PreferredSchedulingTerm" + }, + "title": "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node matches the corresponding matchExpressions;\nthe node(s) with the highest sum are the most preferred. +optional" + } + }, + "description": "Node affinity is a group of node affinity scheduling rules." + }, + "v1alpha1NodeSelector": { + "type": "object", + "properties": { + "nodeSelectorTerms": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1NodeSelectorTerm" + } + } + }, + "title": "A node selector represents the union of the results of one or more label\nqueries over a set of nodes; that is, it represents the OR of the selectors\nrepresented by the node selector terms. +structType=atomic" + }, + "v1alpha1NodeSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The label key that the selector applies to." + }, + "operator": { + "type": "string", + "description": "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + }, + "values": { + "type": "array", + "items": { + "type": "string" + }, + "title": "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or\nDoesNotExist, the values array must be empty. If the operator is Gt or Lt,\nthe values array must have a single element, which will be interpreted as\nan integer. This array is replaced during a strategic merge patch.\n+optional" + } + }, + "description": "A node selector requirement is a selector that contains values, a key, and an\noperator that relates the key and values." + }, + "v1alpha1NodeSelectorTerm": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1NodeSelectorRequirement" + }, + "title": "A list of node selector requirements by node's labels.\n+optional" + }, + "matchFields": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1NodeSelectorRequirement" + }, + "title": "A list of node selector requirements by node's fields.\n+optional" + } + }, + "title": "A null or empty node selector term matches no objects. The requirements of\nthem are ANDed.\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n+structType=atomic" + }, + "v1alpha1NumStatistic": { + "type": "object", + "properties": { + "totalNum": { + "type": "integer", + "format": "int32", + "description": "TotalNum represents the total number of resource of member cluster." + }, + "readyNum": { + "type": "integer", + "format": "int32", + "description": "ReadyNum represents the resource in ready state." + } + } + }, + "v1alpha1ObjectFieldSelector": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string", + "title": "Version of the schema the FieldPath is written in terms of, defaults to\n\"v1\". +optional" + }, + "fieldPath": { + "type": "string", + "description": "Path of the field to select in the specified API version." + } + }, + "description": "ObjectFieldSelector selects an APIVersioned field of an object." + }, + "v1alpha1ObjectReference": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "title": "Kind of the referent.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional" + }, + "name": { + "type": "string", + "title": "Name of the referent.\nMore info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + } + }, + "description": "ObjectReference contains enough information to let you inspect or modify the\nreferred object." + }, + "v1alpha1OverridePolicy": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1alpha1OverridePolicySpec", + "description": "Spec represents the desired behavior of OverridePolicy." + } + }, + "description": "OverridePolicy represents the policy that overrides a group of resources to one or more clusters." + }, + "v1alpha1OverridePolicySpec": { + "type": "object", + "properties": { + "resourceSelectors": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ResourceSelector" + }, + "title": "ResourceSelectors used to select resources.\n+optional" + }, + "overrideRules": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1RuleWithCluster" + }, + "title": "OverrideRules defines a collection of override rules on target clusters.\n+optional" + } + } + }, + "v1alpha1OverriderOperator": { + "type": "string", + "enum": [ + "add", + "remove", + "replace" + ], + "default": "add" + }, + "v1alpha1Overriders": { + "type": "object", + "properties": { + "plaintext": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1PlaintextOverrider" + }, + "title": "Plaintext represents override rules defined with plaintext overriders.\n+optional" + }, + "imageOverrider": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ImageOverrider" + }, + "title": "ImageOverrider represents the rules dedicated to handling image overrides.\n+optional" + }, + "commandOverrider": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1CommandArgsOverrider" + }, + "title": "CommandOverrider represents the rules dedicated to handling container command\n+optional" + }, + "argsOverrider": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1CommandArgsOverrider" + }, + "title": "ArgsOverrider represents the rules dedicated to handling container args\n+optional" + }, + "labelsOverrider": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1LabelAnnotationOverrider" + }, + "title": "LabelsOverrider represents the rules dedicated to handling workload labels\n+optional" + }, + "annotationsOverrider": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1LabelAnnotationOverrider" + }, + "title": "AnnotationsOverrider represents the rules dedicated to handling workload annotations\n+optional" + } + } + }, + "v1alpha1PatchConfigMapResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the ConfigMap YAML details" + } + } + }, + "v1alpha1PatchCustomResourceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the CustomResource YAML details." + } + }, + "title": "PatchClusterCustomResourceResponse represents response of updating one\nCustomResource of cluster scope" + }, + "v1alpha1PatchDeploymentResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the json data of deployment after patching." + } + } + }, + "v1alpha1PatchIngressResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the ingress YAML details," + } + }, + "title": "UpdateIngressRequest the response of patch cluster ingresses" + }, + "v1alpha1PatchNamespaceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the service YAML details." + } + } + }, + "v1alpha1PatchSecretResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the secret YAML details" + } + }, + "description": "It returns patches the current secret details." + }, + "v1alpha1PatchServiceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the service YAML details." + } + } + }, + "v1alpha1PauseCronJobResponse": { + "type": "object", + "properties": { + "cronjob": { + "$ref": "#/definitions/v1alpha1CronJob", + "description": "The new state of the cronjob after pausing." + } + }, + "description": "Response message for the `PauseCronJobResponse` method.\nThis response message is assigned to the `response` field of the returned\nOperation when that operation is done." + }, + "v1alpha1PauseDeploymentResponse": { + "type": "object", + "properties": { + "deployment": { + "$ref": "#/definitions/v1alpha1Deployment", + "description": "The new state of the deployment after pausing." + } + }, + "description": "Response message for the `PauseDeploymentRequest` method.\nThis response message is assigned to the `response` field of the returned\nOperation when that operation is done." + }, + "v1alpha1PersistentVolumeClaimVolumeSource": { + "type": "object", + "properties": { + "claimName": { + "type": "string", + "title": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as\nthe pod using this volume. More info:\nhttps://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" + }, + "readOnly": { + "type": "boolean", + "title": "Will force the ReadOnly setting in VolumeMounts.\nDefault false.\n+optional" + } + }, + "description": "PersistentVolumeClaimVolumeSource references the user's PVC in the same\nnamespace. This volume finds the bound PV and mounts that volume for the pod.\nA PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another\ntype of volume that is owned by someone else (the system)." + }, + "v1alpha1Placement": { + "type": "object", + "properties": { + "clusterAffinity": { + "$ref": "#/definitions/v1alpha1ClusterAffinity", + "title": "ClusterAffinity represents scheduling restrictions to a certain set of clusters.\nIf not set, any cluster can be scheduling candidate.\n+optional" + }, + "clusterTolerations": { + "type": "array", + "items": { + "$ref": "#/definitions/apipolicyv1alpha1Toleration" + }, + "title": "ClusterTolerations represents the tolerations.\n+optional" + }, + "spreadConstraints": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1SpreadConstraint" + }, + "title": "SpreadConstraints represents a list of the scheduling constraints.\n+optional" + }, + "replicaScheduling": { + "$ref": "#/definitions/v1alpha1ReplicaSchedulingStrategy", + "description": "ReplicaScheduling represents the scheduling policy on dealing with the number of replicas\nwhen propagating resources that have replicas in spec (e.g. deployments, statefulsets) to member clusters." + }, + "clusterAffinities": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterAffinityTerm" + }, + "description": "ClusterAffinities represents scheduling restrictions to multiple cluster\ngroups that indicated by ClusterAffinityTerm." + } + } + }, + "v1alpha1PlaintextOverrider": { + "type": "object", + "properties": { + "path": { + "type": "string", + "title": "Path indicates the path of target field" + }, + "operator": { + "type": "string", + "title": "Operator indicates the operation on target field.\nAvailable operators are: add, update and remove.\n+kubebuilder:validation:Enum=add;remove;replace" + }, + "value": { + "$ref": "#/definitions/v1JSON", + "title": "Value to be applied to target field.\nMust be empty when operator is Remove.\n+optional" + } + } + }, + "v1alpha1Pod": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "spec": { + "$ref": "#/definitions/v1alpha1PodSpec", + "description": "Spec describes the attributes that a pod is created with." + }, + "status": { + "$ref": "#/definitions/v1alpha1PodStatus", + "description": "Status represents the current information/status of node." + } + } + }, + "v1alpha1PodAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1PodAffinityTerm" + }, + "title": "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied.\n+optional" + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1WeightedPodAffinityTerm" + }, + "title": "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding\npodAffinityTerm; the node(s) with the highest sum are the most preferred.\n+optional" + } + }, + "description": "Pod affinity is a group of inter pod affinity scheduling rules." + }, + "v1alpha1PodAffinityTerm": { + "type": "object", + "properties": { + "labelSelector": { + "$ref": "#/definitions/typesLabelSelector", + "title": "A label query over a set of resources, in this case pods.\n+optional" + }, + "namespaces": { + "type": "array", + "items": { + "type": "string" + }, + "title": "namespaces specifies a static list of namespace names that the term applies\nto. The term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's\nnamespace\" +optional" + }, + "topologyKey": { + "type": "string", + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity)\nwith the pods matching the labelSelector in the specified namespaces, where\nco-located is defined as running on a node whose value of the label with\nkey topologyKey matches that of any node on which any of the selected pods\nis running. Empty topologyKey is not allowed." + }, + "namespaceSelector": { + "$ref": "#/definitions/typesLabelSelector", + "title": "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's\nnamespace\". An empty selector ({}) matches all namespaces. This field is\nbeta-level and is only honored when PodAffinityNamespaceSelector feature is\nenabled. +optional" + } + }, + "title": "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" + }, + "v1alpha1PodIp": { + "type": "object", + "properties": { + "ip": { + "type": "string" + } + }, + "description": "PodIP represents the IP address of a pod.\nIP address information. Each entry includes:\nIP: An IP address allocated to the pod. Routable at least within the cluster." + }, + "v1alpha1PodSpec": { + "type": "object", + "properties": { + "volumes": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Volume" + } + }, + "initContainers": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Container" + }, + "title": "init containers" + }, + "containers": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Container" + }, + "description": "Containers name." + }, + "restartPolicy": { + "type": "string", + "title": "repeated Container ephemeralContainers = 4;" + }, + "nodeName": { + "type": "string", + "description": "NodeName is a request to schedule this pod onto a specific node.\nIf it is non-empty, the scheduler simply schedules this pod onto that node,\nassuming that it fits resource requirements." + }, + "hostNetwork": { + "type": "boolean" + }, + "affinity": { + "$ref": "#/definitions/v1alpha1Affinity", + "title": "bool hostPID = 15;\nbool hostIPC = 16;\nbool shareProcessNamespace = 17;\nPodSecurityContext SecurityContext = 18;\nrepeated LocalObjectReference imagePullSecrets = 19;\nstring hostname = 20;\nstring subdomain = 21;" + }, + "tolerations": { + "type": "array", + "items": { + "$ref": "#/definitions/apicorev1alpha1Toleration" + }, + "title": "string schedulerName = 23;" + } + }, + "description": "PodSpec describes the attributes that a pod is created with." + }, + "v1alpha1PodStatus": { + "type": "object", + "properties": { + "phase": { + "$ref": "#/definitions/v1alpha1PodStatusPhase", + "description": "Phase represents the phase to search." + }, + "hostIP": { + "type": "string", + "title": "repeated types.Condition conditions = 2;\nstring message = 3;\nstring reason = 4;\nstring nominatedNodeName = 5;" + }, + "podIP": { + "type": "string", + "description": "PodIP represents the IP address of a pod.\nIP address information. Each entry includes:\nIP: An IP address allocated to the pod. Routable at least within the cluster." + }, + "podIPs": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1PodIp" + }, + "title": "PodIPs is same as PodIP" + }, + "startTime": { + "type": "string", + "format": "int64", + "description": "Required. Start time of the operation." + }, + "cpuRequest": { + "type": "string", + "format": "int64", + "description": "Pod cpu request." + }, + "cpuLimit": { + "type": "string", + "format": "int64", + "description": "Pod cpu limit." + }, + "memoryRequest": { + "type": "string", + "format": "int64", + "description": "Pod memory request." + }, + "memoryLimit": { + "type": "string", + "format": "int64", + "description": "Pod memory limit." + }, + "cpuUsageRate": { + "type": "number", + "format": "double", + "description": "cpuUsage_rate is the actual total pod cpu usage. Unit: m." + }, + "memoryUsageRate": { + "type": "number", + "format": "double", + "description": "memoryUsage_rate the total pod memory usage. Unit: byte." + }, + "restartCount": { + "type": "integer", + "format": "int32", + "description": "restart_count the total pod restart count." + }, + "ownedBy": { + "$ref": "#/definitions/PodStatusOwnedBy" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/typesCondition" + }, + "title": "Current service state of pod.\nMore info:\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions" + }, + "containerTotalCount": { + "type": "integer", + "format": "int32", + "description": "Container_total_count represents pod's container total count." + }, + "containerReadyCount": { + "type": "integer", + "format": "int32", + "description": "Container_ready_count represents pod's container ready count." + } + }, + "description": "PodStatus constructs an declarative configuration of the Pod type for use\nwith apply." + }, + "v1alpha1PodStatusPhase": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "v1alpha1PodTemplateSpec": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "spec": { + "$ref": "#/definitions/v1alpha1PodSpec", + "description": "Spec describes the attributes that a pod is created with." + } + }, + "description": "template is the object that describes the pod that will be created if\ninsufficient replicas are detected. Each pod stamped out by the StatefulSet\nwill fulfill this Template, but have a unique identity from the rest\nof the StatefulSet." + }, + "v1alpha1PortStatus": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "format": "int32", + "description": "Port is the port number of the service port of which status is recorded." + }, + "error": { + "type": "string", + "description": "Error is to record the problem with the service port." + }, + "protocol": { + "$ref": "#/definitions/v1alpha1Protocol", + "description": "Protocol is the protocol of the service port of which status is recorded." + } + }, + "title": "PortStatus represents the error condition of a service port" + }, + "v1alpha1Ports": { + "type": "object", + "properties": { + "containerPort": { + "type": "integer", + "format": "int32", + "description": "ContainerPort connects to a certain container port in a pod." + }, + "hostPort": { + "type": "integer", + "format": "int32", + "title": "Number of port to expose on the host.\nIf specified, this must be a valid port number, 0 < x < 65536.\nIf HostNetwork is specified, this must match ContainerPort.\nMost containers do not need this.\n+optional" + }, + "name": { + "type": "string", + "title": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\nnamed port in a pod must have a unique name. Name for the port that can be\nreferred to by services.\n+optional" + }, + "protocol": { + "type": "string", + "title": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".\n+optional\n+default=\"TCP\"" + } + }, + "title": "Ports are not allowed for ephemeral containers.\n+optional\n+patchMergeKey=containerPort\n+patchStrategy=merge\n+listType=map\n+listMapKey=containerPort\n+listMapKey=protocol" + }, + "v1alpha1PreferredSchedulingTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32", + "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the\nrange 1-100." + }, + "preference": { + "$ref": "#/definitions/v1alpha1NodeSelectorTerm", + "description": "A node selector term, associated with the corresponding weight." + } + }, + "description": "An empty preferred scheduling term matches all objects with implicit weight 0\n(i.e. it's a no-op). A null preferred scheduling term matches no objects\n(i.e. is also a no-op)." + }, + "v1alpha1Probe": { + "type": "object", + "properties": { + "failureThreshold": { + "type": "integer", + "format": "int32", + "title": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3. Minimum value is 1. +optional" + }, + "periodSeconds": { + "type": "integer", + "format": "int32", + "description": "Probe describes a health check to be performed against a container to\ndetermine whether it is alive or ready to receive traffic." + }, + "successThreshold": { + "type": "integer", + "format": "int32", + "title": "Minimum consecutive successes for the probe to be considered successful\nafter having failed. Defaults to 1. Must be 1 for liveness and startup.\nMinimum value is 1. +optional" + }, + "timeoutSeconds": { + "type": "integer", + "format": "int32", + "title": "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info:\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n+optional" + }, + "initialDelaySeconds": { + "type": "integer", + "format": "int32", + "title": "Number of seconds after the container has started before liveness probes\nare initiated. More info:\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n+optional" + }, + "terminationGracePeriodSeconds": { + "type": "string", + "format": "int64", + "title": "Optional duration in seconds the pod needs to terminate gracefully upon\nprobe failure. The grace period is the duration in seconds after the\nprocesses running in the pod are sent a termination signal and the time\nwhen the processes are forcibly halted with a kill signal. Set this value\nlonger than the expected cleanup time for your process. If this value is\nnil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop\nimmediately via the kill signal (no opportunity to shut down). This is a\nbeta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n+optional" + }, + "httpGet": { + "$ref": "#/definitions/v1alpha1HTTPGetAction", + "title": "handler\nHTTPGet specifies the http request to perform.\n+optional" + }, + "exec": { + "$ref": "#/definitions/v1alpha1ExecAction", + "title": "Exec specifies the action to take.\n+optional" + }, + "tcpSocket": { + "$ref": "#/definitions/v1alpha1TCPSocketAction", + "title": "TCPSocket specifies an action involving a TCP port.\n+optional" + } + }, + "description": "Probe describes a health check to be performed against a container to\ndetermine whether it is alive or ready to receive traffic." + }, + "v1alpha1PrometheusQueryRangeResult": { + "type": "object", + "properties": { + "matrix": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1SampleStream" + } + } + } + }, + "v1alpha1PrometheusQueryResult": { + "type": "object", + "properties": { + "vector": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Sample" + } + } + } + }, + "v1alpha1PropagationPolicy": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1alpha1PropagationPolicySpec", + "description": "Spec represents the desired behavior of PropagationPolicy." + } + }, + "description": "PropagationPolicy represents the policy that propagates a group of resources to one or more clusters." + }, + "v1alpha1PropagationPolicySpec": { + "type": "object", + "properties": { + "resourceSelectors": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ResourceSelector" + }, + "description": "ResourceSelectors used to select resources." + }, + "placement": { + "$ref": "#/definitions/v1alpha1Placement", + "description": "Placement represents the rule for select clusters to propagate resources." + }, + "propagateDeps": { + "type": "boolean", + "description": "PropagateDeps tells if relevant resources should be propagated automatically.\nTake 'Deployment' which referencing 'ConfigMap' and 'Secret' as an example, when 'propagateDeps' is 'true',\nthe referencing resources could be omitted(for saving config effort) from 'resourceSelectors' as they will be\npropagated along with the Deployment. In addition to the propagating process, the referencing resources will be\nmigrated along with the Deployment in the fail-over scenario." + }, + "dependentOverrides": { + "type": "array", + "items": { + "type": "string" + }, + "description": "DependentOverrides represents the list of propagations(PropagationPolicy)\nwhich must present before the current PropagationPolicy takes effect.\n\nIt used to explicitly specify propagations which current PropagationPolicy rely on.\nA typical scenario is the users create PropagationPolicy(ies) and resources at the same time,\nthey want to ensure the new-created policies would be adopted.\n\nNote: For the propagations, PropagationPolicy(ies) in current namespace and ClusterPropagationPolicy(ies),\nwhich not present in this list will still be applied if they matches the resources.\n+optional" + }, + "priority": { + "type": "integer", + "format": "int32", + "title": "Priority indicates the importance of a policy(PropagationPolicy or ClusterPropagationPolicy).\nA policy will be applied for the matched resource templates if there is\nno other policies with higher priority at the point of the resource\ntemplate be processed.\nOnce a resource template has been claimed by a policy, by default it will\nnot be preempted by following policies even with a higher priority.\n+kubebuilder:default=0" + } + } + }, + "v1alpha1Protocol": { + "type": "string", + "enum": [ + "PROTOCOL_UNSPECIFIED", + "TCP", + "UDP", + "SCTP" + ], + "default": "PROTOCOL_UNSPECIFIED", + "description": "Protocol defines network protocols supported for things like container ports.\n\n - PROTOCOL_UNSPECIFIED: Placeholder to avoid zero not return.\n - TCP: ProtocolTCP is the TCP protocol.\n - UDP: ProtocolUDP is the UDP protocol.\n - SCTP: ProtocolSCTP is the SCTP protocol." + }, + "v1alpha1Registry": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "description": "Alias is an alias for the registry, showed in list." + }, + "host": { + "type": "string", + "description": "Host is registry host." + }, + "name": { + "type": "string", + "description": "Name is registry name, use to query project lists." + } + }, + "title": "Registry contains necessary info" + }, + "v1alpha1ReplicaDivisionPreference": { + "type": "string", + "enum": [ + "REPLICA_DIVISION_PREFERENCE_UNSPECIFIED", + "Aggregated", + "Weighted" + ], + "default": "REPLICA_DIVISION_PREFERENCE_UNSPECIFIED", + "description": " - Aggregated: Aggregated divides replicas into clusters as few as possible,\nwhile respecting clusters' resource availabilities during the division.\n - Weighted: Weighted divides replicas by weight according to WeightPreference." + }, + "v1alpha1ReplicaSchedulingStrategy": { + "type": "object", + "properties": { + "replicaSchedulingType": { + "$ref": "#/definitions/v1alpha1ReplicaSchedulingType", + "title": "ReplicaSchedulingType determines how the replicas is scheduled when karmada propagating\na resource. Valid options are Duplicated and Divided.\n\"Duplicated\" duplicates the same replicas to each candidate member cluster from resource.\n\"Divided\" divides replicas into parts according to number of valid candidate member\nclusters, and exact replicas for each cluster are determined by ReplicaDivisionPreference.\n+optional" + }, + "replicaDivisionPreference": { + "$ref": "#/definitions/v1alpha1ReplicaDivisionPreference", + "title": "ReplicaDivisionPreference determines how the replicas is divided\nwhen ReplicaSchedulingType is \"Divided\". Valid options are Aggregated and Weighted.\n\"Aggregated\" divides replicas into clusters as few as possible,\nwhile respecting clusters' resource availabilities during the division.\n\"Weighted\" divides replicas by weight according to WeightPreference.\n+optional" + }, + "weightPreference": { + "$ref": "#/definitions/v1alpha1ClusterPreferences", + "title": "WeightPreference describes weight for each cluster or for each group of cluster\nIf ReplicaDivisionPreference is set to \"Weighted\", and WeightPreference is not set, scheduler will weight all clusters the same.\n+optiona" + } + }, + "description": "ReplicaSchedulingStrategy represents the assignment strategy of replicas." + }, + "v1alpha1ReplicaSchedulingType": { + "type": "string", + "enum": [ + "REPLICA_SCHEDULING_TYPE_UNSPECIFIED", + "Duplicated", + "Divided" + ], + "default": "REPLICA_SCHEDULING_TYPE_UNSPECIFIED", + "description": " - Duplicated: Duplicated means when propagating a resource,\neach candidate member cluster will directly apply the original replicas.\n - Divided: Divided means when propagating a resource,\neach candidate member cluster will get only a part of original replicas." + }, + "v1alpha1Repository": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of repository." + }, + "public": { + "type": "boolean" + }, + "tagCount": { + "type": "string", + "format": "int64" + }, + "pullCount": { + "type": "string", + "format": "int64" + }, + "updateTime": { + "type": "string", + "format": "int64" + }, + "artifacts": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1Artifact" + }, + "description": "Artifacts of repository." + } + }, + "title": "Repository concept from Harbor" + }, + "v1alpha1ResourceFieldSelector": { + "type": "object", + "properties": { + "containerName": { + "type": "string", + "title": "Container name: required for volumes,\nfor env vars\n+optional" + }, + "resource": { + "type": "string", + "title": "Required: resource to select" + } + }, + "title": "ResourceFieldSelector represents container resources (cpu, memory) and their\noutput format" + }, + "v1alpha1ResourceList": { + "type": "object", + "properties": { + "cpu": { + "type": "string", + "description": "Cpu is the total pod cpu resource. Unit: m." + }, + "memory": { + "type": "string", + "description": "Memory is the total memory resource. Unit: byte." + }, + "storage": { + "type": "string", + "description": "Storage is the total storage resource. Unit: byte." + } + }, + "description": "ResourceList returns a string representation of a resource list in a human\nreadable format." + }, + "v1alpha1ResourceRequirements": { + "type": "object", + "properties": { + "limits": { + "$ref": "#/definitions/v1alpha1ResourceList", + "title": "Limits describes the maximum amount of compute resources allowed.\nMore info:\nhttps://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n+optional" + }, + "requests": { + "$ref": "#/definitions/v1alpha1ResourceList", + "title": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is\nexplicitly specified, otherwise to an implementation-defined value. More\ninfo:\nhttps://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n+optional" + } + }, + "description": "ResourceRequirements describes the compute resource requirements." + }, + "v1alpha1ResourceSelector": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string", + "title": "APIVersion represents the API version of the target resources.\n+required" + }, + "kind": { + "type": "string", + "title": "Kind represents the Kind of the target resources.\n+required" + }, + "namespace": { + "type": "string", + "title": "Namespace of the target resource.\nDefault is empty, which means inherit from the parent object scope.\n+optional" + }, + "name": { + "type": "string", + "title": "Name of the target resource.\nDefault is empty, which means selecting all resources.\n+optional" + }, + "labelSelector": { + "$ref": "#/definitions/typesLabelSelector", + "title": "A label query over a set of resources.\nIf name is not empty, labelSelector will be ignored.\n+optional" + } + } + }, + "v1alpha1ResourceSummary": { + "type": "object", + "properties": { + "allocatable": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "allocatable represents the resources of a instance that are available for scheduling.\nTotal amount of allocatable resources on all nodes.\n+optional" + }, + "allocated": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Allocated represents the resources of a instance that have been scheduled.\nTotal amount of required resources of all Pods that have been scheduled to nodes.\n+optional" + } + } + }, + "v1alpha1RestartDeploymentResponse": { + "type": "object", + "properties": { + "deployment": { + "$ref": "#/definitions/v1alpha1Deployment", + "description": "The new state of the deployment after restarting." + } + }, + "description": "Response message for the `RestartDeploymentResponse` method.\nThis response message is assigned to the `response` field of the returned\nOperation when that operation is done." + }, + "v1alpha1RestartJobResponse": { + "type": "object", + "properties": { + "job": { + "$ref": "#/definitions/v1alpha1Job", + "description": "The new state of the job after restarting." + } + }, + "description": "Response message for the `RestartJobResponse` method.\nThis response message is assigned to the `response` field of the returned\nOperation when that operation is done." + }, + "v1alpha1ResumeCronJobResponse": { + "type": "object", + "properties": { + "cronjob": { + "$ref": "#/definitions/v1alpha1CronJob", + "description": "The new state of the cronjob after resuming." + } + }, + "description": "Response message for the `ResumeCronJobResponse` method.\nThis response message is assigned to the `response` field of the returned\nOperation when that operation is done." + }, + "v1alpha1ResumeDeploymentResponse": { + "type": "object", + "properties": { + "deployment": { + "$ref": "#/definitions/v1alpha1Deployment", + "description": "The new state of the deployment after resuming." + } + }, + "description": "Response message for the `ResumeDeploymentResponse` method.\nThis response message is assigned to the `response` field of the returned\nOperation when that operation is done." + }, + "v1alpha1RuleWithCluster": { + "type": "object", + "properties": { + "targetCluster": { + "$ref": "#/definitions/v1alpha1ClusterAffinity", + "title": "TargetCluster defines restrictions on this override policy\nthat only applies to resources propagated to the matching clusters.\nnil means matching all clusters.\n+optional" + }, + "overriders": { + "$ref": "#/definitions/v1alpha1Overriders", + "title": "Overriders represents the override rules that would apply on resources\n+required" + } + } + }, + "v1alpha1Sample": { + "type": "object", + "properties": { + "metric": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "values": { + "$ref": "#/definitions/v1alpha1samplePair" + } + } + }, + "v1alpha1SampleStream": { + "type": "object", + "properties": { + "metric": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "values": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1samplePair" + } + } + } + }, + "v1alpha1Secret": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "immutable": { + "type": "boolean", + "title": "Immutable, if set to true, ensures that data stored in the Secret cannot\nbe updated (only object metadata can be modified).\nIf not set to true, the field can be modified at any time.\nDefaulted to nil.\n+optional" + }, + "data": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Data contains the secret data. Each key must consist of alphanumeric\ncharacters, '-', '_' or '.'. The serialized form of the secret data is a\nbase64 encoded string, representing the arbitrary (possibly non-string)\ndata value here. Described in https://tools.ietf.org/html/rfc4648#section-4\n+optional" + }, + "stringData": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "stringData allows specifying non-binary secret data in string form.\nIt is provided as a write-only input field for convenience.\nAll keys and values are merged into the data field on write, overwriting any existing values.\nThe stringData field is never output when reading from the API.\n+k8s:conversion-gen=false\n+optional" + }, + "type": { + "type": "string", + "title": "Used to facilitate programmatic handling of secret data.\n+optional" + } + } + }, + "v1alpha1SecretEnvSource": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of SecretEnvSource." + }, + "optional": { + "type": "boolean" + } + }, + "description": "SecretEnvSource selects a Secret to populate the environment\nvariables with.\nThe contents of the target Secret's Data field will represent the\nkey-value pairs as environment variables." + }, + "v1alpha1SecretKeySelector": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of Secret." + }, + "key": { + "type": "string", + "description": "Required. The secret key to be applied to a pod." + }, + "optional": { + "type": "boolean", + "title": "Specify whether the Secret or its key must be defined\n+optional" + } + }, + "description": "SecretKeySelector selects a key of a Secret." + }, + "v1alpha1SecretRef": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "name of the specified secret." + }, + "namespace": { + "type": "string", + "description": "namespace of the specified secret." + } + }, + "description": "SecretRef defines the kubeconfig of install cluster in secret." + }, + "v1alpha1SecretVolumeSource": { + "type": "object", + "properties": { + "secretName": { + "type": "string", + "title": "Name of the secret in the pod's namespace to use.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n+optional" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1KeyToPath" + }, + "title": "If unspecified, each key-value pair in the Data field of the referenced\nSecret will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the Secret,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional" + }, + "defaultMode": { + "type": "integer", + "format": "int32", + "title": "Optional: mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0\nand 511. YAML accepts both octal and decimal values, JSON requires decimal\nvalues for mode bits. Defaults to 0644. Directories within the path are not\naffected by this setting. This might be in conflict with other options that\naffect the file mode, like fsGroup, and the result can be other mode bits\nset. +optional" + }, + "optional": { + "type": "boolean", + "title": "Specify whether the Secret or its keys must be defined\n+optional" + } + }, + "description": "Adapts a Secret into a volume.\nThe contents of the target Secret's Data field will be presented in a volume\nas files using the keys in the Data field as the file names.\nSecret volumes support ownership management and SELinux relabeling." + }, + "v1alpha1SecurityContext": { + "type": "object", + "properties": { + "privileged": { + "type": "boolean", + "title": "Capabilities capabilities = 1;" + }, + "runAsUser": { + "type": "string", + "format": "int64", + "title": "SELinuxOptions seLinuxOptions = 3;\nWindowsSecurityContextOptions WindowsOptions = 4;" + } + }, + "title": "SecretKeySelector selects a key of a Secret.\n+structType=atomic" + }, + "v1alpha1Service": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/typesObjectMeta", + "description": "Standard object's metadata." + }, + "spec": { + "$ref": "#/definitions/v1alpha1ServiceSpec", + "description": "It describes the attributes that a user creates on a service." + }, + "status": { + "$ref": "#/definitions/v1alpha1ServiceStatus", + "title": "Most recently observed status of the Service.\n+optional" + } + } + }, + "v1alpha1ServicePort": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of this port within the service. This must be a DNS_LABEL." + }, + "protocol": { + "type": "string", + "description": "Protocol is IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\"." + }, + "appProtocol": { + "type": "string", + "description": "AppProtocol is the application protocol for this port." + }, + "port": { + "type": "integer", + "format": "int32", + "description": "Port will be exposed by this service." + }, + "targetPort": { + "type": "string", + "description": "TargetPort is the number or name of the port to access on the pods targeted\nby the service." + }, + "nodePort": { + "type": "integer", + "format": "int32", + "description": "NodePort is the port on each node on which this service is exposed when\ntype is NodePort or LoadBalancer." + } + } + }, + "v1alpha1ServiceSpec": { + "type": "object", + "properties": { + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ServicePort" + }, + "description": "Ports is the list of ports that are exposed by this service." + }, + "selector": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Selector is to route service traffic to pods with label keys and values\nmatching this selector." + }, + "clusterIP": { + "type": "string", + "description": "ClusterIP is the IP address of the service and is usually assigned\nrandomly." + }, + "clusterIPs": { + "type": "array", + "items": { + "type": "string" + }, + "title": "ClusterIPs is a list of IP addresses assigned to this service, and are\nusually assigned randomly.\nThis field came out since kubernetes version 1.20.\nTODO: Make it compatible\nMore info:\nhttps://v1-20.docs.kubernetes.io/zh/docs/concepts/services-networking/dual-stack/\nhttps://v1-19.docs.kubernetes.io/zh/docs/concepts/services-networking/dual-stack/" + }, + "type": { + "$ref": "#/definitions/apicorev1alpha1ServiceType", + "title": "ServiceType string describes ingress methods for a service" + }, + "externalIPs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "ExternalIPs is a list of IP addresses for which nodes in the cluster\nwill also accept traffic for this service." + }, + "sessionAffinity": { + "type": "string", + "description": "SessionAffinity supports \"ClientIP\" and \"None\". Used to maintain session\naffinity." + }, + "loadBalancerIP": { + "type": "string", + "description": "LoadBalancerIP only applies to Service Type: LoadBalancer." + }, + "IPFamilies": { + "type": "array", + "items": { + "type": "string" + }, + "title": "IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\nservice, and is gated by the \"IPv6DualStack\" feature gate.\nThis field has changed from ipFamily (string) to ipFamilies (array) since\nkubernetes version 1.20.\nTODO: Make it compatible\nMore info:\nhttps://v1-20.docs.kubernetes.io/zh/docs/concepts/services-networking/dual-stack/\nhttps://v1-19.docs.kubernetes.io/zh/docs/concepts/services-networking/dual-stack/" + } + }, + "description": "ServiceSpec describes the attributes that a user creates on a service." + }, + "v1alpha1ServiceStatus": { + "type": "object", + "properties": { + "clusters": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterProviderSummary" + }, + "title": "Clusters represents target member clusters where the resource to be deployed" + } + } + }, + "v1alpha1SpreadConstraint": { + "type": "object", + "properties": { + "spreadByField": { + "$ref": "#/definitions/v1alpha1SpreadFieldValue", + "title": "SpreadByField represents the fields on Karmada cluster API used for\ndynamically grouping member clusters into different groups.\nResources will be spread among different cluster groups.\nAvailable fields for spreading are: cluster, region, zone, and provider.\nSpreadByField should not co-exist with SpreadByLabel.\nIf both SpreadByField and SpreadByLabel are empty, SpreadByField will be set to \"cluster\" by system.\n+optional" + }, + "spreadByLabel": { + "type": "string", + "title": "SpreadByLabel represents the label key used for\ngrouping member clusters into different groups.\nResources will be spread among different cluster groups.\nSpreadByLabel should not co-exist with SpreadByField.\n+optional" + }, + "maxGroups": { + "type": "string", + "format": "int64", + "description": "MaxGroups restricts the maximum number of cluster groups to be selected." + }, + "minGroups": { + "type": "string", + "format": "int64", + "description": "MinGroups restricts the minimum number of cluster groups to be selected." + } + } + }, + "v1alpha1SpreadFieldValue": { + "type": "string", + "enum": [ + "SPREAD_FIELD_VALUE_UNSPECIFIED", + "cluster", + "region", + "zone", + "provider" + ], + "default": "SPREAD_FIELD_VALUE_UNSPECIFIED", + "description": "Available fields for spreading are: cluster, region, zone, and provider." + }, + "v1alpha1StaticClusterWeight": { + "type": "object", + "properties": { + "targetCluster": { + "$ref": "#/definitions/v1alpha1ClusterAffinity", + "description": "TargetCluster describes the filter to select clusters." + }, + "weight": { + "type": "integer", + "format": "int32", + "description": "Weight expressing the preference to the cluster(s) specified by 'TargetCluster'." + } + }, + "description": "StaticClusterWeight defines the static cluster weight." + }, + "v1alpha1TCPSocketAction": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "format": "int32", + "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." + }, + "host": { + "type": "string", + "title": "Optional: Host name to connect to, defaults to the pod IP.\n+optional" + } + }, + "description": "TCPSocketAction describes an action based on opening a socket." + }, + "v1alpha1Tag": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the tag." + }, + "pushTime": { + "type": "string", + "format": "int64", + "description": "Tag push time." + } + }, + "description": "Tag of an image." + }, + "v1alpha1TypedLocalObjectReference": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name is the name of resource being referenced." + }, + "kind": { + "type": "string", + "description": "Kind is the type of resource being referenced." + }, + "apiGroup": { + "type": "string", + "description": "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API\ngroup. For any other third-party types, APIGroup is required." + } + }, + "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace." + }, + "v1alpha1UpdateClusterCustomResourceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the CustomResource YAML details." + } + }, + "title": "UpdateClusterCustomResourceResponse represents response of updating one\nCustomResource of cluster scope" + }, + "v1alpha1UpdateClusterOverridePolicyResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the json data of override policy after updating." + } + } + }, + "v1alpha1UpdateClusterPropagationPolicyResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the json data of propagation policy after updating." + } + } + }, + "v1alpha1UpdateConfigMapResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the ConfigMap YAML details" + } + } + }, + "v1alpha1UpdateCronJobResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the CronJob YAML details" + } + } + }, + "v1alpha1UpdateCustomResourceDefinitionResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the customResourceDefinition YAML details" + } + }, + "title": "UpdateCustomResourceDefinitionResponse represents response of updating\na createCustomResourceDefinition" + }, + "v1alpha1UpdateCustomResourceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data field is the CustomResource YAML details." + } + }, + "title": "UpdateCustomResourceResponse represents response of updating one\nCustomResource of namespaced scope" + }, + "v1alpha1UpdateDeploymentResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data is the Deployment YAML details" + } + } + }, + "v1alpha1UpdateIngressResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the ingress YAML details." + } + }, + "title": "UpdateIngressRequest the response of update cluster ingresses" + }, + "v1alpha1UpdateInstanceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the json data of instance policy after updating." + } + }, + "description": "UpdateInstanceResponse defines response informations of update instances." + }, + "v1alpha1UpdateNamespaceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string" + } + }, + "description": "Update Namespace data." + }, + "v1alpha1UpdateOverridePolicyResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the json data of override policy after updating." + } + } + }, + "v1alpha1UpdatePropagationPolicyResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "The data is the json data of propagation policy after updating." + } + } + }, + "v1alpha1UpdateSecretResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "The data field is the Secret YAML details" + } + }, + "description": "It returns updated secret information." + }, + "v1alpha1UpdateServiceResponse": { + "type": "object", + "properties": { + "data": { + "type": "string", + "title": "Data is the Service YAML details" + } + }, + "description": "It returns the Updated Service data information." + }, + "v1alpha1Volume": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "hostPath": { + "$ref": "#/definitions/v1alpha1HostPathVolumeSource", + "description": "HostPathVolumeSource represents a host path mapped into a pod.\nHost path volumes do not support ownership management or SELinux\nrelabeling." + }, + "emptyDir": { + "$ref": "#/definitions/v1alpha1EmptyDirVolumeSource", + "description": "EmptyDirVolumeSource represents an empty directory for a pod.\nEmpty directory volumes support ownership management and SELinux\nrelabeling." + }, + "secret": { + "$ref": "#/definitions/v1alpha1SecretVolumeSource", + "description": "SecretVolumeSource adapts a Secret into a volume.\nThe contents of the target Secret's Data field will be presented in a\nvolume as files using the keys in the Data field as the file names. Secret\nvolumes support ownership management and SELinux relabeling." + }, + "persistentVolumeClaim": { + "$ref": "#/definitions/v1alpha1PersistentVolumeClaimVolumeSource", + "title": "PersistentVolumeClaimVolumeSource represents a reference to a\nPersistentVolumeClaim in the same namespace" + }, + "downwardAPI": { + "$ref": "#/definitions/v1alpha1DownwardAPIVolumeSource", + "description": "DownwardAPIVolumeSource represents a volume containing downward API info.\nDownward API volumes support ownership management and SELinux relabeling." + }, + "configMap": { + "$ref": "#/definitions/v1alpha1ConfigMapVolumeSource", + "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a\nvolume as files using the keys in the Data field as the file names, unless\nthe items element is populated with specific mappings of keys to paths.\nConfigMap volumes support ownership management and SELinux relabeling." + } + }, + "description": "Volume represents a named volume in a pod that may be accessed by any\ncontainer in the pod." + }, + "v1alpha1VolumeMount": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This must match the Name of a Volume." + }, + "readOnly": { + "type": "boolean", + "title": "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false.\n+optional" + }, + "mountPath": { + "type": "string", + "description": "Full path to the mount volume path." + }, + "subPath": { + "type": "string", + "title": "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root).\n+optional" + }, + "mountPropagation": { + "type": "string", + "title": "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10.\n+optional" + }, + "subPathExpr": { + "type": "string", + "title": "Expanded path within the volume from which the container's volume should be\nmounted. Behaves similarly to SubPath but environment variable references\n$(VAR_NAME) are expanded using the container's environment. Defaults to \"\"\n(volume's root). SubPathExpr and SubPath are mutually exclusive. +optional" + } + }, + "description": "VolumeMount for this container." + }, + "v1alpha1WeightedPodAffinityTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32", + "description": "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100." + }, + "podAffinityTerm": { + "$ref": "#/definitions/v1alpha1PodAffinityTerm", + "description": "Required. A pod affinity term, associated with the corresponding weight." + } + }, + "title": "The weights of all of the matched WeightedPodAffinityTerm fields are added\nper-node to find the most preferred node(s)" + }, + "v1alpha1WorkspaceInfo": { + "type": "object", + "properties": { + "workspace": { + "type": "string", + "title": "workspace name" + }, + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "workspace id" + } + } + }, + "v1alpha1WorkspaceInstance": { + "type": "object", + "properties": { + "instance": { + "type": "string", + "description": "workspace name." + }, + "workspace": { + "$ref": "#/definitions/v1alpha1WorkspaceInfo", + "description": "workspace name." + } + } + }, + "v1alpha1samplePair": { + "type": "object", + "properties": { + "timestamp": { + "type": "string", + "format": "int64" + }, + "value": { + "type": "string" + } + } + } + } +} diff --git a/docs/openapi/kairship/v0.8.0.md b/docs/openapi/kairship/v0.8.0.md new file mode 100644 index 00000000..463ca686 --- /dev/null +++ b/docs/openapi/kairship/v0.8.0.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/mcamel/elasticsearch-index.md b/docs/openapi/mcamel/elasticsearch-index.md deleted file mode 100644 index 361a70ac..00000000 --- a/docs/openapi/mcamel/elasticsearch-index.md +++ /dev/null @@ -1,2 +0,0 @@ -# 中间件服务 OpenAPI -- [版本 v0.7.0](./elasticsearch-v0.7.0.md) diff --git a/docs/openapi/mcamel/elasticsearch-v0.7.1.json b/docs/openapi/mcamel/elasticsearch-v0.7.1.json new file mode 100644 index 00000000..01a8eeb7 --- /dev/null +++ b/docs/openapi/mcamel/elasticsearch-v0.7.1.json @@ -0,0 +1,3031 @@ +{ + "swagger": "2.0", + "info": { + "title": "中间件服务", + "version": "v0.7.1" + }, + "tags": [ + { + "name": "Cluster" + }, + { + "name": "Elasticsearch" + }, + { + "name": "Metric" + }, + { + "name": "CloudShellService" + }, + { + "name": "Version" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/mcamel.io/elasticsearch/v1alpha1/cloudshells": { + "post": { + "operationId": "CloudShellService_CreateCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateCloudShellRequest" + } + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/cloudshells/{name}": { + "get": { + "summary": "GetCloudShell get a cloudshell in golobal cluster.", + "operationId": "CloudShellService_GetCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + }, + "delete": { + "summary": "DeleteCloudShell delete a cloudshell in golobal cluster.", + "operationId": "CloudShellService_DeleteCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/elasticsearch": { + "post": { + "operationId": "Elasticsearch_CreateElasticsearch", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateElasticsearchResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateElasticsearchReq" + } + } + ], + "tags": [ + "Elasticsearch" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/elasticsearch-operator/versions": { + "get": { + "operationId": "Elasticsearch_GetElasticsearchOperatorVersionList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetElasticsearchOperatorVersionListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Elasticsearch" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/elasticsearch-params/{cluster}": { + "get": { + "operationId": "Elasticsearch_GetElasticsearchParam", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetElasticsearchParamResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Elasticsearch" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/elasticsearch/version": { + "get": { + "operationId": "Version_Get", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetVersionReply" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Version" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/elasticsearch/{cluster}/{namespace}/{name}": { + "get": { + "operationId": "Elasticsearch_GetElasticsearch", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetElasticsearchResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Elasticsearch" + ] + }, + "delete": { + "operationId": "Elasticsearch_DeleteElasticsearch", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteElasticsearchResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"delete|required#RBAC error|unknown clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#unknown namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,34}[a-z0-9]$#unknown name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Elasticsearch" + ] + }, + "put": { + "operationId": "Elasticsearch_UpdateElasticsearch", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateElasticsearchResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,34}[a-z0-9]$#input name!|input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Version\"" + }, + "serviceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateElasticsearchReqPorts" + } + }, + "nodeSets": { + "type": "array", + "items": { + "$ref": "#/definitions/NodeSets" + }, + "description": "NodeSet is the specification for a group of Elasticsearch nodes sharing the same configuration and a Pod template." + }, + "elasticsearchPassword": { + "type": "string", + "title": "elasticsearchPassword represents the elasticsearch's login password\n@inject_tag: v:\"required|passwordMid#input password|input valid password\"" + }, + "kibanaPorts": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateElasticsearchReqPorts" + }, + "title": "elasticsearchPassword represents the elasticsearch's kibanaPorts" + }, + "kibanaServiceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "kibanaServiceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "externalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "lb\n@inject_tag: v:\"checklb#checklb failed!\"" + }, + "lbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "lbPoolName": { + "type": "string" + }, + "lbAddress": { + "type": "string" + }, + "kibanaServiceExternalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "kibana" + }, + "kibanaServiceLbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "kibanaServiceLbPoolName": { + "type": "string" + }, + "kibanaServiceLbAddress": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Elasticsearch" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/elasticsearch/{cluster}/{namespace}/{name}/grafana": { + "get": { + "operationId": "Elasticsearch_GetElasticsearchGrafanaAddr", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetElasticsearchGrafanaAddrResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Elasticsearch" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/elasticsearch/{cluster}/{namespace}/{name}/pods": { + "get": { + "operationId": "Elasticsearch_GetElasticsearchPodList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetElasticsearchPodListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Elasticsearch" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/elasticsearch/{cluster}/{namespace}/{name}/users": { + "get": { + "operationId": "Elasticsearch_GetElasticsearchUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetElasticsearchUsersResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can get password.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Elasticsearch" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/elasticsearchs": { + "post": { + "operationId": "Elasticsearch_DeleteElasticsearchs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteElasticsearchsResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/DeleteElasticsearchsReq" + } + } + ], + "tags": [ + "Elasticsearch" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/workspaces": { + "get": { + "operationId": "Cluster_GetWorkspaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetWorkspaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{cluster}/all-events-kinds": { + "get": { + "operationId": "Cluster_GetAllEventKindsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventKindsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{cluster}/insight/status": { + "get": { + "operationId": "Cluster_GetInsightAgentStatus", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetInsightAgentStatusResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{cluster}/lbaddress/pools": { + "get": { + "operationId": "Cluster_GetMetallbIPAddressPoolsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "mcamel_type is holdplace for mcamel type.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{cluster}/nodelabels": { + "get": { + "operationId": "Cluster_GetClusterNodeLabelList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodeLabelListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{cluster}/nodeports": { + "get": { + "operationId": "Cluster_GetClusterNodePortList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodePortListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{cluster}/{namespace}/events": { + "get": { + "summary": "pod 列表上会使用", + "operationId": "Cluster_GetEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "cluster represents the name of deployment belongs to.\n@inject_tag: v:\"required#choose cluster\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.\n@inject_tag: v:\"required#choose namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "kind", + "description": "Kind represents what type of event is needed.\n@inject_tag: v:\"required#choose kind\"\n\n - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "The name of involvedObject.\nIf the kind is DEPLOYMENT,\nthis presents the name of deployments.\n@inject_tag: v:\"required#choose kind name\"", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "Type is used for query, showing events of specified type.\nUse example: type=WARNING&type=NORMAL.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ] + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{cluster}/{namespace}/{name}/alerts": { + "get": { + "operationId": "Metric_GetAlertsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAlertsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Metric" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{cluster}/{namespace}/{name}/all-events": { + "get": { + "operationId": "Cluster_GetAllEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "eventType", + "description": " - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED" + }, + { + "name": "kindName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{workspaceId}/clusters": { + "get": { + "operationId": "Cluster_GetClusterList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{workspaceId}/elasticsearchs": { + "get": { + "operationId": "Elasticsearch_GetElasticsearchList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetElasticsearchListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "common.PageInfoReq=1;", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Elasticsearch" + ] + } + }, + "/apis/mcamel.io/elasticsearch/v1alpha1/{workspaceId}/{cluster}/namespaces": { + "get": { + "operationId": "Cluster_GetClusterNamespaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNamespaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"required#请输入WSid\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + } + }, + "definitions": { + "CloudShell": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/CloudShellSpec" + }, + "status": { + "$ref": "#/definitions/CloudShellStatus" + } + } + }, + "CloudShellSpec": { + "type": "object", + "properties": { + "configMapName": { + "type": "string" + }, + "once": { + "type": "boolean" + }, + "commandAction": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int32" + }, + "cleanup": { + "type": "boolean" + } + } + }, + "CloudShellStatus": { + "type": "object", + "properties": { + "phase": { + "type": "string" + }, + "accessUrl": { + "type": "string" + } + } + }, + "CommonReply": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + } + } + }, + "CreateCloudShellRequest": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/CreateCloudShellRequestType" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "filePath": { + "type": "string" + }, + "container": { + "type": "string" + }, + "logCount": { + "type": "integer", + "format": "int32" + }, + "data": { + "$ref": "#/definitions/CloudShell" + } + } + }, + "CreateCloudShellRequestType": { + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "bash", + "exec", + "logs", + "upload", + "download" + ], + "default": "TYPE_UNSPECIFIED" + }, + "CreateElasticsearchReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,34}[a-z0-9]$#input name!|input name!\"" + }, + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Version\"" + }, + "serviceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateElasticsearchReqPorts" + } + }, + "nodeSets": { + "type": "array", + "items": { + "$ref": "#/definitions/NodeSets" + }, + "description": "NodeSet is the specification for a group of Elasticsearch nodes sharing the same configuration and a Pod template." + }, + "elasticsearchPassword": { + "type": "string", + "title": "elasticsearchPassword represents the elasticsearch's login password\n@inject_tag: v:\"required|passwordMid#input password|input valid password\"" + }, + "kibanaPorts": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateElasticsearchReqPorts" + }, + "title": "elasticsearchPassword represents the elasticsearch's kibanaPorts" + }, + "kibanaServiceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "kibanaServiceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "externalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "lb\n@inject_tag: v:\"checklb#checklb failed!\"" + }, + "lbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "lbPoolName": { + "type": "string" + }, + "lbAddress": { + "type": "string" + }, + "kibanaServiceExternalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "kibana" + }, + "kibanaServiceLbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "kibanaServiceLbPoolName": { + "type": "string" + }, + "kibanaServiceLbAddress": { + "type": "string" + } + } + }, + "CreateElasticsearchReqPorts": { + "type": "object", + "properties": { + "nodePort": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required-if:ServiceType,NodePort|between:30000,32767#input nodePort port|input nodePort port\"" + } + } + }, + "CreateElasticsearchResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DataIntValue": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + } + } + }, + "DataResourceValue": { + "type": "object", + "properties": { + "cpuRequest": { + "type": "string" + }, + "cpuLimit": { + "type": "string" + }, + "memoryRequest": { + "type": "string" + }, + "memoryLimit": { + "type": "string" + } + } + }, + "DataStorageClassValue": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "allowVolumeExpansion": { + "type": "boolean" + } + } + }, + "DataStringValue": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, + "DeleteElasticsearchReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"delete|required#RBAC error|unknown clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#unknown namespace!\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,34}[a-z0-9]$#unknown name!\"" + } + } + }, + "DeleteElasticsearchResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeleteElasticsearchsReq": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/DeleteElasticsearchReq" + } + } + } + }, + "DeleteElasticsearchsResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "ElasticSearchNodeRole": { + "type": "string", + "enum": [ + "NodeRole_UNSPECIFIED", + "NodeRole_DATACOLD", + "NodeRole_DATACONTENT", + "NodeRole_DATAFROZEN", + "NodeRole_DATAHOT", + "NodeRole_DATA", + "NodeRole_DATAWARM", + "NodeRole_INGEST", + "NodeRole_ML", + "NodeRole_MASTER", + "NodeRole_REMOTECLUSTERCLIENT", + "NodeRole_TRANSFORM", + "NodeRole_VOTINGONLY", + "NodeRole_KIBANA", + "NodeRole_Exporter" + ], + "default": "NodeRole_UNSPECIFIED" + }, + "ElasticsearchClusterItem": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/ElasticsearchClusterItemMetadata" + }, + "spec": { + "$ref": "#/definitions/CreateElasticsearchReq" + }, + "status": { + "$ref": "#/definitions/ElasticsearchClusterItemStatus" + } + }, + "title": "generate by https://json2pb.vercel.app" + }, + "ElasticsearchClusterItemMetadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "finalizers": { + "type": "array", + "items": { + "type": "string" + } + }, + "generation": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "ElasticsearchClusterItemStatus": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/StatusPhase", + "title": "phase represents the elasticsearch's status" + }, + "podsAreReadyNum": { + "type": "integer", + "format": "int32", + "title": "the elasticsearch's available nodes" + }, + "webManagerAddr": { + "type": "string", + "title": "kibana' web manager addr" + }, + "userName": { + "type": "string", + "title": "the elasticsearch's user name" + }, + "clusterIPs": { + "type": "array", + "items": { + "type": "string" + }, + "title": "elasticsearch ip" + }, + "roleResource": { + "type": "array", + "items": { + "$ref": "#/definitions/StatusRoleResource" + } + }, + "allReplicaNum": { + "type": "integer", + "format": "int32", + "title": "data role count" + }, + "serviceAddr": { + "type": "string" + }, + "common": { + "$ref": "#/definitions/commonCommonItemStatus" + }, + "isControl": { + "type": "boolean" + }, + "health": { + "$ref": "#/definitions/StatusHealth" + } + } + }, + "EventSource": { + "type": "object", + "properties": { + "component": { + "type": "string", + "title": "Component from which the event is generated.\n+optional" + }, + "host": { + "type": "string", + "title": "Node name on which the event is generated.\n+optional" + } + }, + "description": "EventSource contains information for an event." + }, + "EventType": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED", + "description": "Type of event (Normal, Warning), new types could be added in the\nfuture.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type." + }, + "GetAlertsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1AlertSummary" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventKindsListResp": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetAllEventListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetAllEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetAllEventListRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventListRespItems": { + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "type": { + "type": "string" + }, + "count": { + "type": "integer", + "format": "int64" + }, + "reason": { + "type": "string" + }, + "source": { + "$ref": "#/definitions/ItemsSource" + }, + "message": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/GetAllEventListRespItemsMetadata" + }, + "apiVersion": { + "type": "string" + }, + "lastTimestamp": { + "type": "string", + "format": "int64" + }, + "firstTimestamp": { + "type": "string", + "format": "int64" + }, + "involvedObject": { + "$ref": "#/definitions/ItemsInvolvedObject" + }, + "reportingInstance": { + "type": "string" + }, + "reportingComponent": { + "type": "string" + } + } + }, + "GetAllEventListRespItemsMetadata": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + } + } + }, + "GetClusterListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNamespaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetClusterNodeLabelListRespLabel" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListRespLabel": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetClusterNodePortListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetElasticsearchGrafanaAddrResp": { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + }, + "GetElasticsearchListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetElasticsearchListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/ElasticsearchClusterItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetElasticsearchOperatorVersionListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetElasticsearchOperatorVersionListRespGetElasticsearchOperatorVersionListData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetElasticsearchOperatorVersionListRespGetElasticsearchOperatorVersionListData": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "GetElasticsearchParamResp": { + "type": "object", + "properties": { + "version": { + "$ref": "#/definitions/GetElasticsearchParamRespSelect" + }, + "replicas": { + "$ref": "#/definitions/GetElasticsearchParamRespSelect" + }, + "resource": { + "$ref": "#/definitions/GetElasticsearchParamRespSelect" + }, + "storage": { + "$ref": "#/definitions/GetElasticsearchParamRespSelect" + } + } + }, + "GetElasticsearchParamRespSelect": { + "type": "object", + "properties": { + "selectType": { + "$ref": "#/definitions/SelectSelectType" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/GetElasticsearchParamRespSelectData" + } + } + } + }, + "GetElasticsearchParamRespSelectData": { + "type": "object", + "properties": { + "sValue": { + "$ref": "#/definitions/DataStringValue" + }, + "rValue": { + "$ref": "#/definitions/DataResourceValue" + }, + "iValue": { + "$ref": "#/definitions/DataIntValue" + }, + "scValue": { + "$ref": "#/definitions/DataStorageClassValue" + } + } + }, + "GetElasticsearchPodListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetElasticsearchPodListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetElasticsearchPodListRespData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetElasticsearchPodListRespData": { + "type": "object", + "properties": { + "podName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/Status" + }, + "nodeRole": { + "$ref": "#/definitions/ElasticSearchNodeRole" + }, + "ip": { + "type": "string" + }, + "restart": { + "type": "integer", + "format": "int32" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "storageCapacityUtilization": { + "type": "number", + "format": "float" + }, + "common": { + "$ref": "#/definitions/commonPodCommon" + } + } + }, + "GetElasticsearchResp": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/ElasticsearchClusterItem" + } + } + }, + "GetElasticsearchUsersResp": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/definitions/GetElasticsearchUsersRespUserItem" + } + } + } + }, + "GetElasticsearchUsersRespUserItem": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "GetEventListReqKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED", + "description": " - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod." + }, + "GetEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetEventListRespItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListRespItem": { + "type": "object", + "properties": { + "involvedObject": { + "$ref": "#/definitions/ObjectReference", + "description": "The object that this event is about." + }, + "reason": { + "type": "string", + "description": "reason is why the action was taken. It is human-readable.\nThis field cannot be empty for new Events and it can have at most 128\ncharacters." + }, + "message": { + "type": "string", + "description": "A human-readable description of the status of this operation." + }, + "source": { + "$ref": "#/definitions/EventSource", + "description": "The component reporting this event. Should be a short machine\nunderstandable string." + }, + "lastTimestamp": { + "type": "string", + "format": "int64", + "description": "The time at which the most recent occurrence of this event was recorded." + }, + "type": { + "$ref": "#/definitions/EventType", + "description": "Type of this event (Normal, Warning), new types could be added in the\nfuture." + } + } + }, + "GetInsightAgentStatusResp": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/GetInsightAgentStatusRespInsightAgentStatus" + } + } + }, + "GetInsightAgentStatusRespInsightAgentStatus": { + "type": "string", + "enum": [ + "NotInstall", + "Install" + ], + "default": "NotInstall" + }, + "GetMetallbIPAddressPoolsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListRespItem" + } + }, + "isSupportLb": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "array", + "items": { + "$ref": "#/definitions/commonExternalTrafficPolicy" + }, + "title": "lb" + }, + "lbTyp": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLBTyp" + } + } + } + }, + "GetMetallbIPAddressPoolsListRespItem": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "autoAssign": { + "type": "boolean", + "description": "AutoAssign flag used to prevent MetallB from automatic allocation\nfor a pool." + }, + "avoidBuggyIPs": { + "type": "boolean", + "description": "AvoidBuggyIPs prevents addresses ending with .0 and .255\nto be used by a pool." + } + } + }, + "GetVersionReply": { + "type": "object", + "properties": { + "commonReply": { + "$ref": "#/definitions/CommonReply" + }, + "gitCommit": { + "type": "string" + }, + "gitVersion": { + "type": "string" + }, + "buildTime": { + "type": "string" + } + } + }, + "GetWorkspaceListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetWorkspaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetWorkspaceListRespItem" + }, + "title": "def items" + }, + "pagination": { + "$ref": "#/definitions/commonPagination", + "title": "def pagination" + } + } + }, + "GetWorkspaceListRespItem": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int64", + "title": "id" + }, + "alias": { + "type": "string", + "title": "alias" + } + } + }, + "ItemsInvolvedObject": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "apiVersion": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + } + } + }, + "ItemsSource": { + "type": "object", + "properties": { + "component": { + "type": "string" + } + } + }, + "NodeSets": { + "type": "object", + "properties": { + "nodeType": { + "$ref": "#/definitions/NodeSetsNodeType", + "title": "NodeType represents elasticsearch's node" + }, + "replicas": { + "type": "integer", + "format": "int32", + "title": "replicas represents elasticsearch's node set count" + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input CpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input CpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input MemoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input MemoryLimit|resource\"" + }, + "storageClassName": { + "type": "string" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"resource#resource\"" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "tolerations": { + "type": "array", + "items": { + "$ref": "#/definitions/commonToleration" + } + } + } + }, + "NodeSetsNodeType": { + "type": "string", + "enum": [ + "UNKNOWN", + "Data", + "Kibana", + "Master", + "DataCold", + "DataHot", + "Coordination" + ], + "default": "UNKNOWN" + }, + "ObjectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "deletionTimestamp": { + "type": "string", + "format": "int64" + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ownerReferences": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "cluster": { + "type": "string" + }, + "workspaceAlias": { + "type": "string" + } + } + }, + "ObjectReference": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "title": "Kind of the referent.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional" + }, + "name": { + "type": "string", + "title": "Name of the referent.\nMore info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + } + }, + "description": "ObjectReference contains enough information to let you inspect or modify the\nreferred object." + }, + "PodCommonCondition": { + "type": "object", + "properties": { + "lastTransitionTime": { + "type": "string" + }, + "lastUpdateTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/PodCommonConditionStatus" + }, + "type": { + "type": "string" + } + } + }, + "PodCommonConditionStatus": { + "type": "string", + "enum": [ + "PodConditionStatusUnknown", + "PodConditionStatusTrue", + "PodConditionStatusFalse" + ], + "default": "PodConditionStatusUnknown" + }, + "PodCommonPodPhase": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "SelectSelectType": { + "type": "string", + "enum": [ + "Single", + "Multiple" + ], + "default": "Single" + }, + "Status": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "StatusHealth": { + "type": "string", + "enum": [ + "Red", + "Yellow", + "Green", + "Unknown" + ], + "default": "Red" + }, + "StatusPhase": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Ready", + "ApplyingChanges", + "MigratingData", + "Stalled", + "Invalid" + ], + "default": "PHASE_UNSPECIFIED" + }, + "StatusRoleResource": { + "type": "object", + "properties": { + "nodeRole": { + "$ref": "#/definitions/ElasticSearchNodeRole" + }, + "cpuRequest": { + "type": "string" + }, + "cpuLimit": { + "type": "string" + }, + "cpuUtilization": { + "type": "number", + "format": "float" + }, + "memoryRequest": { + "type": "string" + }, + "memoryLimit": { + "type": "string" + }, + "memoryUtilization": { + "type": "number", + "format": "float" + }, + "storageCapacity": { + "type": "string" + }, + "storageCapacityUtilization": { + "type": "number", + "format": "float" + } + } + }, + "UpdateElasticsearchResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "commonAffinity": { + "type": "object", + "properties": { + "nodeAffinity": { + "$ref": "#/definitions/commonNodeAffinity" + }, + "podAffinity": { + "$ref": "#/definitions/commonPodAffinity" + }, + "podAntiAffinity": { + "$ref": "#/definitions/commonPodAntiAffinity" + } + } + }, + "commonCommonItemStatus": { + "type": "object", + "properties": { + "serviceAddresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "webManagerAddress": { + "type": "string" + }, + "webLogAddress": { + "type": "string" + }, + "isHwameistorSc": { + "type": "boolean" + }, + "avgPvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "avgPvUsedInGb": { + "type": "number", + "format": "double" + } + }, + "description": "CommonItemStatus define CR(MysqlCluster/Tenant...) common status." + }, + "commonExternalTrafficPolicy": { + "type": "string", + "enum": [ + "Cluster", + "Local" + ], + "default": "Cluster" + }, + "commonLBTyp": { + "type": "string", + "enum": [ + "MetalLB", + "Others" + ], + "default": "MetalLB" + }, + "commonLabelSelector": { + "type": "object", + "properties": { + "matchLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLabelSelectorRequirement" + } + } + } + }, + "commonLabelSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist" + } + } + }, + "commonNodeAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "$ref": "#/definitions/commonNodeSelector" + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPreferredSchedulingTerm" + } + } + } + }, + "commonNodeSelector": { + "type": "object", + "properties": { + "nodeSelectorTerms": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + } + }, + "commonNodeSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist, Gt, Lt" + } + } + }, + "commonNodeSelectorTerm": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + }, + "matchFields": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + } + } + }, + "commonOwnerReference": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "controller": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "kind": { + "type": "string" + } + } + }, + "commonPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "pages": { + "type": "integer", + "format": "int32" + } + } + }, + "commonPodAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodAffinityTerm": { + "type": "object", + "properties": { + "labelSelector": { + "$ref": "#/definitions/commonLabelSelector" + }, + "namespaces": { + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "type": "string" + }, + "namespaceSelector": { + "$ref": "#/definitions/commonLabelSelector" + } + } + }, + "commonPodAntiAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodCommon": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "phase": { + "$ref": "#/definitions/PodCommonPodPhase" + }, + "ip": { + "type": "string" + }, + "restartCount": { + "type": "integer", + "format": "int32" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "pvUsedInGb": { + "type": "number", + "format": "double" + }, + "pvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/PodCommonCondition" + } + }, + "containersName": { + "type": "array", + "items": { + "type": "string" + } + }, + "ownerReference": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "initContainersName": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "commonPreferredSchedulingTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "preference": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + }, + "commonServiceType": { + "type": "string", + "enum": [ + "ClusterIP", + "NodePort", + "LoadBalancer" + ], + "default": "ClusterIP" + }, + "commonToleration": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "operator": { + "type": "string", + "title": "Operator valid string: Equal, Exists" + }, + "value": { + "type": "string" + }, + "effect": { + "type": "string", + "title": "Effect valid string: NoSchedule, PreferNoSchedule, NoExecute" + }, + "tolerationSeconds": { + "type": "string" + } + } + }, + "commonWeightedPodAffinityTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "podAffinityTerm": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + } + }, + "googlerpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "v1alpha1AlertSummary": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "int64" + }, + "groupName": { + "type": "string" + }, + "groupId": { + "type": "string" + }, + "ruleName": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "targetType": { + "$ref": "#/definitions/v1alpha1TargetType" + }, + "target": { + "type": "string" + }, + "severity": { + "$ref": "#/definitions/v1alpha1Severity" + }, + "value": { + "type": "string" + }, + "notifyResponse": { + "type": "string" + }, + "description": { + "type": "string" + }, + "startAt": { + "type": "string", + "format": "int64" + }, + "updateAt": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1Severity": { + "type": "string", + "enum": [ + "SEVERITY_UNSPECIFIED", + "CRITICAL", + "WARNING", + "INFO" + ], + "default": "SEVERITY_UNSPECIFIED" + }, + "v1alpha1TargetType": { + "type": "string", + "enum": [ + "TARGET_TYPE_UNSPECIFIED", + "GLOBAL", + "CLUSTER", + "NAMESPACE", + "NODE", + "DEPLOYMENT", + "STATEFULSET", + "DAEMONSET", + "POD" + ], + "default": "TARGET_TYPE_UNSPECIFIED" + } + } +} diff --git a/docs/openapi/mcamel/elasticsearch-v0.7.1.md b/docs/openapi/mcamel/elasticsearch-v0.7.1.md new file mode 100644 index 00000000..bdf4b8c7 --- /dev/null +++ b/docs/openapi/mcamel/elasticsearch-v0.7.1.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/mcamel/kafka-index.md b/docs/openapi/mcamel/kafka-index.md deleted file mode 100644 index 16c4cb08..00000000 --- a/docs/openapi/mcamel/kafka-index.md +++ /dev/null @@ -1,2 +0,0 @@ -# 中间件服务 OpenAPI -- [版本 v0.5.0](./kafka-v0.5.0.md) diff --git a/docs/openapi/mcamel/kafka-v0.5.1.json b/docs/openapi/mcamel/kafka-v0.5.1.json new file mode 100644 index 00000000..6cbea064 --- /dev/null +++ b/docs/openapi/mcamel/kafka-v0.5.1.json @@ -0,0 +1,3033 @@ +{ + "swagger": "2.0", + "info": { + "title": "中间件服务", + "version": "v0.5.1" + }, + "tags": [ + { + "name": "Cluster" + }, + { + "name": "Metric" + }, + { + "name": "CloudShellService" + }, + { + "name": "Kafka" + }, + { + "name": "Version" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/mcamel.io/kafka/v1alpha1/cloudshells": { + "post": { + "operationId": "CloudShellService_CreateCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateCloudShellRequest" + } + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/cloudshells/{name}": { + "get": { + "summary": "GetCloudShell get a cloudshell in golobal cluster.", + "operationId": "CloudShellService_GetCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + }, + "delete": { + "summary": "DeleteCloudShell delete a cloudshell in golobal cluster.", + "operationId": "CloudShellService_DeleteCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafka": { + "post": { + "operationId": "Kafka_CreateKafka", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateKafkaResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateKafkaReq" + } + } + ], + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafka-operator/versions": { + "get": { + "operationId": "Kafka_GetKafkaOperatorVersionList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetKafkaOperatorVersionListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafka-params/{cluster}": { + "get": { + "operationId": "Kafka_GetKafkaParam", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetKafkaParamResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafka/version": { + "get": { + "operationId": "Version_Get", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetVersionReply" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Version" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafka/{cluster}/{namespace}/{name}": { + "get": { + "operationId": "Kafka_GetKafka", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetKafkaResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Kafka" + ] + }, + "delete": { + "operationId": "Kafka_DeleteKafka", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteKafkaResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#unkonwn namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafka/{cluster}/{namespace}/{name}/grafana": { + "get": { + "operationId": "Kafka_GetKafkaGrafanaAddr", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetKafkaGrafanaAddrResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafka/{cluster}/{namespace}/{name}/manager": { + "post": { + "operationId": "Kafka_AddKafkaToManager", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/AddKafkaToManagerResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#input name!|input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object" + } + } + ], + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafka/{cluster}/{namespace}/{name}/nodes": { + "get": { + "operationId": "Kafka_GetKafkaNodeList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetKafkaNodeListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafka/{cluster}/{namespace}/{name}/params": { + "put": { + "operationId": "Kafka_UpdateKafkaParams", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateKafkaParamsResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#input name!|input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required|in:3.1.0#choose 3.1.0|choose 3.1.0\"" + }, + "kafkaReplicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|min:1#choose replicas|choose replicas\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "serviceType": { + "$ref": "#/definitions/CreateKafkaReqServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateKafkaReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "kafkaConf": { + "type": "string" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "isOpenManager": { + "type": "boolean" + }, + "managerCpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|resource#input cpuRequest|resource\"" + }, + "managerCpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|resource#input cpuLimit|resource\"" + }, + "managerMemoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|resource#input memoryRequest|resource\"" + }, + "managerMemoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|resource#input memoryLimit|resource\"" + }, + "managerUser": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|length:4,64|regex:^[a-z|A-Z][a-z|0-9|-|_]+$#input user|input manager user|input user\" json:\"managerUser\"" + }, + "managerPass": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|passwordLow#input password|input valid password\" json:\"managerPass\"" + }, + "managerReplicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|min:1#choose replicas|choose replicas\"" + }, + "managerServiceType": { + "$ref": "#/definitions/CreateKafkaReqServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "managerPorts": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateKafkaReqPorts" + } + }, + "managerServiceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "zookeeperReplicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|min:1#choose replicas|choose replicas\"" + }, + "zookeeperConf": { + "type": "string" + }, + "zookeeperCpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "zookeeperCpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "zookeeperMemoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "zookeeperMemoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + } + } + } + } + ], + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafka/{cluster}/{namespace}/{name}/users": { + "get": { + "operationId": "Kafka_GetKafkaUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetKafkaUsersResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can get password.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/kafkas": { + "post": { + "operationId": "Kafka_DeleteKafkas", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteKafkasResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/DeleteKafkasReq" + } + } + ], + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/workspaces": { + "get": { + "operationId": "Cluster_GetWorkspaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetWorkspaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{cluster}/all-events-kinds": { + "get": { + "operationId": "Cluster_GetAllEventKindsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventKindsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{cluster}/insight/status": { + "get": { + "operationId": "Cluster_GetInsightAgentStatus", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetInsightAgentStatusResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{cluster}/lbaddress/pools": { + "get": { + "operationId": "Cluster_GetMetallbIPAddressPoolsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "mcamel_type is holdplace for mcamel type.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{cluster}/nodelabels": { + "get": { + "operationId": "Cluster_GetClusterNodeLabelList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodeLabelListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{cluster}/nodeports": { + "get": { + "operationId": "Cluster_GetClusterNodePortList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodePortListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{cluster}/{namespace}/events": { + "get": { + "summary": "pod 列表上会使用", + "operationId": "Cluster_GetEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "cluster represents the name of deployment belongs to.\n@inject_tag: v:\"required#choose cluster\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.\n@inject_tag: v:\"required#choose namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "kind", + "description": "Kind represents what type of event is needed.\n@inject_tag: v:\"required#choose kind\"\n\n - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "The name of involvedObject.\nIf the kind is DEPLOYMENT,\nthis presents the name of deployments.\n@inject_tag: v:\"required#choose kind name\"", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "Type is used for query, showing events of specified type.\nUse example: type=WARNING&type=NORMAL.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ] + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{cluster}/{namespace}/{name}/alerts": { + "get": { + "operationId": "Metric_GetAlertsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAlertsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Metric" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{cluster}/{namespace}/{name}/all-events": { + "get": { + "operationId": "Cluster_GetAllEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "eventType", + "description": " - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED" + }, + { + "name": "kindName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{workspaceId}/clusters": { + "get": { + "operationId": "Cluster_GetClusterList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{workspaceId}/kafkas": { + "get": { + "operationId": "Kafka_GetKafkaList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetKafkaListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "common.PageInfoReq=1;", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Kafka" + ] + } + }, + "/apis/mcamel.io/kafka/v1alpha1/{workspaceId}/{cluster}/namespaces": { + "get": { + "operationId": "Cluster_GetClusterNamespaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNamespaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"required#请输入WSid\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + } + }, + "definitions": { + "AddKafkaToManagerResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "CloudShell": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/CloudShellSpec" + }, + "status": { + "$ref": "#/definitions/CloudShellStatus" + } + } + }, + "CloudShellSpec": { + "type": "object", + "properties": { + "configMapName": { + "type": "string" + }, + "once": { + "type": "boolean" + }, + "commandAction": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int32" + }, + "cleanup": { + "type": "boolean" + } + } + }, + "CloudShellStatus": { + "type": "object", + "properties": { + "phase": { + "type": "string" + }, + "accessUrl": { + "type": "string" + } + } + }, + "CommonReply": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + } + } + }, + "CreateCloudShellRequest": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/CreateCloudShellRequestType" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "filePath": { + "type": "string" + }, + "container": { + "type": "string" + }, + "logCount": { + "type": "integer", + "format": "int32" + }, + "data": { + "$ref": "#/definitions/CloudShell" + } + } + }, + "CreateCloudShellRequestType": { + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "bash", + "exec", + "logs", + "upload", + "download" + ], + "default": "TYPE_UNSPECIFIED" + }, + "CreateKafkaReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#input name!|input name!\"" + }, + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required|in:3.1.0#choose 3.1.0|choose 3.1.0\"" + }, + "kafkaReplicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|min:1#choose replicas|choose replicas\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "serviceType": { + "$ref": "#/definitions/CreateKafkaReqServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateKafkaReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "kafkaConf": { + "type": "string" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "isOpenManager": { + "type": "boolean" + }, + "managerCpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|resource#input cpuRequest|resource\"" + }, + "managerCpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|resource#input cpuLimit|resource\"" + }, + "managerMemoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|resource#input memoryRequest|resource\"" + }, + "managerMemoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|resource#input memoryLimit|resource\"" + }, + "managerUser": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|length:4,64|regex:^[a-z|A-Z][a-z|0-9|-|_]+$#input user|input manager user|input user\" json:\"managerUser\"" + }, + "managerPass": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenManager,true|passwordLow#input password|input valid password\" json:\"managerPass\"" + }, + "managerReplicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|min:1#choose replicas|choose replicas\"" + }, + "managerServiceType": { + "$ref": "#/definitions/CreateKafkaReqServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "managerPorts": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateKafkaReqPorts" + } + }, + "managerServiceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "zookeeperReplicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|min:1#choose replicas|choose replicas\"" + }, + "zookeeperConf": { + "type": "string" + }, + "zookeeperCpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "zookeeperCpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "zookeeperMemoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "zookeeperMemoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + } + } + }, + "CreateKafkaReqPorts": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name\"" + }, + "protocol": { + "type": "string", + "title": "@inject_tag: v:\"required|in:TCP,UDP#choose protocol|choose protocol\"" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "targetPort": { + "type": "integer", + "format": "int32" + }, + "nodePort": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required-if:ServiceType,NodePort|between:30000,32767#input nodePort port|input nodePort port\"" + } + } + }, + "CreateKafkaReqServiceType": { + "type": "string", + "enum": [ + "ClusterIP", + "NodePort", + "LoadBalancer" + ], + "default": "ClusterIP" + }, + "CreateKafkaResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DataIntValue": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + } + } + }, + "DataResourceValue": { + "type": "object", + "properties": { + "cpuRequest": { + "type": "string" + }, + "cpuLimit": { + "type": "string" + }, + "memoryRequest": { + "type": "string" + }, + "memoryLimit": { + "type": "string" + } + } + }, + "DataStorageClassValue": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "allowVolumeExpansion": { + "type": "boolean" + } + } + }, + "DataStringValue": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, + "DeleteKafkaReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#unkonwn namespace!\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"" + } + } + }, + "DeleteKafkaResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeleteKafkasReq": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/DeleteKafkaReq" + } + } + } + }, + "DeleteKafkasResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "EventSource": { + "type": "object", + "properties": { + "component": { + "type": "string", + "title": "Component from which the event is generated.\n+optional" + }, + "host": { + "type": "string", + "title": "Node name on which the event is generated.\n+optional" + } + }, + "description": "EventSource contains information for an event." + }, + "EventType": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED", + "description": "Type of event (Normal, Warning), new types could be added in the\nfuture.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type." + }, + "GetAlertsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1AlertSummary" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventKindsListResp": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetAllEventListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetAllEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetAllEventListRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventListRespItems": { + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "type": { + "type": "string" + }, + "count": { + "type": "integer", + "format": "int64" + }, + "reason": { + "type": "string" + }, + "source": { + "$ref": "#/definitions/ItemsSource" + }, + "message": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/GetAllEventListRespItemsMetadata" + }, + "apiVersion": { + "type": "string" + }, + "lastTimestamp": { + "type": "string", + "format": "int64" + }, + "firstTimestamp": { + "type": "string", + "format": "int64" + }, + "involvedObject": { + "$ref": "#/definitions/ItemsInvolvedObject" + }, + "reportingInstance": { + "type": "string" + }, + "reportingComponent": { + "type": "string" + } + } + }, + "GetAllEventListRespItemsMetadata": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + } + } + }, + "GetClusterListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNamespaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetClusterNodeLabelListRespLabel" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListRespLabel": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetClusterNodePortListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListReqKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED", + "description": " - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod." + }, + "GetEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetEventListRespItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListRespItem": { + "type": "object", + "properties": { + "involvedObject": { + "$ref": "#/definitions/ObjectReference", + "description": "The object that this event is about." + }, + "reason": { + "type": "string", + "description": "reason is why the action was taken. It is human-readable.\nThis field cannot be empty for new Events and it can have at most 128\ncharacters." + }, + "message": { + "type": "string", + "description": "A human-readable description of the status of this operation." + }, + "source": { + "$ref": "#/definitions/EventSource", + "description": "The component reporting this event. Should be a short machine\nunderstandable string." + }, + "lastTimestamp": { + "type": "string", + "format": "int64", + "description": "The time at which the most recent occurrence of this event was recorded." + }, + "type": { + "$ref": "#/definitions/EventType", + "description": "Type of this event (Normal, Warning), new types could be added in the\nfuture." + } + } + }, + "GetInsightAgentStatusResp": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/GetInsightAgentStatusRespInsightAgentStatus" + } + } + }, + "GetInsightAgentStatusRespInsightAgentStatus": { + "type": "string", + "enum": [ + "NotInstall", + "Install" + ], + "default": "NotInstall" + }, + "GetKafkaGrafanaAddrResp": { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + }, + "GetKafkaListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetKafkaListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/KafkaClusterItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetKafkaNodeListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetKafkaNodeListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetKafkaNodeListRespData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetKafkaNodeListRespData": { + "type": "object", + "properties": { + "podName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/GetKafkaNodeListRespPodStatus" + }, + "ip": { + "type": "string" + }, + "restart": { + "type": "integer", + "format": "int32" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "nodeType": { + "$ref": "#/definitions/GetKafkaNodeListRespNodeType" + }, + "common": { + "$ref": "#/definitions/commonPodCommon" + } + } + }, + "GetKafkaNodeListRespNodeType": { + "type": "string", + "enum": [ + "Kafka", + "Zookeeper", + "Manager" + ], + "default": "Kafka" + }, + "GetKafkaNodeListRespPodStatus": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "GetKafkaOperatorVersionListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetKafkaOperatorVersionListRespGetKafkaOperatorVersionListData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetKafkaOperatorVersionListRespGetKafkaOperatorVersionListData": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "GetKafkaParamResp": { + "type": "object", + "properties": { + "version": { + "$ref": "#/definitions/GetKafkaParamRespSelect" + }, + "replicas": { + "$ref": "#/definitions/GetKafkaParamRespSelect" + }, + "resource": { + "$ref": "#/definitions/GetKafkaParamRespSelect" + }, + "storage": { + "$ref": "#/definitions/GetKafkaParamRespSelect" + }, + "kafkaConf": { + "$ref": "#/definitions/GetKafkaParamRespSelect" + }, + "zookeeperConf": { + "$ref": "#/definitions/GetKafkaParamRespSelect" + } + } + }, + "GetKafkaParamRespSelect": { + "type": "object", + "properties": { + "selectType": { + "$ref": "#/definitions/SelectSelectType" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/GetKafkaParamRespSelectData" + } + } + } + }, + "GetKafkaParamRespSelectData": { + "type": "object", + "properties": { + "sValue": { + "$ref": "#/definitions/DataStringValue" + }, + "rValue": { + "$ref": "#/definitions/DataResourceValue" + }, + "iValue": { + "$ref": "#/definitions/DataIntValue" + }, + "scValue": { + "$ref": "#/definitions/DataStorageClassValue" + } + } + }, + "GetKafkaResp": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/KafkaClusterItem" + } + } + }, + "GetKafkaUsersResp": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/definitions/GetKafkaUsersRespUserItem" + } + } + } + }, + "GetKafkaUsersRespUserItem": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "GetMetallbIPAddressPoolsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListRespItem" + } + }, + "isSupportLb": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "array", + "items": { + "$ref": "#/definitions/commonExternalTrafficPolicy" + }, + "title": "lb" + }, + "lbTyp": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLBTyp" + } + } + } + }, + "GetMetallbIPAddressPoolsListRespItem": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "autoAssign": { + "type": "boolean", + "description": "AutoAssign flag used to prevent MetallB from automatic allocation\nfor a pool." + }, + "avoidBuggyIPs": { + "type": "boolean", + "description": "AvoidBuggyIPs prevents addresses ending with .0 and .255\nto be used by a pool." + } + } + }, + "GetVersionReply": { + "type": "object", + "properties": { + "commonReply": { + "$ref": "#/definitions/CommonReply" + }, + "gitCommit": { + "type": "string" + }, + "gitVersion": { + "type": "string" + }, + "buildTime": { + "type": "string" + } + } + }, + "GetWorkspaceListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetWorkspaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetWorkspaceListRespItem" + }, + "title": "def items" + }, + "pagination": { + "$ref": "#/definitions/commonPagination", + "title": "def pagination" + } + } + }, + "GetWorkspaceListRespItem": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int64", + "title": "id" + }, + "alias": { + "type": "string", + "title": "alias" + } + } + }, + "ItemsInvolvedObject": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "apiVersion": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + } + } + }, + "ItemsSource": { + "type": "object", + "properties": { + "component": { + "type": "string" + } + } + }, + "KafkaClusterItem": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/KafkaClusterItemMetadata" + }, + "spec": { + "$ref": "#/definitions/CreateKafkaReq" + }, + "status": { + "$ref": "#/definitions/KafkaClusterItemStatus" + } + }, + "title": "generate by https://json2pb.vercel.app" + }, + "KafkaClusterItemMetadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "KafkaClusterItemStatus": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/Status" + }, + "webManagerAddr": { + "type": "string" + }, + "clusterIPs": { + "type": "array", + "items": { + "type": "string" + } + }, + "serviceAddr": { + "type": "string" + }, + "kafkaPodsAreReadyNum": { + "type": "integer", + "format": "int32" + }, + "zookeeperPodsAreReadyNum": { + "type": "integer", + "format": "int32" + }, + "common": { + "$ref": "#/definitions/commonCommonItemStatus" + } + } + }, + "ObjectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "deletionTimestamp": { + "type": "string", + "format": "int64" + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ownerReferences": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "cluster": { + "type": "string" + }, + "workspaceAlias": { + "type": "string" + } + } + }, + "ObjectReference": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "title": "Kind of the referent.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional" + }, + "name": { + "type": "string", + "title": "Name of the referent.\nMore info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + } + }, + "description": "ObjectReference contains enough information to let you inspect or modify the\nreferred object." + }, + "PodCommonCondition": { + "type": "object", + "properties": { + "lastTransitionTime": { + "type": "string" + }, + "lastUpdateTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/PodCommonConditionStatus" + }, + "type": { + "type": "string" + } + } + }, + "PodCommonConditionStatus": { + "type": "string", + "enum": [ + "PodConditionStatusUnknown", + "PodConditionStatusTrue", + "PodConditionStatusFalse" + ], + "default": "PodConditionStatusUnknown" + }, + "PodCommonPodPhase": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "SelectSelectType": { + "type": "string", + "enum": [ + "Single", + "Multiple" + ], + "default": "Single" + }, + "Status": { + "type": "string", + "enum": [ + "Failed", + "Running", + "Creating" + ], + "default": "Failed" + }, + "UpdateKafkaParamsResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "commonAffinity": { + "type": "object", + "properties": { + "nodeAffinity": { + "$ref": "#/definitions/commonNodeAffinity" + }, + "podAffinity": { + "$ref": "#/definitions/commonPodAffinity" + }, + "podAntiAffinity": { + "$ref": "#/definitions/commonPodAntiAffinity" + } + } + }, + "commonCommonItemStatus": { + "type": "object", + "properties": { + "serviceAddresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "webManagerAddress": { + "type": "string" + }, + "webLogAddress": { + "type": "string" + }, + "isHwameistorSc": { + "type": "boolean" + }, + "avgPvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "avgPvUsedInGb": { + "type": "number", + "format": "double" + } + }, + "description": "CommonItemStatus define CR(MysqlCluster/Tenant...) common status." + }, + "commonExternalTrafficPolicy": { + "type": "string", + "enum": [ + "Cluster", + "Local" + ], + "default": "Cluster" + }, + "commonLBTyp": { + "type": "string", + "enum": [ + "MetalLB", + "Others" + ], + "default": "MetalLB" + }, + "commonLabelSelector": { + "type": "object", + "properties": { + "matchLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLabelSelectorRequirement" + } + } + } + }, + "commonLabelSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist" + } + } + }, + "commonNodeAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "$ref": "#/definitions/commonNodeSelector" + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPreferredSchedulingTerm" + } + } + } + }, + "commonNodeSelector": { + "type": "object", + "properties": { + "nodeSelectorTerms": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + } + }, + "commonNodeSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist, Gt, Lt" + } + } + }, + "commonNodeSelectorTerm": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + }, + "matchFields": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + } + } + }, + "commonOwnerReference": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "controller": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "kind": { + "type": "string" + } + } + }, + "commonPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "pages": { + "type": "integer", + "format": "int32" + } + } + }, + "commonPodAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodAffinityTerm": { + "type": "object", + "properties": { + "labelSelector": { + "$ref": "#/definitions/commonLabelSelector" + }, + "namespaces": { + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "type": "string" + }, + "namespaceSelector": { + "$ref": "#/definitions/commonLabelSelector" + } + } + }, + "commonPodAntiAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodCommon": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "phase": { + "$ref": "#/definitions/PodCommonPodPhase" + }, + "ip": { + "type": "string" + }, + "restartCount": { + "type": "integer", + "format": "int32" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "pvUsedInGb": { + "type": "number", + "format": "double" + }, + "pvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/PodCommonCondition" + } + }, + "containersName": { + "type": "array", + "items": { + "type": "string" + } + }, + "ownerReference": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "initContainersName": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "commonPreferredSchedulingTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "preference": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + }, + "commonWeightedPodAffinityTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "podAffinityTerm": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + } + }, + "googlerpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "v1alpha1AlertSummary": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "int64" + }, + "groupName": { + "type": "string" + }, + "groupId": { + "type": "string" + }, + "ruleName": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "targetType": { + "$ref": "#/definitions/v1alpha1TargetType" + }, + "target": { + "type": "string" + }, + "severity": { + "$ref": "#/definitions/v1alpha1Severity" + }, + "value": { + "type": "string" + }, + "notifyResponse": { + "type": "string" + }, + "description": { + "type": "string" + }, + "startAt": { + "type": "string", + "format": "int64" + }, + "updateAt": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1Severity": { + "type": "string", + "enum": [ + "SEVERITY_UNSPECIFIED", + "CRITICAL", + "WARNING", + "INFO" + ], + "default": "SEVERITY_UNSPECIFIED" + }, + "v1alpha1TargetType": { + "type": "string", + "enum": [ + "TARGET_TYPE_UNSPECIFIED", + "GLOBAL", + "CLUSTER", + "NAMESPACE", + "NODE", + "DEPLOYMENT", + "STATEFULSET", + "DAEMONSET", + "POD" + ], + "default": "TARGET_TYPE_UNSPECIFIED" + } + } +} diff --git a/docs/openapi/mcamel/kafka-v0.5.1.md b/docs/openapi/mcamel/kafka-v0.5.1.md new file mode 100644 index 00000000..b9da1fc1 --- /dev/null +++ b/docs/openapi/mcamel/kafka-v0.5.1.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/mcamel/minio-index.md b/docs/openapi/mcamel/minio-index.md deleted file mode 100644 index 056a479c..00000000 --- a/docs/openapi/mcamel/minio-index.md +++ /dev/null @@ -1,2 +0,0 @@ -# 中间件服务 OpenAPI -- [版本 v0.5.0](./minio-v0.5.0.md) diff --git a/docs/openapi/mcamel/minio-v0.5.1.json b/docs/openapi/mcamel/minio-v0.5.1.json new file mode 100644 index 00000000..59d58348 --- /dev/null +++ b/docs/openapi/mcamel/minio-v0.5.1.json @@ -0,0 +1,3146 @@ +{ + "swagger": "2.0", + "info": { + "title": "中间件服务", + "version": "v0.5.1" + }, + "tags": [ + { + "name": "Cluster" + }, + { + "name": "Metric" + }, + { + "name": "CloudShellService" + }, + { + "name": "Version" + }, + { + "name": "Minio" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/mcamel.io/minio/v1alpha1/cloudshells": { + "post": { + "operationId": "CloudShellService_CreateCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateCloudShellRequest" + } + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/cloudshells/{name}": { + "get": { + "summary": "GetCloudShell get a cloudshell in golobal cluster.", + "operationId": "CloudShellService_GetCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + }, + "delete": { + "summary": "DeleteCloudShell delete a cloudshell in golobal cluster.", + "operationId": "CloudShellService_DeleteCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio": { + "post": { + "operationId": "Minio_CreateMinio", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateMinioResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateMinioReq" + } + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio-operator/versions": { + "get": { + "operationId": "Minio_GetMinioOperatorVersionList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMinioOperatorVersionListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio-params/{cluster}": { + "get": { + "operationId": "Minio_GetMinioParam", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMinioParamResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio/version": { + "get": { + "operationId": "Version_Get", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetVersionReply" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Version" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio/{cluster}/{namespace}/{name}": { + "get": { + "operationId": "Minio_GetMinio", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMinioResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Minio" + ] + }, + "delete": { + "operationId": "Minio_DeleteMinio", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteMinioResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#unkonwn namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio/{cluster}/{namespace}/{name}/conf": { + "put": { + "operationId": "Minio_UpdateMinioConf", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateMinioConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "conf": { + "type": "string", + "title": "@inject_tag: v:\"required#input conf!\"" + } + } + } + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio/{cluster}/{namespace}/{name}/confs": { + "get": { + "operationId": "Minio_GetMinioConfs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMinioConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio/{cluster}/{namespace}/{name}/grafana": { + "get": { + "operationId": "Minio_GetMinioGrafanaAddr", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMinioGrafanaAddrResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio/{cluster}/{namespace}/{name}/nodes": { + "get": { + "operationId": "Minio_GetMinioNodeList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMinioNodeListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio/{cluster}/{namespace}/{name}/params": { + "put": { + "operationId": "Minio_UpdateMinioParams", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateMinioParamsResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#input name!|input invalid name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required#choose workspace_id!\"" + }, + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required|in:RELEASE.2022-10-02T19-29-29Z#input version!|input valid version!\"" + }, + "servers": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|min:1#input servers|input servers\"" + }, + "volumesPerServer": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required#input volumes_per_server\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "serviceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateMinioReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "instanceType": { + "$ref": "#/definitions/CreateMinioReqInstanceType" + }, + "consoleAccessKey": { + "type": "string" + }, + "consoleSecretKey": { + "type": "string" + }, + "consoleServiceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "consoleNodePort": { + "type": "integer", + "format": "int32" + }, + "consoleServiceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "minioRootUser": { + "type": "string", + "title": "@inject_tag: v:\"required#input minio_root_user\"" + }, + "minioRootPassword": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordMid#input minio_root_password|input valid minio_root_password\"" + }, + "buckets": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateMinioReqBucket" + } + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "externalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "lb\n@inject_tag: v:\"checklb#checklb failed!\"" + }, + "lbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "lbPoolName": { + "type": "string" + }, + "lbAddress": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minio/{cluster}/{namespace}/{name}/users": { + "get": { + "operationId": "Minio_GetMinioUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMinioUsersResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can get password.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/minios": { + "post": { + "operationId": "Minio_DeleteMinios", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteMiniosResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/DeleteMiniosReq" + } + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/workspaces": { + "get": { + "operationId": "Cluster_GetWorkspaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetWorkspaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{cluster}/all-events-kinds": { + "get": { + "operationId": "Cluster_GetAllEventKindsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventKindsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{cluster}/insight/status": { + "get": { + "operationId": "Cluster_GetInsightAgentStatus", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetInsightAgentStatusResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{cluster}/lbaddress/pools": { + "get": { + "operationId": "Cluster_GetMetallbIPAddressPoolsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "mcamel_type is holdplace for mcamel type.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{cluster}/nodelabels": { + "get": { + "operationId": "Cluster_GetClusterNodeLabelList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodeLabelListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{cluster}/nodeports": { + "get": { + "operationId": "Cluster_GetClusterNodePortList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodePortListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{cluster}/{namespace}/events": { + "get": { + "summary": "pod 列表上会使用", + "operationId": "Cluster_GetEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "cluster represents the name of deployment belongs to.\n@inject_tag: v:\"required#choose cluster\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.\n@inject_tag: v:\"required#choose namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "kind", + "description": "Kind represents what type of event is needed.\n@inject_tag: v:\"required#choose kind\"\n\n - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "The name of involvedObject.\nIf the kind is DEPLOYMENT,\nthis presents the name of deployments.\n@inject_tag: v:\"required#choose kind name\"", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "Type is used for query, showing events of specified type.\nUse example: type=WARNING&type=NORMAL.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ] + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{cluster}/{namespace}/{name}/alerts": { + "get": { + "operationId": "Metric_GetAlertsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAlertsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Metric" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{cluster}/{namespace}/{name}/all-events": { + "get": { + "operationId": "Cluster_GetAllEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "eventType", + "description": " - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED" + }, + { + "name": "kindName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{workspaceId}/clusters": { + "get": { + "operationId": "Cluster_GetClusterList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{workspaceId}/minios": { + "get": { + "operationId": "Minio_GetMinioList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMinioListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "common.PageInfoReq=1;", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Minio" + ] + } + }, + "/apis/mcamel.io/minio/v1alpha1/{workspaceId}/{cluster}/namespaces": { + "get": { + "operationId": "Cluster_GetClusterNamespaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNamespaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"required#请输入WSid\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + } + }, + "definitions": { + "CloudShell": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/CloudShellSpec" + }, + "status": { + "$ref": "#/definitions/CloudShellStatus" + } + } + }, + "CloudShellSpec": { + "type": "object", + "properties": { + "configMapName": { + "type": "string" + }, + "once": { + "type": "boolean" + }, + "commandAction": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int32" + }, + "cleanup": { + "type": "boolean" + } + } + }, + "CloudShellStatus": { + "type": "object", + "properties": { + "phase": { + "type": "string" + }, + "accessUrl": { + "type": "string" + } + } + }, + "CommonReply": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + } + } + }, + "CreateCloudShellRequest": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/CreateCloudShellRequestType" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "filePath": { + "type": "string" + }, + "container": { + "type": "string" + }, + "logCount": { + "type": "integer", + "format": "int32" + }, + "data": { + "$ref": "#/definitions/CloudShell" + } + } + }, + "CreateCloudShellRequestType": { + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "bash", + "exec", + "logs", + "upload", + "download" + ], + "default": "TYPE_UNSPECIFIED" + }, + "CreateMinioReq": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required#choose workspace_id!\"" + }, + "cluster": { + "type": "string", + "title": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#input name!|input invalid name!\"" + }, + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required|in:RELEASE.2022-10-02T19-29-29Z#input version!|input valid version!\"" + }, + "servers": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|min:1#input servers|input servers\"" + }, + "volumesPerServer": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required#input volumes_per_server\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "serviceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateMinioReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "instanceType": { + "$ref": "#/definitions/CreateMinioReqInstanceType" + }, + "consoleAccessKey": { + "type": "string" + }, + "consoleSecretKey": { + "type": "string" + }, + "consoleServiceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "consoleNodePort": { + "type": "integer", + "format": "int32" + }, + "consoleServiceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "minioRootUser": { + "type": "string", + "title": "@inject_tag: v:\"required#input minio_root_user\"" + }, + "minioRootPassword": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordMid#input minio_root_password|input valid minio_root_password\"" + }, + "buckets": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateMinioReqBucket" + } + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "externalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "lb\n@inject_tag: v:\"checklb#checklb failed!\"" + }, + "lbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "lbPoolName": { + "type": "string" + }, + "lbAddress": { + "type": "string" + } + } + }, + "CreateMinioReqBucket": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name\"" + } + } + }, + "CreateMinioReqInstanceType": { + "type": "string", + "enum": [ + "HighAvailable", + "Single" + ], + "default": "HighAvailable" + }, + "CreateMinioReqPorts": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name\"" + }, + "protocol": { + "type": "string", + "title": "@inject_tag: v:\"required|in:TCP,UDP#choose protocol|choose protocol\"" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "targetPort": { + "type": "integer", + "format": "int32" + }, + "nodePort": { + "type": "integer", + "format": "int32" + } + } + }, + "CreateMinioResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DataIntValue": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + } + } + }, + "DataResourceValue": { + "type": "object", + "properties": { + "cpuRequest": { + "type": "string" + }, + "cpuLimit": { + "type": "string" + }, + "memoryRequest": { + "type": "string" + }, + "memoryLimit": { + "type": "string" + } + } + }, + "DataStorageClassValue": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "allowVolumeExpansion": { + "type": "boolean" + } + } + }, + "DataStringValue": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, + "DeleteMinioReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#unkonwn namespace!\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"" + } + } + }, + "DeleteMinioResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeleteMiniosReq": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/DeleteMinioReq" + } + } + } + }, + "DeleteMiniosResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "EventSource": { + "type": "object", + "properties": { + "component": { + "type": "string", + "title": "Component from which the event is generated.\n+optional" + }, + "host": { + "type": "string", + "title": "Node name on which the event is generated.\n+optional" + } + }, + "description": "EventSource contains information for an event." + }, + "EventType": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED", + "description": "Type of event (Normal, Warning), new types could be added in the\nfuture.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type." + }, + "GetAlertsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1AlertSummary" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventKindsListResp": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetAllEventListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetAllEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetAllEventListRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventListRespItems": { + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "type": { + "type": "string" + }, + "count": { + "type": "integer", + "format": "int64" + }, + "reason": { + "type": "string" + }, + "source": { + "$ref": "#/definitions/ItemsSource" + }, + "message": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/GetAllEventListRespItemsMetadata" + }, + "apiVersion": { + "type": "string" + }, + "lastTimestamp": { + "type": "string", + "format": "int64" + }, + "firstTimestamp": { + "type": "string", + "format": "int64" + }, + "involvedObject": { + "$ref": "#/definitions/ItemsInvolvedObject" + }, + "reportingInstance": { + "type": "string" + }, + "reportingComponent": { + "type": "string" + } + } + }, + "GetAllEventListRespItemsMetadata": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + } + } + }, + "GetClusterListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNamespaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetClusterNodeLabelListRespLabel" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListRespLabel": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetClusterNodePortListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListReqKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED", + "description": " - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod." + }, + "GetEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetEventListRespItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListRespItem": { + "type": "object", + "properties": { + "involvedObject": { + "$ref": "#/definitions/ObjectReference", + "description": "The object that this event is about." + }, + "reason": { + "type": "string", + "description": "reason is why the action was taken. It is human-readable.\nThis field cannot be empty for new Events and it can have at most 128\ncharacters." + }, + "message": { + "type": "string", + "description": "A human-readable description of the status of this operation." + }, + "source": { + "$ref": "#/definitions/EventSource", + "description": "The component reporting this event. Should be a short machine\nunderstandable string." + }, + "lastTimestamp": { + "type": "string", + "format": "int64", + "description": "The time at which the most recent occurrence of this event was recorded." + }, + "type": { + "$ref": "#/definitions/EventType", + "description": "Type of this event (Normal, Warning), new types could be added in the\nfuture." + } + } + }, + "GetInsightAgentStatusResp": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/GetInsightAgentStatusRespInsightAgentStatus" + } + } + }, + "GetInsightAgentStatusRespInsightAgentStatus": { + "type": "string", + "enum": [ + "NotInstall", + "Install" + ], + "default": "NotInstall" + }, + "GetMetallbIPAddressPoolsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListRespItem" + } + }, + "isSupportLb": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "array", + "items": { + "$ref": "#/definitions/commonExternalTrafficPolicy" + }, + "title": "lb" + }, + "lbTyp": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLBTyp" + } + } + } + }, + "GetMetallbIPAddressPoolsListRespItem": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "autoAssign": { + "type": "boolean", + "description": "AutoAssign flag used to prevent MetallB from automatic allocation\nfor a pool." + }, + "avoidBuggyIPs": { + "type": "boolean", + "description": "AvoidBuggyIPs prevents addresses ending with .0 and .255\nto be used by a pool." + } + } + }, + "GetMinioConfReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetMinioConfResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMinioConfRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + }, + "conf": { + "$ref": "#/definitions/UpdateMinioConfReq" + } + } + }, + "GetMinioConfRespItems": { + "type": "object", + "properties": { + "paramType": { + "$ref": "#/definitions/ItemsParamType" + }, + "paramName": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "GetMinioGrafanaAddrResp": { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + }, + "GetMinioListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetMinioListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/TenantItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetMinioNodeListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetMinioNodeListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMinioNodeListRespData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetMinioNodeListRespData": { + "type": "object", + "properties": { + "podName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/GetMinioNodeListRespPodStatus" + }, + "ip": { + "type": "string" + }, + "restart": { + "type": "integer", + "format": "int32" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "common": { + "$ref": "#/definitions/commonPodCommon" + } + } + }, + "GetMinioNodeListRespPodStatus": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "GetMinioOperatorVersionListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMinioOperatorVersionListRespGetMinioOperatorVersionListData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetMinioOperatorVersionListRespGetMinioOperatorVersionListData": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "GetMinioParamResp": { + "type": "object", + "properties": { + "version": { + "$ref": "#/definitions/GetMinioParamRespSelect" + }, + "storage": { + "$ref": "#/definitions/GetMinioParamRespSelect" + } + } + }, + "GetMinioParamRespSelect": { + "type": "object", + "properties": { + "selectType": { + "$ref": "#/definitions/SelectSelectType" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMinioParamRespSelectData" + } + } + } + }, + "GetMinioParamRespSelectData": { + "type": "object", + "properties": { + "sValue": { + "$ref": "#/definitions/DataStringValue" + }, + "rValue": { + "$ref": "#/definitions/DataResourceValue" + }, + "iValue": { + "$ref": "#/definitions/DataIntValue" + }, + "scValue": { + "$ref": "#/definitions/DataStorageClassValue" + } + } + }, + "GetMinioResp": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/TenantItem" + } + } + }, + "GetMinioUsersResp": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMinioUsersRespUserItem" + } + } + } + }, + "GetMinioUsersRespUserItem": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "GetVersionReply": { + "type": "object", + "properties": { + "commonReply": { + "$ref": "#/definitions/CommonReply" + }, + "gitCommit": { + "type": "string" + }, + "gitVersion": { + "type": "string" + }, + "buildTime": { + "type": "string" + } + } + }, + "GetWorkspaceListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetWorkspaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetWorkspaceListRespItem" + }, + "title": "def items" + }, + "pagination": { + "$ref": "#/definitions/commonPagination", + "title": "def pagination" + } + } + }, + "GetWorkspaceListRespItem": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int64", + "title": "id" + }, + "alias": { + "type": "string", + "title": "alias" + } + } + }, + "ItemsInvolvedObject": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "apiVersion": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + } + } + }, + "ItemsParamType": { + "type": "string", + "enum": [ + "conf" + ], + "default": "conf" + }, + "ItemsSource": { + "type": "object", + "properties": { + "component": { + "type": "string" + } + } + }, + "ObjectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "deletionTimestamp": { + "type": "string", + "format": "int64" + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ownerReferences": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "cluster": { + "type": "string" + }, + "workspaceAlias": { + "type": "string" + } + } + }, + "ObjectReference": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "title": "Kind of the referent.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional" + }, + "name": { + "type": "string", + "title": "Name of the referent.\nMore info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + } + }, + "description": "ObjectReference contains enough information to let you inspect or modify the\nreferred object." + }, + "PodCommonCondition": { + "type": "object", + "properties": { + "lastTransitionTime": { + "type": "string" + }, + "lastUpdateTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/PodCommonConditionStatus" + }, + "type": { + "type": "string" + } + } + }, + "PodCommonConditionStatus": { + "type": "string", + "enum": [ + "PodConditionStatusUnknown", + "PodConditionStatusTrue", + "PodConditionStatusFalse" + ], + "default": "PodConditionStatusUnknown" + }, + "PodCommonPodPhase": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "SelectSelectType": { + "type": "string", + "enum": [ + "Single", + "Multiple" + ], + "default": "Single" + }, + "Status": { + "type": "string", + "enum": [ + "Failed", + "Running", + "Creating" + ], + "default": "Failed" + }, + "TenantItem": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/TenantItemMetadata" + }, + "spec": { + "$ref": "#/definitions/CreateMinioReq" + }, + "status": { + "$ref": "#/definitions/TenantItemStatus" + } + }, + "title": "generate by https://json2pb.vercel.app" + }, + "TenantItemMetadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "TenantItemStatus": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/Status" + }, + "podsAreReadyNum": { + "type": "integer", + "format": "int32" + }, + "webManagerAddr": { + "type": "string" + }, + "clusterIPs": { + "type": "array", + "items": { + "type": "string" + } + }, + "serviceAddr": { + "type": "string" + }, + "common": { + "$ref": "#/definitions/commonCommonItemStatus" + } + } + }, + "UpdateMinioConfReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "conf": { + "type": "string", + "title": "@inject_tag: v:\"required#input conf!\"" + } + } + }, + "UpdateMinioConfResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "UpdateMinioParamsResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "commonAffinity": { + "type": "object", + "properties": { + "nodeAffinity": { + "$ref": "#/definitions/commonNodeAffinity" + }, + "podAffinity": { + "$ref": "#/definitions/commonPodAffinity" + }, + "podAntiAffinity": { + "$ref": "#/definitions/commonPodAntiAffinity" + } + } + }, + "commonCommonItemStatus": { + "type": "object", + "properties": { + "serviceAddresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "webManagerAddress": { + "type": "string" + }, + "webLogAddress": { + "type": "string" + }, + "isHwameistorSc": { + "type": "boolean" + }, + "avgPvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "avgPvUsedInGb": { + "type": "number", + "format": "double" + } + }, + "description": "CommonItemStatus define CR(MysqlCluster/Tenant...) common status." + }, + "commonExternalTrafficPolicy": { + "type": "string", + "enum": [ + "Cluster", + "Local" + ], + "default": "Cluster" + }, + "commonLBTyp": { + "type": "string", + "enum": [ + "MetalLB", + "Others" + ], + "default": "MetalLB" + }, + "commonLabelSelector": { + "type": "object", + "properties": { + "matchLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLabelSelectorRequirement" + } + } + } + }, + "commonLabelSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist" + } + } + }, + "commonNodeAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "$ref": "#/definitions/commonNodeSelector" + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPreferredSchedulingTerm" + } + } + } + }, + "commonNodeSelector": { + "type": "object", + "properties": { + "nodeSelectorTerms": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + } + }, + "commonNodeSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist, Gt, Lt" + } + } + }, + "commonNodeSelectorTerm": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + }, + "matchFields": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + } + } + }, + "commonOwnerReference": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "controller": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "kind": { + "type": "string" + } + } + }, + "commonPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "pages": { + "type": "integer", + "format": "int32" + } + } + }, + "commonPodAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodAffinityTerm": { + "type": "object", + "properties": { + "labelSelector": { + "$ref": "#/definitions/commonLabelSelector" + }, + "namespaces": { + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "type": "string" + }, + "namespaceSelector": { + "$ref": "#/definitions/commonLabelSelector" + } + } + }, + "commonPodAntiAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodCommon": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "phase": { + "$ref": "#/definitions/PodCommonPodPhase" + }, + "ip": { + "type": "string" + }, + "restartCount": { + "type": "integer", + "format": "int32" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "pvUsedInGb": { + "type": "number", + "format": "double" + }, + "pvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/PodCommonCondition" + } + }, + "containersName": { + "type": "array", + "items": { + "type": "string" + } + }, + "ownerReference": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "initContainersName": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "commonPreferredSchedulingTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "preference": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + }, + "commonServiceType": { + "type": "string", + "enum": [ + "ClusterIP", + "NodePort", + "LoadBalancer" + ], + "default": "ClusterIP" + }, + "commonWeightedPodAffinityTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "podAffinityTerm": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + } + }, + "googlerpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "v1alpha1AlertSummary": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "int64" + }, + "groupName": { + "type": "string" + }, + "groupId": { + "type": "string" + }, + "ruleName": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "targetType": { + "$ref": "#/definitions/v1alpha1TargetType" + }, + "target": { + "type": "string" + }, + "severity": { + "$ref": "#/definitions/v1alpha1Severity" + }, + "value": { + "type": "string" + }, + "notifyResponse": { + "type": "string" + }, + "description": { + "type": "string" + }, + "startAt": { + "type": "string", + "format": "int64" + }, + "updateAt": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1Severity": { + "type": "string", + "enum": [ + "SEVERITY_UNSPECIFIED", + "CRITICAL", + "WARNING", + "INFO" + ], + "default": "SEVERITY_UNSPECIFIED" + }, + "v1alpha1TargetType": { + "type": "string", + "enum": [ + "TARGET_TYPE_UNSPECIFIED", + "GLOBAL", + "CLUSTER", + "NAMESPACE", + "NODE", + "DEPLOYMENT", + "STATEFULSET", + "DAEMONSET", + "POD" + ], + "default": "TARGET_TYPE_UNSPECIFIED" + } + } +} diff --git a/docs/openapi/mcamel/minio-v0.5.1.md b/docs/openapi/mcamel/minio-v0.5.1.md new file mode 100644 index 00000000..f66f60f3 --- /dev/null +++ b/docs/openapi/mcamel/minio-v0.5.1.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/mcamel/mysql-index.md b/docs/openapi/mcamel/mysql-index.md deleted file mode 100644 index e1b1b805..00000000 --- a/docs/openapi/mcamel/mysql-index.md +++ /dev/null @@ -1,2 +0,0 @@ -# 中间件服务 OpenAPI -- [版本 v0.8.0](./mysql-v0.8.0.md) diff --git a/docs/openapi/mcamel/mysql-v0.8.1.json b/docs/openapi/mcamel/mysql-v0.8.1.json new file mode 100644 index 00000000..3d1150df --- /dev/null +++ b/docs/openapi/mcamel/mysql-v0.8.1.json @@ -0,0 +1,5098 @@ +{ + "swagger": "2.0", + "info": { + "title": "中间件服务", + "version": "v0.8.1" + }, + "tags": [ + { + "name": "Mysql" + }, + { + "name": "Cluster" + }, + { + "name": "Metric" + }, + { + "name": "CloudShellService" + }, + { + "name": "StorageConfig" + }, + { + "name": "Version" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/mcamel.io/mysql/v1alpha1/cloudshells": { + "post": { + "operationId": "CloudShellService_CreateCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateCloudShellRequest" + } + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/cloudshells/{name}": { + "get": { + "summary": "GetCloudShell get a cloudshell in golobal cluster.", + "operationId": "CloudShellService_GetCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + }, + "delete": { + "summary": "DeleteCloudShell delete a cloudshell in golobal cluster.", + "operationId": "CloudShellService_DeleteCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql": { + "post": { + "operationId": "Mysql_CreateMysql", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateMysqlResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateMysqlReq" + } + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql-operator/versions": { + "get": { + "operationId": "Mysql_GetMysqlOperatorVersionList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlOperatorVersionListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql-params/{cluster}": { + "get": { + "operationId": "Mysql_GetMysqlParam", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlParamResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/version": { + "get": { + "operationId": "Version_Get", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetVersionReply" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Version" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}": { + "get": { + "operationId": "Mysql_GetMysql", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + }, + "delete": { + "operationId": "Mysql_DeleteMysql", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteMysqlResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#unkonwn namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/backup": { + "delete": { + "operationId": "Mysql_DeleteMysqlBackup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteMysqlBackupResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#unkonwn namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "cluster's name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + }, + "post": { + "operationId": "Mysql_CreateMysqlBackup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateMysqlBackupResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|input clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "cluster's name\n@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"min:1#choose workspace_id!\"" + }, + "backupName": { + "type": "string", + "title": "backup's name\n@inject_tag: v:\"required#unknown name!\"" + }, + "backupBucket": { + "type": "string", + "title": "backup's bucket" + }, + "backupBucketSubPath": { + "type": "string", + "title": "backup's bucket sub path" + } + } + } + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/backup/config": { + "put": { + "operationId": "Mysql_UpdateMysqlBackupConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateMysqlBackupConfigResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|unknown backup_schedule!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"min:1#choose workspace_id!\"" + }, + "backupSchedule": { + "type": "string", + "title": "backup's backup_schedule" + }, + "backupBucket": { + "type": "string", + "title": "Deprecated: backup's bucket, find bucket in storage_config_name instead" + }, + "backupHistoryLimit": { + "type": "integer", + "format": "int32", + "title": "backup's history limit" + }, + "backupBucketSubPath": { + "type": "string", + "title": "backup's bucket sub path\n@inject_tag: v:\"regex:^(/[^/ ]*)+/?$#invalid path!\"" + }, + "isOpenAutoBackup": { + "type": "boolean", + "title": "if open auto backup" + }, + "storageConfigName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose storage_config_name!\"" + }, + "storageConfigNamespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose storage_config_namespace!\"" + }, + "storageConfigCluster": { + "type": "string", + "title": "@inject_tag: v:\"required#choose storage_config_cluster!\"" + } + } + } + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/backup/jobs": { + "get": { + "operationId": "Mysql_GetMysqlBackupJobList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlBackupJobListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "cluster info", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "namespace info", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name info", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "backupName", + "description": "job's backupname", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/backups": { + "get": { + "operationId": "Mysql_GetMysqlBackupList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlBackupListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "cluster info", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "namespace info", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name info", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/conf": { + "put": { + "operationId": "Mysql_UpdateMysqlConf", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateMysqlConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "conf": { + "type": "string", + "title": "@inject_tag: v:\"required#input conf!\"" + } + } + } + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/confs": { + "get": { + "operationId": "Mysql_GetMysqlConfs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/grafana": { + "get": { + "operationId": "Mysql_GetMysqlGrafanaAddr", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlGrafanaAddrResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/nodes": { + "get": { + "operationId": "Mysql_GetMysqlNodeList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlNodeListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/params": { + "put": { + "operationId": "Mysql_UpdateMysqlParams", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateMysqlParamsResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"withFiledsMaxLen:%v-mysql-%v.mysql.%v,name,replicas,namespace,60|required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#fields too long!|input name!|input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required#choose workspace_id!\"" + }, + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required|supportVersion#choose version|choose version\"" + }, + "replicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|between:1,100|not-in:2#choose replicas|choose replicas between 3 and 100\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "rootPassword": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordMid#input password|input valid password\"" + }, + "serviceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateMysqlReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "conf": { + "type": "string", + "title": "mysql's conf" + }, + "backupSchedule": { + "type": "string", + "title": "backup's backup_schedule" + }, + "backupSecretName": { + "type": "string", + "title": "backup's secret" + }, + "backupBucket": { + "type": "string", + "title": "Deprecated: will get bucket name from storage_config_name\nbackup's bucket" + }, + "isOpenPhpAdmin": { + "type": "boolean", + "title": "isOpenPhpAdmin, phpAdmin set ,if true,will deploy phpadmin,if false do notiong with phpAdmin" + }, + "phpAdminServiceType": { + "$ref": "#/definitions/commonServiceType", + "title": "phpAdminService,default clusterIP\n@inject_tag: v:\"serviceType#choose phpAdminServiceType\"" + }, + "phpAdminNodePort": { + "type": "integer", + "format": "int32", + "title": "if PhpAdminServiceType is nodePort,it will required!" + }, + "phpAdminCpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-with:IsOpenPhpAdmin|resource#input cpuRequest|resource\"" + }, + "phpAdminCpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-with:IsOpenPhpAdmin|resource#input cpuLimit|resource\"" + }, + "phpAdminMemoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-with:IsOpenPhpAdmin|resource#input memoryRequest|resource\"" + }, + "phpAdminMemoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-with:IsOpenPhpAdmin|resource#input memoryLimit|resource\"" + }, + "backupHistoryLimit": { + "type": "integer", + "format": "int32", + "title": "backup's history limit" + }, + "backupBucketSubPath": { + "type": "string", + "title": "backup's bucket sub path" + }, + "initBackupPath": { + "type": "string", + "title": "init backup file path, if set, will create mysql cluster from backup" + }, + "initBackupSecretName": { + "type": "string", + "title": "init backup secret name, operator use it to clone backup file from remote storage" + }, + "isOpenAutoBackup": { + "type": "boolean", + "title": "if open auto backup" + }, + "initSourceMysqlClusterName": { + "type": "string", + "title": "init_source_mysql_cluster_name is the recover source of current cluster" + }, + "initSourceBackupName": { + "type": "string", + "title": "init_source_mysql_cluster_namespace is the source backup name" + }, + "storageConfigName": { + "type": "string" + }, + "storageConfigNamespace": { + "type": "string" + }, + "storageConfigCluster": { + "type": "string" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "externalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "lb\n@inject_tag: v:\"checklb#checklb failed!\"" + }, + "lbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "lbPoolName": { + "type": "string" + }, + "lbAddress": { + "type": "string" + }, + "phpAdminExternalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "phpadmin lb" + }, + "phpAdminLbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "phpAdminLbPoolName": { + "type": "string" + }, + "phpAdminLbAddress": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/recover": { + "post": { + "operationId": "Mysql_CreateMysqlRecover", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateMysqlRecoverResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name is source mysql cluster get config from source mysql cluster\n@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"min:1#choose workspace_id!\"" + }, + "backupName": { + "type": "string", + "title": "backup_name \n@inject_tag: v:\"required#input backup name for new cluster!\"" + }, + "targetMysqlClusterName": { + "type": "string", + "title": "target_mysql_cluster_name, the cluster to create\n@inject_tag: v:\"required#input name!\"" + } + } + } + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{cluster}/{namespace}/{name}/users": { + "get": { + "operationId": "Mysql_GetMysqlUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlUsersResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can get password.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{workspaceId}/providers": { + "get": { + "operationId": "Mysql_GetMysqlBackupProviderList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlBackupProviderListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysql/{workspaceId}/secret": { + "get": { + "operationId": "Mysql_GetMysqlBackupSecret", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlBackupSecretResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"get|min:1#RBAC error|choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Mysql" + ] + }, + "put": { + "operationId": "Mysql_SetMysqlBackupSecret", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/SetMysqlBackupSecretResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"update|min:1#RBAC error|choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "name": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "secretKey": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "provider": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/mysqls": { + "post": { + "operationId": "Mysql_DeleteMysqls", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteMysqlsResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/DeleteMysqlsReq" + } + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/storage-config/bucket/check-job": { + "post": { + "operationId": "StorageConfig_CreateStorageConfigBucketCheckJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateStorageConfigBucketCheckJobResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateStorageConfigBucketCheckJobReq" + } + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/storage-config/param": { + "get": { + "operationId": "StorageConfig_GetStorageConfigParam", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetStorageConfigParamResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/workspaces": { + "get": { + "operationId": "Cluster_GetWorkspaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetWorkspaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{cluster}/all-events-kinds": { + "get": { + "operationId": "Cluster_GetAllEventKindsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventKindsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{cluster}/insight/status": { + "get": { + "operationId": "Cluster_GetInsightAgentStatus", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetInsightAgentStatusResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{cluster}/lbaddress/pools": { + "get": { + "operationId": "Cluster_GetMetallbIPAddressPoolsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "mcamel_type is holdplace for mcamel type.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{cluster}/nodelabels": { + "get": { + "operationId": "Cluster_GetClusterNodeLabelList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodeLabelListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{cluster}/nodeports": { + "get": { + "operationId": "Cluster_GetClusterNodePortList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodePortListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{cluster}/{namespace}/events": { + "get": { + "summary": "pod 列表上会使用", + "operationId": "Cluster_GetEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "cluster represents the name of deployment belongs to.\n@inject_tag: v:\"required#choose cluster\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.\n@inject_tag: v:\"required#choose namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "kind", + "description": "Kind represents what type of event is needed.\n@inject_tag: v:\"required#choose kind\"\n\n - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "The name of involvedObject.\nIf the kind is DEPLOYMENT,\nthis presents the name of deployments.\n@inject_tag: v:\"required#choose kind name\"", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "Type is used for query, showing events of specified type.\nUse example: type=WARNING&type=NORMAL.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ] + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{cluster}/{namespace}/{name}/alerts": { + "get": { + "operationId": "Metric_GetAlertsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAlertsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Metric" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{cluster}/{namespace}/{name}/all-events": { + "get": { + "operationId": "Cluster_GetAllEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "eventType", + "description": " - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED" + }, + { + "name": "kindName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{workspaceId}/clusters": { + "get": { + "operationId": "Cluster_GetClusterList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{workspaceId}/minios": { + "get": { + "operationId": "Mysql_GetMinioList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMinioListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "common.PageInfoReq=1;", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{workspaceId}/mysqls": { + "get": { + "operationId": "Mysql_GetMysqlList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMysqlListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "common.PageInfoReq=1;", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filterCluster", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filterNamespace", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Mysql" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{workspaceId}/storage-config": { + "post": { + "operationId": "StorageConfig_CreateStorageConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateStorageConfigResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "storageType": { + "type": "string", + "title": "@inject_tag: v:\"in:minio,minio-wild,s3#choose storage type!\"" + }, + "accessKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input access key!\"" + }, + "secretKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input secret key!\"" + }, + "bucket": { + "type": "string", + "title": "@inject_tag: v:\"required#input bucket!\"" + }, + "endpoint": { + "type": "string", + "title": "@inject_tag: v:\"required-unless:storageType,minio#input endpoint if storage type is not minio!\"" + }, + "minioCluster": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio cluster if storage type is minio!\"" + }, + "minioNamespace": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio namespace if storage type is minio!\"" + }, + "minioName": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio name if storage type is minio!\"" + }, + "description": { + "type": "string" + } + } + } + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{workspaceId}/storage-config/{cluster}/{namespace}/{name}": { + "delete": { + "operationId": "StorageConfig_DeleteStorageConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteStorageConfigResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{workspaceId}/storage-config/{name}": { + "get": { + "operationId": "StorageConfig_GetStorageConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetStorageConfigResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "StorageConfig" + ] + }, + "put": { + "operationId": "StorageConfig_UpdateStorageConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateStorageConfigResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "storageType": { + "type": "string", + "title": "@inject_tag: v:\"in:minio,minio-wild,s3#choose storage type!\"" + }, + "accessKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input access key!\"" + }, + "secretKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input secret key!\"" + }, + "bucket": { + "type": "string", + "title": "@inject_tag: v:\"required#input bucket!\"" + }, + "endpoint": { + "type": "string", + "title": "@inject_tag: v:\"required-unless:storageType,minio#input endpoint if storage type is not minio!\"" + }, + "minioCluster": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio cluster if storage type is minio!\"" + }, + "minioNamespace": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio namespace if storage type is minio!\"" + }, + "minioName": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio name if storage type is minio!\"" + }, + "description": { + "type": "string" + } + } + } + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{workspaceId}/storage-config/{name}/consumers": { + "get": { + "operationId": "StorageConfig_GetStorageConfigConsumers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetStorageConfigConsumersResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{workspaceId}/storage-configs": { + "get": { + "operationId": "StorageConfig_GetStorageConfigList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetStorageConfigListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/mysql/v1alpha1/{workspaceId}/{cluster}/namespaces": { + "get": { + "operationId": "Cluster_GetClusterNamespaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNamespaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"required#请输入WSid\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + } + }, + "definitions": { + "CloudShell": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/CloudShellSpec" + }, + "status": { + "$ref": "#/definitions/CloudShellStatus" + } + } + }, + "CloudShellSpec": { + "type": "object", + "properties": { + "configMapName": { + "type": "string" + }, + "once": { + "type": "boolean" + }, + "commandAction": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int32" + }, + "cleanup": { + "type": "boolean" + } + } + }, + "CloudShellStatus": { + "type": "object", + "properties": { + "phase": { + "type": "string" + }, + "accessUrl": { + "type": "string" + } + } + }, + "CommonReply": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + } + } + }, + "CreateCloudShellRequest": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/CreateCloudShellRequestType" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "filePath": { + "type": "string" + }, + "container": { + "type": "string" + }, + "logCount": { + "type": "integer", + "format": "int32" + }, + "data": { + "$ref": "#/definitions/CloudShell" + } + } + }, + "CreateCloudShellRequestType": { + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "bash", + "exec", + "logs", + "upload", + "download" + ], + "default": "TYPE_UNSPECIFIED" + }, + "CreateMysqlBackupReq": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"min:1#choose workspace_id!\"" + }, + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"update|required#RBAC error|input clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#input namespace!\"" + }, + "name": { + "type": "string", + "title": "cluster's name\n@inject_tag: v:\"required#input name!\"" + }, + "backupName": { + "type": "string", + "title": "backup's name\n@inject_tag: v:\"required#unknown name!\"" + }, + "backupBucket": { + "type": "string", + "title": "backup's bucket" + }, + "backupBucketSubPath": { + "type": "string", + "title": "backup's bucket sub path" + } + } + }, + "CreateMysqlBackupResp": { + "type": "object", + "properties": { + "message": { + "type": "string", + "title": "when create,message will write" + } + } + }, + "CreateMysqlRecoverResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "CreateMysqlReq": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required#choose workspace_id!\"" + }, + "cluster": { + "type": "string", + "title": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"withFiledsMaxLen:%v-mysql-%v.mysql.%v,name,replicas,namespace,60|required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#fields too long!|input name!|input name!\"" + }, + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required|supportVersion#choose version|choose version\"" + }, + "replicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|between:1,100|not-in:2#choose replicas|choose replicas between 3 and 100\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "rootPassword": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordMid#input password|input valid password\"" + }, + "serviceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateMysqlReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "conf": { + "type": "string", + "title": "mysql's conf" + }, + "backupSchedule": { + "type": "string", + "title": "backup's backup_schedule" + }, + "backupSecretName": { + "type": "string", + "title": "backup's secret" + }, + "backupBucket": { + "type": "string", + "title": "Deprecated: will get bucket name from storage_config_name\nbackup's bucket" + }, + "isOpenPhpAdmin": { + "type": "boolean", + "title": "isOpenPhpAdmin, phpAdmin set ,if true,will deploy phpadmin,if false do notiong with phpAdmin" + }, + "phpAdminServiceType": { + "$ref": "#/definitions/commonServiceType", + "title": "phpAdminService,default clusterIP\n@inject_tag: v:\"serviceType#choose phpAdminServiceType\"" + }, + "phpAdminNodePort": { + "type": "integer", + "format": "int32", + "title": "if PhpAdminServiceType is nodePort,it will required!" + }, + "phpAdminCpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-with:IsOpenPhpAdmin|resource#input cpuRequest|resource\"" + }, + "phpAdminCpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-with:IsOpenPhpAdmin|resource#input cpuLimit|resource\"" + }, + "phpAdminMemoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-with:IsOpenPhpAdmin|resource#input memoryRequest|resource\"" + }, + "phpAdminMemoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-with:IsOpenPhpAdmin|resource#input memoryLimit|resource\"" + }, + "backupHistoryLimit": { + "type": "integer", + "format": "int32", + "title": "backup's history limit" + }, + "backupBucketSubPath": { + "type": "string", + "title": "backup's bucket sub path" + }, + "initBackupPath": { + "type": "string", + "title": "init backup file path, if set, will create mysql cluster from backup" + }, + "initBackupSecretName": { + "type": "string", + "title": "init backup secret name, operator use it to clone backup file from remote storage" + }, + "isOpenAutoBackup": { + "type": "boolean", + "title": "if open auto backup" + }, + "initSourceMysqlClusterName": { + "type": "string", + "title": "init_source_mysql_cluster_name is the recover source of current cluster" + }, + "initSourceBackupName": { + "type": "string", + "title": "init_source_mysql_cluster_namespace is the source backup name" + }, + "storageConfigName": { + "type": "string" + }, + "storageConfigNamespace": { + "type": "string" + }, + "storageConfigCluster": { + "type": "string" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "externalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "lb\n@inject_tag: v:\"checklb#checklb failed!\"" + }, + "lbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "lbPoolName": { + "type": "string" + }, + "lbAddress": { + "type": "string" + }, + "phpAdminExternalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "phpadmin lb" + }, + "phpAdminLbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "phpAdminLbPoolName": { + "type": "string" + }, + "phpAdminLbAddress": { + "type": "string" + } + } + }, + "CreateMysqlReqPorts": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name\"" + }, + "protocol": { + "type": "string", + "title": "@inject_tag: v:\"required|in:TCP,UDP#choose protocol|choose protocol\"" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "targetPort": { + "type": "integer", + "format": "int32" + }, + "nodePort": { + "type": "integer", + "format": "int32" + } + } + }, + "CreateMysqlResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "CreateStorageConfigBucketCheckJobReq": { + "type": "object", + "properties": { + "storageType": { + "type": "string", + "title": "@inject_tag: v:\"required|in:minio,minio-wild,s3:#choose storage type!|choose valid storage type!\"" + }, + "endpoint": { + "type": "string", + "title": "@inject_tag: v:\"required#input endpoint!\"" + }, + "accessKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input access key!\"" + }, + "secretKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input secret key!\"" + }, + "bucket": { + "type": "string", + "title": "@inject_tag: v:\"required#input bucket name!\"" + }, + "cluster": { + "type": "string", + "title": "minio cluster\n@inject_tag: v:\"required-if:storageType,minio#input minio cluster if storage type is minio!\"" + }, + "namespace": { + "type": "string", + "title": "minio namespace\n@inject_tag: v:\"required-if:storageType,minio#input minio namespace if storage type is minio!\"" + }, + "name": { + "type": "string", + "title": "minio name\n@inject_tag: v:\"required-if:storageType,minio#input minio name if storage type is minio!\"" + } + } + }, + "CreateStorageConfigBucketCheckJobResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "CreateStorageConfigReq": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"min:1#choose workspace_id!\"" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "storageType": { + "type": "string", + "title": "@inject_tag: v:\"in:minio,minio-wild,s3#choose storage type!\"" + }, + "accessKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input access key!\"" + }, + "secretKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input secret key!\"" + }, + "bucket": { + "type": "string", + "title": "@inject_tag: v:\"required#input bucket!\"" + }, + "endpoint": { + "type": "string", + "title": "@inject_tag: v:\"required-unless:storageType,minio#input endpoint if storage type is not minio!\"" + }, + "minioCluster": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio cluster if storage type is minio!\"" + }, + "minioNamespace": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio namespace if storage type is minio!\"" + }, + "minioName": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio name if storage type is minio!\"" + }, + "description": { + "type": "string" + } + } + }, + "CreateStorageConfigResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DataResourceValue": { + "type": "object", + "properties": { + "cpuRequest": { + "type": "string" + }, + "cpuLimit": { + "type": "string" + }, + "memoryRequest": { + "type": "string" + }, + "memoryLimit": { + "type": "string" + } + } + }, + "DataStorageClassValue": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "allowVolumeExpansion": { + "type": "boolean" + } + } + }, + "DeleteMysqlBackupResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeleteMysqlReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#unkonwn namespace!\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"" + } + } + }, + "DeleteMysqlResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeleteMysqlsReq": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/DeleteMysqlReq" + } + } + } + }, + "DeleteMysqlsResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeleteStorageConfigResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "EventSource": { + "type": "object", + "properties": { + "component": { + "type": "string", + "title": "Component from which the event is generated.\n+optional" + }, + "host": { + "type": "string", + "title": "Node name on which the event is generated.\n+optional" + } + }, + "description": "EventSource contains information for an event." + }, + "EventType": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED", + "description": "Type of event (Normal, Warning), new types could be added in the\nfuture.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type." + }, + "GetAlertsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1AlertSummary" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventKindsListResp": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetAllEventListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetAllEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetAllEventListRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventListRespItems": { + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "type": { + "type": "string" + }, + "count": { + "type": "integer", + "format": "int64" + }, + "reason": { + "type": "string" + }, + "source": { + "$ref": "#/definitions/ItemsSource" + }, + "message": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/GetAllEventListRespItemsMetadata" + }, + "apiVersion": { + "type": "string" + }, + "lastTimestamp": { + "type": "string", + "format": "int64" + }, + "firstTimestamp": { + "type": "string", + "format": "int64" + }, + "involvedObject": { + "$ref": "#/definitions/ItemsInvolvedObject" + }, + "reportingInstance": { + "type": "string" + }, + "reportingComponent": { + "type": "string" + } + } + }, + "GetAllEventListRespItemsMetadata": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + } + } + }, + "GetClusterListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNamespaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetClusterNodeLabelListRespLabel" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListRespLabel": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetClusterNodePortListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListReqKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED", + "description": " - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod." + }, + "GetEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetEventListRespItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListRespItem": { + "type": "object", + "properties": { + "involvedObject": { + "$ref": "#/definitions/ObjectReference", + "description": "The object that this event is about." + }, + "reason": { + "type": "string", + "description": "reason is why the action was taken. It is human-readable.\nThis field cannot be empty for new Events and it can have at most 128\ncharacters." + }, + "message": { + "type": "string", + "description": "A human-readable description of the status of this operation." + }, + "source": { + "$ref": "#/definitions/EventSource", + "description": "The component reporting this event. Should be a short machine\nunderstandable string." + }, + "lastTimestamp": { + "type": "string", + "format": "int64", + "description": "The time at which the most recent occurrence of this event was recorded." + }, + "type": { + "$ref": "#/definitions/EventType", + "description": "Type of this event (Normal, Warning), new types could be added in the\nfuture." + } + } + }, + "GetInsightAgentStatusResp": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/GetInsightAgentStatusRespInsightAgentStatus" + } + } + }, + "GetInsightAgentStatusRespInsightAgentStatus": { + "type": "string", + "enum": [ + "NotInstall", + "Install" + ], + "default": "NotInstall" + }, + "GetMetallbIPAddressPoolsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListRespItem" + } + }, + "isSupportLb": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "array", + "items": { + "$ref": "#/definitions/commonExternalTrafficPolicy" + }, + "title": "lb" + }, + "lbTyp": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLBTyp" + } + } + } + }, + "GetMetallbIPAddressPoolsListRespItem": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "autoAssign": { + "type": "boolean", + "description": "AutoAssign flag used to prevent MetallB from automatic allocation\nfor a pool." + }, + "avoidBuggyIPs": { + "type": "boolean", + "description": "AvoidBuggyIPs prevents addresses ending with .0 and .255\nto be used by a pool." + } + } + }, + "GetMinioListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetMinioListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/TenantItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetMysqlBackupJobItemGetMysqlBackupJobItemSpec": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "parallelism": { + "type": "integer", + "format": "int32" + }, + "completions": { + "type": "integer", + "format": "int32" + }, + "jobType": { + "$ref": "#/definitions/GetMysqlBackupJobItemSpecJobType" + }, + "completionTimestamp": { + "type": "string", + "format": "int64" + }, + "backupType": { + "$ref": "#/definitions/GetMysqlBackupJobItemGetMysqlBackupJobItemSpecBackupType" + }, + "backupPath": { + "type": "string" + } + } + }, + "GetMysqlBackupJobItemGetMysqlBackupJobItemSpecBackupType": { + "type": "string", + "enum": [ + "Full" + ], + "default": "Full" + }, + "GetMysqlBackupJobItemSpecJobType": { + "type": "string", + "enum": [ + "Auto", + "Manual" + ], + "default": "Auto" + }, + "GetMysqlBackupJobItemStatusStatus": { + "type": "string", + "enum": [ + "Failed", + "Running", + "Complete" + ], + "default": "Failed" + }, + "GetMysqlBackupJobListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetMysqlBackupJobListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMysqlBackupJobListRespGetMysqlBackupJobItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + }, + "status": { + "$ref": "#/definitions/GetMysqlBackupJobListRespStatus" + } + } + }, + "GetMysqlBackupJobListRespGetMysqlBackupJobItem": { + "type": "object", + "properties": { + "spec": { + "$ref": "#/definitions/GetMysqlBackupJobItemGetMysqlBackupJobItemSpec" + }, + "status": { + "$ref": "#/definitions/GetMysqlBackupJobListRespGetMysqlBackupJobItemStatus" + } + } + }, + "GetMysqlBackupJobListRespGetMysqlBackupJobItemStatus": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/GetMysqlBackupJobItemStatusStatus" + }, + "message": { + "type": "string" + } + } + }, + "GetMysqlBackupJobListRespStatus": { + "type": "object", + "properties": { + "isConfigAutoBackup": { + "type": "boolean" + }, + "backupSchedule": { + "type": "string", + "title": "backup's backup_schedule" + }, + "backupSecretName": { + "type": "string", + "title": "backup's secret" + }, + "backupBucket": { + "type": "string", + "title": "backup's bucket" + }, + "backupBucketSubPath": { + "type": "string" + } + } + }, + "GetMysqlBackupListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetMysqlBackupListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/MysqlBackupItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetMysqlBackupProviderListResp": { + "type": "object", + "properties": { + "provider": { + "$ref": "#/definitions/GetMysqlParamRespSelect" + } + } + }, + "GetMysqlBackupSecretResp": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/SetMysqlBackupSecretReq" + } + } + }, + "GetMysqlConfReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetMysqlConfResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMysqlConfRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + }, + "conf": { + "$ref": "#/definitions/UpdateMysqlConfReq" + } + } + }, + "GetMysqlConfRespItems": { + "type": "object", + "properties": { + "paramType": { + "$ref": "#/definitions/ItemsParamType" + }, + "paramName": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "GetMysqlGrafanaAddrResp": { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + }, + "GetMysqlListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetMysqlListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/MysqlClusterItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetMysqlNodeListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetMysqlNodeListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMysqlNodeListRespData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetMysqlNodeListRespData": { + "type": "object", + "properties": { + "podName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/GetMysqlNodeListRespPodStatus" + }, + "ip": { + "type": "string" + }, + "restart": { + "type": "integer", + "format": "int32" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "nodeType": { + "$ref": "#/definitions/GetMysqlNodeListRespNodeType" + }, + "healthStatus": { + "$ref": "#/definitions/GetMysqlNodeListRespHealthStatus" + }, + "common": { + "$ref": "#/definitions/commonPodCommon" + } + } + }, + "GetMysqlNodeListRespHealthStatus": { + "type": "string", + "enum": [ + "HealthStatusUnknown", + "HealthStatusHealthy", + "HealthStatusUnhealthy" + ], + "default": "HealthStatusUnknown", + "description": " - HealthStatusUnknown: Unknown means the state of the pod is unknown.\n - HealthStatusHealthy: Healthy means the pod is healthy.\n - HealthStatusUnhealthy: Unhealthy means the pod is unhealthy." + }, + "GetMysqlNodeListRespNodeType": { + "type": "string", + "enum": [ + "Master", + "Replica", + "PhpAdmin" + ], + "default": "Master" + }, + "GetMysqlNodeListRespPodStatus": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "GetMysqlOperatorVersionListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMysqlOperatorVersionListRespGetMysqlOperatorVersionListData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetMysqlOperatorVersionListRespGetMysqlOperatorVersionListData": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "GetMysqlParamResp": { + "type": "object", + "properties": { + "version": { + "$ref": "#/definitions/GetMysqlParamRespSelect" + }, + "replicas": { + "$ref": "#/definitions/GetMysqlParamRespSelect" + }, + "resource": { + "$ref": "#/definitions/GetMysqlParamRespSelect" + }, + "storage": { + "$ref": "#/definitions/GetMysqlParamRespSelect" + }, + "cnf": { + "$ref": "#/definitions/GetMysqlParamRespSelect", + "title": "cnf is mysql 5.x conf" + }, + "eightXcnf": { + "$ref": "#/definitions/GetMysqlParamRespSelect", + "title": "eightXcnf is mysql 8.x conf" + } + } + }, + "GetMysqlParamRespSelect": { + "type": "object", + "properties": { + "selectType": { + "$ref": "#/definitions/GetMysqlParamRespSelectSelectType" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMysqlParamRespSelectData" + } + } + } + }, + "GetMysqlParamRespSelectData": { + "type": "object", + "properties": { + "sValue": { + "$ref": "#/definitions/GetMysqlParamRespSelectDataStringValue" + }, + "rValue": { + "$ref": "#/definitions/DataResourceValue" + }, + "iValue": { + "$ref": "#/definitions/GetMysqlParamRespSelectDataIntValue" + }, + "scValue": { + "$ref": "#/definitions/DataStorageClassValue" + } + } + }, + "GetMysqlParamRespSelectDataIntValue": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + } + } + }, + "GetMysqlParamRespSelectDataStringValue": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, + "GetMysqlParamRespSelectSelectType": { + "type": "string", + "enum": [ + "Single", + "Multiple" + ], + "default": "Single" + }, + "GetMysqlResp": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/MysqlClusterItem" + } + } + }, + "GetMysqlUsersResp": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMysqlUsersRespUserItem" + } + } + } + }, + "GetMysqlUsersRespUserItem": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "GetStorageConfigConsumersResp": { + "type": "object", + "properties": { + "consumers": { + "type": "array", + "items": { + "$ref": "#/definitions/GetStorageConfigConsumersRespConsumer" + } + } + } + }, + "GetStorageConfigConsumersRespConsumer": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/GetStorageConfigConsumersRespStorageConfigConsumerType" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "GetStorageConfigConsumersRespStorageConfigConsumerType": { + "type": "string", + "enum": [ + "STORAGE_CONFIG_CONSUMER_TYPE_UNSPECIFIED", + "STORAGE_CONFIG_CONSUMER_TYPE_MYSQL", + "STORAGE_CONFIG_CONSUMER_TYPE_REDIS" + ], + "default": "STORAGE_CONFIG_CONSUMER_TYPE_UNSPECIFIED" + }, + "GetStorageConfigListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetStorageConfigListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/StorageConfigItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetStorageConfigParamResp": { + "type": "object", + "properties": { + "storageType": { + "$ref": "#/definitions/GetStorageConfigParamRespSelect" + } + } + }, + "GetStorageConfigParamRespSelect": { + "type": "object", + "properties": { + "selectType": { + "$ref": "#/definitions/GetStorageConfigParamRespSelectSelectType" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/GetStorageConfigParamRespSelectData" + } + } + } + }, + "GetStorageConfigParamRespSelectData": { + "type": "object", + "properties": { + "sValue": { + "$ref": "#/definitions/GetStorageConfigParamRespSelectDataStringValue" + }, + "iValue": { + "$ref": "#/definitions/GetStorageConfigParamRespSelectDataIntValue" + } + } + }, + "GetStorageConfigParamRespSelectDataIntValue": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + } + } + }, + "GetStorageConfigParamRespSelectDataStringValue": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, + "GetStorageConfigParamRespSelectSelectType": { + "type": "string", + "enum": [ + "Single", + "Multiple" + ], + "default": "Single" + }, + "GetStorageConfigResp": { + "type": "object", + "properties": { + "item": { + "$ref": "#/definitions/StorageConfigItem" + } + } + }, + "GetVersionReply": { + "type": "object", + "properties": { + "commonReply": { + "$ref": "#/definitions/CommonReply" + }, + "gitCommit": { + "type": "string" + }, + "gitVersion": { + "type": "string" + }, + "buildTime": { + "type": "string" + } + } + }, + "GetWorkspaceListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetWorkspaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetWorkspaceListRespItem" + }, + "title": "def items" + }, + "pagination": { + "$ref": "#/definitions/commonPagination", + "title": "def pagination" + } + } + }, + "GetWorkspaceListRespItem": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int64", + "title": "id" + }, + "alias": { + "type": "string", + "title": "alias" + } + } + }, + "ItemsInvolvedObject": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "apiVersion": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + } + } + }, + "ItemsParamType": { + "type": "string", + "enum": [ + "conf" + ], + "default": "conf" + }, + "ItemsSource": { + "type": "object", + "properties": { + "component": { + "type": "string" + } + } + }, + "MysqlBackupItem": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/MysqlBackupItemMetadata" + }, + "spec": { + "$ref": "#/definitions/CreateMysqlBackupReq" + }, + "status": { + "$ref": "#/definitions/MysqlBackupItemStatus" + } + } + }, + "MysqlBackupItemMetadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "MysqlBackupItemStatus": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/MysqlBackupItemStatusStatus" + }, + "message": { + "type": "string" + }, + "backupUrl": { + "type": "string" + }, + "backupType": { + "$ref": "#/definitions/MysqlBackupItemStatusBackupType" + }, + "backupMethod": { + "$ref": "#/definitions/MysqlBackupItemStatusBackupMethod" + }, + "completionTimestamp": { + "type": "string", + "format": "int64" + } + } + }, + "MysqlBackupItemStatusBackupMethod": { + "type": "string", + "enum": [ + "Manual", + "Auto" + ], + "default": "Manual" + }, + "MysqlBackupItemStatusBackupType": { + "type": "string", + "enum": [ + "Full", + "Incremental" + ], + "default": "Full" + }, + "MysqlBackupItemStatusStatus": { + "type": "string", + "enum": [ + "Running", + "Failed", + "Succeeded" + ], + "default": "Running" + }, + "MysqlClusterItem": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/MysqlClusterItemMetadata" + }, + "spec": { + "$ref": "#/definitions/CreateMysqlReq" + }, + "status": { + "$ref": "#/definitions/MysqlClusterItemStatus" + } + }, + "title": "generate by https://json2pb.vercel.app" + }, + "MysqlClusterItemMetadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "MysqlClusterItemStatus": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/Status" + }, + "podsAreReadyNum": { + "type": "integer", + "format": "int32" + }, + "webManagerAddr": { + "type": "string" + }, + "clusterIPs": { + "type": "array", + "items": { + "type": "string" + } + }, + "isAutoBackupEnabled": { + "type": "boolean" + }, + "serviceAddr": { + "type": "string" + }, + "common": { + "$ref": "#/definitions/commonCommonItemStatus" + }, + "isControl": { + "type": "boolean" + }, + "secondsBehindMaster": { + "type": "number", + "format": "float" + }, + "cpuUtilization": { + "type": "number", + "format": "float" + }, + "memoryUtilization": { + "type": "number", + "format": "float" + } + } + }, + "ObjectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "deletionTimestamp": { + "type": "string", + "format": "int64" + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ownerReferences": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "cluster": { + "type": "string" + }, + "workspaceAlias": { + "type": "string" + } + } + }, + "ObjectReference": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "title": "Kind of the referent.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional" + }, + "name": { + "type": "string", + "title": "Name of the referent.\nMore info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + } + }, + "description": "ObjectReference contains enough information to let you inspect or modify the\nreferred object." + }, + "PodCommonCondition": { + "type": "object", + "properties": { + "lastTransitionTime": { + "type": "string" + }, + "lastUpdateTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/PodCommonConditionStatus" + }, + "type": { + "type": "string" + } + } + }, + "PodCommonConditionStatus": { + "type": "string", + "enum": [ + "PodConditionStatusUnknown", + "PodConditionStatusTrue", + "PodConditionStatusFalse" + ], + "default": "PodConditionStatusUnknown" + }, + "PodCommonPodPhase": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "SetMysqlBackupSecretReq": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"update|min:1#RBAC error|choose workspace_id!\"" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "name": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "secretKey": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "provider": { + "type": "string" + } + } + }, + "SetMysqlBackupSecretResp": { + "type": "object", + "properties": { + "message": { + "type": "string", + "title": "create message" + } + } + }, + "Status": { + "type": "string", + "enum": [ + "Failed", + "Running", + "Creating" + ], + "default": "Failed" + }, + "StorageConfigItem": { + "type": "object", + "properties": { + "spec": { + "$ref": "#/definitions/CreateStorageConfigReq" + }, + "status": { + "$ref": "#/definitions/StorageConfigItemStorageConfigStatus" + } + } + }, + "StorageConfigItemStorageConfigStatus": { + "type": "object", + "properties": { + "lastUpdateTimestamp": { + "type": "string", + "format": "int64" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + } + } + }, + "TenantItem": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "spec": { + "$ref": "#/definitions/TenantItemCreateMinioReq" + }, + "status": { + "$ref": "#/definitions/TenantItemStatus" + } + } + }, + "TenantItemCreateMinioReq": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "cluster": { + "type": "string" + } + } + }, + "TenantItemStatus": { + "type": "object", + "properties": { + "common": { + "$ref": "#/definitions/commonCommonItemStatus", + "title": "Status status= 1;\nint32 pods_are_ready_num=2;\nstring web_manager_addr=3;\nrepeated string cluster_i_ps=4;\nstring service_addr=6;" + } + } + }, + "UpdateMysqlBackupConfigResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "UpdateMysqlConfReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "conf": { + "type": "string", + "title": "@inject_tag: v:\"required#input conf!\"" + } + } + }, + "UpdateMysqlConfResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "UpdateMysqlParamsResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "UpdateStorageConfigResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "commonAffinity": { + "type": "object", + "properties": { + "nodeAffinity": { + "$ref": "#/definitions/commonNodeAffinity" + }, + "podAffinity": { + "$ref": "#/definitions/commonPodAffinity" + }, + "podAntiAffinity": { + "$ref": "#/definitions/commonPodAntiAffinity" + } + } + }, + "commonCommonItemStatus": { + "type": "object", + "properties": { + "serviceAddresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "webManagerAddress": { + "type": "string" + }, + "webLogAddress": { + "type": "string" + }, + "isHwameistorSc": { + "type": "boolean" + }, + "avgPvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "avgPvUsedInGb": { + "type": "number", + "format": "double" + } + }, + "description": "CommonItemStatus define CR(MysqlCluster/Tenant...) common status." + }, + "commonExternalTrafficPolicy": { + "type": "string", + "enum": [ + "Cluster", + "Local" + ], + "default": "Cluster" + }, + "commonLBTyp": { + "type": "string", + "enum": [ + "MetalLB", + "Others" + ], + "default": "MetalLB" + }, + "commonLabelSelector": { + "type": "object", + "properties": { + "matchLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLabelSelectorRequirement" + } + } + } + }, + "commonLabelSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist" + } + } + }, + "commonNodeAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "$ref": "#/definitions/commonNodeSelector" + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPreferredSchedulingTerm" + } + } + } + }, + "commonNodeSelector": { + "type": "object", + "properties": { + "nodeSelectorTerms": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + } + }, + "commonNodeSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist, Gt, Lt" + } + } + }, + "commonNodeSelectorTerm": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + }, + "matchFields": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + } + } + }, + "commonOwnerReference": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "controller": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "kind": { + "type": "string" + } + } + }, + "commonPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "pages": { + "type": "integer", + "format": "int32" + } + } + }, + "commonPodAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodAffinityTerm": { + "type": "object", + "properties": { + "labelSelector": { + "$ref": "#/definitions/commonLabelSelector" + }, + "namespaces": { + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "type": "string" + }, + "namespaceSelector": { + "$ref": "#/definitions/commonLabelSelector" + } + } + }, + "commonPodAntiAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodCommon": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "phase": { + "$ref": "#/definitions/PodCommonPodPhase" + }, + "ip": { + "type": "string" + }, + "restartCount": { + "type": "integer", + "format": "int32" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "pvUsedInGb": { + "type": "number", + "format": "double" + }, + "pvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/PodCommonCondition" + } + }, + "containersName": { + "type": "array", + "items": { + "type": "string" + } + }, + "ownerReference": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "initContainersName": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "commonPreferredSchedulingTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "preference": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + }, + "commonServiceType": { + "type": "string", + "enum": [ + "ClusterIP", + "NodePort", + "LoadBalancer" + ], + "default": "ClusterIP" + }, + "commonWeightedPodAffinityTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "podAffinityTerm": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + } + }, + "googlerpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "v1alpha1AlertSummary": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "int64" + }, + "groupName": { + "type": "string" + }, + "groupId": { + "type": "string" + }, + "ruleName": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "targetType": { + "$ref": "#/definitions/v1alpha1TargetType" + }, + "target": { + "type": "string" + }, + "severity": { + "$ref": "#/definitions/v1alpha1Severity" + }, + "value": { + "type": "string" + }, + "notifyResponse": { + "type": "string" + }, + "description": { + "type": "string" + }, + "startAt": { + "type": "string", + "format": "int64" + }, + "updateAt": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1Severity": { + "type": "string", + "enum": [ + "SEVERITY_UNSPECIFIED", + "CRITICAL", + "WARNING", + "INFO" + ], + "default": "SEVERITY_UNSPECIFIED" + }, + "v1alpha1TargetType": { + "type": "string", + "enum": [ + "TARGET_TYPE_UNSPECIFIED", + "GLOBAL", + "CLUSTER", + "NAMESPACE", + "NODE", + "DEPLOYMENT", + "STATEFULSET", + "DAEMONSET", + "POD" + ], + "default": "TARGET_TYPE_UNSPECIFIED" + } + } +} diff --git a/docs/openapi/mcamel/mysql-v0.8.1.md b/docs/openapi/mcamel/mysql-v0.8.1.md new file mode 100644 index 00000000..477e3352 --- /dev/null +++ b/docs/openapi/mcamel/mysql-v0.8.1.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/mcamel/postgresql-index.md b/docs/openapi/mcamel/postgresql-index.md deleted file mode 100644 index f49e686b..00000000 --- a/docs/openapi/mcamel/postgresql-index.md +++ /dev/null @@ -1,5 +0,0 @@ -# 中间件服务 OpenAPI - -- [版本 v0.1.0](./postgresql-v0.1.0.md) -- [版本 v0.1.1](./postgresql-v0.1.1.md) - diff --git a/docs/openapi/mcamel/postgresql-v0.1.2.json b/docs/openapi/mcamel/postgresql-v0.1.2.json new file mode 100644 index 00000000..c71b5f39 --- /dev/null +++ b/docs/openapi/mcamel/postgresql-v0.1.2.json @@ -0,0 +1,3236 @@ +{ + "swagger": "2.0", + "info": { + "title": "中间件服务", + "version": "v0.1.2" + }, + "tags": [ + { + "name": "Cluster" + }, + { + "name": "Postgresql" + }, + { + "name": "Metric" + }, + { + "name": "CloudShellService" + }, + { + "name": "Version" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/mcamel.io/postgresql/v1alpha1/cloudshells": { + "post": { + "operationId": "CloudShellService_CreateCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateCloudShellRequest" + } + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/cloudshells/{name}": { + "get": { + "summary": "GetCloudShell get a cloudshell in golobal cluster.", + "operationId": "CloudShellService_GetCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + }, + "delete": { + "summary": "DeleteCloudShell delete a cloudshell in golobal cluster.", + "operationId": "CloudShellService_DeleteCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgres-operator/versions": { + "get": { + "operationId": "Postgresql_GetPostgresqlOperatorVersionList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetPostgresqlOperatorVersionListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresql": { + "post": { + "operationId": "Postgresql_CreatePostgresql", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreatePostgresqlResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreatePostgresqlReq" + } + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresql-params/{cluster}": { + "get": { + "operationId": "Postgresql_GetPostgresqlParam", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetPostgresqlParamResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresql/version": { + "get": { + "operationId": "Version_Get", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetVersionReply" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Version" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresql/{cluster}/{namespace}/{name}": { + "get": { + "operationId": "Postgresql_GetPostgresql", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetPostgresqlResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Postgresql" + ] + }, + "delete": { + "operationId": "Postgresql_DeletePostgresql", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeletePostgresqlResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#unkonwn namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresql/{cluster}/{namespace}/{name}/conf": { + "put": { + "operationId": "Postgresql_UpdatePostgresqlConf", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdatePostgresqlConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "conf": { + "type": "string", + "title": "@inject_tag: v:\"validateConf#input valid conf!\"" + } + } + } + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresql/{cluster}/{namespace}/{name}/confs": { + "get": { + "operationId": "Postgresql_GetPostgresqlConfs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetPostgresqlConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresql/{cluster}/{namespace}/{name}/grafana": { + "get": { + "operationId": "Postgresql_GetPostgresqlGrafanaAddr", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetPostgresqlGrafanaAddrResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresql/{cluster}/{namespace}/{name}/params": { + "put": { + "operationId": "Postgresql_UpdatePostgresqlParams", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdatePostgresqlParamsResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#input name!|input invalid name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required#choose workspace_id!\"" + }, + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required|in:15#input version!|input valid version!\"" + }, + "numberOfInstances": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|between:1,100#choose replicas|choose replicas between 1 and 100\"" + }, + "synchronousMode": { + "type": "boolean" + }, + "synchronousModeStrict": { + "type": "boolean" + }, + "synchronousNodeCount": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required-if:synchronousMode,true#input synchronous_node_count when synchronous_mode is true!\"" + }, + "superuserPassword": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordMid#input superuser_password|input valid superuser_password!\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "serviceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreatePostgresqlReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "conf": { + "type": "string", + "title": "@inject_tag: v:\"validateConf#input valid conf!\"" + }, + "isOpenPgAdmin": { + "type": "boolean", + "title": "isOpenPgAdmin, PgAdmin set ,if true,will deploy Pgadmin,if false do notiong with PgAdmin" + }, + "pgAdminServiceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose PgAdminServiceType\"" + }, + "pgAdminNodePort": { + "type": "integer", + "format": "int32", + "title": "if PgAdminServiceType is nodePort,it will required!" + }, + "pgAdminCpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenPgAdmin,true#input pg_admin_cpu_request\"" + }, + "pgAdminCpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenPgAdmin,true#input pg_admin_cpu_limit\"" + }, + "pgAdminMemoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenPgAdmin,true#input pg_admin_memory_request\"" + }, + "pgAdminMemoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenPgAdmin,true#input pg_admin_memory_limit\"" + }, + "pgAdminServerModeEnable": { + "type": "boolean" + }, + "pgAdminDefaultEmail": { + "type": "string", + "title": "@inject_tag: v:\"required-if:PgAdminServerModeEnable,true#input pg_admin_default_email if PgAdminServerModeEnable is true\"" + }, + "pgAdminDefaultPassword": { + "type": "string", + "title": "@inject_tag: v:\"required-if:PgAdminServerModeEnable,true#input pg_admin_default_password if PgAdminServerModeEnable is true\"" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "externalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "lb\n@inject_tag: v:\"checklb#checklb failed!\"" + }, + "lbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "lbPoolName": { + "type": "string" + }, + "lbAddress": { + "type": "string" + }, + "pgAdminExternalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "pgAdmin lb" + }, + "pgAdminLbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "pgAdminLbPoolName": { + "type": "string" + }, + "pgAdminLbAddress": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresql/{cluster}/{namespace}/{name}/pods": { + "get": { + "operationId": "Postgresql_GetPostgresqlPodList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetPostgresqlPodListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresql/{cluster}/{namespace}/{name}/users": { + "get": { + "operationId": "Postgresql_GetPostgresqlUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetPostgresqlUsersResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can get password.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/postgresqls": { + "post": { + "operationId": "Postgresql_DeletePostgresqls", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeletePostgresqlsResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/DeletePostgresqlsReq" + } + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/workspaces": { + "get": { + "operationId": "Cluster_GetWorkspaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetWorkspaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{cluster}/all-events-kinds": { + "get": { + "operationId": "Cluster_GetAllEventKindsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventKindsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{cluster}/insight/status": { + "get": { + "operationId": "Cluster_GetInsightAgentStatus", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetInsightAgentStatusResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{cluster}/lbaddress/pools": { + "get": { + "operationId": "Cluster_GetMetallbIPAddressPoolsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "mcamel_type is holdplace for mcamel type.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{cluster}/nodelabels": { + "get": { + "operationId": "Cluster_GetClusterNodeLabelList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodeLabelListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{cluster}/nodeports": { + "get": { + "operationId": "Cluster_GetClusterNodePortList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodePortListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{cluster}/{namespace}/events": { + "get": { + "summary": "pod 列表上会使用", + "operationId": "Cluster_GetEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "cluster represents the name of deployment belongs to.\n@inject_tag: v:\"required#choose cluster\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.\n@inject_tag: v:\"required#choose namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "kind", + "description": "Kind represents what type of event is needed.\n@inject_tag: v:\"required#choose kind\"\n\n - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "The name of involvedObject.\nIf the kind is DEPLOYMENT,\nthis presents the name of deployments.\n@inject_tag: v:\"required#choose kind name\"", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "Type is used for query, showing events of specified type.\nUse example: type=WARNING&type=NORMAL.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ] + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{cluster}/{namespace}/{name}/alerts": { + "get": { + "operationId": "Metric_GetAlertsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAlertsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Metric" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{cluster}/{namespace}/{name}/all-events": { + "get": { + "operationId": "Cluster_GetAllEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "eventType", + "description": " - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED" + }, + { + "name": "kindName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{workspaceId}/clusters": { + "get": { + "operationId": "Cluster_GetClusterList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{workspaceId}/postgresqls": { + "get": { + "operationId": "Postgresql_GetPostgresqlList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetPostgresqlListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "common.PageInfoReq=1;", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filterCluster", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filterNamespace", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Postgresql" + ] + } + }, + "/apis/mcamel.io/postgresql/v1alpha1/{workspaceId}/{cluster}/namespaces": { + "get": { + "operationId": "Cluster_GetClusterNamespaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNamespaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"required#请输入WSid\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + } + }, + "definitions": { + "CloudShell": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/CloudShellSpec" + }, + "status": { + "$ref": "#/definitions/CloudShellStatus" + } + } + }, + "CloudShellSpec": { + "type": "object", + "properties": { + "configMapName": { + "type": "string" + }, + "once": { + "type": "boolean" + }, + "commandAction": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int32" + }, + "cleanup": { + "type": "boolean" + } + } + }, + "CloudShellStatus": { + "type": "object", + "properties": { + "phase": { + "type": "string" + }, + "accessUrl": { + "type": "string" + } + } + }, + "CommonReply": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + } + } + }, + "CreateCloudShellRequest": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/CreateCloudShellRequestType" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "filePath": { + "type": "string" + }, + "container": { + "type": "string" + }, + "logCount": { + "type": "integer", + "format": "int32" + }, + "data": { + "$ref": "#/definitions/CloudShell" + } + } + }, + "CreateCloudShellRequestType": { + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "bash", + "exec", + "logs", + "upload", + "download" + ], + "default": "TYPE_UNSPECIFIED" + }, + "CreatePostgresqlReq": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required#choose workspace_id!\"" + }, + "cluster": { + "type": "string", + "title": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#input name!|input invalid name!\"" + }, + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required|in:15#input version!|input valid version!\"" + }, + "numberOfInstances": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|between:1,100#choose replicas|choose replicas between 1 and 100\"" + }, + "synchronousMode": { + "type": "boolean" + }, + "synchronousModeStrict": { + "type": "boolean" + }, + "synchronousNodeCount": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required-if:synchronousMode,true#input synchronous_node_count when synchronous_mode is true!\"" + }, + "superuserPassword": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordMid#input superuser_password|input valid superuser_password!\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "serviceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreatePostgresqlReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "conf": { + "type": "string", + "title": "@inject_tag: v:\"validateConf#input valid conf!\"" + }, + "isOpenPgAdmin": { + "type": "boolean", + "title": "isOpenPgAdmin, PgAdmin set ,if true,will deploy Pgadmin,if false do notiong with PgAdmin" + }, + "pgAdminServiceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose PgAdminServiceType\"" + }, + "pgAdminNodePort": { + "type": "integer", + "format": "int32", + "title": "if PgAdminServiceType is nodePort,it will required!" + }, + "pgAdminCpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenPgAdmin,true#input pg_admin_cpu_request\"" + }, + "pgAdminCpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenPgAdmin,true#input pg_admin_cpu_limit\"" + }, + "pgAdminMemoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenPgAdmin,true#input pg_admin_memory_request\"" + }, + "pgAdminMemoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required-if:IsOpenPgAdmin,true#input pg_admin_memory_limit\"" + }, + "pgAdminServerModeEnable": { + "type": "boolean" + }, + "pgAdminDefaultEmail": { + "type": "string", + "title": "@inject_tag: v:\"required-if:PgAdminServerModeEnable,true#input pg_admin_default_email if PgAdminServerModeEnable is true\"" + }, + "pgAdminDefaultPassword": { + "type": "string", + "title": "@inject_tag: v:\"required-if:PgAdminServerModeEnable,true#input pg_admin_default_password if PgAdminServerModeEnable is true\"" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "externalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "lb\n@inject_tag: v:\"checklb#checklb failed!\"" + }, + "lbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "lbPoolName": { + "type": "string" + }, + "lbAddress": { + "type": "string" + }, + "pgAdminExternalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "pgAdmin lb" + }, + "pgAdminLbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "pgAdminLbPoolName": { + "type": "string" + }, + "pgAdminLbAddress": { + "type": "string" + } + } + }, + "CreatePostgresqlReqPorts": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "port name be consistent with operator\nhttps://github.com/zalando/postgres-operator/blob/30b612489a2a20d968262791857d1db1a85e0b36/pkg/cluster/k8sres.go#L1861\n@inject_tag: v:\"required|in:postgresql#input name|input name postgresql\"" + }, + "protocol": { + "type": "string", + "title": "@inject_tag: v:\"required|in:TCP,UDP#choose protocol|choose protocol\"" + }, + "port": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|in:5432#choose port|choose port 5432\"" + }, + "targetPort": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|in:5432#choose targetPort|choose targetPort 5432\"" + }, + "nodePort": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required-if:serviceType,NodePort#choose nodePort|choose nodePort\"" + } + } + }, + "CreatePostgresqlResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DataIntValue": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + } + } + }, + "DataResourceValue": { + "type": "object", + "properties": { + "cpuRequest": { + "type": "string" + }, + "cpuLimit": { + "type": "string" + }, + "memoryRequest": { + "type": "string" + }, + "memoryLimit": { + "type": "string" + } + } + }, + "DataStorageClassValue": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "allowVolumeExpansion": { + "type": "boolean" + } + } + }, + "DataStringValue": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, + "DeletePostgresqlReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#unkonwn namespace!\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"" + } + } + }, + "DeletePostgresqlResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeletePostgresqlsReq": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/DeletePostgresqlReq" + } + } + } + }, + "DeletePostgresqlsResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "EventSource": { + "type": "object", + "properties": { + "component": { + "type": "string", + "title": "Component from which the event is generated.\n+optional" + }, + "host": { + "type": "string", + "title": "Node name on which the event is generated.\n+optional" + } + }, + "description": "EventSource contains information for an event." + }, + "EventType": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED", + "description": "Type of event (Normal, Warning), new types could be added in the\nfuture.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type." + }, + "GetAlertsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1AlertSummary" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventKindsListResp": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetAllEventListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetAllEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetAllEventListRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventListRespItems": { + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "type": { + "type": "string" + }, + "count": { + "type": "integer", + "format": "int64" + }, + "reason": { + "type": "string" + }, + "source": { + "$ref": "#/definitions/ItemsSource" + }, + "message": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/GetAllEventListRespItemsMetadata" + }, + "apiVersion": { + "type": "string" + }, + "lastTimestamp": { + "type": "string", + "format": "int64" + }, + "firstTimestamp": { + "type": "string", + "format": "int64" + }, + "involvedObject": { + "$ref": "#/definitions/ItemsInvolvedObject" + }, + "reportingInstance": { + "type": "string" + }, + "reportingComponent": { + "type": "string" + } + } + }, + "GetAllEventListRespItemsMetadata": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + } + } + }, + "GetClusterListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNamespaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetClusterNodeLabelListRespLabel" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListRespLabel": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetClusterNodePortListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListReqKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED", + "description": " - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod." + }, + "GetEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetEventListRespItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListRespItem": { + "type": "object", + "properties": { + "involvedObject": { + "$ref": "#/definitions/ObjectReference", + "description": "The object that this event is about." + }, + "reason": { + "type": "string", + "description": "reason is why the action was taken. It is human-readable.\nThis field cannot be empty for new Events and it can have at most 128\ncharacters." + }, + "message": { + "type": "string", + "description": "A human-readable description of the status of this operation." + }, + "source": { + "$ref": "#/definitions/EventSource", + "description": "The component reporting this event. Should be a short machine\nunderstandable string." + }, + "lastTimestamp": { + "type": "string", + "format": "int64", + "description": "The time at which the most recent occurrence of this event was recorded." + }, + "type": { + "$ref": "#/definitions/EventType", + "description": "Type of this event (Normal, Warning), new types could be added in the\nfuture." + } + } + }, + "GetInsightAgentStatusResp": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/GetInsightAgentStatusRespInsightAgentStatus" + } + } + }, + "GetInsightAgentStatusRespInsightAgentStatus": { + "type": "string", + "enum": [ + "NotInstall", + "Install" + ], + "default": "NotInstall" + }, + "GetMetallbIPAddressPoolsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListRespItem" + } + }, + "isSupportLb": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "array", + "items": { + "$ref": "#/definitions/commonExternalTrafficPolicy" + }, + "title": "lb" + }, + "lbTyp": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLBTyp" + } + } + } + }, + "GetMetallbIPAddressPoolsListRespItem": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "autoAssign": { + "type": "boolean", + "description": "AutoAssign flag used to prevent MetallB from automatic allocation\nfor a pool." + }, + "avoidBuggyIPs": { + "type": "boolean", + "description": "AvoidBuggyIPs prevents addresses ending with .0 and .255\nto be used by a pool." + } + } + }, + "GetPostgresqlConfReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetPostgresqlConfResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetPostgresqlConfRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + }, + "conf": { + "$ref": "#/definitions/UpdatePostgresqlConfReq" + } + } + }, + "GetPostgresqlConfRespItems": { + "type": "object", + "properties": { + "paramType": { + "$ref": "#/definitions/ItemsParamType" + }, + "paramName": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "GetPostgresqlGrafanaAddrResp": { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + }, + "GetPostgresqlListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetPostgresqlListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/PostgresqlItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetPostgresqlOperatorVersionListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetPostgresqlOperatorVersionListRespGetPostgresqlOperatorVersionListData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetPostgresqlOperatorVersionListRespGetPostgresqlOperatorVersionListData": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "GetPostgresqlParamResp": { + "type": "object", + "properties": { + "version": { + "$ref": "#/definitions/GetPostgresqlParamRespSelect" + }, + "conf": { + "$ref": "#/definitions/GetPostgresqlParamRespSelect" + }, + "replicas": { + "$ref": "#/definitions/GetPostgresqlParamRespSelect" + }, + "resource": { + "$ref": "#/definitions/GetPostgresqlParamRespSelect" + }, + "storage": { + "$ref": "#/definitions/GetPostgresqlParamRespSelect" + } + } + }, + "GetPostgresqlParamRespSelect": { + "type": "object", + "properties": { + "selectType": { + "$ref": "#/definitions/SelectSelectType" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/GetPostgresqlParamRespSelectData" + } + } + } + }, + "GetPostgresqlParamRespSelectData": { + "type": "object", + "properties": { + "sValue": { + "$ref": "#/definitions/DataStringValue" + }, + "rValue": { + "$ref": "#/definitions/DataResourceValue" + }, + "iValue": { + "$ref": "#/definitions/DataIntValue" + }, + "scValue": { + "$ref": "#/definitions/DataStorageClassValue" + } + } + }, + "GetPostgresqlPodListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetPostgresqlPodListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetPostgresqlPodListRespData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetPostgresqlPodListRespData": { + "type": "object", + "properties": { + "podName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/GetPostgresqlPodListRespPodStatus" + }, + "ip": { + "type": "string" + }, + "restart": { + "type": "integer", + "format": "int32" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "podType": { + "$ref": "#/definitions/GetPostgresqlPodListRespPodType" + }, + "replicationLagInBytes": { + "type": "string" + }, + "healthStatus": { + "$ref": "#/definitions/GetPostgresqlPodListRespHealthStatus" + }, + "common": { + "$ref": "#/definitions/commonPodCommon" + } + } + }, + "GetPostgresqlPodListRespHealthStatus": { + "type": "string", + "enum": [ + "HealthStatusUnknown", + "HealthStatusHealthy", + "HealthStatusUnhealthy" + ], + "default": "HealthStatusUnknown", + "description": " - HealthStatusUnknown: Unknown means the state of the pod is unknown.\n - HealthStatusHealthy: Healthy means the pod is healthy.\n - HealthStatusUnhealthy: Unhealthy means the pod is unhealthy." + }, + "GetPostgresqlPodListRespPodStatus": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "GetPostgresqlPodListRespPodType": { + "type": "string", + "enum": [ + "Master", + "Replica", + "PgAdmin" + ], + "default": "Master" + }, + "GetPostgresqlResp": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/PostgresqlItem" + } + } + }, + "GetPostgresqlUsersResp": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/definitions/GetPostgresqlUsersRespUserItem" + } + } + } + }, + "GetPostgresqlUsersRespUserItem": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "GetVersionReply": { + "type": "object", + "properties": { + "commonReply": { + "$ref": "#/definitions/CommonReply" + }, + "gitCommit": { + "type": "string" + }, + "gitVersion": { + "type": "string" + }, + "buildTime": { + "type": "string" + } + } + }, + "GetWorkspaceListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetWorkspaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetWorkspaceListRespItem" + }, + "title": "def items" + }, + "pagination": { + "$ref": "#/definitions/commonPagination", + "title": "def pagination" + } + } + }, + "GetWorkspaceListRespItem": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int64", + "title": "id" + }, + "alias": { + "type": "string", + "title": "alias" + } + } + }, + "ItemsInvolvedObject": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "apiVersion": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + } + } + }, + "ItemsParamType": { + "type": "string", + "enum": [ + "conf" + ], + "default": "conf" + }, + "ItemsSource": { + "type": "object", + "properties": { + "component": { + "type": "string" + } + } + }, + "ObjectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "deletionTimestamp": { + "type": "string", + "format": "int64" + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ownerReferences": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "cluster": { + "type": "string" + }, + "workspaceAlias": { + "type": "string" + } + } + }, + "ObjectReference": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "title": "Kind of the referent.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional" + }, + "name": { + "type": "string", + "title": "Name of the referent.\nMore info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + } + }, + "description": "ObjectReference contains enough information to let you inspect or modify the\nreferred object." + }, + "PodCommonCondition": { + "type": "object", + "properties": { + "lastTransitionTime": { + "type": "string" + }, + "lastUpdateTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/PodCommonConditionStatus" + }, + "type": { + "type": "string" + } + } + }, + "PodCommonConditionStatus": { + "type": "string", + "enum": [ + "PodConditionStatusUnknown", + "PodConditionStatusTrue", + "PodConditionStatusFalse" + ], + "default": "PodConditionStatusUnknown" + }, + "PodCommonPodPhase": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "PostgresqlItem": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/PostgresqlItemMetadata" + }, + "spec": { + "$ref": "#/definitions/CreatePostgresqlReq" + }, + "status": { + "$ref": "#/definitions/PostgresqlItemStatus" + } + }, + "title": "generate by https://json2pb.vercel.app" + }, + "PostgresqlItemMetadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "PostgresqlItemStatus": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/Status" + }, + "podsAreReadyNum": { + "type": "integer", + "format": "int32" + }, + "clusterIPs": { + "type": "array", + "items": { + "type": "string" + } + }, + "avgReplicationLagInBytes": { + "type": "string" + }, + "common": { + "$ref": "#/definitions/commonCommonItemStatus" + } + } + }, + "SelectSelectType": { + "type": "string", + "enum": [ + "Single", + "Multiple" + ], + "default": "Single" + }, + "Status": { + "type": "string", + "enum": [ + "Failed", + "Running", + "Creating" + ], + "default": "Failed" + }, + "UpdatePostgresqlConfReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "conf": { + "type": "string", + "title": "@inject_tag: v:\"validateConf#input valid conf!\"" + } + } + }, + "UpdatePostgresqlConfResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "UpdatePostgresqlParamsResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "commonAffinity": { + "type": "object", + "properties": { + "nodeAffinity": { + "$ref": "#/definitions/commonNodeAffinity" + }, + "podAffinity": { + "$ref": "#/definitions/commonPodAffinity" + }, + "podAntiAffinity": { + "$ref": "#/definitions/commonPodAntiAffinity" + } + } + }, + "commonCommonItemStatus": { + "type": "object", + "properties": { + "serviceAddresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "webManagerAddress": { + "type": "string" + }, + "webLogAddress": { + "type": "string" + }, + "isHwameistorSc": { + "type": "boolean" + }, + "avgPvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "avgPvUsedInGb": { + "type": "number", + "format": "double" + } + }, + "description": "CommonItemStatus define CR(MysqlCluster/Tenant...) common status." + }, + "commonExternalTrafficPolicy": { + "type": "string", + "enum": [ + "Cluster", + "Local" + ], + "default": "Cluster" + }, + "commonLBTyp": { + "type": "string", + "enum": [ + "MetalLB", + "Others" + ], + "default": "MetalLB" + }, + "commonLabelSelector": { + "type": "object", + "properties": { + "matchLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLabelSelectorRequirement" + } + } + } + }, + "commonLabelSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist" + } + } + }, + "commonNodeAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "$ref": "#/definitions/commonNodeSelector" + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPreferredSchedulingTerm" + } + } + } + }, + "commonNodeSelector": { + "type": "object", + "properties": { + "nodeSelectorTerms": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + } + }, + "commonNodeSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist, Gt, Lt" + } + } + }, + "commonNodeSelectorTerm": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + }, + "matchFields": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + } + } + }, + "commonOwnerReference": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "controller": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "kind": { + "type": "string" + } + } + }, + "commonPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "pages": { + "type": "integer", + "format": "int32" + } + } + }, + "commonPodAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodAffinityTerm": { + "type": "object", + "properties": { + "labelSelector": { + "$ref": "#/definitions/commonLabelSelector" + }, + "namespaces": { + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "type": "string" + }, + "namespaceSelector": { + "$ref": "#/definitions/commonLabelSelector" + } + } + }, + "commonPodAntiAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodCommon": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "phase": { + "$ref": "#/definitions/PodCommonPodPhase" + }, + "ip": { + "type": "string" + }, + "restartCount": { + "type": "integer", + "format": "int32" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "pvUsedInGb": { + "type": "number", + "format": "double" + }, + "pvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/PodCommonCondition" + } + }, + "containersName": { + "type": "array", + "items": { + "type": "string" + } + }, + "ownerReference": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "initContainersName": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "commonPreferredSchedulingTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "preference": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + }, + "commonServiceType": { + "type": "string", + "enum": [ + "ClusterIP", + "NodePort", + "LoadBalancer" + ], + "default": "ClusterIP" + }, + "commonWeightedPodAffinityTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "podAffinityTerm": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + } + }, + "googlerpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "v1alpha1AlertSummary": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "int64" + }, + "groupName": { + "type": "string" + }, + "groupId": { + "type": "string" + }, + "ruleName": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "targetType": { + "$ref": "#/definitions/v1alpha1TargetType" + }, + "target": { + "type": "string" + }, + "severity": { + "$ref": "#/definitions/v1alpha1Severity" + }, + "value": { + "type": "string" + }, + "notifyResponse": { + "type": "string" + }, + "description": { + "type": "string" + }, + "startAt": { + "type": "string", + "format": "int64" + }, + "updateAt": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1Severity": { + "type": "string", + "enum": [ + "SEVERITY_UNSPECIFIED", + "CRITICAL", + "WARNING", + "INFO" + ], + "default": "SEVERITY_UNSPECIFIED" + }, + "v1alpha1TargetType": { + "type": "string", + "enum": [ + "TARGET_TYPE_UNSPECIFIED", + "GLOBAL", + "CLUSTER", + "NAMESPACE", + "NODE", + "DEPLOYMENT", + "STATEFULSET", + "DAEMONSET", + "POD" + ], + "default": "TARGET_TYPE_UNSPECIFIED" + } + } +} diff --git a/docs/openapi/mcamel/postgresql-v0.1.2.md b/docs/openapi/mcamel/postgresql-v0.1.2.md new file mode 100644 index 00000000..edf46093 --- /dev/null +++ b/docs/openapi/mcamel/postgresql-v0.1.2.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/mcamel/rabbitmq-index.md b/docs/openapi/mcamel/rabbitmq-index.md deleted file mode 100644 index b3c3c301..00000000 --- a/docs/openapi/mcamel/rabbitmq-index.md +++ /dev/null @@ -1,2 +0,0 @@ -# 中间件服务 OpenAPI -- [版本 v0.10.0](./rabbitmq-v0.10.0.md) diff --git a/docs/openapi/mcamel/rabbitmq-v0.10.1.json b/docs/openapi/mcamel/rabbitmq-v0.10.1.json new file mode 100644 index 00000000..cbfd6efa --- /dev/null +++ b/docs/openapi/mcamel/rabbitmq-v0.10.1.json @@ -0,0 +1,3023 @@ +{ + "swagger": "2.0", + "info": { + "title": "中间件服务", + "version": "v0.10.1" + }, + "tags": [ + { + "name": "Cluster" + }, + { + "name": "RabbitMq" + }, + { + "name": "Metric" + }, + { + "name": "CloudShellService" + }, + { + "name": "Version" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/mcamel.io/rabbitmq/v1alpha1/cloudshells": { + "post": { + "operationId": "CloudShellService_CreateCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateCloudShellRequest" + } + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/cloudshells/{name}": { + "get": { + "summary": "GetCloudShell get a cloudshell in golobal cluster.", + "operationId": "CloudShellService_GetCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + }, + "delete": { + "summary": "DeleteCloudShell delete a cloudshell in golobal cluster.", + "operationId": "CloudShellService_DeleteCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq": { + "post": { + "operationId": "RabbitMq_CreateRabbitMq", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateRabbitMqResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateRabbitMqReq" + } + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq-operator/versions": { + "get": { + "operationId": "RabbitMq_GetRabbitMqOperatorVersionList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRabbitMqOperatorVersionListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq-params/{cluster}": { + "get": { + "operationId": "RabbitMq_GetRabbitMqParam", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRabbitMqParamResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq/version": { + "get": { + "operationId": "Version_Get", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetVersionReply" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Version" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq/{cluster}/{namespace}/{name}": { + "get": { + "operationId": "RabbitMq_GetRabbitMq", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRabbitMqResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "RabbitMq" + ] + }, + "delete": { + "operationId": "RabbitMq_DeleteRabbitMq", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteRabbitMqResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#unkonwn namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq/{cluster}/{namespace}/{name}/conf": { + "put": { + "operationId": "RabbitMq_UpdateRabbitMqConf", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateRabbitMqConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "defaultUser": { + "type": "string", + "title": "@inject_tag: v:\"length:4,64|regex:^[a-zA-Z][a-z|0-9|-|_]+$#input user!|input user!\"" + }, + "defaultPass": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordMid#input password|input valid password\" json:\"defaultPass\"" + } + } + } + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq/{cluster}/{namespace}/{name}/confs": { + "get": { + "operationId": "RabbitMq_GetRabbitMqConfs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRabbitMqConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq/{cluster}/{namespace}/{name}/grafana": { + "get": { + "operationId": "RabbitMq_GetRabbitMqGrafanaAddr", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRabbitMqGrafanaAddrResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq/{cluster}/{namespace}/{name}/nodes": { + "get": { + "operationId": "RabbitMq_GetRabbitMqNodeList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRabbitMqNodeListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq/{cluster}/{namespace}/{name}/params": { + "put": { + "operationId": "RabbitMq_UpdateRabbitMqParams", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateRabbitMqParamsResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "replicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"in:1,3,5,7#choose replica 1,3,5,7!\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input capacity!|resource\"" + }, + "serviceType": { + "$ref": "#/definitions/CreateRabbitMqReqServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "describe": { + "type": "string" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateRabbitMqReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"in:3.9.25#choose 3.9.25\"" + } + } + } + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmq/{cluster}/{namespace}/{name}/users": { + "get": { + "operationId": "RabbitMq_GetRabbitMqUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetUsersResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can get password.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/rabbitmqs": { + "post": { + "operationId": "RabbitMq_DeleteRabbitMqs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteRabbitMqsResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/DeleteRabbitMqsReq" + } + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/workspaces": { + "get": { + "operationId": "Cluster_GetWorkspaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetWorkspaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{cluster}/all-events-kinds": { + "get": { + "operationId": "Cluster_GetAllEventKindsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventKindsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{cluster}/insight/status": { + "get": { + "operationId": "Cluster_GetInsightAgentStatus", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetInsightAgentStatusResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{cluster}/lbaddress/pools": { + "get": { + "operationId": "Cluster_GetMetallbIPAddressPoolsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "mcamel_type is holdplace for mcamel type.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{cluster}/nodelabels": { + "get": { + "operationId": "Cluster_GetClusterNodeLabelList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodeLabelListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{cluster}/nodeports": { + "get": { + "operationId": "Cluster_GetClusterNodePortList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodePortListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{cluster}/{namespace}/events": { + "get": { + "summary": "pod 列表上会使用", + "operationId": "Cluster_GetEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "cluster represents the name of deployment belongs to.\n@inject_tag: v:\"required#choose cluster\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.\n@inject_tag: v:\"required#choose namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "kind", + "description": "Kind represents what type of event is needed.\n@inject_tag: v:\"required#choose kind\"\n\n - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "The name of involvedObject.\nIf the kind is DEPLOYMENT,\nthis presents the name of deployments.\n@inject_tag: v:\"required#choose kind name\"", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "Type is used for query, showing events of specified type.\nUse example: type=WARNING&type=NORMAL.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ] + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{cluster}/{namespace}/{name}/alerts": { + "get": { + "operationId": "Metric_GetAlertsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAlertsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Metric" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{cluster}/{namespace}/{name}/all-events": { + "get": { + "operationId": "Cluster_GetAllEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "eventType", + "description": " - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED" + }, + { + "name": "kindName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{workspaceId}/clusters": { + "get": { + "operationId": "Cluster_GetClusterList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{workspaceId}/rabbitmqs": { + "get": { + "operationId": "RabbitMq_GetRabbitMqList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRabbitMqListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "common.PageInfoReq=1;", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "RabbitMq" + ] + } + }, + "/apis/mcamel.io/rabbitmq/v1alpha1/{workspaceId}/{cluster}/namespaces": { + "get": { + "operationId": "Cluster_GetClusterNamespaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNamespaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"required#请输入WSid\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + } + }, + "definitions": { + "CloudShell": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/CloudShellSpec" + }, + "status": { + "$ref": "#/definitions/CloudShellStatus" + } + } + }, + "CloudShellSpec": { + "type": "object", + "properties": { + "configMapName": { + "type": "string" + }, + "once": { + "type": "boolean" + }, + "commandAction": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int32" + }, + "cleanup": { + "type": "boolean" + } + } + }, + "CloudShellStatus": { + "type": "object", + "properties": { + "phase": { + "type": "string" + }, + "accessUrl": { + "type": "string" + } + } + }, + "CommonReply": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + } + } + }, + "CreateCloudShellRequest": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/CreateCloudShellRequestType" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "filePath": { + "type": "string" + }, + "container": { + "type": "string" + }, + "logCount": { + "type": "integer", + "format": "int32" + }, + "data": { + "$ref": "#/definitions/CloudShell" + } + } + }, + "CreateCloudShellRequestType": { + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "bash", + "exec", + "logs", + "upload", + "download" + ], + "default": "TYPE_UNSPECIFIED" + }, + "CreateRabbitMqReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#input name!|input name!\"" + }, + "describe": { + "type": "string" + }, + "version": { + "type": "string", + "title": "@inject_tag: v:\"required|in:3.9.25#choose 3.9.25|choose 3.9.25\"" + }, + "replicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|in:1,3,5,7#choose replicas|choose replicas\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "defaultUser": { + "type": "string", + "title": "@inject_tag: v:\"required|length:4,64|regex:^[a-z|A-Z][a-z|0-9|-|_]+$#input user|input user|input user\" json:\"defaultUser\"" + }, + "defaultPass": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordMid#input password|input valid password\" json:\"defaultPass\"" + }, + "serviceType": { + "$ref": "#/definitions/CreateRabbitMqReqServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateRabbitMqReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + } + } + }, + "CreateRabbitMqReqPorts": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name\"" + }, + "protocol": { + "type": "string", + "title": "@inject_tag: v:\"required|in:TCP,UDP#choose protocol|choose protocol\"" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "targetPort": { + "type": "integer", + "format": "int32" + }, + "nodePort": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required-if:ServiceType,NodePort|between:30000,32767#input nodePort port|input nodePort port\"" + } + } + }, + "CreateRabbitMqReqServiceType": { + "type": "string", + "enum": [ + "ClusterIP", + "NodePort", + "LoadBalancer" + ], + "default": "ClusterIP" + }, + "CreateRabbitMqResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DataIntValue": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + } + } + }, + "DataResourceValue": { + "type": "object", + "properties": { + "cpuRequest": { + "type": "string" + }, + "cpuLimit": { + "type": "string" + }, + "memoryRequest": { + "type": "string" + }, + "memoryLimit": { + "type": "string" + } + } + }, + "DataStorageClassValue": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "allowVolumeExpansion": { + "type": "boolean" + } + } + }, + "DataStringValue": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, + "DeleteRabbitMqReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#unkonwn namespace!\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"" + } + } + }, + "DeleteRabbitMqResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeleteRabbitMqsReq": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/DeleteRabbitMqReq" + } + } + } + }, + "DeleteRabbitMqsResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "EventSource": { + "type": "object", + "properties": { + "component": { + "type": "string", + "title": "Component from which the event is generated.\n+optional" + }, + "host": { + "type": "string", + "title": "Node name on which the event is generated.\n+optional" + } + }, + "description": "EventSource contains information for an event." + }, + "EventType": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED", + "description": "Type of event (Normal, Warning), new types could be added in the\nfuture.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type." + }, + "GetAlertsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1AlertSummary" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventKindsListResp": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetAllEventListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetAllEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetAllEventListRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventListRespItems": { + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "type": { + "type": "string" + }, + "count": { + "type": "integer", + "format": "int64" + }, + "reason": { + "type": "string" + }, + "source": { + "$ref": "#/definitions/ItemsSource" + }, + "message": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/GetAllEventListRespItemsMetadata" + }, + "apiVersion": { + "type": "string" + }, + "lastTimestamp": { + "type": "string", + "format": "int64" + }, + "firstTimestamp": { + "type": "string", + "format": "int64" + }, + "involvedObject": { + "$ref": "#/definitions/ItemsInvolvedObject" + }, + "reportingInstance": { + "type": "string" + }, + "reportingComponent": { + "type": "string" + } + } + }, + "GetAllEventListRespItemsMetadata": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + } + } + }, + "GetClusterListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNamespaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetClusterNodeLabelListRespLabel" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListRespLabel": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetClusterNodePortListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListReqKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED", + "description": " - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod." + }, + "GetEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetEventListRespItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListRespItem": { + "type": "object", + "properties": { + "involvedObject": { + "$ref": "#/definitions/ObjectReference", + "description": "The object that this event is about." + }, + "reason": { + "type": "string", + "description": "reason is why the action was taken. It is human-readable.\nThis field cannot be empty for new Events and it can have at most 128\ncharacters." + }, + "message": { + "type": "string", + "description": "A human-readable description of the status of this operation." + }, + "source": { + "$ref": "#/definitions/EventSource", + "description": "The component reporting this event. Should be a short machine\nunderstandable string." + }, + "lastTimestamp": { + "type": "string", + "format": "int64", + "description": "The time at which the most recent occurrence of this event was recorded." + }, + "type": { + "$ref": "#/definitions/EventType", + "description": "Type of this event (Normal, Warning), new types could be added in the\nfuture." + } + } + }, + "GetInsightAgentStatusResp": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/GetInsightAgentStatusRespInsightAgentStatus" + } + } + }, + "GetInsightAgentStatusRespInsightAgentStatus": { + "type": "string", + "enum": [ + "NotInstall", + "Install" + ], + "default": "NotInstall" + }, + "GetMetallbIPAddressPoolsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListRespItem" + } + }, + "isSupportLb": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "array", + "items": { + "$ref": "#/definitions/commonExternalTrafficPolicy" + }, + "title": "lb" + }, + "lbTyp": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLBTyp" + } + } + } + }, + "GetMetallbIPAddressPoolsListRespItem": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "autoAssign": { + "type": "boolean", + "description": "AutoAssign flag used to prevent MetallB from automatic allocation\nfor a pool." + }, + "avoidBuggyIPs": { + "type": "boolean", + "description": "AvoidBuggyIPs prevents addresses ending with .0 and .255\nto be used by a pool." + } + } + }, + "GetRabbitMqConfReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetRabbitMqConfResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetRabbitMqConfRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + }, + "conf": { + "$ref": "#/definitions/UpdateRabbitMqConfReq" + } + } + }, + "GetRabbitMqConfRespItems": { + "type": "object", + "properties": { + "paramType": { + "$ref": "#/definitions/ItemsParamType" + }, + "paramName": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "GetRabbitMqGrafanaAddrResp": { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + }, + "GetRabbitMqListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetRabbitMqListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/RabbitmqClusterItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetRabbitMqNodeListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetRabbitMqNodeListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetRabbitMqNodeListRespData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetRabbitMqNodeListRespData": { + "type": "object", + "properties": { + "podName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/GetRabbitMqNodeListRespPodStatus" + }, + "ip": { + "type": "string" + }, + "restart": { + "type": "integer", + "format": "int32" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "common": { + "$ref": "#/definitions/commonPodCommon" + } + } + }, + "GetRabbitMqNodeListRespPodStatus": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "GetRabbitMqOperatorVersionListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetRabbitMqOperatorVersionListRespGetRabbitMqOperatorVersionListData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetRabbitMqOperatorVersionListRespGetRabbitMqOperatorVersionListData": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "GetRabbitMqParamResp": { + "type": "object", + "properties": { + "version": { + "$ref": "#/definitions/GetRabbitMqParamRespSelect" + }, + "replicas": { + "$ref": "#/definitions/GetRabbitMqParamRespSelect" + }, + "resource": { + "$ref": "#/definitions/GetRabbitMqParamRespSelect" + }, + "storage": { + "$ref": "#/definitions/GetRabbitMqParamRespSelect" + } + } + }, + "GetRabbitMqParamRespSelect": { + "type": "object", + "properties": { + "selectType": { + "$ref": "#/definitions/SelectSelectType" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/GetRabbitMqParamRespSelectData" + } + } + } + }, + "GetRabbitMqParamRespSelectData": { + "type": "object", + "properties": { + "sValue": { + "$ref": "#/definitions/DataStringValue" + }, + "rValue": { + "$ref": "#/definitions/DataResourceValue" + }, + "iValue": { + "$ref": "#/definitions/DataIntValue" + }, + "scValue": { + "$ref": "#/definitions/DataStorageClassValue" + } + } + }, + "GetRabbitMqResp": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/RabbitmqClusterItem" + } + } + }, + "GetUsersResp": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/definitions/GetUsersRespUserItem" + } + } + } + }, + "GetUsersRespUserItem": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "GetVersionReply": { + "type": "object", + "properties": { + "commonReply": { + "$ref": "#/definitions/CommonReply" + }, + "gitCommit": { + "type": "string" + }, + "gitVersion": { + "type": "string" + }, + "buildTime": { + "type": "string" + } + } + }, + "GetWorkspaceListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetWorkspaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetWorkspaceListRespItem" + }, + "title": "def items" + }, + "pagination": { + "$ref": "#/definitions/commonPagination", + "title": "def pagination" + } + } + }, + "GetWorkspaceListRespItem": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int64", + "title": "id" + }, + "alias": { + "type": "string", + "title": "alias" + } + } + }, + "ItemsInvolvedObject": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "apiVersion": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + } + } + }, + "ItemsParamType": { + "type": "string", + "enum": [ + "defaultUser", + "defaultPass" + ], + "default": "defaultUser" + }, + "ItemsSource": { + "type": "object", + "properties": { + "component": { + "type": "string" + } + } + }, + "ObjectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "deletionTimestamp": { + "type": "string", + "format": "int64" + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ownerReferences": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "cluster": { + "type": "string" + }, + "workspaceAlias": { + "type": "string" + } + } + }, + "ObjectReference": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "title": "Kind of the referent.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional" + }, + "name": { + "type": "string", + "title": "Name of the referent.\nMore info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + } + }, + "description": "ObjectReference contains enough information to let you inspect or modify the\nreferred object." + }, + "PodCommonCondition": { + "type": "object", + "properties": { + "lastTransitionTime": { + "type": "string" + }, + "lastUpdateTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/PodCommonConditionStatus" + }, + "type": { + "type": "string" + } + } + }, + "PodCommonConditionStatus": { + "type": "string", + "enum": [ + "PodConditionStatusUnknown", + "PodConditionStatusTrue", + "PodConditionStatusFalse" + ], + "default": "PodConditionStatusUnknown" + }, + "PodCommonPodPhase": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "RabbitmqClusterItem": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/RabbitmqClusterItemMetadata" + }, + "spec": { + "$ref": "#/definitions/CreateRabbitMqReq" + }, + "status": { + "$ref": "#/definitions/RabbitmqClusterItemStatus" + } + }, + "title": "generate by https://json2pb.vercel.app" + }, + "RabbitmqClusterItemMetadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "RabbitmqClusterItemStatus": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/Status" + }, + "podsAreReadyNum": { + "type": "integer", + "format": "int32" + }, + "webManagerAddr": { + "type": "string" + }, + "clusterIPs": { + "type": "array", + "items": { + "type": "string" + } + }, + "serviceAddr": { + "type": "string" + }, + "common": { + "$ref": "#/definitions/commonCommonItemStatus" + } + } + }, + "SelectSelectType": { + "type": "string", + "enum": [ + "Single", + "Multiple" + ], + "default": "Single" + }, + "Status": { + "type": "string", + "enum": [ + "Failed", + "Running", + "Creating" + ], + "default": "Failed" + }, + "UpdateRabbitMqConfReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "defaultUser": { + "type": "string", + "title": "@inject_tag: v:\"length:4,64|regex:^[a-zA-Z][a-z|0-9|-|_]+$#input user!|input user!\"" + }, + "defaultPass": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordMid#input password|input valid password\" json:\"defaultPass\"" + } + } + }, + "UpdateRabbitMqConfResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "UpdateRabbitMqParamsResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "commonAffinity": { + "type": "object", + "properties": { + "nodeAffinity": { + "$ref": "#/definitions/commonNodeAffinity" + }, + "podAffinity": { + "$ref": "#/definitions/commonPodAffinity" + }, + "podAntiAffinity": { + "$ref": "#/definitions/commonPodAntiAffinity" + } + } + }, + "commonCommonItemStatus": { + "type": "object", + "properties": { + "serviceAddresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "webManagerAddress": { + "type": "string" + }, + "webLogAddress": { + "type": "string" + }, + "isHwameistorSc": { + "type": "boolean" + }, + "avgPvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "avgPvUsedInGb": { + "type": "number", + "format": "double" + } + }, + "description": "CommonItemStatus define CR(MysqlCluster/Tenant...) common status." + }, + "commonExternalTrafficPolicy": { + "type": "string", + "enum": [ + "Cluster", + "Local" + ], + "default": "Cluster" + }, + "commonLBTyp": { + "type": "string", + "enum": [ + "MetalLB", + "Others" + ], + "default": "MetalLB" + }, + "commonLabelSelector": { + "type": "object", + "properties": { + "matchLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLabelSelectorRequirement" + } + } + } + }, + "commonLabelSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist" + } + } + }, + "commonNodeAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "$ref": "#/definitions/commonNodeSelector" + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPreferredSchedulingTerm" + } + } + } + }, + "commonNodeSelector": { + "type": "object", + "properties": { + "nodeSelectorTerms": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + } + }, + "commonNodeSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist, Gt, Lt" + } + } + }, + "commonNodeSelectorTerm": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + }, + "matchFields": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + } + } + }, + "commonOwnerReference": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "controller": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "kind": { + "type": "string" + } + } + }, + "commonPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "pages": { + "type": "integer", + "format": "int32" + } + } + }, + "commonPodAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodAffinityTerm": { + "type": "object", + "properties": { + "labelSelector": { + "$ref": "#/definitions/commonLabelSelector" + }, + "namespaces": { + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "type": "string" + }, + "namespaceSelector": { + "$ref": "#/definitions/commonLabelSelector" + } + } + }, + "commonPodAntiAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodCommon": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "phase": { + "$ref": "#/definitions/PodCommonPodPhase" + }, + "ip": { + "type": "string" + }, + "restartCount": { + "type": "integer", + "format": "int32" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "pvUsedInGb": { + "type": "number", + "format": "double" + }, + "pvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/PodCommonCondition" + } + }, + "containersName": { + "type": "array", + "items": { + "type": "string" + } + }, + "ownerReference": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "initContainersName": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "commonPreferredSchedulingTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "preference": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + }, + "commonWeightedPodAffinityTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "podAffinityTerm": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + } + }, + "googlerpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "v1alpha1AlertSummary": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "int64" + }, + "groupName": { + "type": "string" + }, + "groupId": { + "type": "string" + }, + "ruleName": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "targetType": { + "$ref": "#/definitions/v1alpha1TargetType" + }, + "target": { + "type": "string" + }, + "severity": { + "$ref": "#/definitions/v1alpha1Severity" + }, + "value": { + "type": "string" + }, + "notifyResponse": { + "type": "string" + }, + "description": { + "type": "string" + }, + "startAt": { + "type": "string", + "format": "int64" + }, + "updateAt": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1Severity": { + "type": "string", + "enum": [ + "SEVERITY_UNSPECIFIED", + "CRITICAL", + "WARNING", + "INFO" + ], + "default": "SEVERITY_UNSPECIFIED" + }, + "v1alpha1TargetType": { + "type": "string", + "enum": [ + "TARGET_TYPE_UNSPECIFIED", + "GLOBAL", + "CLUSTER", + "NAMESPACE", + "NODE", + "DEPLOYMENT", + "STATEFULSET", + "DAEMONSET", + "POD" + ], + "default": "TARGET_TYPE_UNSPECIFIED" + } + } +} diff --git a/docs/openapi/mcamel/rabbitmq-v0.10.1.md b/docs/openapi/mcamel/rabbitmq-v0.10.1.md new file mode 100644 index 00000000..a7b71140 --- /dev/null +++ b/docs/openapi/mcamel/rabbitmq-v0.10.1.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/mcamel/redis-index.md b/docs/openapi/mcamel/redis-index.md deleted file mode 100644 index 28aff283..00000000 --- a/docs/openapi/mcamel/redis-index.md +++ /dev/null @@ -1,2 +0,0 @@ -# 中间件服务 OpenAPI -- [版本 v0.7.0](./redis-v0.7.0.md) diff --git a/docs/openapi/mcamel/redis-v0.7.1.json b/docs/openapi/mcamel/redis-v0.7.1.json new file mode 100644 index 00000000..bd29d13c --- /dev/null +++ b/docs/openapi/mcamel/redis-v0.7.1.json @@ -0,0 +1,4746 @@ +{ + "swagger": "2.0", + "info": { + "title": "中间件服务", + "version": "v0.7.1" + }, + "tags": [ + { + "name": "Cluster" + }, + { + "name": "Metric" + }, + { + "name": "CloudShellService" + }, + { + "name": "StorageConfig" + }, + { + "name": "Version" + }, + { + "name": "Redis" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/mcamel.io/redis/v1alpha1/cloudshells": { + "post": { + "operationId": "CloudShellService_CreateCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateCloudShellRequest" + } + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/cloudshells/{name}": { + "get": { + "summary": "GetCloudShell get a cloudshell in golobal cluster.", + "operationId": "CloudShellService_GetCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CloudShell" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + }, + "delete": { + "summary": "DeleteCloudShell delete a cloudshell in golobal cluster.", + "operationId": "CloudShellService_DeleteCloudShell", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "CloudShellService" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis": { + "post": { + "operationId": "Redis_CreateRedis", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateRedisResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateRedisReq" + } + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis-operator/versions": { + "get": { + "operationId": "Redis_GetRedisOperatorVersionList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRedisOperatorVersionListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis-params/{cluster}": { + "get": { + "operationId": "Redis_GetRedisParam", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRedisParamResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "instanceType", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "RedisStandalone", + "RedisFailover", + "RedisCluster" + ], + "default": "RedisStandalone" + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/backup": { + "post": { + "operationId": "Redis_CreateRedisBackup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateRedisBackupResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateRedisBackupReq" + } + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/backups": { + "get": { + "operationId": "Redis_GetRedisBackupList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRedisBackupListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "namespace", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "name", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/backups/{cluster}/{namespace}/{backupName}": { + "delete": { + "operationId": "Redis_DeleteRedisBackup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteRedisBackupResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#unkonwn namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "backupName", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "isOpenAutoBackup", + "description": "if open auto backup", + "in": "query", + "required": false, + "type": "boolean" + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/version": { + "get": { + "operationId": "Version_Get", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetVersionReply" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "Version" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/{cluster}/{namespace}/{name}/auto-backup": { + "put": { + "operationId": "Redis_UpdateRedisAutoBackup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateRedisAutoBackupResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"min:1#choose workspace_id!\"" + }, + "instanceType": { + "$ref": "#/definitions/InstanceType", + "title": "@inject_tag: v:\"required#input instance type!\"" + }, + "accessKeyId": { + "type": "string", + "title": "gen by storage" + }, + "accessKeySecret": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "provider": { + "$ref": "#/definitions/UpdateRedisAutoBackupReqProvider" + }, + "storePath": { + "type": "string", + "title": "[Bucket]/[RDB_NAME]\n@inject_tag: v:\"required#input store_path!\"" + }, + "isOpenAutoBackup": { + "type": "boolean" + }, + "backupSchedule": { + "type": "string" + }, + "backupHistoryLimit": { + "type": "integer", + "format": "int32" + }, + "storageConfigName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose storage_config_name!\"" + }, + "storageConfigNamespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose storage_config_namespace!\"" + }, + "storageConfigCluster": { + "type": "string", + "title": "@inject_tag: v:\"required#choose storage_config_cluster!\"" + } + } + } + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/{cluster}/{namespace}/{name}/recover": { + "post": { + "operationId": "Redis_CreateRedisRecover", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateRedisRecoverResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"update\n|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "name is source redis cluster get config from source mysql cluster\n@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"min:1#choose workspace_id!\"" + }, + "backupName": { + "type": "string", + "title": "backup_name\n@inject_tag: v:\"required#input backup name for new cluster!\"" + }, + "targetRedisName": { + "type": "string", + "title": "target_redis_name, the cluster to create\n@inject_tag: v:\"required#input name!\"" + }, + "instanceType": { + "$ref": "#/definitions/InstanceType" + } + } + } + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/{instanceType}/{cluster}/{namespace}/{name}": { + "get": { + "operationId": "Redis_GetRedis", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRedisResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "instanceType", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RedisStandalone", + "RedisFailover", + "RedisCluster" + ] + }, + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Redis" + ] + }, + "delete": { + "operationId": "Redis_DeleteRedis", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteRedisResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "instanceType", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RedisStandalone", + "RedisFailover", + "RedisCluster" + ] + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#unkonwn namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/{instanceType}/{cluster}/{namespace}/{name}/conf": { + "put": { + "operationId": "Redis_UpdateRedisConf", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateRedisConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "instanceType", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RedisStandalone", + "RedisFailover", + "RedisCluster" + ] + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "authPass": { + "type": "string" + }, + "conf": { + "type": "string" + } + } + } + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/{instanceType}/{cluster}/{namespace}/{name}/confs": { + "get": { + "operationId": "Redis_GetRedisConfs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRedisConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "instanceType", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RedisStandalone", + "RedisFailover", + "RedisCluster" + ] + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/{instanceType}/{cluster}/{namespace}/{name}/grafana": { + "get": { + "operationId": "Redis_GetRedisGrafanaAddr", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRedisGrafanaAddrResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "instanceType", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RedisStandalone", + "RedisFailover", + "RedisCluster" + ] + }, + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/{instanceType}/{cluster}/{namespace}/{name}/nodes": { + "get": { + "operationId": "Redis_GetRedisNodeList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRedisNodeListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "instanceType", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RedisStandalone", + "RedisFailover", + "RedisCluster" + ] + }, + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/{instanceType}/{cluster}/{namespace}/{name}/params": { + "put": { + "operationId": "Redis_UpdateRedisParams", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateRedisParamsResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "instanceType", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RedisStandalone", + "RedisFailover", + "RedisCluster" + ] + }, + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#input name!|input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "describe": { + "type": "string" + }, + "replicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|between:1,100|not-in:2#choose replicas|choose replicas\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "authPass": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordLow#input password|input valid password\"" + }, + "serviceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateRedisReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "conf": { + "type": "string" + }, + "version": { + "type": "string" + }, + "followerReplicas": { + "type": "integer", + "format": "int32", + "title": "when cluster , follower must set" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "externalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "lb\n@inject_tag: v:\"checklb#checklb failed!\"" + }, + "lbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "lbPoolName": { + "type": "string" + }, + "lbAddress": { + "type": "string" + }, + "restore": { + "$ref": "#/definitions/CreateRedisReqRestore" + }, + "autoBackupConfig": { + "$ref": "#/definitions/UpdateRedisAutoBackupReq" + } + } + } + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/redis/{instanceType}/{cluster}/{namespace}/{name}/users": { + "get": { + "operationId": "Redis_GetRedisUsers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRedisUsersResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "instanceType", + "description": "@inject_tag: v:\"required#input instance type!\"", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "RedisStandalone", + "RedisFailover", + "RedisCluster" + ] + }, + { + "name": "cluster", + "description": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can get password.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#choose Namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/rediss": { + "post": { + "operationId": "Redis_DeleteRediss", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteRedissResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/DeleteRedissReq" + } + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/storage-config/bucket/check-job": { + "post": { + "operationId": "StorageConfig_CreateStorageConfigBucketCheckJob", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateStorageConfigBucketCheckJobResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateStorageConfigBucketCheckJobReq" + } + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/storage-config/param": { + "get": { + "operationId": "StorageConfig_GetStorageConfigParam", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetStorageConfigParamResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/workspaces": { + "get": { + "operationId": "Cluster_GetWorkspaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetWorkspaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{cluster}/all-events-kinds": { + "get": { + "operationId": "Cluster_GetAllEventKindsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventKindsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{cluster}/insight/status": { + "get": { + "operationId": "Cluster_GetInsightAgentStatus", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetInsightAgentStatusResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{cluster}/lbaddress/pools": { + "get": { + "operationId": "Cluster_GetMetallbIPAddressPoolsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "mcamel_type is holdplace for mcamel type.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{cluster}/nodelabels": { + "get": { + "operationId": "Cluster_GetClusterNodeLabelList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodeLabelListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{cluster}/nodeports": { + "get": { + "operationId": "Cluster_GetClusterNodePortList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNodePortListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{cluster}/{namespace}/events": { + "get": { + "summary": "pod 列表上会使用", + "operationId": "Cluster_GetEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "cluster represents the name of deployment belongs to.\n@inject_tag: v:\"required#choose cluster\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "Namespace represents which namespace the deployment belongs to.\n@inject_tag: v:\"required#choose namespace\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "kind", + "description": "Kind represents what type of event is needed.\n@inject_tag: v:\"required#choose kind\"\n\n - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED" + }, + { + "name": "kindName", + "description": "The name of involvedObject.\nIf the kind is DEPLOYMENT,\nthis presents the name of deployments.\n@inject_tag: v:\"required#choose kind name\"", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "type", + "description": "Type is used for query, showing events of specified type.\nUse example: type=WARNING&type=NORMAL.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ] + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{cluster}/{namespace}/{name}/alerts": { + "get": { + "operationId": "Metric_GetAlertsList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAlertsListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Metric" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{cluster}/{namespace}/{name}/all-events": { + "get": { + "operationId": "Cluster_GetAllEventList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllEventListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "eventType", + "description": " - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED" + }, + { + "name": "kindName", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{workspaceId}/clusters": { + "get": { + "operationId": "Cluster_GetClusterList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Cluster" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{workspaceId}/minios": { + "get": { + "operationId": "Redis_GetMinioList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetMinioListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "common.PageInfoReq=1;", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{workspaceId}/rediss": { + "get": { + "operationId": "Redis_GetRedisList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRedisListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "description": "common.PageInfoReq=1;", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filterCluster", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "filterNamespace", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Redis" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{workspaceId}/storage-config": { + "post": { + "operationId": "StorageConfig_CreateStorageConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/CreateStorageConfigResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "storageType": { + "type": "string", + "title": "@inject_tag: v:\"in:minio,minio-wild,s3#choose storage type!\"" + }, + "accessKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input access key!\"" + }, + "secretKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input secret key!\"" + }, + "bucket": { + "type": "string", + "title": "@inject_tag: v:\"required#input bucket!\"" + }, + "endpoint": { + "type": "string", + "title": "@inject_tag: v:\"required-unless:storageType,minio#input endpoint if storage type is not minio!\"" + }, + "minioCluster": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio cluster if storage type is minio!\"" + }, + "minioNamespace": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio namespace if storage type is minio!\"" + }, + "minioName": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio name if storage type is minio!\"" + }, + "description": { + "type": "string" + } + } + } + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{workspaceId}/storage-config/{cluster}/{namespace}/{name}": { + "delete": { + "operationId": "StorageConfig_DeleteStorageConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/DeleteStorageConfigResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{workspaceId}/storage-config/{name}": { + "get": { + "operationId": "StorageConfig_GetStorageConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetStorageConfigResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "namespace", + "description": "@inject_tag: v:\"required#input namespace!\"", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#input cluster!\"", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "StorageConfig" + ] + }, + "put": { + "operationId": "StorageConfig_UpdateStorageConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/UpdateStorageConfigResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "storageType": { + "type": "string", + "title": "@inject_tag: v:\"in:minio,minio-wild,s3#choose storage type!\"" + }, + "accessKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input access key!\"" + }, + "secretKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input secret key!\"" + }, + "bucket": { + "type": "string", + "title": "@inject_tag: v:\"required#input bucket!\"" + }, + "endpoint": { + "type": "string", + "title": "@inject_tag: v:\"required-unless:storageType,minio#input endpoint if storage type is not minio!\"" + }, + "minioCluster": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio cluster if storage type is minio!\"" + }, + "minioNamespace": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio namespace if storage type is minio!\"" + }, + "minioName": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio name if storage type is minio!\"" + }, + "description": { + "type": "string" + } + } + } + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{workspaceId}/storage-config/{name}/consumers": { + "get": { + "operationId": "StorageConfig_GetStorageConfigConsumers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetStorageConfigConsumersResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "name", + "description": "@inject_tag: v:\"required#input name!\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{workspaceId}/storage-configs": { + "get": { + "operationId": "StorageConfig_GetStorageConfigList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetStorageConfigListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"min:1#choose workspace_id!\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "searchKey", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "StorageConfig" + ] + } + }, + "/apis/mcamel.io/redis/v1alpha1/{workspaceId}/{cluster}/namespaces": { + "get": { + "operationId": "Cluster_GetClusterNamespaceList", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetClusterNamespaceListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "workspaceId", + "description": "@inject_tag: v:\"required#请输入WSid\"", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "cluster", + "description": "@inject_tag: v:\"required#请输入Cluster\"", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Cluster" + ] + } + } + }, + "definitions": { + "CloudShell": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/CloudShellSpec" + }, + "status": { + "$ref": "#/definitions/CloudShellStatus" + } + } + }, + "CloudShellSpec": { + "type": "object", + "properties": { + "configMapName": { + "type": "string" + }, + "once": { + "type": "boolean" + }, + "commandAction": { + "type": "string" + }, + "ttl": { + "type": "integer", + "format": "int32" + }, + "cleanup": { + "type": "boolean" + } + } + }, + "CloudShellStatus": { + "type": "object", + "properties": { + "phase": { + "type": "string" + }, + "accessUrl": { + "type": "string" + } + } + }, + "CommonReply": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + } + } + }, + "CreateCloudShellRequest": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/CreateCloudShellRequestType" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "filePath": { + "type": "string" + }, + "container": { + "type": "string" + }, + "logCount": { + "type": "integer", + "format": "int32" + }, + "data": { + "$ref": "#/definitions/CloudShell" + } + } + }, + "CreateCloudShellRequestType": { + "type": "string", + "enum": [ + "TYPE_UNSPECIFIED", + "bash", + "exec", + "logs", + "upload", + "download" + ], + "default": "TYPE_UNSPECIFIED" + }, + "CreateRedisBackupReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "instanceType": { + "$ref": "#/definitions/InstanceType", + "title": "@inject_tag: v:\"required#input instance type!\"" + }, + "backupName": { + "type": "string", + "title": "The field \"backup_name\" will be used to generate the name of the K8S job. \nTherefore, we need to ensure that it follows the naming convention for K8S jobs, which is a maximum length of 63 characters and can only contain lowercase alphanumeric characters or hyphens.\nWe can use the following validation rule to enforce this:\n@inject_tag: v:\"required|regex:^[a-z0-9-]{1,61}$#input backup_name|input backup_name\"" + }, + "accessKeyId": { + "type": "string", + "title": "minio should get from configmap" + }, + "accessKeySecret": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "provider": { + "$ref": "#/definitions/CreateRedisBackupReqProvider" + }, + "storePath": { + "type": "string" + }, + "genCreateTime": { + "type": "string", + "title": "used for backend, xxx/xxxx.rdb => xxx/[gen_create_time]xxx.rdb" + } + } + }, + "CreateRedisBackupReqProvider": { + "type": "string", + "enum": [ + "Minio", + "Other" + ], + "default": "Minio" + }, + "CreateRedisBackupResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "CreateRedisRecoverResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "CreateRedisReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "WHY check update? \nAdmin and Editor have 「update」verb, according to https://docs.daocloud.io/middleware/permission/, only Admin and Editor can create mcamel instance.\n@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required|regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#input name!|input name!\"" + }, + "describe": { + "type": "string" + }, + "replicas": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required|between:1,100|not-in:2#choose replicas|choose replicas\"" + }, + "storageClassName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose sc\"" + }, + "storageCapacity": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#choose capacity|resource\"" + }, + "instanceType": { + "$ref": "#/definitions/InstanceType" + }, + "authPass": { + "type": "string", + "title": "@inject_tag: v:\"required|passwordLow#input password|input valid password\"" + }, + "serviceType": { + "$ref": "#/definitions/commonServiceType", + "title": "@inject_tag: v:\"serviceType#choose serviceType\"" + }, + "serviceAnnotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "@inject_tag: v:\"k8sValidation:annotations#input valid annotations\"" + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/CreateRedisReqPorts" + } + }, + "cpuRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuRequest|resource\"" + }, + "cpuLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input cpuLimit|resource\"" + }, + "memoryRequest": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryRequest|resource\"" + }, + "memoryLimit": { + "type": "string", + "title": "@inject_tag: v:\"required|resource#input memoryLimit|resource\"" + }, + "conf": { + "type": "string" + }, + "version": { + "type": "string" + }, + "followerReplicas": { + "type": "integer", + "format": "int32", + "title": "when cluster , follower must set" + }, + "affinity": { + "$ref": "#/definitions/commonAffinity", + "title": "@inject_tag: v:\"k8sValidation:affinity#input valid affinity\"" + }, + "externalTrafficPolicy": { + "$ref": "#/definitions/commonExternalTrafficPolicy", + "title": "lb\n@inject_tag: v:\"checklb#checklb failed!\"" + }, + "lbTyp": { + "$ref": "#/definitions/commonLBTyp" + }, + "lbPoolName": { + "type": "string" + }, + "lbAddress": { + "type": "string" + }, + "restore": { + "$ref": "#/definitions/CreateRedisReqRestore" + }, + "autoBackupConfig": { + "$ref": "#/definitions/UpdateRedisAutoBackupReq" + } + } + }, + "CreateRedisReqPorts": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name\"" + }, + "protocol": { + "type": "string", + "title": "@inject_tag: v:\"required|in:TCP,UDP#choose protocol|choose protocol\"" + }, + "port": { + "type": "integer", + "format": "int32" + }, + "targetPort": { + "type": "integer", + "format": "int32" + }, + "nodePort": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"required-if:ServiceType,NodePort|between:30000,32767#input nodePort port|input nodePort port\"" + } + } + }, + "CreateRedisReqRestore": { + "type": "object", + "properties": { + "enable": { + "type": "boolean" + }, + "accessKeyId": { + "type": "string" + }, + "accessKeySecret": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "provider": { + "$ref": "#/definitions/CreateRedisReqRestoreProvider" + }, + "storePath": { + "type": "string" + }, + "backupName": { + "type": "string" + }, + "targetRedisName": { + "type": "string" + }, + "instanceType": { + "$ref": "#/definitions/InstanceType" + } + }, + "title": "restore info" + }, + "CreateRedisReqRestoreProvider": { + "type": "string", + "enum": [ + "Minio", + "Other" + ], + "default": "Minio" + }, + "CreateRedisResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "CreateStorageConfigBucketCheckJobReq": { + "type": "object", + "properties": { + "storageType": { + "type": "string", + "title": "@inject_tag: v:\"required|in:minio,minio-wild,s3:#choose storage type!|choose valid storage type!\"" + }, + "endpoint": { + "type": "string", + "title": "@inject_tag: v:\"required#input endpoint!\"" + }, + "accessKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input access key!\"" + }, + "secretKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input secret key!\"" + }, + "bucket": { + "type": "string", + "title": "@inject_tag: v:\"required#input bucket name!\"" + }, + "cluster": { + "type": "string", + "title": "minio cluster\n@inject_tag: v:\"required-if:storageType,minio#input minio cluster if storage type is minio!\"" + }, + "namespace": { + "type": "string", + "title": "minio namespace\n@inject_tag: v:\"required-if:storageType,minio#input minio namespace if storage type is minio!\"" + }, + "name": { + "type": "string", + "title": "minio name\n@inject_tag: v:\"required-if:storageType,minio#input minio name if storage type is minio!\"" + } + } + }, + "CreateStorageConfigBucketCheckJobResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "CreateStorageConfigReq": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"min:1#choose workspace_id!\"" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "storageType": { + "type": "string", + "title": "@inject_tag: v:\"in:minio,minio-wild,s3#choose storage type!\"" + }, + "accessKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input access key!\"" + }, + "secretKey": { + "type": "string", + "title": "@inject_tag: v:\"required#input secret key!\"" + }, + "bucket": { + "type": "string", + "title": "@inject_tag: v:\"required#input bucket!\"" + }, + "endpoint": { + "type": "string", + "title": "@inject_tag: v:\"required-unless:storageType,minio#input endpoint if storage type is not minio!\"" + }, + "minioCluster": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio cluster if storage type is minio!\"" + }, + "minioNamespace": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio namespace if storage type is minio!\"" + }, + "minioName": { + "type": "string", + "title": "@inject_tag: v:\"required-if:storageType,minio#input minio name if storage type is minio!\"" + }, + "description": { + "type": "string" + } + } + }, + "CreateStorageConfigResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DataInstanceTypeValue": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/InstanceType" + } + } + }, + "DataResourceValue": { + "type": "object", + "properties": { + "cpuRequest": { + "type": "string" + }, + "cpuLimit": { + "type": "string" + }, + "memoryRequest": { + "type": "string" + }, + "memoryLimit": { + "type": "string" + } + } + }, + "DataStorageClassValue": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "allowVolumeExpansion": { + "type": "boolean" + } + } + }, + "DeleteRedisBackupResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeleteRedisReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"delete|required#RBAC error|unkonwn clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#unkonwn namespace!\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"regex:^[a-z][a-z|0-9|-]{0,38}[a-z0-9]$#unknown name!\"" + }, + "instanceType": { + "$ref": "#/definitions/InstanceType" + } + } + }, + "DeleteRedisResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeleteRedissReq": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/DeleteRedisReq" + } + } + } + }, + "DeleteRedissResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "DeleteStorageConfigResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "EventSource": { + "type": "object", + "properties": { + "component": { + "type": "string", + "title": "Component from which the event is generated.\n+optional" + }, + "host": { + "type": "string", + "title": "Node name on which the event is generated.\n+optional" + } + }, + "description": "EventSource contains information for an event." + }, + "EventType": { + "type": "string", + "enum": [ + "EVENT_TYPE_UNSPECIFIED", + "Normal", + "Warning" + ], + "default": "EVENT_TYPE_UNSPECIFIED", + "description": "Type of event (Normal, Warning), new types could be added in the\nfuture.\n\n - EVENT_TYPE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Normal: Normal is a normal event type.\n - Warning: Warning is a warning event type." + }, + "GetAlertsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1AlertSummary" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventKindsListResp": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetAllEventListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetAllEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetAllEventListRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetAllEventListRespItems": { + "type": "object", + "properties": { + "kind": { + "type": "string" + }, + "type": { + "type": "string" + }, + "count": { + "type": "integer", + "format": "int64" + }, + "reason": { + "type": "string" + }, + "source": { + "$ref": "#/definitions/ItemsSource" + }, + "message": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/GetAllEventListRespItemsMetadata" + }, + "apiVersion": { + "type": "string" + }, + "lastTimestamp": { + "type": "string", + "format": "int64" + }, + "firstTimestamp": { + "type": "string", + "format": "int64" + }, + "involvedObject": { + "$ref": "#/definitions/ItemsInvolvedObject" + }, + "reportingInstance": { + "type": "string" + }, + "reportingComponent": { + "type": "string" + } + } + }, + "GetAllEventListRespItemsMetadata": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + } + } + }, + "GetClusterListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNamespaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetClusterNodeLabelListRespLabel" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetClusterNodeLabelListRespLabel": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GetClusterNodePortListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListReqKind": { + "type": "string", + "enum": [ + "KIND_UNSPECIFIED", + "Pod" + ], + "default": "KIND_UNSPECIFIED", + "description": " - KIND_UNSPECIFIED: KIND_UNSPECIFIED is only a meaningless placeholder, to avoid zero not\nreturn.\n - Pod: ListEvents by deployment.\n Deployment = 1;\n // ListEvents by statefulSet.\n StatefulSet = 2;\n // ListEvents by daemonSet.\n DaemonSet = 3;\n // ListEvents by pod." + }, + "GetEventListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetEventListRespItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetEventListRespItem": { + "type": "object", + "properties": { + "involvedObject": { + "$ref": "#/definitions/ObjectReference", + "description": "The object that this event is about." + }, + "reason": { + "type": "string", + "description": "reason is why the action was taken. It is human-readable.\nThis field cannot be empty for new Events and it can have at most 128\ncharacters." + }, + "message": { + "type": "string", + "description": "A human-readable description of the status of this operation." + }, + "source": { + "$ref": "#/definitions/EventSource", + "description": "The component reporting this event. Should be a short machine\nunderstandable string." + }, + "lastTimestamp": { + "type": "string", + "format": "int64", + "description": "The time at which the most recent occurrence of this event was recorded." + }, + "type": { + "$ref": "#/definitions/EventType", + "description": "Type of this event (Normal, Warning), new types could be added in the\nfuture." + } + } + }, + "GetInsightAgentStatusResp": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/GetInsightAgentStatusRespInsightAgentStatus" + } + } + }, + "GetInsightAgentStatusRespInsightAgentStatus": { + "type": "string", + "enum": [ + "NotInstall", + "Install" + ], + "default": "NotInstall" + }, + "GetMetallbIPAddressPoolsListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetMetallbIPAddressPoolsListRespItem" + } + }, + "isSupportLb": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "array", + "items": { + "$ref": "#/definitions/commonExternalTrafficPolicy" + }, + "title": "lb" + }, + "lbTyp": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLBTyp" + } + } + } + }, + "GetMetallbIPAddressPoolsListRespItem": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "autoAssign": { + "type": "boolean", + "description": "AutoAssign flag used to prevent MetallB from automatic allocation\nfor a pool." + }, + "avoidBuggyIPs": { + "type": "boolean", + "description": "AvoidBuggyIPs prevents addresses ending with .0 and .255\nto be used by a pool." + } + } + }, + "GetMinioListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetMinioListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/TenantItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetRedisBackupListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetRedisBackupListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetRedisBackupListRespRedisBackupItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetRedisBackupListRespRedisBackupItem": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/GetRedisBackupListRespRedisBackupItemMetadata" + }, + "spec": { + "$ref": "#/definitions/CreateRedisBackupReq" + }, + "status": { + "$ref": "#/definitions/GetRedisBackupListRespRedisBackupItemStatus" + } + } + }, + "GetRedisBackupListRespRedisBackupItemMetadata": { + "type": "object", + "properties": { + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "GetRedisBackupListRespRedisBackupItemStatus": { + "type": "object", + "properties": { + "completionTime": { + "type": "string", + "format": "int64" + }, + "startTime": { + "type": "string", + "format": "int64" + }, + "active": { + "type": "integer", + "format": "int32" + }, + "succeeded": { + "type": "integer", + "format": "int32" + }, + "failed": { + "type": "integer", + "format": "int32" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/StatusJobCondition" + } + }, + "isAutoBackup": { + "type": "boolean" + }, + "status": { + "$ref": "#/definitions/RedisBackupItemStatusStatus" + } + } + }, + "GetRedisConfReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetRedisConfResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetRedisConfRespItems" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + }, + "conf": { + "$ref": "#/definitions/UpdateRedisConfReq" + } + } + }, + "GetRedisConfRespItems": { + "type": "object", + "properties": { + "paramType": { + "$ref": "#/definitions/ItemsParamType" + }, + "paramName": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "GetRedisGrafanaAddrResp": { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + }, + "GetRedisListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetRedisListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/RedisItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetRedisNodeListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetRedisNodeListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetRedisNodeListRespData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetRedisNodeListRespData": { + "type": "object", + "properties": { + "podName": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/GetRedisNodeListRespPodStatus" + }, + "ip": { + "type": "string" + }, + "restart": { + "type": "integer", + "format": "int32" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "redisType": { + "$ref": "#/definitions/RedisPodType" + }, + "common": { + "$ref": "#/definitions/commonPodCommon" + } + } + }, + "GetRedisNodeListRespPodStatus": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "GetRedisOperatorVersionListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetRedisOperatorVersionListRespGetRedisOperatorVersionListData" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetRedisOperatorVersionListRespGetRedisOperatorVersionListData": { + "type": "object", + "properties": { + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "instanceType": { + "type": "array", + "items": { + "$ref": "#/definitions/InstanceType" + } + } + } + }, + "GetRedisParamResp": { + "type": "object", + "properties": { + "version": { + "$ref": "#/definitions/GetRedisParamRespSelect" + }, + "replicas": { + "$ref": "#/definitions/GetRedisParamRespSelect" + }, + "resource": { + "$ref": "#/definitions/GetRedisParamRespSelect" + }, + "storage": { + "$ref": "#/definitions/GetRedisParamRespSelect" + }, + "conf": { + "$ref": "#/definitions/GetRedisParamRespSelect" + } + } + }, + "GetRedisParamRespSelect": { + "type": "object", + "properties": { + "selectType": { + "$ref": "#/definitions/GetRedisParamRespSelectSelectType" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/GetRedisParamRespSelectData" + } + } + } + }, + "GetRedisParamRespSelectData": { + "type": "object", + "properties": { + "sValue": { + "$ref": "#/definitions/GetRedisParamRespSelectDataStringValue" + }, + "rValue": { + "$ref": "#/definitions/DataResourceValue" + }, + "iValue": { + "$ref": "#/definitions/GetRedisParamRespSelectDataIntValue" + }, + "tValue": { + "$ref": "#/definitions/DataInstanceTypeValue" + }, + "scValue": { + "$ref": "#/definitions/DataStorageClassValue" + } + } + }, + "GetRedisParamRespSelectDataIntValue": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + } + } + }, + "GetRedisParamRespSelectDataStringValue": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, + "GetRedisParamRespSelectSelectType": { + "type": "string", + "enum": [ + "Single", + "Multiple" + ], + "default": "Single" + }, + "GetRedisResp": { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/RedisItem" + } + } + }, + "GetRedisUsersResp": { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/definitions/GetRedisUsersRespUserItem" + } + } + } + }, + "GetRedisUsersRespUserItem": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "GetStorageConfigConsumersResp": { + "type": "object", + "properties": { + "consumers": { + "type": "array", + "items": { + "$ref": "#/definitions/GetStorageConfigConsumersRespConsumer" + } + } + } + }, + "GetStorageConfigConsumersRespConsumer": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/GetStorageConfigConsumersRespStorageConfigConsumerType" + }, + "cluster": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "GetStorageConfigConsumersRespStorageConfigConsumerType": { + "type": "string", + "enum": [ + "STORAGE_CONFIG_CONSUMER_TYPE_UNSPECIFIED", + "STORAGE_CONFIG_CONSUMER_TYPE_MYSQL", + "STORAGE_CONFIG_CONSUMER_TYPE_REDIS" + ], + "default": "STORAGE_CONFIG_CONSUMER_TYPE_UNSPECIFIED" + }, + "GetStorageConfigListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetStorageConfigListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/StorageConfigItem" + } + }, + "pagination": { + "$ref": "#/definitions/commonPagination" + } + } + }, + "GetStorageConfigParamResp": { + "type": "object", + "properties": { + "storageType": { + "$ref": "#/definitions/GetStorageConfigParamRespSelect" + } + } + }, + "GetStorageConfigParamRespSelect": { + "type": "object", + "properties": { + "selectType": { + "$ref": "#/definitions/GetStorageConfigParamRespSelectSelectType" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/GetStorageConfigParamRespSelectData" + } + } + } + }, + "GetStorageConfigParamRespSelectData": { + "type": "object", + "properties": { + "sValue": { + "$ref": "#/definitions/GetStorageConfigParamRespSelectDataStringValue" + }, + "iValue": { + "$ref": "#/definitions/GetStorageConfigParamRespSelectDataIntValue" + } + } + }, + "GetStorageConfigParamRespSelectDataIntValue": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + } + } + }, + "GetStorageConfigParamRespSelectDataStringValue": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + }, + "GetStorageConfigParamRespSelectSelectType": { + "type": "string", + "enum": [ + "Single", + "Multiple" + ], + "default": "Single" + }, + "GetStorageConfigResp": { + "type": "object", + "properties": { + "item": { + "$ref": "#/definitions/StorageConfigItem" + } + } + }, + "GetVersionReply": { + "type": "object", + "properties": { + "commonReply": { + "$ref": "#/definitions/CommonReply" + }, + "gitCommit": { + "type": "string" + }, + "gitVersion": { + "type": "string" + }, + "buildTime": { + "type": "string" + } + } + }, + "GetWorkspaceListReqSortDir": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC" + }, + "GetWorkspaceListResp": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/GetWorkspaceListRespItem" + }, + "title": "def items" + }, + "pagination": { + "$ref": "#/definitions/commonPagination", + "title": "def pagination" + } + } + }, + "GetWorkspaceListRespItem": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int64", + "title": "id" + }, + "alias": { + "type": "string", + "title": "alias" + } + } + }, + "InstanceType": { + "type": "string", + "enum": [ + "RedisStandalone", + "RedisFailover", + "RedisCluster" + ], + "default": "RedisStandalone" + }, + "ItemsInvolvedObject": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "apiVersion": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + } + } + }, + "ItemsParamType": { + "type": "string", + "enum": [ + "authPass", + "conf" + ], + "default": "authPass" + }, + "ItemsSource": { + "type": "object", + "properties": { + "component": { + "type": "string" + } + } + }, + "ObjectMeta": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "resourceVersion": { + "type": "string" + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "deletionTimestamp": { + "type": "string", + "format": "int64" + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ownerReferences": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "cluster": { + "type": "string" + }, + "workspaceAlias": { + "type": "string" + } + } + }, + "ObjectReference": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "title": "Kind of the referent.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional" + }, + "name": { + "type": "string", + "title": "Name of the referent.\nMore info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + } + }, + "description": "ObjectReference contains enough information to let you inspect or modify the\nreferred object." + }, + "PodCommonCondition": { + "type": "object", + "properties": { + "lastTransitionTime": { + "type": "string" + }, + "lastUpdateTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/PodCommonConditionStatus" + }, + "type": { + "type": "string" + } + } + }, + "PodCommonConditionStatus": { + "type": "string", + "enum": [ + "PodConditionStatusUnknown", + "PodConditionStatusTrue", + "PodConditionStatusFalse" + ], + "default": "PodConditionStatusUnknown" + }, + "PodCommonPodPhase": { + "type": "string", + "enum": [ + "PHASE_UNSPECIFIED", + "Unknown", + "Pending", + "Running", + "Succeeded", + "Failed" + ], + "default": "PHASE_UNSPECIFIED", + "description": " - PHASE_UNSPECIFIED: This is only a meaningless placeholder, to avoid zero not return.\n - Unknown: PodUnknown means that for some reason the state of the pod could not be\nobtained, typically due to an error in communicating with the host of the\npod.\n - Pending: PodPending means the pod has been accepted by the system, but one or more\nof the containers has not been started. This includes time before being\nbound to a node, as well as time spent pulling images onto the host.\n - Running: PodRunning means the pod has been bound to a node and all of the\ncontainers have been started. At least one container is still running or\nis in the process of being restarted. PodSucceeded means that all\ncontainers in the pod have voluntarily terminated with a container exit\ncode of 0, and the system is not going to restart any of these\ncontainers.\n - Succeeded: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system).\n - Failed: PodFailed means that all containers in the pod have terminated, and at\nleast one container has terminated in a failure (exited with a non-zero\nexit code or was stopped by the system)." + }, + "RedisBackupItemStatusStatus": { + "type": "string", + "enum": [ + "Running", + "Failed", + "Succeeded" + ], + "default": "Running" + }, + "RedisItem": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/RedisItemMetadata" + }, + "spec": { + "$ref": "#/definitions/CreateRedisReq" + }, + "status": { + "$ref": "#/definitions/RedisItemStatus" + } + }, + "title": "generate by https://json2pb.vercel.app" + }, + "RedisItemMetadata": { + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTimestamp": { + "type": "string", + "format": "int64" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "RedisItemStatus": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/Status" + }, + "podsAreReadyNum": { + "type": "integer", + "format": "int32" + }, + "redisAddr": { + "type": "string" + }, + "clusterIPs": { + "type": "array", + "items": { + "type": "string" + } + }, + "serviceAddr": { + "type": "string" + }, + "common": { + "$ref": "#/definitions/commonCommonItemStatus" + }, + "isControl": { + "type": "boolean" + } + } + }, + "RedisPodType": { + "type": "string", + "enum": [ + "StandaloneRedis", + "SentinelRedis", + "Sentinel", + "LeaderRedis", + "FollowerRedis", + "SentinelRedisMaster", + "SentinelRedisReplica" + ], + "default": "StandaloneRedis" + }, + "Status": { + "type": "string", + "enum": [ + "Failed", + "Running", + "Creating" + ], + "default": "Failed" + }, + "StatusJobCondition": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "StorageConfigItem": { + "type": "object", + "properties": { + "spec": { + "$ref": "#/definitions/CreateStorageConfigReq" + }, + "status": { + "$ref": "#/definitions/StorageConfigItemStorageConfigStatus" + } + } + }, + "StorageConfigItemStorageConfigStatus": { + "type": "object", + "properties": { + "lastUpdateTimestamp": { + "type": "string", + "format": "int64" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + } + } + }, + "TenantItem": { + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "spec": { + "$ref": "#/definitions/TenantItemCreateMinioReq" + }, + "status": { + "$ref": "#/definitions/TenantItemStatus" + } + } + }, + "TenantItemCreateMinioReq": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "cluster": { + "type": "string" + } + } + }, + "TenantItemStatus": { + "type": "object", + "properties": { + "common": { + "$ref": "#/definitions/commonCommonItemStatus", + "title": "Status status= 1;\nint32 pods_are_ready_num=2;\nstring web_manager_addr=3;\nrepeated string cluster_i_ps=4;\nstring service_addr=6;" + } + } + }, + "UpdateRedisAutoBackupReq": { + "type": "object", + "properties": { + "workspaceId": { + "type": "integer", + "format": "int32", + "title": "@inject_tag: v:\"min:1#choose workspace_id!\"" + }, + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "instanceType": { + "$ref": "#/definitions/InstanceType", + "title": "@inject_tag: v:\"required#input instance type!\"" + }, + "accessKeyId": { + "type": "string", + "title": "gen by storage" + }, + "accessKeySecret": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "provider": { + "$ref": "#/definitions/UpdateRedisAutoBackupReqProvider" + }, + "storePath": { + "type": "string", + "title": "[Bucket]/[RDB_NAME]\n@inject_tag: v:\"required#input store_path!\"" + }, + "isOpenAutoBackup": { + "type": "boolean" + }, + "backupSchedule": { + "type": "string" + }, + "backupHistoryLimit": { + "type": "integer", + "format": "int32" + }, + "storageConfigName": { + "type": "string", + "title": "@inject_tag: v:\"required#choose storage_config_name!\"" + }, + "storageConfigNamespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose storage_config_namespace!\"" + }, + "storageConfigCluster": { + "type": "string", + "title": "@inject_tag: v:\"required#choose storage_config_cluster!\"" + } + } + }, + "UpdateRedisAutoBackupReqProvider": { + "type": "string", + "enum": [ + "Minio", + "Other" + ], + "default": "Minio" + }, + "UpdateRedisAutoBackupResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "UpdateRedisConfReq": { + "type": "object", + "properties": { + "cluster": { + "type": "string", + "title": "@inject_tag: v:\"update|required#RBAC error|choose clusterName!\"" + }, + "namespace": { + "type": "string", + "title": "@inject_tag: v:\"required#choose Namespace\"" + }, + "name": { + "type": "string", + "title": "@inject_tag: v:\"required#input name!\"" + }, + "authPass": { + "type": "string" + }, + "conf": { + "type": "string" + }, + "instanceType": { + "$ref": "#/definitions/InstanceType" + } + } + }, + "UpdateRedisConfResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "UpdateRedisParamsResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "UpdateStorageConfigResp": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "commonAffinity": { + "type": "object", + "properties": { + "nodeAffinity": { + "$ref": "#/definitions/commonNodeAffinity" + }, + "podAffinity": { + "$ref": "#/definitions/commonPodAffinity" + }, + "podAntiAffinity": { + "$ref": "#/definitions/commonPodAntiAffinity" + } + } + }, + "commonCommonItemStatus": { + "type": "object", + "properties": { + "serviceAddresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "webManagerAddress": { + "type": "string" + }, + "webLogAddress": { + "type": "string" + }, + "isHwameistorSc": { + "type": "boolean" + }, + "avgPvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "avgPvUsedInGb": { + "type": "number", + "format": "double" + } + }, + "description": "CommonItemStatus define CR(MysqlCluster/Tenant...) common status." + }, + "commonExternalTrafficPolicy": { + "type": "string", + "enum": [ + "Cluster", + "Local" + ], + "default": "Cluster" + }, + "commonLBTyp": { + "type": "string", + "enum": [ + "MetalLB", + "Others" + ], + "default": "MetalLB" + }, + "commonLabelSelector": { + "type": "object", + "properties": { + "matchLabels": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonLabelSelectorRequirement" + } + } + } + }, + "commonLabelSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist" + } + } + }, + "commonNodeAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "$ref": "#/definitions/commonNodeSelector" + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPreferredSchedulingTerm" + } + } + } + }, + "commonNodeSelector": { + "type": "object", + "properties": { + "nodeSelectorTerms": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + } + }, + "commonNodeSelectorRequirement": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + }, + "operator": { + "type": "string", + "title": "Operator valid string: In, NotIn, Exists, DoesNotExist, Gt, Lt" + } + } + }, + "commonNodeSelectorTerm": { + "type": "object", + "properties": { + "matchExpressions": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + }, + "matchFields": { + "type": "array", + "items": { + "$ref": "#/definitions/commonNodeSelectorRequirement" + } + } + } + }, + "commonOwnerReference": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "controller": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "kind": { + "type": "string" + } + } + }, + "commonPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "pages": { + "type": "integer", + "format": "int32" + } + } + }, + "commonPodAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodAffinityTerm": { + "type": "object", + "properties": { + "labelSelector": { + "$ref": "#/definitions/commonLabelSelector" + }, + "namespaces": { + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "type": "string" + }, + "namespaceSelector": { + "$ref": "#/definitions/commonLabelSelector" + } + } + }, + "commonPodAntiAffinity": { + "type": "object", + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + }, + "preferredDuringSchedulingIgnoredDuringExecution": { + "type": "array", + "items": { + "$ref": "#/definitions/commonWeightedPodAffinityTerm" + } + } + } + }, + "commonPodCommon": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "phase": { + "$ref": "#/definitions/PodCommonPodPhase" + }, + "ip": { + "type": "string" + }, + "restartCount": { + "type": "integer", + "format": "int32" + }, + "createTimestamp": { + "type": "string", + "format": "int64" + }, + "cpuUsage": { + "type": "number", + "format": "double" + }, + "cpuLimit": { + "type": "number", + "format": "double" + }, + "memoryUsage": { + "type": "number", + "format": "double" + }, + "memoryLimit": { + "type": "number", + "format": "double" + }, + "pvUsedInGb": { + "type": "number", + "format": "double" + }, + "pvAllocatedInGb": { + "type": "number", + "format": "double" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/PodCommonCondition" + } + }, + "containersName": { + "type": "array", + "items": { + "type": "string" + } + }, + "ownerReference": { + "type": "array", + "items": { + "$ref": "#/definitions/commonOwnerReference" + } + }, + "initContainersName": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "commonPreferredSchedulingTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "preference": { + "$ref": "#/definitions/commonNodeSelectorTerm" + } + } + }, + "commonServiceType": { + "type": "string", + "enum": [ + "ClusterIP", + "NodePort", + "LoadBalancer" + ], + "default": "ClusterIP" + }, + "commonWeightedPodAffinityTerm": { + "type": "object", + "properties": { + "weight": { + "type": "integer", + "format": "int32" + }, + "podAffinityTerm": { + "$ref": "#/definitions/commonPodAffinityTerm" + } + } + }, + "googlerpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "v1alpha1AlertSummary": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "int64" + }, + "groupName": { + "type": "string" + }, + "groupId": { + "type": "string" + }, + "ruleName": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "targetType": { + "$ref": "#/definitions/v1alpha1TargetType" + }, + "target": { + "type": "string" + }, + "severity": { + "$ref": "#/definitions/v1alpha1Severity" + }, + "value": { + "type": "string" + }, + "notifyResponse": { + "type": "string" + }, + "description": { + "type": "string" + }, + "startAt": { + "type": "string", + "format": "int64" + }, + "updateAt": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1Severity": { + "type": "string", + "enum": [ + "SEVERITY_UNSPECIFIED", + "CRITICAL", + "WARNING", + "INFO" + ], + "default": "SEVERITY_UNSPECIFIED" + }, + "v1alpha1TargetType": { + "type": "string", + "enum": [ + "TARGET_TYPE_UNSPECIFIED", + "GLOBAL", + "CLUSTER", + "NAMESPACE", + "NODE", + "DEPLOYMENT", + "STATEFULSET", + "DAEMONSET", + "POD" + ], + "default": "TARGET_TYPE_UNSPECIFIED" + } + } +} diff --git a/docs/openapi/mcamel/redis-v0.7.1.md b/docs/openapi/mcamel/redis-v0.7.1.md new file mode 100644 index 00000000..6af68ab1 --- /dev/null +++ b/docs/openapi/mcamel/redis-v0.7.1.md @@ -0,0 +1 @@ +# diff --git a/docs/openapi/midware.md b/docs/openapi/midware.md index d415590a..e19dde63 100644 --- a/docs/openapi/midware.md +++ b/docs/openapi/midware.md @@ -1,23 +1,63 @@ ---- -hide: - - toc ---- - # 中间件 OpenAPI 文档 本页列出所有中间件的 OpenAPI 文档,方便以程序方式调用。
-- :simple-elasticsearch: **[Elasticsearch OpenAPI v0.7.0](./mcamel/elasticsearch-v0.7.0.md)** -- :simple-apachekafka: **[Kafka OpenAPI v0.5.0](./mcamel/kafka-v0.5.0.md)** -- :material-database: **[MinIO OpenAPI v0.5.0](./mcamel/minio-v0.5.0.md)** -- :simple-mysql: **[MySQL OpenAPI v0.8.0](./mcamel/mysql-v0.8.0.md)** -- :simple-postgresql: **[PostgreSQL OpenAPI v0.1.0](./mcamel/postgresql-v0.1.0.md)** -- :simple-postgresql: **[PostgreSQL OpenAPI v0.1.1](./mcamel/postgresql-v0.1.1.md)** -- :simple-rabbitmq: **[RabbitMQ OpenAPI v0.10.0](./mcamel/rabbitmq-v0.10.0.md)** -- :simple-redis: **[Redis OpenAPI v0.7.0](./mcamel/redis-v0.7.0.md)** +- :simple-elasticsearch:{ .lg .middle } __Elasticsearch OpenAPI__ + + --- + + - [v0.7.0](./mcamel/elasticsearch-v0.7.0.md) + - [v0.7.1](./mcamel/elasticsearch-v0.7.1.md) + +- :simple-apachekafka:{ .lg .middle } __Kafka OpenAPI__ + + --- + + - [v0.5.0](./mcamel/kafka-v0.5.0.md) + - [v0.5.1](./mcamel/kafka-v0.5.1.md) + +- :material-database:{ .lg .middle } __MinIO OpenAPI__ + + --- + + - [v0.5.0](./mcamel/minio-v0.5.0.md) + - [v0.5.1](./mcamel/minio-v0.5.1.md) + +- :simple-mysql:{ .lg .middle } __MySQL OpenAPI__ + + --- + + - [v0.8.0](./mcamel/mysql-v0.8.0.md) + - [v0.8.1](./mcamel/mysql-v0.8.1.md) + +- :simple-postgresql:{ .lg .middle } __PostgreSQL OpenAPI__ + + --- + + - [v0.1.0](./mcamel/postgresql-v0.1.0.md) + - [v0.1.1](./mcamel/postgresql-v0.1.1.md) + - [v0.1.2](./mcamel/postgresql-v0.1.2.md) + +- :simple-rabbitmq:{ .lg .middle } __RabbitMQ OpenAPI__ + + --- + + - [v0.10.0](./mcamel/rabbitmq-v0.10.0.md) + - [v0.10.1](./mcamel/rabbitmq-v0.10.1.md) + +- :simple-redis:{ .lg .middle } __Redis OpenAPI__ + + --- + + - [v0.7.0](./mcamel/redis-v0.7.0.md) + - [v0.7.1](./mcamel/redis-v0.7.1.md)
-![what is midware](images/middleware.png) +!!! info + + 更多中间件 OpenAPI 文档正在制作中。 + +![what is midware](https://docs.daocloud.io/daocloud-docs-images/docs/openapi/images/middleware02.jpeg) diff --git a/docs/openapi/mspider/index.md b/docs/openapi/mspider/index.md deleted file mode 100644 index 0eeac563..00000000 --- a/docs/openapi/mspider/index.md +++ /dev/null @@ -1,2 +0,0 @@ -# 服务网格 OpenAPI -- [版本 v0.105.1](./v0.105.1.md) diff --git a/docs/openapi/spidernet/index.md b/docs/openapi/spidernet/index.md deleted file mode 100644 index 67442c5d..00000000 --- a/docs/openapi/spidernet/index.md +++ /dev/null @@ -1,2 +0,0 @@ -# 网络 OpenAPI -- [版本 v0.5.0](./v0.5.0.md) diff --git a/docs/openapi/spidernet/v0.6.0.json b/docs/openapi/spidernet/v0.6.0.json new file mode 100644 index 00000000..410e4c04 --- /dev/null +++ b/docs/openapi/spidernet/v0.6.0.json @@ -0,0 +1,2475 @@ +{ + "swagger": "2.0", + "info": { + "title": "spidernet", + "version": "v0.6.0" + }, + "tags": [ + { + "name": "Common" + }, + { + "name": "Multus" + }, + { + "name": "Spiderpool" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/multus/instance-annotations": { + "get": { + "summary": "GetMultusInstanceAnnotations parse annotations of multus instances", + "operationId": "Multus_ListMultusInstanceAnnotations", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListMultusInstanceAnnotationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "description": "Cluster the specified resources belongs to.", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Multus" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/namespaces": { + "get": { + "operationId": "Common_ListNamespaces", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListNamespacesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "NAMESPACE_SORT_BY_UNSPECIFIED", + "NAMESPACE_SORT_BY_NAME" + ], + "default": "NAMESPACE_SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": " - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED" + }, + { + "name": "searches", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzy", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Common" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/ipversion": { + "get": { + "operationId": "Spiderpool_GetIPVersionEnablement", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1IPVersionEnablement" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderippools": { + "get": { + "operationId": "Spiderpool_ListSpiderIPPools", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListSpiderIPPoolsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "controllerSubnet", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "ipVersion", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "IP_VERSION_UNSPECIFIED", + "IP_VERSION_IPV4", + "IP_VERSION_IPV6" + ], + "default": "IP_VERSION_UNSPECIFIED" + }, + { + "name": "vlan", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "selectPod", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "selectNamespace", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "IPPOOL_SORT_BY_UNSPECIFIED", + "IPPOOL_SORT_BY_NAME", + "IPPOOL_SORT_BY_STATIC", + "IPPOOL_SORT_BY_SUBNET", + "IPPOOL_SORT_BY_VLAN" + ], + "default": "IPPOOL_SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": " - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED" + }, + { + "name": "searches", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzy", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + }, + "post": { + "operationId": "Spiderpool_CreateSpiderIPPool", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "subnet": { + "type": "string" + }, + "gateway": { + "type": "string" + }, + "routes": { + "type": "array", + "items": { + "$ref": "#/definitions/typesRoute" + } + }, + "podAffinity": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "namespaceAffinity": { + "type": "string" + }, + "nodeAffinity": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "ips": { + "type": "array", + "items": { + "type": "string" + } + }, + "vlan": { + "type": "string", + "format": "int64" + } + } + } + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderippools/podresults": { + "get": { + "operationId": "Spiderpool_ListPodAllocationResults", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListPodAllocationResultsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "matchLabel", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "POD_ALLOCATION_RESULT_SORT_BY_UNSPECIFIED", + "POD_ALLOCATION_RESULT_SORT_BY_NIC" + ], + "default": "POD_ALLOCATION_RESULT_SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": " - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED" + }, + { + "name": "fuzzy", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderippools/{name}": { + "get": { + "operationId": "Spiderpool_GetSpiderIPPool", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1IPPoolBasicInfo" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + }, + "delete": { + "operationId": "Spiderpool_DeleteSpiderIPPool", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + }, + "put": { + "operationId": "Spiderpool_UpdateSpiderIPPool", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "gateway": { + "type": "string" + }, + "vlan": { + "type": "string", + "format": "int64" + }, + "routes": { + "type": "array", + "items": { + "$ref": "#/definitions/typesRoute" + } + }, + "podAffinity": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "namespaceAffinity": { + "type": "string" + }, + "nodeAffinity": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderippools/{name}/addips": { + "put": { + "operationId": "Spiderpool_AddIPPoolIPs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "ips": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderippools/{name}/allocations": { + "get": { + "operationId": "Spiderpool_ListIPAllocations", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListIPAllocationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "IPPOOL_IP_SORT_BY_UNSPECIFIED", + "IPPOOL_IP_SORT_BY_ADDRESS", + "IPPOOL_IP_SORT_BY_STATUS", + "IPPOOL_IP_SORT_BY_NAMESPACE", + "IPPOOL_IP_SORT_BY_WORKLOAD", + "IPPOOL_IP_SORT_BY_POD" + ], + "default": "IPPOOL_IP_SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": " - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED" + }, + { + "name": "searches", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzy", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderippools/{name}/exist": { + "get": { + "operationId": "Spiderpool_CheckSpiderIPPoolExist", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/typesExist" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderippools/{name}/matchedworkloads": { + "get": { + "operationId": "Spiderpool_ListMatchedWorkloads", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListMatchedWorkloadsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "MATCHED_WORKLOAD_SORT_BY_UNSPECIFIED", + "MATCHED_WORKLOAD_SORT_BY_NAMESPACE", + "MATCHED_WORKLOAD_SORT_BY_TYPE", + "MATCHED_WORKLOAD_SORT_BY_NAME" + ], + "default": "MATCHED_WORKLOAD_SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": " - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED" + }, + { + "name": "fuzzy", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderippools/{name}/rmips": { + "put": { + "operationId": "Spiderpool_RemoveIPPoolIPs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "ips": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderreservedips": { + "get": { + "operationId": "Spiderpool_ListSpiderReservedIPs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListSpiderReservedIPsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "ipVersion", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "IP_VERSION_UNSPECIFIED", + "IP_VERSION_IPV4", + "IP_VERSION_IPV6" + ], + "default": "IP_VERSION_UNSPECIFIED" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortDir", + "description": " - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED" + }, + { + "name": "fuzzy", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderreservedips/{ipVersion}/addips": { + "put": { + "operationId": "Spiderpool_AddSpiderReservedIPs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "ipVersion", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "IP_VERSION_UNSPECIFIED", + "IP_VERSION_IPV4", + "IP_VERSION_IPV6" + ] + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "reservedIps": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spiderreservedips/{ipVersion}/rmips": { + "put": { + "operationId": "Spiderpool_RemoveSpiderReservedIPs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "ipVersion", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "IP_VERSION_UNSPECIFIED", + "IP_VERSION_IPV4", + "IP_VERSION_IPV6" + ] + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "reservedIps": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spidersubnets": { + "get": { + "operationId": "Spiderpool_ListSpiderSubnets", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListSpiderSubnetsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "ipVersion", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "IP_VERSION_UNSPECIFIED", + "IP_VERSION_IPV4", + "IP_VERSION_IPV6" + ], + "default": "IP_VERSION_UNSPECIFIED" + }, + { + "name": "vlan", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SUBNET_SORT_BY_UNSPECIFIED", + "SUBNET_SORT_BY_NAME", + "SUBNET_SORT_BY_SUBNET", + "SUBNET_SORT_BY_VLAN", + "SUBNET_SORT_BY_IPPOOL_COUNT", + "SUBNET_SORT_BY_IP_IN_USE" + ], + "default": "SUBNET_SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": " - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED" + }, + { + "name": "searches", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzy", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + }, + "post": { + "operationId": "Spiderpool_CreateSpiderSubnet", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "subnet": { + "type": "string" + }, + "gateway": { + "type": "string" + }, + "vlan": { + "type": "string", + "format": "int64" + }, + "routes": { + "type": "array", + "items": { + "$ref": "#/definitions/typesRoute" + } + }, + "ips": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spidersubnets/{name}": { + "get": { + "operationId": "Spiderpool_GetSpiderSubnet", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1SubnetBasicInfo" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + }, + "delete": { + "operationId": "Spiderpool_DeleteSpiderSubnet", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + }, + "put": { + "operationId": "Spiderpool_UpdateSpiderSubnet", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "gateway": { + "type": "string" + }, + "vlan": { + "type": "string", + "format": "int64" + }, + "routes": { + "type": "array", + "items": { + "$ref": "#/definitions/typesRoute" + } + } + } + } + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spidersubnets/{name}/addips": { + "put": { + "operationId": "Spiderpool_AddSubnetIPs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "ips": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spidersubnets/{name}/allocations": { + "get": { + "operationId": "Spiderpool_ListPreIPAllocations", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListPreIPAllocationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SUBNET_IP_SORT_BY_UNSPECIFIED", + "SUBNET_IP_SORT_BY_ADDRESS", + "SUBNET_IP_SORT_BY_STATUS", + "SUBNET_IP_SORT_BY_IPPOOL" + ], + "default": "SUBNET_IP_SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": " - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED" + }, + { + "name": "searches", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzy", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spidersubnets/{name}/exist": { + "get": { + "operationId": "Spiderpool_CheckSpiderSubnetExist", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/typesExist" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spidersubnets/{name}/freeips": { + "get": { + "operationId": "Spiderpool_ListIPPoolAddibleIPs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListIPPoolAddibleIPsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ADDIBLEIP_IP_SORT_BY_UNSPECIFIED", + "ADDIBLEIP_IP_SORT_BY_ADDRESS" + ], + "default": "ADDIBLEIP_IP_SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": " - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED" + }, + { + "name": "searches", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzy", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/clusters/{cluster}/spiderpool/spidersubnets/{name}/rmips": { + "put": { + "operationId": "Spiderpool_RemoveSubnetIPs", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "cluster", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "ips": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ], + "tags": [ + "Spiderpool" + ] + } + }, + "/apis/spidernet.io/v1alpha1/spiderpool/clusters": { + "get": { + "operationId": "Spiderpool_ListSpiderpoolClusters", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1alpha1ListSpiderpoolClustersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "sortBy", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "CLUSTER_SORT_BY_UNSPECIFIED", + "CLUSTER_SORT_BY_NAME" + ], + "default": "CLUSTER_SORT_BY_UNSPECIFIED" + }, + { + "name": "sortDir", + "description": " - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED" + }, + { + "name": "searches", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "fuzzy", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "Spiderpool" + ] + } + } + }, + "definitions": { + "multusv1alpha1Type": { + "type": "string", + "enum": [ + "default", + "macvlan_standalone", + "macvlan_overlay", + "sriov_standalone", + "sriov_overlay", + "sriov_dpdk", + "unknown" + ], + "default": "default", + "title": "- default: calico or cilium" + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string" + } + }, + "additionalProperties": {} + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "typesExist": { + "type": "object", + "properties": { + "exist": { + "type": "boolean" + } + } + }, + "typesIPStatus": { + "type": "string", + "enum": [ + "IP_STATUS_UNSPECIFIED", + "IP_STATUS_FREE", + "IP_STATUS_IN_USE", + "IP_STATUS_UNALLOCATED", + "IP_STATUS_PRE_ALLOCATED" + ], + "default": "IP_STATUS_UNSPECIFIED" + }, + "typesIPVersion": { + "type": "string", + "enum": [ + "IP_VERSION_UNSPECIFIED", + "IP_VERSION_IPV4", + "IP_VERSION_IPV6" + ], + "default": "IP_VERSION_UNSPECIFIED" + }, + "typesPagination": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "format": "int32", + "description": "Total is the total number of referents." + }, + "page": { + "type": "integer", + "format": "int32", + "description": "Page is current page." + }, + "pageSize": { + "type": "integer", + "format": "int32", + "description": "PageSize is the data number shown per page." + }, + "pages": { + "type": "integer", + "format": "int32", + "description": "Pages is the number of pages." + } + }, + "description": "Pagination is for data paging." + }, + "typesRoute": { + "type": "object", + "properties": { + "dst": { + "type": "string" + }, + "gw": { + "type": "string" + } + } + }, + "typesSortDir": { + "type": "string", + "enum": [ + "SORT_DIR_UNSPECIFIED", + "SORT_DIR_DESC", + "SORT_DIR_ASC" + ], + "default": "SORT_DIR_UNSPECIFIED", + "description": "SortDir determines the data list order.\n\n - SORT_DIR_DESC: Desc stands for descending order.\n - SORT_DIR_ASC: Asc stands for ascending order." + }, + "v1alpha1AddibleIPSortBy": { + "type": "string", + "enum": [ + "ADDIBLEIP_IP_SORT_BY_UNSPECIFIED", + "ADDIBLEIP_IP_SORT_BY_ADDRESS" + ], + "default": "ADDIBLEIP_IP_SORT_BY_UNSPECIFIED" + }, + "v1alpha1AnnotationKeys": { + "type": "object", + "properties": { + "default": { + "type": "string", + "title": "value: v1.multus-cni.io/default-network" + }, + "addon": { + "type": "string", + "title": "value: k8s.v1.cni.cncf.io/networks" + } + } + }, + "v1alpha1AnnotationValues": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "name the name of the multus instance" + }, + "namespace": { + "type": "string", + "title": "namespace the namespace of the multus instance" + }, + "type": { + "$ref": "#/definitions/multusv1alpha1Type", + "title": "type the type of this multus instance" + }, + "isDefault": { + "type": "boolean" + }, + "isUnderlay": { + "type": "boolean", + "title": "isUnderlay indicates that is underlay cni" + }, + "vlanId": { + "type": "string", + "title": "vlanId specify for underlay cni( required fot isUnderlay is true)" + }, + "coexistTypeList": { + "type": "array", + "items": { + "type": "string" + }, + "title": "coexistTypeList the list of coexistedType that can be work with this multus\ninstance" + } + }, + "title": "the base info for multus InstanceAnnotations" + }, + "v1alpha1ClusterRecord": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, + "v1alpha1ClusterSortBy": { + "type": "string", + "enum": [ + "CLUSTER_SORT_BY_UNSPECIFIED", + "CLUSTER_SORT_BY_NAME" + ], + "default": "CLUSTER_SORT_BY_UNSPECIFIED" + }, + "v1alpha1IPAllocation": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/typesIPStatus" + }, + "namespace": { + "type": "string" + }, + "pod": { + "type": "string" + } + } + }, + "v1alpha1IPPoolBasicInfo": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "name": { + "type": "string" + }, + "allocatedIpCount": { + "type": "string", + "format": "int64" + }, + "totalIpCount": { + "type": "string", + "format": "int64" + }, + "gateway": { + "type": "string" + }, + "vlan": { + "type": "string", + "format": "int64" + }, + "routes": { + "type": "array", + "items": { + "$ref": "#/definitions/typesRoute" + } + }, + "status": { + "$ref": "#/definitions/v1alpha1IPPoolStatus" + }, + "podAffinity": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "namespaceAffinity": { + "type": "string" + }, + "nodeAffinity": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "creationTime": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1IPPoolIPSortBy": { + "type": "string", + "enum": [ + "IPPOOL_IP_SORT_BY_UNSPECIFIED", + "IPPOOL_IP_SORT_BY_ADDRESS", + "IPPOOL_IP_SORT_BY_STATUS", + "IPPOOL_IP_SORT_BY_NAMESPACE", + "IPPOOL_IP_SORT_BY_WORKLOAD", + "IPPOOL_IP_SORT_BY_POD" + ], + "default": "IPPOOL_IP_SORT_BY_UNSPECIFIED" + }, + "v1alpha1IPPoolRecord": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/v1alpha1IPPoolStatus" + }, + "subnet": { + "type": "string" + }, + "vlan": { + "type": "string", + "format": "int64" + }, + "allocatedIpCount": { + "type": "string", + "format": "int64" + }, + "totalIpCount": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1IPPoolSortBy": { + "type": "string", + "enum": [ + "IPPOOL_SORT_BY_UNSPECIFIED", + "IPPOOL_SORT_BY_NAME", + "IPPOOL_SORT_BY_STATIC", + "IPPOOL_SORT_BY_SUBNET", + "IPPOOL_SORT_BY_VLAN" + ], + "default": "IPPOOL_SORT_BY_UNSPECIFIED" + }, + "v1alpha1IPPoolStatus": { + "type": "string", + "enum": [ + "IPPOOL_STATUS_UNSPECIFIED", + "IPPOOL_STATUS_ORDINARY", + "IPPOOL_STATUS_STATIC" + ], + "default": "IPPOOL_STATUS_UNSPECIFIED" + }, + "v1alpha1IPVersionEnablement": { + "type": "object", + "properties": { + "enableIpv4": { + "type": "boolean" + }, + "enableIpv6": { + "type": "boolean" + } + } + }, + "v1alpha1ListIPAllocationsResponse": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1IPAllocation" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1ListIPPoolAddibleIPsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1ListMatchedWorkloadsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1MatchedWorkloadRecord" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1ListMultusInstanceAnnotationsResponse": { + "type": "object", + "properties": { + "annotationValueList": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1AnnotationValues" + }, + "title": "items list of the all multus instances" + }, + "annotationKeyList": { + "$ref": "#/definitions/v1alpha1AnnotationKeys" + } + } + }, + "v1alpha1ListNamespacesResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1NamespaceRecord" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1ListPodAllocationResultsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1PodAllocationResultRecord" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1ListPreIPAllocationsResponse": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1PreIPAllocation" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1ListSpiderIPPoolsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1IPPoolRecord" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1ListSpiderReservedIPsResponse": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "items": { + "type": "array", + "items": { + "type": "string" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1ListSpiderSubnetsResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1SubnetRecord" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1ListSpiderpoolClustersResponse": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1ClusterRecord" + } + }, + "pagination": { + "$ref": "#/definitions/typesPagination" + } + } + }, + "v1alpha1MatchedWorkloadRecord": { + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "type": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "v1alpha1MatchedWorkloadSortBy": { + "type": "string", + "enum": [ + "MATCHED_WORKLOAD_SORT_BY_UNSPECIFIED", + "MATCHED_WORKLOAD_SORT_BY_NAMESPACE", + "MATCHED_WORKLOAD_SORT_BY_TYPE", + "MATCHED_WORKLOAD_SORT_BY_NAME" + ], + "default": "MATCHED_WORKLOAD_SORT_BY_UNSPECIFIED" + }, + "v1alpha1NamespaceRecord": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, + "v1alpha1NamespaceSortBy": { + "type": "string", + "enum": [ + "NAMESPACE_SORT_BY_UNSPECIFIED", + "NAMESPACE_SORT_BY_NAME" + ], + "default": "NAMESPACE_SORT_BY_UNSPECIFIED" + }, + "v1alpha1PodAllocationResultRecord": { + "type": "object", + "properties": { + "nic": { + "type": "string" + }, + "ipVersion": { + "$ref": "#/definitions/typesIPVersion" + }, + "pool": { + "type": "string" + }, + "poolStatus": { + "$ref": "#/definitions/v1alpha1IPPoolStatus" + }, + "poolAllocatedIpCount": { + "type": "string", + "format": "int64" + }, + "poolTotalIpCount": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1PodAllocationResultSortBy": { + "type": "string", + "enum": [ + "POD_ALLOCATION_RESULT_SORT_BY_UNSPECIFIED", + "POD_ALLOCATION_RESULT_SORT_BY_NIC" + ], + "default": "POD_ALLOCATION_RESULT_SORT_BY_UNSPECIFIED" + }, + "v1alpha1PreIPAllocation": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/typesIPStatus" + }, + "pool": { + "type": "string" + } + } + }, + "v1alpha1SubnetBasicInfo": { + "type": "object", + "properties": { + "resourceVersion": { + "type": "string" + }, + "cluster": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ipVersion": { + "$ref": "#/definitions/typesIPVersion" + }, + "subnet": { + "type": "string" + }, + "poolCount": { + "type": "integer", + "format": "int32" + }, + "allocatedIpCount": { + "type": "string", + "format": "int64" + }, + "totalIpCount": { + "type": "string", + "format": "int64" + }, + "gateway": { + "type": "string" + }, + "vlan": { + "type": "string", + "format": "int64" + }, + "routes": { + "type": "array", + "items": { + "$ref": "#/definitions/typesRoute" + } + }, + "creationTime": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1SubnetIPSortBy": { + "type": "string", + "enum": [ + "SUBNET_IP_SORT_BY_UNSPECIFIED", + "SUBNET_IP_SORT_BY_ADDRESS", + "SUBNET_IP_SORT_BY_STATUS", + "SUBNET_IP_SORT_BY_IPPOOL" + ], + "default": "SUBNET_IP_SORT_BY_UNSPECIFIED" + }, + "v1alpha1SubnetRecord": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ipVersion": { + "$ref": "#/definitions/typesIPVersion" + }, + "subnet": { + "type": "string" + }, + "vlan": { + "type": "string", + "format": "int64" + }, + "poolCount": { + "type": "integer", + "format": "int32" + }, + "allocatedIpCount": { + "type": "string", + "format": "int64" + }, + "totalIpCount": { + "type": "string", + "format": "int64" + } + } + }, + "v1alpha1SubnetSortBy": { + "type": "string", + "enum": [ + "SUBNET_SORT_BY_UNSPECIFIED", + "SUBNET_SORT_BY_NAME", + "SUBNET_SORT_BY_SUBNET", + "SUBNET_SORT_BY_VLAN", + "SUBNET_SORT_BY_IPPOOL_COUNT", + "SUBNET_SORT_BY_IP_IN_USE" + ], + "default": "SUBNET_SORT_BY_UNSPECIFIED" + } + } +} diff --git a/docs/openapi/spidernet/v0.6.0.md b/docs/openapi/spidernet/v0.6.0.md new file mode 100644 index 00000000..08cad9b8 --- /dev/null +++ b/docs/openapi/spidernet/v0.6.0.md @@ -0,0 +1 @@ +# diff --git a/openapi-nav.yml b/openapi-nav.yml index 6c6ad756..6edd17cb 100644 --- a/openapi-nav.yml +++ b/openapi-nav.yml @@ -1,18 +1,37 @@ nav: - OpenAPI 文档: - OpenAPI 文档索引: openapi/index.md - - 全局管理 OpenAPI: openapi/ghippo/v0.15.0.md + - 全局管理 OpenAPI: + - v0.15.0: openapi/ghippo/v0.15.0.md + - v0.16.0: openapi/ghippo/v0.16.0.md + - v0.16.1: openapi/ghippo/v0.16.1.md - 服务网格 OpenAPI: openapi/mspider/v0.105.1.md - - 可观测性 OpenAPI: openapi/insight/v0.16.0-alpha1.md - - 网络 OpenAPI: openapi/spidernet/v0.5.0.md + - 可观测性 OpenAPI: openapi/insight/v0.16.0.md + - 多云编排 OpenAPI: openapi/kairship/v0.8.0.md + - 网络 OpenAPI: + - v0.5.0: openapi/spidernet/v0.5.0.md + - v0.6.0: openapi/spidernet/v0.6.0.md - 中间件 OpenAPI: - Index: openapi/midware.md - - Elasticsearch OpenAPI: openapi/mcamel/elasticsearch-v0.7.0.md - - Kafka OpenAPI: openapi/mcamel/kafka-v0.5.0.md - - MinIO OpenAPI: openapi/mcamel/minio-v0.5.0.md - - MySQL OpenAPI: openapi/mcamel/mysql-v0.8.0.md + - Elasticsearch OpenAPI: + - v0.7.0: openapi/mcamel/elasticsearch-v0.7.0.md + - v0.7.1: openapi/mcamel/elasticsearch-v0.7.1.md + - Kafka OpenAPI: + - v0.5.0: openapi/mcamel/kafka-v0.5.0.md + - v0.5.1: openapi/mcamel/kafka-v0.5.1.md + - MinIO OpenAPI: + - v0.5.0: openapi/mcamel/minio-v0.5.0.md + - v0.5.1: openapi/mcamel/minio-v0.5.1.md + - MySQL OpenAPI: + - v0.8.0: openapi/mcamel/mysql-v0.8.0.md + - v0.8.1: openapi/mcamel/mysql-v0.8.1.md - PostgreSQL OpenAPI: - v0.1.0: openapi/mcamel/postgresql-v0.1.0.md - v0.1.1: openapi/mcamel/postgresql-v0.1.1.md - - RabbitMQ OpenAPI: openapi/mcamel/rabbitmq-v0.10.0.md - - Redis OpenAPI: openapi/mcamel/redis-v0.7.0.md \ No newline at end of file + - v0.1.2: openapi/mcamel/postgresql-v0.1.2.md + - RabbitMQ OpenAPI: + - v0.10.0: openapi/mcamel/rabbitmq-v0.10.0.md + - v0.10.1: openapi/mcamel/rabbitmq-v0.10.1.md + - Redis OpenAPI: + - v0.7.0: openapi/mcamel/redis-v0.7.0.md + - v0.7.1: openapi/mcamel/redis-v0.7.1.md \ No newline at end of file