{
  "swagger": "2.0",
  "info": {
    "description": "devops server",
    "title": "Devops API",
    "contact": {},
    "version": "1.0"
  },
  "paths": {
    "/api/v1/devops-internal/controlplane/deployments/{deployment_id}/apply/complete": {
      "post": {
        "description": "callback when apply workflow completes",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DeploymentController"],
        "operationId": "DeploymentControllerOnApplyComplete",
        "parameters": [
          {
            "type": "integer",
            "description": "deployment id",
            "name": "deployment_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controlplane.OnApplyCompleteReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops-internal/controlplane/deployments/{deployment_id}/preview/complete": {
      "post": {
        "description": "callback when preview workflow completes",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DeploymentController"],
        "operationId": "DeploymentControllerOnPreviewComplete",
        "parameters": [
          {
            "type": "integer",
            "description": "deployment id",
            "name": "deployment_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controlplane.OnPreviewCompleteReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops-internal/github/pulls/sync": {
      "post": {
        "description": "sync all pull requests manually",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerSyncPullRequests",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops-internal/github/repos/sync": {
      "post": {
        "description": "sync all repos manually",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerSyncRepositories",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops-internal/itoken/.well-known/jwks.json": {
      "get": {
        "description": "get jwks in standard format for token verification",
        "produces": ["application/json"],
        "tags": ["InternalTokenController"],
        "operationId": "InternalTokenControllerGetWellKnownJWKS",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/itoken.JWKSet"
            }
          }
        }
      }
    },
    "/api/v1/devops-internal/release/releases/sync": {
      "post": {
        "description": "sync all releases manually",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerSyncReleaseManually",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops-internal/tenants": {
      "get": {
        "description": "list tenants internal",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "ListTenantsInternal",
        "parameters": [
          {
            "type": "array",
            "items": {
              "enum": ["internal", "external"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "kind",
            "in": "query"
          },
          {
            "enum": ["asc", "desc"],
            "type": "string",
            "x-enum-varnames": ["OrderTypeASC", "OrderTypeDESC"],
            "name": "order",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": ["new_user", "free_trial", "poc", "on_demand"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "plan",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": [
                "APAC",
                "EMEA",
                "JAPAN",
                "NA",
                "UNKNOWN",
                "RDG",
                "TEST_INFRA",
                "LATAM"
              ],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "region",
            "in": "query"
          },
          {
            "type": "string",
            "name": "search",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": ["SKA", "KA", "SMB"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "segmentation",
            "in": "query"
          },
          {
            "enum": ["created_at", "timezone"],
            "type": "string",
            "x-enum-varnames": ["SortByTypeCreatedAt", "SortByTypeTimezone"],
            "name": "sort_by",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": ["pending", "active", "inactive", "deleted", "cleared"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "status",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.ListTenantResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops-internal/tenants/{tenant_id}": {
      "get": {
        "description": "get tenant internal",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "GetTenantInternal",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.GetTenantResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/accountusers/{user_id}": {
      "delete": {
        "description": "delete account user",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "DeleteAccountUser",
        "parameters": [
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          },
          {
            "description": "DeleteAccountUserReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.DeleteAccountUserReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/application/applications": {
      "get": {
        "description": "list applications",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApplicationController"],
        "operationId": "ApplicationControllerListApplication",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/application.ListApplicationResp"
            }
          }
        }
      },
      "post": {
        "description": "create a application",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApplicationController"],
        "operationId": "ApplicationControllerCreateApplication",
        "parameters": [
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/application.CreateApplicationReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/application.CreateApplicationResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/application/applications/{name}": {
      "get": {
        "description": "get a application",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApplicationController"],
        "operationId": "ApplicationControllerGetApplication",
        "parameters": [
          {
            "type": "string",
            "description": "application name",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/application.GetApplicationResp"
            }
          }
        }
      },
      "put": {
        "description": "update a application",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApplicationController"],
        "operationId": "ApplicationControllerUpdateApplication",
        "parameters": [
          {
            "type": "string",
            "description": "application name",
            "name": "name",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/application.CreateApplicationReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete a application",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApplicationController"],
        "operationId": "ApplicationControllerDeleteApplication",
        "parameters": [
          {
            "type": "string",
            "description": "application name",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/approval/approvals": {
      "post": {
        "description": "create a approval",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApprovalController"],
        "operationId": "ApprovalControllerCreateApproval",
        "parameters": [
          {
            "description": "create approval request",
            "name": "request",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/approval.CreateApprovalReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/approval.CreateApprovalResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/approval/approvals/{appr_id}": {
      "get": {
        "description": "get a approval",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApprovalController"],
        "operationId": "ApprovalControllerGetApproval",
        "parameters": [
          {
            "type": "integer",
            "description": "approval id",
            "name": "appr_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/approval.GetApprovalResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/approval/approvals/{appr_id}/admin_approve": {
      "post": {
        "description": "approve a approval by admin",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApprovalController"],
        "operationId": "ApprovalControllerAdminApprove",
        "parameters": [
          {
            "type": "integer",
            "description": "approval id",
            "name": "appr_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/approval/approvals/{appr_id}/approve": {
      "post": {
        "description": "approve a approval",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApprovalController"],
        "operationId": "ApprovalControllerUserApprove",
        "parameters": [
          {
            "type": "integer",
            "description": "approval id",
            "name": "appr_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/approval/approvals/{appr_id}/cancel": {
      "post": {
        "description": "cancel a approval",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApprovalController"],
        "operationId": "ApprovalControllerCancelApproval",
        "parameters": [
          {
            "type": "integer",
            "description": "approval id",
            "name": "appr_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/approval/approvals/{appr_id}/reject": {
      "post": {
        "description": "approve a approval",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApprovalController"],
        "operationId": "ApprovalControllerUserReject",
        "parameters": [
          {
            "type": "integer",
            "description": "approval id",
            "name": "appr_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/audit": {
      "get": {
        "description": "list audit logs",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["AuditController"],
        "operationId": "AuditControllerListAuditLog",
        "parameters": [
          {
            "type": "string",
            "name": "instance_id",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "enum": [
              "change",
              "ctl",
              "cluster_maintenance",
              "operation",
              "jump",
              "cloud_config_change",
              "cloud_config_default_config_change",
              "k8s_upgrade_task",
              "tenant",
              "spu_sku",
              "rbac_role",
              "rbac_rolebinding",
              "iam_role",
              "iam_rolebinding",
              "iam_policy",
              "iam_policybinding",
              "iam_apikey"
            ],
            "type": "string",
            "x-enum-varnames": [
              "AuditLogTypeChange",
              "AuditLogTypeCtl",
              "AuditLogTypeClusterMaintenance",
              "AuditLogTypeOperation",
              "AuditLogTypeJump",
              "AuditLogTypeCloudConfigChange",
              "AuditLogTypeCloudConfigDefaultConfigChange",
              "AuditLogTypeK8sUpgradetask",
              "AuditLogTypeTenant",
              "AuditLogTypeSpuSku",
              "AuditLogTypeRBACRole",
              "AuditLogTypeRBACRoleBinding",
              "AuditLogTypeIAMRole",
              "AuditLogTypeIAMRoleBinding",
              "AuditLogTypeIAMPolicy",
              "AuditLogTypeIAMPolicyBinding",
              "AuditLogTypeIAMAPIKey"
            ],
            "name": "type",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/audit.ListAuditLogResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/audit/changes": {
      "get": {
        "description": "list audit logs for changes",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["AuditController"],
        "operationId": "AuditControllerListChangeAuditLog",
        "parameters": [
          {
            "type": "integer",
            "name": "change_id",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/audit.ListChangeAuditLogResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/audit/cluster-maintenance": {
      "get": {
        "description": "list audit logs for cluster maintenance",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["AuditController"],
        "operationId": "AuditControllerListClusterMaintenanceAuditLog",
        "parameters": [
          {
            "type": "integer",
            "name": "maintenance_id",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/audit.ListClusterMaintenanceAuditLogResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/audit/ctl": {
      "get": {
        "description": "list audit logs for ctl",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["AuditController"],
        "operationId": "AuditControllerListCtlAuditLog",
        "parameters": [
          {
            "type": "string",
            "name": "cluster_id",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/audit.ListCtlAuditLogResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/audit/jumps": {
      "get": {
        "description": "list audit logs for jump authorizations",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["AuditController"],
        "operationId": "AuditControllerListJumpAuditLog",
        "parameters": [
          {
            "type": "string",
            "name": "authorization_id",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/audit.ListJumpAuditLogResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/audit/operations": {
      "get": {
        "description": "list audit logs for operation instances",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["AuditController"],
        "operationId": "AuditControllerListOperationAuditLog",
        "parameters": [
          {
            "type": "integer",
            "name": "instance_id",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/audit.ListOperationAuditLogResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/audit/types": {
      "get": {
        "description": "list audit log types",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["AuditController"],
        "operationId": "AuditControllerListAuditLogTypes",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/audit.ListAuditLogTypesResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig-admin/parameter/attribute/clone": {
      "post": {
        "description": "clone paramter attributes from old version",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCloneParameterAttribute",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.CloneParamAttrReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig-admin/parameter/attribute/create": {
      "post": {
        "description": "create a paramter attribute",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCreateParameterAttribute",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateParamAttrReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig-admin/parameter/attribute/{config_type}/{version}/{param_name}": {
      "put": {
        "description": "update a parameter attribute",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerUpdateParameterAttribute",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "description": "cluster_type",
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "config_type",
            "name": "config_type",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "version",
            "name": "version",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "param_name",
            "name": "param_name",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.UpdateParamAttrReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/changes/{change_id}": {
      "get": {
        "description": "get a config change of a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetConfigChange",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.GetConfigurationChangeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/changes/{change_id}/apply": {
      "post": {
        "description": "aplly a config change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerApplyConfigurationChange",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ApplyConfigurationChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/changes/{change_id}/cancel": {
      "post": {
        "description": "cancel a config change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCancelConfigurationChange",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/cluster-components/search": {
      "get": {
        "description": "search cluster component versions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerSearchClusterComponents",
        "parameters": [
          {
            "type": "string",
            "name": "cluster_id",
            "in": "query"
          },
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "component_name",
            "in": "query"
          },
          {
            "type": "string",
            "name": "component_version",
            "in": "query"
          },
          {
            "type": "string",
            "name": "image_tag",
            "in": "query"
          },
          {
            "type": "string",
            "name": "logical_region",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "maximum": 500,
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "region_mode",
            "in": "query"
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.SearchClusterComponentsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/cluster/changes": {
      "get": {
        "description": "list config changes",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListClusterConfigurationChanges",
        "parameters": [
          {
            "type": "string",
            "name": "cluster_id",
            "in": "query",
            "required": true
          },
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "created_at_end_unix_sec",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "created_at_start_unix_sec",
            "in": "query"
          },
          {
            "type": "string",
            "name": "have_modified_param_like",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "id_only",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListConfigurationChangeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "change the configuration of a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCreateClusterConfigurationChange",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateClusterConfigurationChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateConfigurationChangeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/cluster/changes/preview": {
      "post": {
        "description": "change the configuration of a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerPreviewClusterConfigurationChange",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.PreviewClusterConfigurationChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.PreviewConfigurationChangeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/cluster/config": {
      "get": {
        "description": "get the current configuration of a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetClusterConfiguration",
        "parameters": [
          {
            "type": "string",
            "name": "cluster_id",
            "in": "query",
            "required": true
          },
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.GetConfigurationResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/components": {
      "get": {
        "description": "list available components",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListComponents",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "description": "cluster_type",
            "name": "cluster_type",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListComponentsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/config-types/{cluster_type}": {
      "get": {
        "description": "list available config types",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListConfigTypes",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "description": "cluster_type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListConfigTypesResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes": {
      "get": {
        "description": "list template changes",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListDefaultConfigurationChanges",
        "parameters": [
          {
            "enum": [
              "version_release",
              "template_default_case_binding",
              "default_component_config"
            ],
            "type": "string",
            "x-enum-varnames": [
              "DefaultConfigurationChangeItemTypeVersionRelease",
              "DefaultConfigurationChangeItemTypeTemplateDefaultCaseBinding",
              "DefaultConfigurationChangeItemTypeDefaultComponentConfig"
            ],
            "name": "contain_item_type",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListDefaultConfigurationChangesResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}": {
      "get": {
        "description": "get a template change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetDefaultConfigurationChange",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "name": "with_change_items",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.GetDefaultConfigurationChangeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}/close": {
      "post": {
        "description": "close a template change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCloseDefaultConfigurationChange",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/cloudconfig.CloseDefaultConfigurationChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}/items": {
      "get": {
        "description": "list change items",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListDefaultConfigurationChangeItems",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "data_is",
            "in": "query"
          },
          {
            "enum": [
              "version_release",
              "template_default_case_binding",
              "default_component_config"
            ],
            "type": "string",
            "x-enum-varnames": [
              "DefaultConfigurationChangeItemTypeVersionRelease",
              "DefaultConfigurationChangeItemTypeTemplateDefaultCaseBinding",
              "DefaultConfigurationChangeItemTypeDefaultComponentConfig"
            ],
            "name": "type_is",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListDefaultConfigurationChangeItemsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}/items/batchUpdate": {
      "post": {
        "description": "batch update change items",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerBatchUpdateDefaultConfigurationChangeItems",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.BatchUpdateDefaultConfigurationChangeItemsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}/items/stat": {
      "get": {
        "description": "stat change items",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerStatDefaultConfigurationChangeItems",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "name": "config_types_of_template_default_case_binding",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.StatDefaultConfigurationChangeItemsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}/items/unreleased": {
      "get": {
        "description": "list unreleased change items",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListUnreleasedDefaultConfigurationChangeItems",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "environment_is",
            "in": "query",
            "required": true
          },
          {
            "enum": [
              "version_release",
              "template_default_case_binding",
              "default_component_config"
            ],
            "type": "string",
            "x-enum-varnames": [
              "DefaultConfigurationChangeItemTypeVersionRelease",
              "DefaultConfigurationChangeItemTypeTemplateDefaultCaseBinding",
              "DefaultConfigurationChangeItemTypeDefaultComponentConfig"
            ],
            "name": "type_is",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListUnreleasedDefaultConfigurationChangeItemsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}/releases": {
      "get": {
        "description": "list change releases",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListDefaultConfigurationChangeReleases",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "environment_is",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListDefaultConfigurationChangeReleasesResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "release a change to a environment",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCreateDefaultConfigurationChangeRelease",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateDefaultConfigurationChangeReleaseReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}/releases/rollback": {
      "post": {
        "description": "rollback a change to a environment",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerRollbackDefaultConfigurationChangeRelease",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/cloudconfig.RollbackDefaultConfigurationChangeReleaseReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}/releases/{release_id}": {
      "get": {
        "description": "list change releases",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetDefaultConfigurationChangeRelease",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "release id",
            "name": "release_id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "name": "with_released_items",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.GetDefaultConfigurationChangeRelease"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}/releases/{release_id}/cancel": {
      "post": {
        "description": "cancel a release",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCancelDefaultConfigurationChangeRelease",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "release id",
            "name": "release_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/changes/{change_id}/releases/{release_id}/items": {
      "get": {
        "description": "list change item releases",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListDefaultConfigurationChangeItemRelease",
        "parameters": [
          {
            "type": "string",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "release id",
            "name": "release_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListDefaultConfigurationChangeItemReleaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/components": {
      "patch": {
        "description": "update default components",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerUpdateDefaultComponents",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/components/change": {
      "post": {
        "description": "create default components",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerChangeDefaultComponents",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.ChangeDefaultComponentsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateDefaultConfigurationChangeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/template-bindings": {
      "get": {
        "description": "list template default cases",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListTemplateDefaultCaseBindings",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "config_type_is",
            "in": "query"
          },
          {
            "type": "string",
            "name": "default_for_cloud_provider",
            "in": "query"
          },
          {
            "type": "string",
            "name": "default_for_instance_type",
            "in": "query"
          },
          {
            "type": "string",
            "name": "default_for_tenant_id",
            "in": "query"
          },
          {
            "type": "string",
            "name": "default_for_version",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "exact_match",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListTemplateDefaultCaseBindingsResp"
            }
          }
        }
      },
      "patch": {
        "description": "update template default cases",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerUpdateTemplateDefaultCaseBindings",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.UpdateTemplateDefaultCaseBindingsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/template-bindings/change": {
      "post": {
        "description": "create a template change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerChangeTemplateDefaultCaseBindings",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.ChangeTemplateDefaultCaseBindingsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateDefaultConfigurationChangeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/template-bindings/delete-by-op": {
      "post": {
        "description": "delete a template change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerDeleteTemplateDefaultCaseBindingByOp",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.DeleteTemplateDefaultCaseBindingByOpReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.DeleteTemplateDefaultCaseBindingResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/template-bindings/update-by-op": {
      "post": {
        "description": "create a template change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerUpdateTemplateDefaultCaseBindingByOp",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.UpdateTemplateDefaultCaseBindingByOpReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.UpdateTemplateDefaultCaseBindingResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/versions/defaultrules": {
      "get": {
        "description": "List rules for choose default version",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListDefaultVersionRules",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "component",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListDefaultVersionRulesResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/versions/import": {
      "post": {
        "description": "Import versions from gitops",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerImportVersions",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.ImportVersionsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ImportVersionsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/default-config/versions/release": {
      "post": {
        "description": "release a version",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerReleaseVersion",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.ReleaseVersionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateDefaultConfigurationChangeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/defaultversion/dm/{version}": {
      "post": {
        "description": "update default dm version",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerUpdateDefaultDmVersion",
        "parameters": [
          {
            "type": "string",
            "description": "version",
            "name": "version",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.UpdateDefaultClusterVersionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.UpdateDefaultClusterVersionResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/instance-types/{cluster_type}": {
      "get": {
        "description": "list available instance types",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListInstanceTypes",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "description": "cluster_type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "version",
            "name": "version",
            "in": "query"
          },
          {
            "type": "string",
            "description": "config_type",
            "name": "config_type",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListInstanceTypesResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/meta_profile": {
      "get": {
        "description": "list meta profiles",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListMetaProfiles",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "maximum": 500,
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "profile_name",
            "in": "query"
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListMetaProfilesResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create a meta profile",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCreateMetaProfile",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateMetaProfileReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.OperationResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/meta_profile/{profile_id}": {
      "get": {
        "description": "get the meta profile by id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetMetaProfile",
        "parameters": [
          {
            "type": "string",
            "description": "profile id",
            "name": "profile_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster type",
            "name": "cluster_type",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.MetaProfile"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/parameter/attribute/{configtype}/{version}": {
      "get": {
        "description": "list parameter attributes",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListParameterAttributes",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "description": "cluster_type",
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "configtype",
            "name": "configtype",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "version",
            "name": "version",
            "in": "path",
            "required": true
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "name_in",
            "in": "query"
          },
          {
            "type": "string",
            "name": "name_like",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListParamAttrResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/parameter/attribute/{configtype}/{version}/{param_name}": {
      "get": {
        "description": "get a parameter attribute",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetParameterAttribute",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "description": "cluster_type",
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "configtype",
            "name": "configtype",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "version",
            "name": "version",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "param_name",
            "name": "param_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.GetParamAttrResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/parameter/versions": {
      "get": {
        "description": "list available versions from dict",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListParameterVersions",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "description": "cluster_type",
            "name": "cluster_type",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListParamVersionsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/template/changes": {
      "get": {
        "description": "list config template changes",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListConfigurationTemplateChange",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "have_modified_param_like",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "id_only",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "enum": ["unspecified", "custom", "custom_part", "tenant_default"],
            "type": "string",
            "x-enum-comments": {
              "TemplateTypeCustomPart": "internal use only"
            },
            "x-enum-varnames": [
              "TemplateTypeUnspecified",
              "TemplateTypeCustom",
              "TemplateTypeCustomPart",
              "TemplateTypeTenantDefault"
            ],
            "name": "template_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "Own Tenant ID, only for TemplateTypeTenantDefault",
            "name": "tenant_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListConfigurationChangeResp"
            }
          }
        }
      },
      "post": {
        "description": "update configuration template",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCreateConfigurationTemplateChange",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateConfigurationTemplateChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateConfigurationChangeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/template/templates": {
      "get": {
        "description": "list templates",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListTemplates",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "id_in",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "name_in",
            "in": "query"
          },
          {
            "type": "string",
            "name": "template_type",
            "in": "query"
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query"
          },
          {
            "type": "string",
            "name": "version",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListTemplatesResp"
            }
          }
        }
      },
      "post": {
        "description": "create a template",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCreateTemplate",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateTemplateReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateTemplateResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/template/templates/{template_id}": {
      "get": {
        "description": "get a template",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetTemplate",
        "parameters": [
          {
            "type": "string",
            "description": "template_id",
            "name": "template_id",
            "in": "path",
            "required": true
          },
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "boolean",
            "name": "with_default_cases",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.GetTemplateResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/template/templates/{template_id}/diff": {
      "get": {
        "description": "diff a template",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerDiffTemplate",
        "parameters": [
          {
            "type": "string",
            "description": "template_id",
            "name": "template_id",
            "in": "path",
            "required": true
          },
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "template_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.DiffTemplateResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/tenantinit/changes": {
      "get": {
        "description": "list config changes",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListTenantInitConfigurationChanges",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "have_modified_param_like",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "id_only",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListConfigurationChangeResp"
            }
          }
        }
      },
      "post": {
        "description": "change a tenant init configuration",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerCreateTenantInitConfigurationChange",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateTenantInitConfigurationChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.CreateConfigurationChangeResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/tenantinit/changes/preview": {
      "post": {
        "description": "change the configuration of a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerPreviewTenantInitConfigurationChange",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.PreviewTenantInitConfigurationChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.PreviewConfigurationChangeResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/tenantinit/config": {
      "get": {
        "description": "get a tenant init config",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetTenantInitConfiguration",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.GetConfigurationResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/tenantinit/images": {
      "get": {
        "description": "get a tenant init images",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetTenantInitImages",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.TenantImages"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/versions/cluster/{cluster_type}": {
      "get": {
        "description": "list available cluster versions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListAvailableClusterVersions",
        "parameters": [
          {
            "type": "string",
            "description": "cluster_type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListAvailableClusterVersionsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/versions/cluster/{cluster_type}/{version}": {
      "patch": {
        "description": "update a version",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerUpdateVersion",
        "parameters": [
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "description": "cluster_type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "version",
            "name": "version",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.UpdateDefaultClusterVersionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.UpdateDefaultClusterVersionResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/versions/component/{component}": {
      "get": {
        "description": "list available component versions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListAvailableComponentVersions",
        "parameters": [
          {
            "type": "string",
            "description": "component",
            "name": "component",
            "in": "path",
            "required": true
          },
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "description": "cluster_type, default is DEDICATED_TIDB",
            "name": "cluster_type",
            "in": "query"
          },
          {
            "type": "string",
            "description": "tenant_id, optional",
            "name": "tenant_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListAvailableComponentVersionsResp"
            }
          }
        }
      },
      "post": {
        "description": "update component's image only for ng",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerUpdateComponentImage",
        "parameters": [
          {
            "type": "string",
            "description": "component",
            "name": "component",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.UpdateComponentImageReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.OperationResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cloudconfig/versions/component/{component}/update-records": {
      "get": {
        "description": "list component image update operation records",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListComponentImageUpdateRecords",
        "parameters": [
          {
            "type": "string",
            "description": "component",
            "name": "component",
            "in": "path",
            "required": true
          },
          {
            "enum": [
              "",
              "DEDICATED_TIDB",
              "TICDC",
              "CHANGEFEED",
              "SHARED_POOL",
              "LOGICAL_CLUSTER",
              "TICDC_NG",
              "CHANGEFEED_NG",
              "CHANGEFEED_ESSENTIAL"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ClusterTypeUnknown",
              "ClusterTypeDedicatedTiDB",
              "ClusterTypeTiCDC",
              "ClusterTypeChangefeed",
              "ClusterTypeSharedPool",
              "ClusterTypeLogicalCluster",
              "ClusterTypeTiCDCNG",
              "ClusterTypeChangefeedNG",
              "ClusterTypeChangefeedEssential"
            ],
            "name": "cluster_type",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListComponentImageUpdateRecordsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/dedicatedK8sResources": {
      "post": {
        "description": "list dedicated k8s resources via regional-server",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListDedicatedK8sResources",
        "parameters": [
          {
            "type": "string",
            "description": "Dedicated logical region name (e.g. us-west-2); required with cloud_provider",
            "name": "region",
            "in": "query"
          },
          {
            "type": "string",
            "description": "cloud provider (e.g. aws); required with region",
            "name": "cloud_provider",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Dedicated cluster id; alternative to region/cloud_provider",
            "name": "cluster_id",
            "in": "query"
          },
          {
            "description": "same as regional-server ListK8sResourcesRequest",
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8sresource.ListDedicatedK8sResourcesBody"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8sresource.ListDedicatedK8sResourcesResp"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sInfos": {
      "get": {
        "description": "list k8s infra information",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListK8SInformation",
        "parameters": [
          {
            "enum": ["aws", "gcp"],
            "type": "string",
            "name": "cloud_provider",
            "in": "query"
          },
          {
            "type": "string",
            "name": "version",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.ListK8SInformationResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sInfos/{cloud_provider}/{region}/{k8s_name}": {
      "get": {
        "description": "get specific k8s infra information",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetK8SInformation",
        "parameters": [
          {
            "type": "string",
            "description": "cloud provider",
            "name": "cloud_provider",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "region",
            "name": "region",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "k8s name",
            "name": "k8s_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.GetK8SInformationResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeAdmin": {
      "get": {
        "description": "check whether the current user is a k8s upgrade admin",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetK8sUpgradeAdmin",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.GetK8sUpgradeAdminResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeSupportedVersions": {
      "get": {
        "description": "list supported k8s upgrade target versions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListK8sUpgradeSupportedVersions",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.ListK8sUpgradeSupportedVersionsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeTasks": {
      "get": {
        "description": "list k8s upgrade tasks",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListK8sUpgradeTasks",
        "parameters": [
          {
            "type": "array",
            "items": {
              "enum": ["aws", "gcp"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "cloud_provider",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "eos_version",
            "in": "query"
          },
          {
            "enum": ["asc", "desc"],
            "type": "string",
            "x-enum-varnames": ["OrderTypeASC", "OrderTypeDESC"],
            "name": "order",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "search",
            "in": "query"
          },
          {
            "enum": ["created_at", "timezone"],
            "type": "string",
            "x-enum-varnames": ["SortByTypeCreatedAt", "SortByTypeTimezone"],
            "name": "sort_by",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": [
                "pending",
                "reviewing",
                "running",
                "cancelled",
                "completed"
              ],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "status",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.ListTasksResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create a k8s upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "CreateK8sUpgradeTask",
        "parameters": [
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8supgrade.CreateTaskReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.CreateTaskResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeTasks/{task_id}": {
      "get": {
        "description": "get specific k8s upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetK8sUpgradeTask",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "description": "whether to include excluded k8s clusters in the response (default true)",
            "name": "with_excluded_k8s_clusters",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.GetTaskResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "put": {
        "description": "update a k8s upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "UpdateK8sUpgradeTask",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8supgrade.UpdateTaskReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete a k8s upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "DeleteK8sUpgradeTask",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeTasks/{task_id}/close": {
      "post": {
        "description": "close a k8s upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "CloseK8sUpgradeTask",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8supgrade.CloseTaskReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeTasks/{task_id}/notice": {
      "get": {
        "description": "get rendered notice content for a k8s upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetK8sUpgradeTaskNotice",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "page URL used when rendering notice template placeholders",
            "name": "page_url",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.RenderedNoticeResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "put": {
        "description": "update notice template (title and content) for a k8s upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "UpdateK8sUpgradeTaskNotice",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "description": "notice template",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8supgrade.NoticeTemplateReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeTasks/{task_id}/notify": {
      "post": {
        "description": "Notify Sales Owner / TAM for matching clusters in an upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Cluster"],
        "operationId": "NotifyK8sUpgradeTask",
        "parameters": [
          {
            "type": "integer",
            "description": "Task ID",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8supgrade.NotifyReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeTasks/{task_id}/submit": {
      "post": {
        "description": "submit a k8s upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "SubmitK8sUpgradeTask",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeTasks/{task_id}/{k8s_name}": {
      "get": {
        "description": "get specific k8s cluster of an upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetK8sUpgradeTaskCluster",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "k8s name",
            "name": "k8s_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.GetTaskK8sClusterResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "put": {
        "description": "update specific k8s cluster of an upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "UpdateK8sUpgradeTaskCluster",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "k8s name",
            "name": "k8s_name",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8supgrade.UpdateTaskK8sClusterReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.UpdateTaskK8sClusterResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeTasks/{task_id}/{k8s_name}/autoGeneration": {
      "put": {
        "description": "update the DisableAutoGeneration field of a specific k8s cluster of an upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "UpdateK8sUpgradeTaskClusterAutoGeneration",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "k8s name",
            "name": "k8s_name",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8supgrade.UpdateK8sUpgradeTaskClusterAutoGenerationReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.UpdateK8sUpgradeTaskClusterAutoGenerationResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeTasks/{task_id}/{k8s_name}/cancel": {
      "put": {
        "description": "cancel the upgrade of a specific k8s cluster for a running task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "CancelUpgradeK8sCluster",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "k8s name",
            "name": "k8s_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.CancelUpgradeK8sClusterResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/k8sUpgradeTasks/{task_id}/{k8s_name}/exclude": {
      "put": {
        "description": "exclude a specific k8s cluster of an upgrade task",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ExcludeK8sUpgradeTaskCluster",
        "parameters": [
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "k8s name",
            "name": "k8s_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgrade.ExcludeK8sUpgradeTaskClusterResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances": {
      "get": {
        "description": "list maintenances",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListMaintenances",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "project_ids",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": ["Pending", "Running", "Closed"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "statues",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ListMaintenancesResp"
            }
          }
        }
      },
      "post": {
        "description": "create a maintenances",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "CreateMaintenance",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/cluster.CreateMaintenanceReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.CreateMaintenanceResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances/{maintenance_id}": {
      "get": {
        "description": "get a maintenances",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetMaintenance",
        "parameters": [
          {
            "type": "integer",
            "description": "maintenance id",
            "name": "maintenance_id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "name": "with_executions",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetMaintenanceResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances/{maintenance_id}/close": {
      "post": {
        "description": "close a maintenances",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "CloseMaintenance",
        "parameters": [
          {
            "type": "integer",
            "description": "maintenance id",
            "name": "maintenance_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances/{maintenance_id}/executions/{execution_id}/cancel": {
      "post": {
        "description": "cancel a maintenance executions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "CancelMaintenanceExecution",
        "parameters": [
          {
            "type": "integer",
            "description": "maintenance id",
            "name": "maintenance_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "execution id",
            "name": "execution_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances/{maintenance_id}/executions/{execution_id}/finish": {
      "post": {
        "description": "finish a maintenance executions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "FinishMaintenanceExecution",
        "parameters": [
          {
            "type": "integer",
            "description": "maintenance id",
            "name": "maintenance_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "execution id",
            "name": "execution_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances/{maintenance_id}/executions/{execution_id}/start": {
      "post": {
        "description": "start a maintenance executions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "StartMaintenanceExecution",
        "parameters": [
          {
            "type": "integer",
            "description": "maintenance id",
            "name": "maintenance_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "execution id",
            "name": "execution_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/migration/dedicate2premium/prechecks": {
      "get": {
        "description": "list dedicated to premium migration prechecks",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListDedicatedToPremiumPrechecks",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "source_cluster_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ListDedicatedToPremiumPrechecksResp"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create a dedicated to premium migration precheck",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "CreateDedicatedToPremiumPrecheck",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.CreateDedicatedToPremiumPrecheckReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.DedicatedToPremiumPrecheckResp"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/migration/dedicate2premium/prechecks/{precheck_id}": {
      "get": {
        "description": "get a dedicated to premium migration precheck",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetDedicatedToPremiumPrecheck",
        "parameters": [
          {
            "type": "string",
            "description": "precheck id",
            "name": "precheck_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.DedicatedToPremiumPrecheckResp"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/ops-maintenance-windows": {
      "get": {
        "description": "list cluster ops maintenance windows",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceListClusterOpsMaintenanceWindows",
        "parameters": [
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "cluster_ids",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ListClusterOpsMaintenanceWindowsResp"
            }
          }
        }
      },
      "post": {
        "description": "create a cluster ops maintenance window",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceCreateClusterOpsMaintenanceWindow",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.CreateClusterOpsMaintenanceWindowReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.CreateClusterOpsMaintenanceWindowResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/ops-maintenance-windows/{cluster_id}": {
      "get": {
        "description": "get a cluster ops maintenance window by cluster id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceGetClusterOpsMaintenanceWindow",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetClusterOpsMaintenanceWindowResp"
            }
          }
        }
      },
      "put": {
        "description": "update a cluster ops maintenance window",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceUpdateClusterOpsMaintenanceWindow",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.UpdateClusterOpsMaintenanceWindowReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.UpdateClusterOpsMaintenanceWindowResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete a cluster ops maintenance window",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceDeleteClusterOpsMaintenanceWindow",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/ops-maintenance-windows/{cluster_id}/check": {
      "get": {
        "description": "get a cluster ops maintenance window by cluster id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceIsInClusterOpsMaintenanceWindow",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "collectionFormat": "csv",
            "description": "ExecuteTimes are execute times as Unix timestamps in seconds. It supports repeated query keys and comma-separated values. If omitted, current server time is used.",
            "name": "execute_times",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.IsInClusterOpsMaintenanceWindowResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/resource-pools": {
      "get": {
        "description": "list resource pools",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListResourcePools",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "pagesize",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "resource_pool_id",
            "in": "query"
          },
          {
            "enum": ["BASIC", "DETAIL"],
            "type": "string",
            "name": "view",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ListClustersResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/resource-pools/{resource_pool_id}": {
      "get": {
        "description": "get resource pool",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetResourcePool",
        "parameters": [
          {
            "type": "string",
            "description": "resource_pool_id",
            "name": "resource_pool_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetClusterResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/shared-resource-pools": {
      "get": {
        "description": "list shared resource pools",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListSharedResourcePools",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "pagesize",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "resource_pool_id",
            "in": "query"
          },
          {
            "type": "string",
            "name": "service_plan",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ListClustersResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/shared-resource-pools/{resource_pool_id}": {
      "get": {
        "description": "get shared resource pool",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetSharedResourcePool",
        "parameters": [
          {
            "type": "string",
            "description": "resource_pool_id",
            "name": "resource_pool_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetClusterResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/traffic/replays": {
      "get": {
        "description": "list replays",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceListTrafficReplays",
        "parameters": [
          {
            "type": "string",
            "name": "cluster_id",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ListTrafficReplaysResponse"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create a replay",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceCreateTrafficReplay",
        "parameters": [
          {
            "description": "CreateReplayRequest",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.CreateTrafficReplayRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.CreateTrafficReplayResponse"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/traffic/replays/{replay_id}": {
      "get": {
        "description": "get a replay",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceGetTrafficReplay",
        "parameters": [
          {
            "type": "string",
            "description": "replay id",
            "name": "replay_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "cluster_id",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetTrafficReplayResponse"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "put": {
        "description": "update a replay",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceUpdateTrafficReplay",
        "parameters": [
          {
            "type": "string",
            "description": "replay id",
            "name": "replay_id",
            "in": "path",
            "required": true
          },
          {
            "description": "UpdateReplayRequest",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.UpdateTrafficReplayRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.UpdateTrafficReplayResponse"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete a replay",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceDeleteTrafficReplay",
        "parameters": [
          {
            "type": "string",
            "description": "replay id",
            "name": "replay_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "cluster_id",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.DeleteTrafficReplayResponse"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/traffic/replays/{replay_id}/start": {
      "post": {
        "description": "start a replay",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceStartTrafficReplay",
        "parameters": [
          {
            "type": "string",
            "description": "replay id",
            "name": "replay_id",
            "in": "path",
            "required": true
          },
          {
            "description": "StartReplayRequest",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.StartTrafficReplayRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.StartTrafficReplayResponse"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/traffic/replays/{replay_id}/stop": {
      "post": {
        "description": "stop a replay",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceStopTrafficReplay",
        "parameters": [
          {
            "type": "string",
            "description": "replay id",
            "name": "replay_id",
            "in": "path",
            "required": true
          },
          {
            "description": "StopReplayRequest",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.StopTrafficReplayRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.StopTrafficReplayResponse"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters": {
      "get": {
        "description": "list cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListClusters",
        "parameters": [
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "cluster_id",
            "in": "query"
          },
          {
            "type": "string",
            "name": "deploy_type",
            "in": "query"
          },
          {
            "type": "boolean",
            "description": "List Resource Pools instead of custom clusters",
            "name": "is_resource_pool",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "project_id",
            "in": "query"
          },
          {
            "type": "string",
            "name": "service_plan",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "tenant_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ListClustersResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/k8s-resources": {
      "get": {
        "description": "list k8s resources",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListK8SResources",
        "parameters": [
          {
            "type": "string",
            "name": "begin_time",
            "in": "query"
          },
          {
            "type": "string",
            "name": "cluster_id",
            "in": "query"
          },
          {
            "type": "string",
            "name": "end_time",
            "in": "query"
          },
          {
            "type": "string",
            "name": "namespace",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "region",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8sresource.ListK8SResourcesResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}": {
      "get": {
        "description": "get cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetCluster",
        "parameters": [
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetClusterResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/alert-summary": {
      "get": {
        "description": "get alert summary",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetAlertSummary",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "name": "end_ts",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "start_ts",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetAlertSummaryResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/alerts": {
      "get": {
        "description": "list alerts",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListAlerts",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "name": "end_ts",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "page_size",
            "in": "query"
          },
          {
            "type": "string",
            "name": "page_token",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": ["Major", "Critical"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "priority",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "recovered",
            "in": "query"
          },
          {
            "type": "string",
            "name": "search",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "start_ts",
            "in": "query",
            "required": true
          },
          {
            "enum": ["internal", "external"],
            "type": "string",
            "name": "type",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ListAlertsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/cluster-resources": {
      "get": {
        "description": "list cluster resources",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListClusterResources",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8sresource.ListClusterResourcesResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/components": {
      "get": {
        "description": "get cluster components",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetClusterComponents",
        "parameters": [
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetClusterComponentsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/controlplane": {
      "get": {
        "description": "get controlplane k8s resource",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetControlplaneK8SResource",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "namespace",
            "in": "query"
          },
          {
            "type": "string",
            "name": "resource_kind",
            "in": "query"
          },
          {
            "type": "string",
            "name": "resource_name",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8sresource.GetK8SResourceResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/ctl": {
      "post": {
        "description": "execute ctl command on cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterController"],
        "operationId": "ClusterControllerExecCtl",
        "parameters": [
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.ExecCtlReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ExecCtlResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/dm-ns": {
      "get": {
        "description": "get cluster dm namespace info",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetDMNamespace",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetDMNamespaceResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/hetero-deploy/apply": {
      "post": {
        "description": "apply heterogeneous deploy for a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceApplyHeterogeneousDeploy",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.ApplyHeterogeneousDeployRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ApplyHeterogeneousDeployResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/hetero-deploy/delete": {
      "post": {
        "description": "delete heterogeneous deploy for a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceDeleteHeterogeneousDeploy",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.DeleteHeterogeneousDeployRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.DeleteHeterogeneousDeployResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/hetero-deploy/query": {
      "get": {
        "description": "get heterogeneous deploy for a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceGetHeterogeneousDeploy",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "enum": [
              "tikv",
              "tidb",
              "tiflash",
              "pd",
              "tiproxy",
              "ticdc",
              "cassandra"
            ],
            "type": "string",
            "x-enum-varnames": [
              "ComponentTypeTikv",
              "ComponentTypeTidb",
              "ComponentTypeTiflash",
              "ComponentTypePd",
              "ComponentTypeTiproxy",
              "ComponentTypeTicdc",
              "ComponentTypeCassandra"
            ],
            "name": "component_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "tidb_group_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetHeterogeneousDeployResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/iam-info": {
      "get": {
        "description": "get byoc cluster's cloud IAM info",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "GetCloudIAMInfo",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetCloudIAMInfoResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/migration/create-migration-cluster": {
      "post": {
        "description": "create a cluster for migration",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceCreateMigrationCluster",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.CreateMigrationClusterRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.CreateMigrationClusterResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/migration/migrate-privatelink": {
      "post": {
        "description": "migrate cluster private link",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ClusterServiceMigratePrivateLink",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.MigratePrivateLinkRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.MigratePrivateLinkResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/topology": {
      "get": {
        "description": "get cluster topology",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterController"],
        "operationId": "ClusterControllerGetTopology",
        "parameters": [
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.GetTopologyResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/vpc-peerings": {
      "get": {
        "description": "list vpc peerings",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "ListVPCPeerings",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.ListVPCPeeringsResp"
            }
          }
        }
      },
      "post": {
        "description": "create vpc peering",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "CreateVPCPeering",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "description": "CreateVPCPeeringReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.CreateVPCPeeringReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/clusters/{cluster_id}/vpc-peerings/{vpc_peering_id}": {
      "delete": {
        "description": "delete vpc peering",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ClusterService"],
        "operationId": "DeleteVPCPeering",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "vpc peering id",
            "name": "vpc_peering_id",
            "in": "path",
            "required": true
          },
          {
            "description": "DeleteVPCPeeringReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cluster.DeleteVPCPeeringReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cluster.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/configcenter/add": {
      "post": {
        "description": "Add Config Attribute for Some Version",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ConfigCenterService"],
        "operationId": "AddConfigAttribute",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/configcenter.AddAttributeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/configcenter/copy": {
      "post": {
        "description": "Copy All Config Attribute From Some Version",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ConfigCenterService"],
        "operationId": "CopyAttributeFromVersion",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/configcenter.CopyFromVersionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/configcenter/list": {
      "get": {
        "description": "List Config Attribute in Some Version",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ConfigCenterService"],
        "operationId": "ListConfigAttribute",
        "parameters": [
          {
            "type": "string",
            "name": "component",
            "in": "query"
          },
          {
            "type": "string",
            "name": "param_name",
            "in": "query"
          },
          {
            "type": "string",
            "name": "version",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/configcenter.ListAttributesResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/configcenter/modify": {
      "post": {
        "description": "Modify some attribute",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ConfigCenterService"],
        "operationId": "ModifyAttribute",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/configcenter.ModifyReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/controlplane/deployments": {
      "get": {
        "description": "list deployments",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DeploymentController"],
        "operationId": "DeploymentControllerListDeployments",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "phase",
            "in": "query"
          },
          {
            "type": "string",
            "name": "scenario",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/controlplane.ListDeploymentResp"
            }
          }
        }
      },
      "post": {
        "description": "create a new deployment",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DeploymentController"],
        "operationId": "DeploymentControllerCreateDeployment",
        "parameters": [
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controlplane.CreateDeploymentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/controlplane.CreateDeploymentResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/controlplane/deployments/{deployment_id}": {
      "get": {
        "description": "get a deployment",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DeploymentController"],
        "operationId": "DeploymentControllerGetDeployment",
        "parameters": [
          {
            "type": "integer",
            "description": "deployment id",
            "name": "deployment_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/controlplane.GetDeploymentResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/controlplane/deployments/{deployment_id}/apply": {
      "post": {
        "description": "start apply workflow for a deployment (after approval)",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DeploymentController"],
        "operationId": "DeploymentControllerStartApply",
        "parameters": [
          {
            "type": "integer",
            "description": "deployment id",
            "name": "deployment_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/controlplane/deployments/{deployment_id}/cancel": {
      "post": {
        "description": "cancel a deployment",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DeploymentController"],
        "operationId": "DeploymentControllerCancel",
        "parameters": [
          {
            "type": "integer",
            "description": "deployment id",
            "name": "deployment_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/controlplane/deployments/{deployment_id}/preview": {
      "post": {
        "description": "start preview workflow for a deployment",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DeploymentController"],
        "operationId": "DeploymentControllerStartPreview",
        "parameters": [
          {
            "type": "integer",
            "description": "deployment id",
            "name": "deployment_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/controlplane.StartPreviewResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/controlplane/deployments/{deployment_id}/retry": {
      "post": {
        "description": "retry a failed apply using the same frozen snapshot",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DeploymentController"],
        "operationId": "DeploymentControllerRetryApply",
        "parameters": [
          {
            "type": "integer",
            "description": "deployment id",
            "name": "deployment_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/cloud-oncall": {
      "get": {
        "description": "get cloud oncall info",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetCloudOncallInfo",
        "parameters": [
          {
            "type": "integer",
            "name": "endTs",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "startTs",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.CloudOncallInfoResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/critical-alert": {
      "get": {
        "description": "get critical alert info",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetCriticalAlertInfo",
        "parameters": [
          {
            "type": "integer",
            "name": "endTs",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "startTs",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.CriticalAlertInfoResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/incident": {
      "get": {
        "description": "get incident info",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetIncidentInfo",
        "parameters": [
          {
            "type": "integer",
            "name": "endTs",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "startTs",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.IncidentInfoResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/release": {
      "get": {
        "description": "get release info",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetReleaseInfo",
        "parameters": [
          {
            "type": "integer",
            "name": "endTs",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "startTs",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.ReleaseInfoResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/sla": {
      "get": {
        "description": "get sla info",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetSLAInfo",
        "parameters": [
          {
            "type": "integer",
            "name": "endTs",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "startTs",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.SLAInfoResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/sla-dedicated-detail": {
      "get": {
        "description": "get cluster detail of dedicated sla",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetClusterDetailOfDedicatedSLA",
        "parameters": [
          {
            "type": "string",
            "name": "clusterID",
            "in": "query",
            "required": true
          },
          {
            "type": "boolean",
            "name": "includeFake",
            "in": "query"
          },
          {
            "type": "string",
            "name": "month",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.GetClusterDetailOfDedicatedSLAResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/sla-dedicated-monthly": {
      "get": {
        "description": "get monthly summary of dedicated sla",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetMonthlySummaryOfDedicatedSLA",
        "parameters": [
          {
            "type": "boolean",
            "name": "includeDeleted",
            "in": "query"
          },
          {
            "type": "string",
            "name": "month",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "search",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": ["perfect", "warning", "breach"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "status",
            "in": "query"
          },
          {
            "enum": ["single", "multi"],
            "type": "string",
            "x-enum-varnames": ["TiDBInstanceSingle", "TiDBInstanceMulti"],
            "name": "tidbInstanceMode",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.GetMonthlySummaryOfDedicatedSLAResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/sla-next-gen-detail": {
      "get": {
        "description": "get cluster detail of next-gen sla",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetClusterDetailOfNextGenSLA",
        "parameters": [
          {
            "type": "string",
            "name": "clusterID",
            "in": "query",
            "required": true
          },
          {
            "type": "boolean",
            "name": "includeFake",
            "in": "query"
          },
          {
            "type": "string",
            "name": "month",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.GetClusterDetailOfNextGenSLAResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/sla-next-gen-monthly": {
      "get": {
        "description": "get monthly summary of next-gen sla",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetMonthlySummaryOfNextGenSLA",
        "parameters": [
          {
            "enum": ["premium", "byoc"],
            "type": "string",
            "name": "clusterDeployType",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "includeDeleted",
            "in": "query"
          },
          {
            "type": "string",
            "name": "month",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "search",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": ["perfect", "warning", "breach"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "status",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.GetMonthlySummaryOfNextGenSLAResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/slo": {
      "get": {
        "description": "get slo info",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetSLOInfo",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.SLOInfoResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/top-qps-tenants": {
      "get": {
        "description": "get top10 qps tenants",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetTop10QPSTenants",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.GetTop10QPSTenantsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/top-tiflash-storage-tenants": {
      "get": {
        "description": "get top10 tiflash storage tenants",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetTop10TiFlashStorageTenants",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.GetTop10TiFlashStorageTenantsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/dashboard/top-tikv-storage-tenants": {
      "get": {
        "description": "get top10 tikv storage tenants",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DashboardService"],
        "operationId": "GetTop10TiKVStorageTenants",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/dashboard.GetTop10TiKVStorageTenantsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/feature-wl": {
      "get": {
        "description": "list feature whitelists",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["FeatureWhitelistController"],
        "operationId": "FeatureWhitelistControllerListFeatureWhitelists",
        "parameters": [
          {
            "type": "string",
            "name": "name",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/feature_wl.ListFeatureWhitelistsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create feature whitelist",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["FeatureWhitelistController"],
        "operationId": "FeatureWhitelistControllerCreateFeatureWhitelist",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/feature_wl.FeatureWhitelistInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/feature-wl/{name}": {
      "put": {
        "description": "update feature whitelist",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["FeatureWhitelistController"],
        "operationId": "FeatureWhitelistControllerUpdateFeatureWhitelist",
        "parameters": [
          {
            "type": "string",
            "description": "feature name",
            "name": "name",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/feature_wl.FeatureWhitelistInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete feature whitelist",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["FeatureWhitelistController"],
        "operationId": "FeatureWhitelistControllerDeleteFeatureWhitelist",
        "parameters": [
          {
            "type": "string",
            "description": "feature name",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/pulls": {
      "get": {
        "description": "list pull requests.",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerListPullRequests",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "pr_locations",
            "in": "query"
          },
          {
            "type": "string",
            "name": "repo_location",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.ListPullRequestsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/pulls/{owner}/{repo}/{pr_number}": {
      "get": {
        "description": "get a pull request.",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerGetPullRequest",
        "parameters": [
          {
            "type": "string",
            "description": "owner name",
            "name": "owner",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "repo name",
            "name": "repo",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "pr number",
            "name": "pr_number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.GetPullRequestResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/raw/repos/{owner}/{repo}/labels": {
      "get": {
        "description": "list labels of a repo from github directly",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerRawListLabels",
        "parameters": [
          {
            "type": "string",
            "description": "owner name",
            "name": "owner",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "repo name",
            "name": "repo",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "cursor",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.RawListLabelsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/raw/repos/{owner}/{repo}/labels/{label_name}": {
      "get": {
        "description": "get a label from github directly",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerRawGetLabel",
        "parameters": [
          {
            "type": "string",
            "description": "owner name",
            "name": "owner",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "repo name",
            "name": "repo",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "label name",
            "name": "label_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.RawGetLabelResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/raw/repos/{owner}/{repo}/pulls": {
      "get": {
        "description": "list pull requests from github directly",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerRawListPullRequests",
        "parameters": [
          {
            "type": "string",
            "description": "owner name",
            "name": "owner",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "repo name",
            "name": "repo",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "cursor",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "labels",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.RawListPullRequestsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/raw/repos/{owner}/{repo}/pulls/{pr_number}": {
      "get": {
        "description": "get a pull request from github directly",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerRawGetPullRequest",
        "parameters": [
          {
            "type": "string",
            "description": "owner name",
            "name": "owner",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "repo name",
            "name": "repo",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "pr number",
            "name": "pr_number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.RawGetPullRequestResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/raw/repos/{owner}/{repo}/releases": {
      "get": {
        "description": "list releases from github directly",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerRawListReleases",
        "parameters": [
          {
            "type": "string",
            "description": "owner name",
            "name": "owner",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "repo name",
            "name": "repo",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "cursor",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.RawListReleasesResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/raw/repos/{owner}/{repo}/releases/diff": {
      "get": {
        "description": "get pull requests between two releases from github directly",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerRawDiffRelease",
        "parameters": [
          {
            "type": "string",
            "description": "owner name",
            "name": "owner",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "repo name",
            "name": "repo",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "prev",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "target",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.RawDiffReleaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/raw/repos/{owner}/{repo}/releases/{release_tag}": {
      "get": {
        "description": "get a release from github directly",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerRawGetRelease",
        "parameters": [
          {
            "type": "string",
            "description": "owner name",
            "name": "owner",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "repo name",
            "name": "repo",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "the tag name",
            "name": "release_tag",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.RawGetReleaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/repos": {
      "get": {
        "description": "list repositories of an org",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerListRepositories",
        "parameters": [
          {
            "type": "string",
            "name": "location_like",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "owners",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.ListRepositoriesResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/github/repos/{owner}/{repo}": {
      "get": {
        "description": "get a repo",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["GithubController"],
        "operationId": "GithubControllerGetRepo",
        "parameters": [
          {
            "type": "string",
            "description": "owner name",
            "name": "owner",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "repo name",
            "name": "repo",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/github.GetRepositoryResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents": {
      "get": {
        "description": "list incidents",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "ListIncidents",
        "parameters": [
          {
            "type": "integer",
            "description": "page number",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "war room ID",
            "name": "war_room_id",
            "in": "query"
          },
          {
            "enum": ["running", "completed"],
            "type": "string",
            "description": "incident status",
            "name": "status",
            "in": "query"
          },
          {
            "enum": ["t0", "t1", "t2", "t3", "t4"],
            "type": "string",
            "description": "incident tier",
            "name": "tier",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi",
            "description": "components that every incident must contain",
            "name": "components",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi",
            "description": "business regions that every incident must contain",
            "name": "biz_regions",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.ListIncidentsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create Incident",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "CreateIncident",
        "parameters": [
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/incident.CreateIncidentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.CreateIncidentResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/component_options": {
      "get": {
        "description": "get incident component options",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "GetIncidentComponentOptions",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.GetIncidentComponentOptionsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}": {
      "get": {
        "description": "get incident",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "GetIncident",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/entity.Incident"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "put": {
        "description": "update incident",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "UpdateIncident",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/incident.UpdateIncidentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.UpdateIncidentResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete incident",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "DeleteIncident",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.DeleteIncidentResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/log/{log_item_id}": {
      "put": {
        "description": "update incident log item",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "UpdateIncidentLogItem",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "log item id",
            "name": "log_item_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/entity.IncidentLogItem"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.EmptyResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/logs": {
      "get": {
        "description": "list incident logs",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "ListIncidentLogs",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.ListIncidentLogsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create Incident log item",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "CreateIncidentLogItem",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/entity.IncidentLogItem"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.EmptyResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/logs/{log_item_id}": {
      "get": {
        "description": "get incident log item",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "GetIncidentLogItem",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "log item id",
            "name": "log_item_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/entity.IncidentLogItem"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete incident log item",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "DeleteIncidentLogItem",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "log item id",
            "name": "log_item_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.DeleteIncidentLogItemResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/postmortem/todoactions/import": {
      "post": {
        "description": "import todo actions from the incident's existing postmortem Feishu document",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "ImportIncidentPostMortemToDoActions",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "description": "force import even when todo actions already exist",
            "name": "force",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.ImportIncidentPostMortemToDoActionsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/postmortems": {
      "get": {
        "description": "list incident postmortem items",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "ListIncidentPostMortemItems",
        "parameters": [
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "incident_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.ListIncidentPostMortemItemsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create incident postmortem",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "CreateIncidentPostMortem",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "description": "CreateIncidentPostMortemReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/incident.CreateIncidentPostMortemReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.CreateIncidentPostMortemResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/postmortems/{postmortem_id}": {
      "get": {
        "description": "get incident postmortem",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "GetIncidentPostMortem",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.GetIncidentPostMortemResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "update incident postmortem",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "UpdateIncidentPostMortem",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          },
          {
            "description": "UpdateIncidentPostMortemReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/incident.UpdateIncidentPostMortemReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.UpdateIncidentPostMortemResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete incident postmortem",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "DeleteIncidentPostMortem",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.DeleteIncidentPostMortemResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/postmortems/{postmortem_id}/timelines": {
      "get": {
        "description": "list incident postmortem timelines",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "ListIncidentPostMortemTimelines",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.ListIncidentPostMortemTimelinesResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create incident postmortem timeline",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "CreateIncidentPostMortemTimeline",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          },
          {
            "description": "CreateIncidentPostMortemTimelineReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/incident.CreateIncidentPostMortemTimelineReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.CreateIncidentPostMortemTimelineResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/postmortems/{postmortem_id}/timelines/{timeline_id}": {
      "get": {
        "description": "get incident postmortem timeline",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "GetIncidentPostMortemTimeline",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "timeline id",
            "name": "timeline_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.GetIncidentPostMortemTimelineResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "update incident postmortem timeline",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "UpdateIncidentPostMortemTimeline",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "action id",
            "name": "timeline_id",
            "in": "path",
            "required": true
          },
          {
            "description": "UpdateIncidentPostMortemTimelineReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/incident.UpdateIncidentPostMortemTimelineReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.UpdateIncidentPostMortemTimelineResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete incident postmortem timeline",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "DeleteIncidentPostMortemTimeline",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "timeline id",
            "name": "timeline_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.DeleteIncidentPostMortemTimelineResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/postmortems/{postmortem_id}/todoactions": {
      "get": {
        "description": "list incident postmortem todo actions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "ListIncidentPostMortemToDoActions",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.ListIncidentPostMortemToDoActionsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create incident postmortem todo action",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "CreateIncidentPostMortemToDoAction",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          },
          {
            "description": "CreateIncidentPostMortemToDoActionReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/incident.CreateIncidentPostMortemToDoActionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.CreateIncidentPostMortemToDoActionResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/postmortems/{postmortem_id}/todoactions/sync": {
      "post": {
        "description": "sync incident postmortem todo action status from TCOCP",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "SyncIncidentPostMortemToDoActionStatus",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/postmortems/{postmortem_id}/todoactions/{action_id}": {
      "get": {
        "description": "get incident postmortem todo action",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "GetIncidentPostMortemToDoAction",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "action id",
            "name": "action_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.GetIncidentPostMortemToDoActionResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "update incident postmortem todo action",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "UpdateIncidentPostMortemToDoAction",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "action id",
            "name": "action_id",
            "in": "path",
            "required": true
          },
          {
            "description": "UpdateIncidentPostMortemToDoActionReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/incident.UpdateIncidentPostMortemToDoActionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.UpdateIncidentPostMortemToDoActionResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete incident postmortem todo action",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["IncidentService"],
        "operationId": "DeleteIncidentPostMortemToDoAction",
        "parameters": [
          {
            "type": "integer",
            "description": "incident id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "postmortem id",
            "name": "postmortem_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "action id",
            "name": "action_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/incident.DeleteIncidentPostMortemToDoActionResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jira/issue/jira_issues": {
      "get": {
        "description": "list issues from jira",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerListIssuesFromJira",
        "parameters": [
          {
            "type": "string",
            "name": "jql",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "page_token",
            "in": "query"
          },
          {
            "type": "integer",
            "default": 50,
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "boolean",
            "default": false,
            "name": "with_comment",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jira.ListIssuesFromJiraResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/jira/issue/jira_issues/{key}": {
      "get": {
        "description": "get issue from jira",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerGetIssueFromJira",
        "parameters": [
          {
            "type": "string",
            "description": "issue key",
            "name": "key",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "default": false,
            "name": "with_comments",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jira.GetIssueFromJiraResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/jira/issue/repo_issues": {
      "post": {
        "description": "store issue into local repo by key",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerSyncIssueSnapshotByKey",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jira.SyncIssueSnapshotByKeyRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jira.SyncIssueSnapshotByKeyResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/jira/issue/repo_issues/batch": {
      "post": {
        "description": "store issues into local repo by JQL",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerSyncIssueSnapshotByJQL",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jira.SyncIssueSnapshotByJQLRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jira.SyncIssueSnapshotByJQLResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/jira/issue/repo_issues/timeline_summary": {
      "post": {
        "description": "set issue timeline summary",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerSetTimelineSummary",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jira.SetIssueTimelineSummaryRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jira/issue/repo_issues/triage": {
      "post": {
        "description": "upsert issue triage",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerUpsertIssueTriage",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jira.UpsertIssueTriageRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jira/issue/repo_issues/triage/tag_definitions": {
      "get": {
        "description": "list issue triage tags",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerListIssueTriageTags",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jira.ListIssueTriageTagDefinitionsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jira.ListIssueTriageTagDefinitionsResponse"
            }
          }
        }
      },
      "post": {
        "description": "create a issue triage tag",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerCreateIssueTriageTagDefinition",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jira.CreateIssueTriageTagDefinitionRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jira.CreateIssueTriageTagDefinitionResponse"
            }
          }
        }
      },
      "delete": {
        "description": "delete a issue triage tag",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerDeleteIssueTriageTagDefinition",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jira.DeleteIssueTriageTagDefinitionRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jira/issue/unified_issues": {
      "get": {
        "description": "list issues from local repo",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerListUnifiedIssues",
        "parameters": [
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "cluster_id_in",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "component_in",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "created_after",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "created_before",
            "in": "query"
          },
          {
            "type": "string",
            "name": "customer_env_is",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "have_timeline_summary",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "have_triage",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "issue_key_in",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "project_in",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "status_in",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "tenant_id_in",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "with_jira",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "with_jira_comments",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "with_timeline_summary",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "with_triage",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jira.ListUnifiedIssuesResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/jira/issue/unified_issues/search": {
      "post": {
        "description": "list issues from local repo",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerListUnifiedIssuesAdvanced",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/jira.ListUnifiedIssuesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jira.ListUnifiedIssuesResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/jira/issue/unified_issues/{key}": {
      "get": {
        "description": "get issue from local repo by key",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JiraController"],
        "operationId": "JiraControllerGetUnifiedIssue",
        "parameters": [
          {
            "type": "string",
            "description": "issue key",
            "name": "key",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "default": false,
            "name": "with_timeline_summary",
            "in": "query"
          },
          {
            "type": "boolean",
            "default": false,
            "name": "with_triage",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jira.GetUnifiedIssueResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/jump-admin/invite-user": {
      "post": {
        "description": "init a user",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JumpController"],
        "operationId": "JumpControllerInviteUser",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jump.InviteUserReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jump.InviteUserResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jump/authorizations": {
      "get": {
        "description": "list authorizations",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JumpController"],
        "operationId": "JumpControllerListAuthorizations",
        "parameters": [
          {
            "type": "string",
            "name": "applicant",
            "in": "query"
          },
          {
            "type": "string",
            "name": "destination_id_like",
            "in": "query"
          },
          {
            "enum": [
              "unspecified",
              "controlplane",
              "dedicated",
              "serverless",
              "byoc",
              "premium",
              "premium_resource_pool"
            ],
            "type": "string",
            "x-enum-varnames": [
              "DestinationTypeUnspecified",
              "DestinationTypeControlPlane",
              "DestinationTypeDedicated",
              "DestinationTypeServerless",
              "DestinationTypeByoc",
              "DestinationTypePremium",
              "DestinationTypePremiumResourcePool"
            ],
            "name": "destination_type_is",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "enum": [
              "initialized",
              "approving",
              "creating",
              "created",
              "expired",
              "notapproved",
              "canceled"
            ],
            "type": "string",
            "x-enum-varnames": [
              "AuthorizationPhaseInitialized",
              "AuthorizationPhaseApproving",
              "AuthorizationPhaseCreating",
              "AuthorizationPhaseCreated",
              "AuthorizationPhaseExpired",
              "AuthorizationPhaseNotApproved",
              "AuthorizationPhaseCanceled"
            ],
            "name": "phase",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "show_unaccessible",
            "in": "query"
          },
          {
            "type": "string",
            "name": "type",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jump.ListAuthorizationsResp"
            }
          }
        }
      },
      "post": {
        "description": "create an authorization",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JumpController"],
        "operationId": "JumpControllerCreateInstance",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/jump.CreateAuthorizationReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jump.CreateAuthorizationResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jump/authorizations/{authorization_id}": {
      "get": {
        "description": "get an authorization",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JumpController"],
        "operationId": "JumpControllerGetAuthorization",
        "parameters": [
          {
            "type": "integer",
            "description": "authorization name",
            "name": "authorization_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jump.GetAuthorizationResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jump/authorizations/{authorization_id}/cancel": {
      "post": {
        "description": "cancel an authorization",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JumpController"],
        "operationId": "JumpControllerCancelAuthorization",
        "parameters": [
          {
            "type": "integer",
            "description": "authorization id",
            "name": "authorization_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/jump.CancelAuthorizationReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jump/authorizations/{authorization_id}/connection": {
      "get": {
        "description": "get connect jump pod params",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JumpController"],
        "operationId": "JumpControllerGetConnection",
        "parameters": [
          {
            "type": "integer",
            "description": "authorization id",
            "name": "authorization_id",
            "in": "path",
            "required": true
          },
          {
            "enum": ["web_terminal", "ssh", "gateway"],
            "type": "string",
            "x-enum-varnames": [
              "ConnectionMethodWebTerminal",
              "ConnectionMethodSSH",
              "ConnectionMethodGateway"
            ],
            "name": "method",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jump.GetConnectionResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/jump/destination/{destination_type}": {
      "get": {
        "description": "list available destinations of a destination type",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JumpController"],
        "operationId": "JumpControllerListAvailableDestinations",
        "parameters": [
          {
            "type": "string",
            "description": "destination type",
            "name": "destination_type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jump.ListAvailableDestinationsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jump/jumpserver/users/activate": {
      "post": {
        "description": "activate the applicant in the jump server.",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JumpController"],
        "operationId": "JumpControllerActivateUserOfApplicant",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jump/jumpserver/users/me": {
      "get": {
        "description": "get the applicant from the jump server.",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JumpController"],
        "operationId": "JumpControllerGetUserOfApplicant",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jump.GetUserResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/jump/jumpserver/users/{email}": {
      "get": {
        "description": "get the user from the jump server.",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["JumpController"],
        "operationId": "JumpControllerGetUser",
        "parameters": [
          {
            "type": "string",
            "description": "user email",
            "name": "email",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/jump.GetUserResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/k8sCalendar/lifecycles": {
      "get": {
        "description": "list k8s version lifecycles",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["K8sCalendarService"],
        "operationId": "K8sCalendarControllerListLifecycles",
        "parameters": [
          {
            "type": "string",
            "name": "cloud_provider",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8scalendar.ListLifecyclesResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/k8sCalendar/resetNotificationFlags": {
      "post": {
        "description": "reset notification markers for a k8s version lifecycle (by cloud and version)",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["K8sCalendarService"],
        "operationId": "K8sCalendarControllerResetNotificationFlags",
        "parameters": [
          {
            "description": "ResetNotificationFlagsReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8scalendar.ResetNotificationFlagsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/k8sCalendar/syncNow": {
      "post": {
        "description": "force sync k8s version calendar from cloud providers",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["K8sCalendarService"],
        "operationId": "K8sCalendarControllerSyncNow",
        "parameters": [
          {
            "description": "SyncNowReq",
            "name": "req",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/k8scalendar.SyncNowReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/k8sUpgradePlans": {
      "get": {
        "description": "list k8s upgrade plans",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["K8sUpgradePlanService"],
        "operationId": "K8sUpgradePlanControllerListPlans",
        "parameters": [
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "cloud_providers",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "eos_versions",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "statuses",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgradeplan.ListPlansResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create a k8s upgrade plan",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["K8sUpgradePlanService"],
        "operationId": "K8sUpgradePlanControllerCreatePlan",
        "parameters": [
          {
            "description": "CreatePlanReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8supgradeplan.CreatePlanReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgradeplan.CreatePlanResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/k8sUpgradePlans/{plan_id}": {
      "get": {
        "description": "get a k8s upgrade plan",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["K8sUpgradePlanService"],
        "operationId": "K8sUpgradePlanControllerGetPlan",
        "parameters": [
          {
            "type": "integer",
            "description": "plan id",
            "name": "plan_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/k8supgradeplan.GetPlanResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "put": {
        "description": "update a k8s upgrade plan",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["K8sUpgradePlanService"],
        "operationId": "K8sUpgradePlanControllerUpdatePlan",
        "parameters": [
          {
            "type": "integer",
            "description": "plan id",
            "name": "plan_id",
            "in": "path",
            "required": true
          },
          {
            "description": "UpdatePlanReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8supgradeplan.UpdatePlanReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/k8sUpgradePlans/{plan_id}/cancel": {
      "post": {
        "description": "cancel a k8s upgrade plan",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["K8sUpgradePlanService"],
        "operationId": "K8sUpgradePlanControllerCancelPlan",
        "parameters": [
          {
            "type": "integer",
            "description": "plan id",
            "name": "plan_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/k8sUpgradePlans/{plan_id}/schedule": {
      "post": {
        "description": "schedule a k8s upgrade plan",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["K8sUpgradePlanService"],
        "operationId": "K8sUpgradePlanControllerSchedulePlan",
        "parameters": [
          {
            "type": "integer",
            "description": "plan id",
            "name": "plan_id",
            "in": "path",
            "required": true
          },
          {
            "description": "SchedulePlanReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/k8supgradeplan.SchedulePlanReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/k8sUpgradePlans/{plan_id}/triggerNow": {
      "post": {
        "description": "trigger a k8s upgrade plan immediately",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["K8sUpgradePlanService"],
        "operationId": "K8sUpgradePlanControllerTriggerNow",
        "parameters": [
          {
            "type": "integer",
            "description": "plan id",
            "name": "plan_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/kernel-images/build-callback": {
      "post": {
        "description": "accept an idempotent callback, store a batch of successfully built image artifacts, and create one DeliverKernelImage operation",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["KernelImageService"],
        "operationId": "KernelImageControllerBuildCallback",
        "parameters": [
          {
            "description": "build callback",
            "name": "request",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/kernelimage.BuildCallbackReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/kernelimage.BuildCallbackResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/kernel-images/releases": {
      "get": {
        "description": "list local kernel image release records",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["KernelImageService"],
        "operationId": "KernelImageControllerListReleases",
        "parameters": [
          {
            "type": "boolean",
            "name": "masked",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "repository",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "statuses",
            "in": "query"
          },
          {
            "type": "string",
            "name": "version",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/kernelimage.ListReleasesResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/kernel-images/releases/{artifact_uid}": {
      "get": {
        "description": "get a local kernel image release by artifact UID",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["KernelImageService"],
        "operationId": "KernelImageControllerGetRelease",
        "parameters": [
          {
            "type": "string",
            "description": "artifact UID",
            "name": "artifact_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/kernelimage.GetReleaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/kernel-images/releases/{artifact_uid}/availability-check": {
      "post": {
        "description": "start an asynchronous registry availability check for every FID delivery target of a release",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["KernelImageService"],
        "operationId": "KernelImageControllerRefreshAvailability",
        "parameters": [
          {
            "type": "string",
            "description": "Artifact UID",
            "name": "artifact_uid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/kernelimage.GetReleaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/kernel-images/selection": {
      "get": {
        "description": "calculate the local M x N kernel image selection",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["KernelImageService"],
        "operationId": "KernelImageControllerGetSelection",
        "parameters": [
          {
            "type": "string",
            "name": "cluster_type",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "component",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/kernelimage.SelectionResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/message/email/records": {
      "get": {
        "description": "list email records",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["MessageController"],
        "operationId": "MessageControllerListEmailRecords",
        "parameters": [
          {
            "type": "string",
            "name": "from_address_is",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "reason_like",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/message.ListEmailRecordsResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/message/email/records/{record_id}": {
      "get": {
        "description": "get a email record",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["MessageController"],
        "operationId": "MessageControllerGetEmailRecord",
        "parameters": [
          {
            "type": "integer",
            "description": "id",
            "name": "record_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/message.GetEmailRecordResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/message/email/send": {
      "post": {
        "description": "send email",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["MessageController"],
        "operationId": "MessageControllerSendEmail",
        "parameters": [
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/message.SendEmailRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/message/email/send_batch": {
      "post": {
        "description": "send emails batch",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["MessageController"],
        "operationId": "MessageControllerSendEmailBatch",
        "parameters": [
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/message.SendEmailBatchRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/message.SendEmailBatchResponse"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/mgmt-portal/skus/{sku_id}": {
      "patch": {
        "description": "path a sku",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["MgmtPortalController"],
        "operationId": "PatchSku",
        "parameters": [
          {
            "type": "string",
            "description": "sku_id",
            "name": "sku_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "schema": {
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/mgmtportal.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/mgmt-portal/spus/{spu_id}": {
      "patch": {
        "description": "path a spu",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["MgmtPortalController"],
        "operationId": "PatchSpu",
        "parameters": [
          {
            "type": "string",
            "description": "spu_id",
            "name": "spu_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "schema": {
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/mgmtportal.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/monitoring/component-diff/reports": {
      "post": {
        "description": "generate component diff reports",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["MonitoringController"],
        "operationId": "MonitoringControllerPostComponentDiffReport",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/monitoring/component-diff/reports/{type}": {
      "get": {
        "description": "list component diff reports",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["MonitoringController"],
        "operationId": "MonitoringControllerListComponentDiffReports",
        "parameters": [
          {
            "type": "string",
            "description": "type",
            "name": "type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/monitoring.ListReportsResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/monitoring/component-diff/reports/{type}/{name}": {
      "get": {
        "description": "get component diff report by name",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["MonitoringController"],
        "operationId": "MonitoringControllerGetComponentDiffReport",
        "parameters": [
          {
            "type": "string",
            "description": "type",
            "name": "type",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "name",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/monitoring.GetReportResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/o11y/clusters": {
      "get": {
        "description": "list clusters",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["O11yController"],
        "operationId": "O11yControllerListClusters",
        "parameters": [
          {
            "type": "string",
            "name": "application_id",
            "in": "query"
          },
          {
            "type": "string",
            "name": "orgID",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "project_id",
            "in": "query"
          },
          {
            "type": "string",
            "name": "region",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "vendor",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/o11y.ListClustersResponse"
            }
          }
        }
      },
      "post": {
        "description": "create a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["O11yController"],
        "operationId": "O11yControllerCreateCluster",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/o11y.CreateClusterRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/o11y.CreateClusterResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/o11y/clusters/{id}": {
      "get": {
        "description": "get clusters",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["O11yController"],
        "operationId": "O11yControllerGetCluster",
        "parameters": [
          {
            "type": "string",
            "description": "id",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "orgID",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "region",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "name": "vendor",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/o11y.GetClusterResponse"
            }
          }
        }
      },
      "delete": {
        "description": "delete a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["O11yController"],
        "operationId": "O11yControllerDeleteCluster",
        "parameters": [
          {
            "type": "string",
            "description": "id",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/o11y.DeleteClusterRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/o11y.DeleteClusterResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/actions": {
      "get": {
        "description": "list actions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerListActions",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/operation.ListActionResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/actions/{action_name}": {
      "get": {
        "description": "get a action",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerGetAction",
        "parameters": [
          {
            "type": "string",
            "description": "action name",
            "name": "action_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/operation.GetActionResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/instances": {
      "get": {
        "description": "list instances",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerListInstances",
        "parameters": [
          {
            "type": "string",
            "name": "applicant",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "create_after",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "create_before",
            "in": "query"
          },
          {
            "type": "string",
            "name": "operation",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "enum": [
              "draft",
              "created",
              "approving",
              "withdrawn",
              "pending",
              "running",
              "succeeded",
              "failed",
              "canceled"
            ],
            "type": "string",
            "x-enum-varnames": [
              "InstancePhaseDraft",
              "InstancePhaseCreated",
              "InstancePhaseApproving",
              "InstancePhaseWithdrawn",
              "InstancePhasePending",
              "InstancePhaseRunning",
              "InstancePhaseSucceeded",
              "InstancePhaseFailed",
              "InstancePhaseCanceled"
            ],
            "name": "phase",
            "in": "query"
          },
          {
            "type": "string",
            "name": "target_id",
            "in": "query"
          },
          {
            "type": "string",
            "name": "type",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/operation.ListInstanceResp"
            }
          }
        }
      },
      "post": {
        "description": "create a instance",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerCreateInstance",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/operation.CreateInstanceReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/operation.CreateInstanceResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/instances/preview": {
      "post": {
        "description": "preview a instance: runs PreCheck and returns advisories without creating",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerPreviewInstance",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/operation.CreateInstanceReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/operation.PreviewInstanceResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/instances/{instance_id}": {
      "get": {
        "description": "get a instance",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerGetInstance",
        "parameters": [
          {
            "type": "integer",
            "description": "instance id",
            "name": "instance_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/operation.GetInstanceResp"
            }
          }
        }
      },
      "patch": {
        "description": "update a instance",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerUpdateInstance",
        "parameters": [
          {
            "type": "integer",
            "description": "instance id",
            "name": "instance_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/operation.UpdateInstanceReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/instances/{instance_id}/actions/{action_order}/finish": {
      "post": {
        "description": "finish a instance action",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerFinishInstanceAction",
        "parameters": [
          {
            "type": "integer",
            "description": "instance id",
            "name": "instance_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "instance action order",
            "name": "action_order",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/operation.FinishInstanceActionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/instances/{instance_id}/actions/{action_order}/start": {
      "post": {
        "description": "start a instance action maunally",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerStartInstanceAction",
        "parameters": [
          {
            "type": "integer",
            "description": "instance id",
            "name": "instance_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "instance action order",
            "name": "action_order",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/instances/{instance_id}/cancel": {
      "post": {
        "description": "cancel a instance",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerCancelInstance",
        "parameters": [
          {
            "type": "integer",
            "description": "instance id",
            "name": "instance_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/instances/{instance_id}/submit": {
      "post": {
        "description": "submit a instance",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerSubmitInstance",
        "parameters": [
          {
            "type": "integer",
            "description": "instance id",
            "name": "instance_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/operations": {
      "get": {
        "description": "list operations",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerListOperations",
        "parameters": [
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "description": "filter by categories",
            "name": "categories",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "enum": [
              "cluster",
              "tenant",
              "project",
              "user",
              "region",
              "resource_pool",
              "undefined"
            ],
            "type": "string",
            "x-enum-varnames": [
              "OperationTargetCluster",
              "OperationTargetTenant",
              "OperationTargetProject",
              "OperationTargetUser",
              "OperationTargetRegion",
              "OperationTargetResourcePool",
              "OperationTargetUndefined"
            ],
            "description": "filter by target",
            "name": "target",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/operation.ListOperationResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/operations/categories": {
      "get": {
        "description": "list operation categories",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerListOperationCategories",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/operation.ListOperationCategoryResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/operation/operations/{operation_name}": {
      "get": {
        "description": "get a operation",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["OperationController"],
        "operationId": "OperationControllerGetOperation",
        "parameters": [
          {
            "type": "string",
            "description": "operation name",
            "name": "operation_name",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "description": "inject param into operation",
            "name": "inject_param",
            "in": "query"
          },
          {
            "type": "string",
            "description": "service plan for param injection",
            "name": "service_plan",
            "in": "query"
          },
          {
            "type": "string",
            "description": "target id",
            "name": "target_id",
            "in": "query"
          },
          {
            "enum": [
              "cluster",
              "tenant",
              "project",
              "user",
              "region",
              "resource_pool",
              "undefined"
            ],
            "type": "string",
            "x-enum-varnames": [
              "OperationTargetCluster",
              "OperationTargetTenant",
              "OperationTargetProject",
              "OperationTargetUser",
              "OperationTargetRegion",
              "OperationTargetResourcePool",
              "OperationTargetUndefined"
            ],
            "description": "target type",
            "name": "target_type",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/operation.GetOperationResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/premiumUpgradePlans": {
      "get": {
        "produces": ["application/json"],
        "tags": ["PremiumUpgradeService"],
        "operationId": "PremiumUpgradeControllerListPlans",
        "parameters": [
          {
            "type": "string",
            "name": "applicant",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "statuses",
            "in": "query"
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/premiumupgrade.ListPlansResp"
            }
          }
        }
      },
      "post": {
        "description": "Create one immutable Premium upgrade plan and one aggregate approval",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["PremiumUpgradeService"],
        "operationId": "PremiumUpgradeControllerCreatePlan",
        "parameters": [
          {
            "type": "string",
            "description": "Idempotency key",
            "name": "Idempotency-Key",
            "in": "header",
            "required": true
          },
          {
            "description": "CreatePlanReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/premiumupgrade.CreatePlanReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/premiumupgrade.CreatePlanResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/premiumUpgradePlans/componentPolicies": {
      "get": {
        "produces": ["application/json"],
        "tags": ["PremiumUpgradeService"],
        "operationId": "PremiumUpgradeControllerListComponentPolicies",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/premiumupgrade.ListComponentPoliciesResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/premiumUpgradePlans/preview": {
      "post": {
        "description": "Resolve Premium cluster locators, components and fixed execution order",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["PremiumUpgradeService"],
        "operationId": "PremiumUpgradeControllerPreviewPlan",
        "parameters": [
          {
            "description": "PreviewPlanReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/premiumupgrade.PreviewPlanReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/premiumupgrade.PreviewPlanResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/premiumUpgradePlans/targetConflicts": {
      "post": {
        "description": "Check whether selected Premium clusters already belong to active upgrade plans",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["PremiumUpgradeService"],
        "operationId": "PremiumUpgradeControllerCheckTargetConflicts",
        "parameters": [
          {
            "description": "CheckTargetConflictsReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/premiumupgrade.CheckTargetConflictsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/premiumupgrade.CheckTargetConflictsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/premiumUpgradePlans/{plan_id}": {
      "get": {
        "produces": ["application/json"],
        "tags": ["PremiumUpgradeService"],
        "operationId": "PremiumUpgradeControllerGetPlan",
        "parameters": [
          {
            "type": "integer",
            "description": "Plan ID",
            "name": "plan_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/premiumupgrade.GetPlanResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/premiumUpgradePlans/{plan_id}/apply": {
      "post": {
        "description": "Start an approved plan that is configured to run all steps in sequence",
        "tags": ["PremiumUpgradeService"],
        "operationId": "PremiumUpgradeControllerApplyPlan",
        "parameters": [
          {
            "type": "integer",
            "description": "Plan ID",
            "name": "plan_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/premiumUpgradePlans/{plan_id}/cancel": {
      "post": {
        "tags": ["PremiumUpgradeService"],
        "operationId": "PremiumUpgradeControllerCancelPlan",
        "parameters": [
          {
            "type": "integer",
            "description": "Plan ID",
            "name": "plan_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/premiumUpgradePlans/{plan_id}/steps/{step_id}/apply": {
      "post": {
        "description": "Apply one managed ConfigurationChange in a step-by-step plan",
        "tags": ["PremiumUpgradeService"],
        "operationId": "PremiumUpgradeControllerApplyStep",
        "parameters": [
          {
            "type": "integer",
            "description": "Plan ID",
            "name": "plan_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "Step ID",
            "name": "step_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/premiumUpgradePlans/{plan_id}/steps/{step_id}/retry": {
      "post": {
        "tags": ["PremiumUpgradeService"],
        "operationId": "PremiumUpgradeControllerRetryStep",
        "parameters": [
          {
            "type": "integer",
            "description": "Plan ID",
            "name": "plan_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "Step ID",
            "name": "step_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/privilege/privileges": {
      "get": {
        "description": "list privileges",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["PrivilegeController"],
        "operationId": "PrivilegeControllerListPrivileges",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/privilege.ListPrivilegesResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "request privileges",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["PrivilegeController"],
        "operationId": "PrivilegeControllerRequestPrivilege",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/privilege.RequestPrivilegeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/privilege.RequestPrivilegeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/privilege/privileges/{priv_id}": {
      "get": {
        "description": "get a privilege",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["PrivilegeController"],
        "operationId": "PrivilegeControllerGetPrivilege",
        "parameters": [
          {
            "type": "string",
            "description": "id",
            "name": "priv_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/privilege.GetPrivilegeResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/privilege/privileges/{priv_id}/revoke": {
      "post": {
        "description": "revoke a privilege",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["PrivilegeController"],
        "operationId": "PrivilegeControllerRevokePrivilege",
        "parameters": [
          {
            "type": "string",
            "description": "id",
            "name": "priv_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/region/regions/get": {
      "get": {
        "description": "get region",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RegionController"],
        "operationId": "RegionControllerGetRegion",
        "parameters": [
          {
            "type": "string",
            "name": "cloud_provider",
            "in": "query"
          },
          {
            "type": "string",
            "name": "deploy_type",
            "in": "query"
          },
          {
            "type": "string",
            "name": "logical_name",
            "in": "query"
          },
          {
            "type": "string",
            "name": "service_plan",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/region.GetRegionResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/region/regions/list": {
      "get": {
        "description": "list regions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RegionController"],
        "operationId": "RegionControllerListRegions",
        "parameters": [
          {
            "type": "string",
            "name": "deploy_type",
            "in": "query"
          },
          {
            "type": "string",
            "name": "service_plan",
            "in": "query"
          },
          {
            "type": "string",
            "name": "tenant_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/region.ListRegionsResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/region/regions/provider-identities": {
      "post": {
        "description": "register a provider identity for a nextgen region",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RegionController"],
        "operationId": "RegionControllerRegisterRegionProviderIdentity",
        "parameters": [
          {
            "description": "RegisterRegionProviderIdentityRequest",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/region.RegisterRegionProviderIdentityRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/region.RegisterRegionProviderIdentityResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/region/regions/register": {
      "post": {
        "description": "register region",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RegionController"],
        "operationId": "RegionControllerRegisterRegion",
        "parameters": [
          {
            "description": "RegisterRegionRequest",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/region.RegisterRegionRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/region.RegisterRegionResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/region/regions/update": {
      "post": {
        "description": "update region",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RegionController"],
        "operationId": "RegionControllerUpdateRegion",
        "parameters": [
          {
            "description": "UpdateRegionRequest",
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/region.UpdateRegionRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/region.UpdateRegionResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/changes": {
      "post": {
        "description": "create a new change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerCreateChange",
        "parameters": [
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/release.CreateChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/release.CreateChangeResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/changes/default": {
      "get": {
        "description": "get a default change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerDefaultChange",
        "parameters": [
          {
            "type": "string",
            "name": "application_name",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "release_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/release.DefaultChangeResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/changes/{change_id}": {
      "get": {
        "description": "get a change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerGetChange",
        "parameters": [
          {
            "type": "integer",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "name": "with_applicant",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "with_application",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "with_change_items",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "with_detail",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "with_release",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "with_tickets",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/release.GetChangeResp"
            }
          }
        }
      },
      "put": {
        "description": "update a change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerUpdateChange",
        "parameters": [
          {
            "type": "integer",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/release.UpdateChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/changes/{change_id}/cancel": {
      "post": {
        "description": "cancel a change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerCancelChange",
        "parameters": [
          {
            "type": "integer",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/changes/{change_id}/close": {
      "post": {
        "description": "close a change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerCloseChange",
        "parameters": [
          {
            "type": "integer",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/release.CloseChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/changes/{change_id}/deployments/{deployment_order}/deploy": {
      "post": {
        "description": "exeuete a deployment of a change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerExecuteDeployment",
        "parameters": [
          {
            "type": "integer",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "deployment id",
            "name": "deployment_order",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/release.ExecuteDeploymentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/changes/{change_id}/deployments/{deployment_order}/ready": {
      "get": {
        "description": "return if a deployment of a change is ready to execute",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerIsDeploymentReady",
        "parameters": [
          {
            "type": "integer",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "deployment id",
            "name": "deployment_order",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/release.IsDeploymentReadyResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/changes/{change_id}/deployments/{deployment_order}/verify": {
      "post": {
        "description": "verify a deployment of a change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerVerifyDeployment",
        "parameters": [
          {
            "type": "integer",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "deployment id",
            "name": "deployment_order",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/release.VerifyDeploymentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/changes/{change_id}/submit": {
      "post": {
        "description": "submit a change",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerSubmitChange",
        "parameters": [
          {
            "type": "integer",
            "description": "change id",
            "name": "change_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/releases": {
      "get": {
        "description": "list releases",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerListReleases",
        "parameters": [
          {
            "type": "string",
            "name": "name",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "timestamp",
            "name": "release_after",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "timestamp",
            "name": "release_before",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/release.ListReleaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/releases/{release_id}": {
      "get": {
        "description": "get a release",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerGetRelease",
        "parameters": [
          {
            "type": "integer",
            "description": "release id",
            "name": "release_id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "name": "with_tickets",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/release.GetReleaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/releases/{release_id}/changes": {
      "get": {
        "description": "list all change of a release",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerListChangesOfRelease",
        "parameters": [
          {
            "type": "integer",
            "description": "release id",
            "name": "release_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/release.ListChangeResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/tickets": {
      "get": {
        "description": "list tickets",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerListTickets",
        "parameters": [
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "name",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "release",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "status",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/release.ListTicketsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/tickets/{ticket_name}": {
      "get": {
        "description": "get a ticket",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerGetTicket",
        "parameters": [
          {
            "type": "string",
            "description": "ticket name",
            "name": "ticket_name",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "name": "with_github_pr",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/release.GetTicketResp"
            }
          }
        }
      },
      "put": {
        "description": "update a ticket",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerUpdateTicket",
        "parameters": [
          {
            "type": "string",
            "description": "ticket name",
            "name": "ticket_name",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/release.UpdateTicketReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/release/tickets/{ticket_name}/sync_async": {
      "post": {
        "description": "sync a ticket",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ReleaseController"],
        "operationId": "ReleaseControllerSyncTicketAsync",
        "parameters": [
          {
            "type": "string",
            "description": "ticket name",
            "name": "ticket_name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/remediationtickets": {
      "get": {
        "description": "list remediation tickets",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketService"],
        "operationId": "RemediationTicketControllerListTickets",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/remediationticket.ListRemediationTicketsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create Ticket",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketService"],
        "operationId": "RemediationTicketControllerCreateTicket",
        "parameters": [
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/remediationticket.CreateRemediationTicketReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/remediationticket.CreateRemediationTicketResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/remediationtickets/{ticket_id}": {
      "get": {
        "description": "get a remediation ticket",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketController"],
        "operationId": "RemediationTicketControllerGetTicket",
        "parameters": [
          {
            "type": "integer",
            "description": "ticket id",
            "name": "ticket_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/remediationticket.GetRemediationTicketResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/remediationtickets/{ticket_id}/approval_flow": {
      "get": {
        "description": "get remediation approval flow",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketService"],
        "operationId": "RemediationTicketControllerGetApprovalFlow",
        "parameters": [
          {
            "type": "integer",
            "description": "ticket id",
            "name": "ticket_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/remediationticket.GetApprovalFlowResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/remediationtickets/{ticket_id}/approve": {
      "post": {
        "description": "transfer a remediation ticket phase",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketController"],
        "operationId": "RemediationTicketControllerApproveTicketPhase",
        "parameters": [
          {
            "type": "integer",
            "description": "ticket id",
            "name": "ticket_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/remediationticket.ApproveTicketPhaseReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/remediationtickets/{ticket_id}/cancel": {
      "post": {
        "description": "cancel a remediation ticket",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketController"],
        "operationId": "RemediationTicketControllerCancelTicket",
        "parameters": [
          {
            "type": "integer",
            "description": "ticket id",
            "name": "ticket_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/remediationtickets/{ticket_id}/generate_doc": {
      "post": {
        "description": "generate final doc for the remediation ticket",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketController"],
        "operationId": "RemediationTicketControllerGenerateFinalDoc",
        "parameters": [
          {
            "type": "integer",
            "description": "ticket id",
            "name": "ticket_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/remediationticket.GenerateFinalDocReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/remediationtickets/{ticket_id}/progress": {
      "get": {
        "description": "get remediation ticket progress",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketService"],
        "operationId": "RemediationTicketControllerGetTicketProgress",
        "parameters": [
          {
            "type": "integer",
            "description": "ticket id",
            "name": "ticket_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/remediationticket.GetProgressResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/remediationtickets/{ticket_id}/reject": {
      "post": {
        "description": "transfer a remediation ticket phase",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketController"],
        "operationId": "RemediationTicketControllerRejectTicketPhase",
        "parameters": [
          {
            "type": "integer",
            "description": "ticket id",
            "name": "ticket_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/remediationticket.RejectTicketPhaseReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/remediationtickets/{ticket_id}/submit": {
      "post": {
        "description": "transfer a remediation ticket phase",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketController"],
        "operationId": "RemediationTicketControllerSubmitTicketPhase",
        "parameters": [
          {
            "type": "integer",
            "description": "ticket id",
            "name": "ticket_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/remediationticket.SubmitTicketPhaseReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/remediationtickets/{ticket_id}/ticket_approvals": {
      "get": {
        "description": "get remediation ticket approvals",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["RemediationTicketService"],
        "operationId": "RemediationTicketControllerGetTicketApprovals",
        "parameters": [
          {
            "type": "integer",
            "description": "ticket id",
            "name": "ticket_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/remediationticket.GetTicketApprovalsResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants": {
      "get": {
        "description": "list tenants",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "ListTenants",
        "parameters": [
          {
            "type": "array",
            "items": {
              "enum": ["internal", "external"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "kind",
            "in": "query"
          },
          {
            "enum": ["asc", "desc"],
            "type": "string",
            "x-enum-varnames": ["OrderTypeASC", "OrderTypeDESC"],
            "name": "order",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": ["new_user", "free_trial", "poc", "on_demand"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "plan",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": [
                "APAC",
                "EMEA",
                "JAPAN",
                "NA",
                "UNKNOWN",
                "RDG",
                "TEST_INFRA",
                "LATAM"
              ],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "region",
            "in": "query"
          },
          {
            "type": "string",
            "name": "search",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": ["SKA", "KA", "SMB"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "segmentation",
            "in": "query"
          },
          {
            "enum": ["created_at", "timezone"],
            "type": "string",
            "x-enum-varnames": ["SortByTypeCreatedAt", "SortByTypeTimezone"],
            "name": "sort_by",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "enum": ["pending", "active", "inactive", "deleted", "cleared"],
              "type": "string"
            },
            "collectionFormat": "csv",
            "name": "status",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.ListTenantResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/impersonate": {
      "get": {
        "description": "get impersonate",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "GetImpersonate",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.GetImpersonateResp"
            }
          }
        }
      },
      "post": {
        "description": "add impersonate",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "AddImpersonate",
        "parameters": [
          {
            "description": "ImpersonateReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.AddImpersonateReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.AddImpersonateResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete impersonate",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "DeleteImpersonate",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/reservedCapacityTemplates": {
      "get": {
        "description": "list reserved capacity templates",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "ListReservedCapacityTemplates",
        "parameters": [
          {
            "type": "integer",
            "name": "data_size_gib",
            "in": "query"
          },
          {
            "type": "string",
            "name": "organization_id",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "p99_response_latency",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "qps",
            "in": "query"
          },
          {
            "enum": ["DEFAULT", "ORG_PRIVATE"],
            "type": "string",
            "name": "scope",
            "in": "query"
          },
          {
            "enum": [
              "Starter",
              "Essential",
              "Premium",
              "BYOC",
              "Premium_Reserved",
              "Essential_V2"
            ],
            "type": "string",
            "name": "service_plan",
            "in": "query"
          },
          {
            "enum": ["ACTIVE", "DEPRECATED"],
            "type": "string",
            "name": "status",
            "in": "query"
          },
          {
            "enum": ["READ", "WRITE", "MIXED"],
            "type": "string",
            "name": "workload_type",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.ListReservedCapacityTemplatesResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "create reserved capacity template by operation",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "CreateReservedCapacityTemplate",
        "parameters": [
          {
            "description": "CreateReservedCapacityTemplateReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.CreateReservedCapacityTemplateReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.ReservedCapacityTemplateOperationResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/reservedCapacityTemplates/{capacity_template_id}": {
      "get": {
        "description": "get reserved capacity template",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "GetReservedCapacityTemplate",
        "parameters": [
          {
            "type": "string",
            "description": "capacity template id",
            "name": "capacity_template_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.GetReservedCapacityTemplateResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete reserved capacity template by operation",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "DeleteReservedCapacityTemplate",
        "parameters": [
          {
            "type": "string",
            "description": "capacity template id",
            "name": "capacity_template_id",
            "in": "path",
            "required": true
          },
          {
            "description": "DeleteReservedCapacityTemplateReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.DeleteReservedCapacityTemplateReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.ReservedCapacityTemplateOperationResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/reservedCapacityTemplates/{capacity_template_id}/status": {
      "patch": {
        "description": "update reserved capacity template status by operation",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "UpdateReservedCapacityTemplateStatus",
        "parameters": [
          {
            "type": "string",
            "description": "capacity template id",
            "name": "capacity_template_id",
            "in": "path",
            "required": true
          },
          {
            "description": "UpdateReservedCapacityTemplateStatusReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.UpdateReservedCapacityTemplateStatusReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.ReservedCapacityTemplateOperationResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}": {
      "get": {
        "description": "get tenant",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "GetTenant",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.GetTenantResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "update tenant",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "UpdateTenant",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "UpdateTenantReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.UpdateTenantReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete tenant",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "DeleteTenant",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "DeleteTenantReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.DeleteTenantReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/accountusers": {
      "get": {
        "description": "get tenant users",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "GetTenantUsers",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "name": "full_email",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page_size",
            "in": "query"
          },
          {
            "type": "string",
            "name": "search",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.GetUsersResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/accountusers/{user_id}": {
      "post": {
        "description": "add user to tenant",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "AddUserToTenant",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          },
          {
            "description": "AddUserToTenantReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.AddUserToTenantReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      },
      "delete": {
        "description": "remove user from tenant",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "RemoveUserFromTenant",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          },
          {
            "description": "RemoveUserFromTenantReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.RemoveUserFromTenantReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/billing_config_id/{billing_config_id}/invoices/{invoice_id}/recalculate": {
      "post": {
        "description": "create an approval operation to recalculate a tenant invoice",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "RecalculateInvoice",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "billing_config_id",
            "name": "billing_config_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "invoice_id",
            "name": "invoice_id",
            "in": "path",
            "required": true
          },
          {
            "description": "RecalculateInvoiceReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.RecalculateInvoiceReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/billing_config_id/{billing_config_id}/recalculate": {
      "post": {
        "description": "create an approval operation to recalculate bills for a tenant billing config",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "RecalculateBills",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "billing_config_id",
            "name": "billing_config_id",
            "in": "path",
            "required": true
          },
          {
            "description": "RecalculateBillsReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.RecalculateBillsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/byoc_regions": {
      "get": {
        "description": "list byoc regions for a tenant",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "ListByocRegions",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.ListByocRegionsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/credits": {
      "post": {
        "description": "add credits for tenant",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "AddCredits",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "AddCreditsReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.AddCreditsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/credits/internal": {
      "post": {
        "description": "add credits for tenant directly without operation workflow",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "AddCreditsInternal",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "AddCreditsInternalReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.AddCreditsInternalReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/ops_audit_log_settings": {
      "post": {
        "description": "update region ops audit log settings",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "UpdateRegionOpsAuditLogSettings",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "UpdateRegionOpsAuditLogSettingReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.UpdateRegionOpsAuditLogSettingReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/projects/{project_id}": {
      "get": {
        "description": "get project",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "GetProject",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "project_id",
            "name": "project_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.GetProjectResp"
            }
          }
        }
      },
      "delete": {
        "description": "delete project",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "DeleteProject",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "project_id",
            "name": "project_id",
            "in": "path",
            "required": true
          },
          {
            "description": "DeleteProjectReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.DeleteProjectReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/projects/{project_id}/accountusers": {
      "get": {
        "description": "get project users",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "GetProjectUsers",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "project_id",
            "name": "project_id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "name": "full_email",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page_size",
            "in": "query"
          },
          {
            "type": "string",
            "name": "search",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.GetUsersResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/projects/{project_id}/accountusers/{user_id}": {
      "post": {
        "description": "add user to project",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "AddUserToProject",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "project_id",
            "name": "project_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          },
          {
            "description": "AddUserToProjectReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.AddUserToProjectReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      },
      "delete": {
        "description": "remove user from project",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "RemoveUserFromProject",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "project_id",
            "name": "project_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          },
          {
            "description": "RemoveUserFromTenantReq",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/tenant.RemoveUserFromProjectReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/projects/{project_id}/vpc": {
      "get": {
        "description": "list vpcs of the project",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ProjectController"],
        "operationId": "ProjectControllerListVPCs",
        "parameters": [
          {
            "type": "string",
            "description": "tenant id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "project id",
            "name": "project_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "provider",
            "in": "query"
          },
          {
            "type": "string",
            "name": "region",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/project.ListVPCsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/projects/{project_id}/vpc/{vpc_id}/cidr": {
      "post": {
        "description": "add a secondary cidr for a project",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ProjectController"],
        "operationId": "ProjectControllerAddSecondaryCIDR",
        "parameters": [
          {
            "type": "string",
            "description": "tenant id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "project id",
            "name": "project_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "vpc id",
            "name": "vpc_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request body",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/project.AddSecondaryCIDRReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/project.CommonResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/tenants/{tenant_id}/quota": {
      "get": {
        "description": "list tenant quota",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantService"],
        "operationId": "ListTenantQuota",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tenant.ListTenantQuotaResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/ticdc-meta/internal-ticdc/{ticdc_cluster_id}/shutdown": {
      "post": {
        "description": "shutdown ticdc cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerShutdownTiCDCCluster",
        "parameters": [
          {
            "type": "string",
            "description": "ticdc cluster id",
            "name": "ticdc_cluster_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/cloudconfig.ShutdownTiCDCReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.OperationResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/ticdc-meta/{cluster_type}/internal-changefeed/pause/{changefeed_id}": {
      "post": {
        "description": "pause one changefeed by changefeed id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerPauseChangefeed",
        "parameters": [
          {
            "type": "string",
            "description": "changefeed id",
            "name": "changefeed_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.OperationResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/ticdc-meta/{cluster_type}/internal-changefeed/resume/{changefeed_id}": {
      "post": {
        "description": "resume one changefeed by changefeed id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerResumeChangefeed",
        "parameters": [
          {
            "type": "string",
            "description": "changefeed id",
            "name": "changefeed_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.OperationResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/ticdc-meta/{cluster_type}/internal-changefeed/{changefeed_id}": {
      "get": {
        "description": "get one changefeed by kernel/internal changefeed id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetInternalChangefeed",
        "parameters": [
          {
            "type": "string",
            "description": "kernel/internal changefeed id",
            "name": "changefeed_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.GetInternalChangefeedResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "restart one changefeed by changefeed id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerRestartChangefeed",
        "parameters": [
          {
            "type": "string",
            "description": "changefeed id",
            "name": "changefeed_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.OperationResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/ticdc-meta/{cluster_type}/internal-changefeeds/{cluster_id}": {
      "get": {
        "description": "list business changefeeds of a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerListInternalChangefeeds",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.ListInternalChangefeedsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/ticdc-meta/{cluster_type}/internal-ticdc/{ticdc_cluster_id}": {
      "get": {
        "description": "get one ticdc cluster by ticdc cluster id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerGetInternalTiCDCCluster",
        "parameters": [
          {
            "type": "string",
            "description": "ticdc cluster id",
            "name": "ticdc_cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "ticdc cluster type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.GetInternalTiCDCClusterResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      },
      "post": {
        "description": "restart one ticdc cluster by ticdc cluster id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["CloudConfigController"],
        "operationId": "CloudConfigControllerRestartTiCDCCluster",
        "parameters": [
          {
            "type": "string",
            "description": "ticdc cluster id",
            "name": "ticdc_cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster type",
            "name": "cluster_type",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/cloudconfig.OperationResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/userbehavior/gtm/emails/suppress": {
      "post": {
        "description": "suppress a GTM email campaign for a tenant",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["UserBehaviorController"],
        "operationId": "UserBehaviorControllerSuppressGTMEmail",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/userbehavior.SuppressGTMEmailReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/userbehavior.SuppressGTMEmailResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/userbehavior/subscriptions": {
      "get": {
        "description": "list subscriptions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["UserBehaviorController"],
        "operationId": "UserBehaviorControllerListSubscriptions",
        "parameters": [
          {
            "type": "string",
            "name": "applicant",
            "in": "query"
          },
          {
            "type": "string",
            "name": "cluster_id",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "filter_by_creator",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "show_unaccessible",
            "in": "query"
          },
          {
            "type": "string",
            "name": "type",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/userbehavior.ListSubscriptionsResp"
            }
          }
        }
      },
      "post": {
        "description": "create an subscription",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["UserBehaviorController"],
        "operationId": "UserBehaviorControllerCreateSubscription",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/userbehavior.CreateSubscriptionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/userbehavior.CreateSubscriptionResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/userbehavior/subscriptions/add_chat": {
      "post": {
        "description": "add an external lark chat to lark chat list",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["UserBehaviorController"],
        "operationId": "UserBehaviorControllerAddExternalLarkChat",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/userbehavior.AddExternalLarkChatReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/userbehavior/subscriptions/larkchat_options": {
      "get": {
        "description": "get lark chat options",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["UserBehaviorController"],
        "operationId": "UserBehaviorControllerGetLarkChatOptions",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/userbehavior.ListLarkChatOptionsResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/userbehavior/subscriptions/{subscription_id}": {
      "get": {
        "description": "get an subscription",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["UserBehaviorController"],
        "operationId": "UserBehaviorControllerGetSubscription",
        "parameters": [
          {
            "type": "integer",
            "description": "subscription name",
            "name": "subscription_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/userbehavior.GetSubscriptionResp"
            }
          }
        }
      },
      "put": {
        "description": "edit subscription",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["UserBehaviorService"],
        "operationId": "UserBehaviorControllerEditSubscription",
        "parameters": [
          {
            "type": "integer",
            "description": "subscription id",
            "name": "subscription_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/userbehavior.EditSubscriptionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/userbehavior.EditSubscriptionResp"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/userbehavior/subscriptions/{subscription_id}/cancel": {
      "post": {
        "description": "cancel an subscription",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["UserBehaviorController"],
        "operationId": "UserBehaviorControllerCancelSubscription",
        "parameters": [
          {
            "type": "integer",
            "description": "subscription id",
            "name": "subscription_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/userbehavior/subscriptions/{subscription_id}/mock": {
      "post": {
        "description": "send a mock event to subscription",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["UserBehaviorController"],
        "operationId": "UserBehaviorControllerSendMockEvent",
        "parameters": [
          {
            "type": "integer",
            "description": "subscription name",
            "name": "subscription_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/webhook/jira/create-lark-group-for-s1-tickets": {
      "post": {
        "description": "create a lark group for s1 jira tickets and bind the group to the ticket",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["WebhookController"],
        "operationId": "WebhookControllerJiraCreateLarkGroupForS1Tickets",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/webhook.JiraCreateLarkGroupForS1TicketsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/webhook.JiraCreateLarkGroupForS1TicketsResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/webhook/jira/invite-assignee": {
      "post": {
        "description": "invite assignee to the lark group if the issue binded to a lark group",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["WebhookController"],
        "operationId": "WebhookControllerJiraInviteAssigneeToLarkGroup",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/webhook.JiraInviteAssigneeToLarkGroupRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/webhook/jira/sync-lark-group": {
      "post": {
        "description": "bind escalated Jira ticket to Lark group",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["WebhookController"],
        "operationId": "WebhookControllerJiraBindLarkGroupWhenEscalation",
        "parameters": [
          {
            "description": "request param",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/webhook.JiraBindLarkGroupWhenEscalationRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/backup-exports": {
      "get": {
        "description": "list Dedicated backup export jobs",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerListBackupExports",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "page, default 1",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size, default 20, max 200",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.ListBackupExportsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/backup-setting": {
      "get": {
        "description": "get Dedicated backup setting",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerGetBackupSetting",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.DedicatedBackupSetting"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/backups": {
      "get": {
        "description": "list Dedicated or Premium cluster backups",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerListBackups",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "page, default 1",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size, default 20, max 200 for Dedicated and max 100 for Premium",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.ListBackupsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/changefeeds": {
      "get": {
        "description": "list internal changefeeds of a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerListChangefeeds",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.ListChangefeedsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/dm/jobs": {
      "get": {
        "description": "list DM jobs of a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerListDMJobs",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "page, default 1",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size, default 20, max 200",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.ListDMJobsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/dm/jobs/{job_id}": {
      "get": {
        "description": "get a DM job by id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerGetDMJob",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "job id",
            "name": "job_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.DMJobDetail"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/dm/overview": {
      "get": {
        "description": "get DM version/overview for a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerGetDMOverview",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.DMOverview"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/dm/prechecks": {
      "get": {
        "description": "list DM prechecks of a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerListDMPrechecks",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "page, default 1",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size, default 20, max 200",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.ListDMPrechecksResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/dm/prechecks/{precheck_id}": {
      "get": {
        "description": "get a DM precheck by id",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerGetDMPrecheck",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "precheck id",
            "name": "precheck_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.DMPrecheckDetail"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/exports": {
      "get": {
        "description": "list Premium or Essential v2 data export tasks",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerListExports",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "page, default 1",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size, default 20, max 200",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.ListExportsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/import-into-tasks": {
      "get": {
        "description": "list Premium IMPORT INTO tasks of a cluster (upstream RPC pending)",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerListImportIntoTasks",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "page, default 1",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size, default 20, max 200",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.ListImportIntoTasksResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/import-into-tasks/{task_id}": {
      "get": {
        "description": "get a Premium IMPORT INTO task by id (upstream RPC pending)",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerGetImportIntoTask",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "task id",
            "name": "task_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.GetImportIntoTaskResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/imports": {
      "get": {
        "description": "list Dedicated TiDB imports of a cluster (upstream RPC pending)",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerListImports",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "page, default 1",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size, default 20, max 200",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.ListImportsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/log-backups": {
      "get": {
        "description": "list Dedicated log backups",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerListLogBackups",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "page, default 1",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size, default 20, max 200",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.ListLogBackupsResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/nextgen-backup-setting": {
      "get": {
        "description": "get Premium or Essential v2 backup setting",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerGetNextGenBackupSetting",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.NextGenBackupSetting"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/overview": {
      "get": {
        "description": "aggregated overview across all tools for a cluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerGetOverview",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.GetOverviewResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/restores": {
      "get": {
        "description": "list Dedicated or Premium restores",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerListRestores",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "page, default 1",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size, default 20, max 200",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.ListRestoresResp"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/restores/progress": {
      "get": {
        "description": "get Dedicated or Premium restore progress",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerGetRestoreProgress",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.RestoreProgress"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/{cluster_id}/tidbtools/restores/{restore_id}": {
      "get": {
        "description": "get a Dedicated restore by ID or the current Premium restore using its target cluster ID",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TidbToolsController"],
        "operationId": "TidbToolsControllerGetRestore",
        "parameters": [
          {
            "type": "string",
            "description": "cluster id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "restore ID; for Premium, the target cluster ID",
            "name": "restore_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tidbtools.RestoreDetail"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "accountcli.Project": {
      "type": "object",
      "properties": {
        "aws_cmek_enabled": {
          "type": "boolean"
        },
        "created_at": {
          "$ref": "#/definitions/timestamppb.Timestamp"
        },
        "deleted_at": {
          "$ref": "#/definitions/timestamppb.Timestamp"
        },
        "id": {
          "type": "integer"
        },
        "is_cross_account": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        },
        "updated_at": {
          "$ref": "#/definitions/timestamppb.Timestamp"
        }
      }
    },
    "accountcli.User": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "first_name": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "invite_time": {
          "$ref": "#/definitions/timestamppb.Timestamp"
        },
        "last_name": {
          "type": "string"
        },
        "login_time": {
          "$ref": "#/definitions/timestamppb.Timestamp"
        },
        "role": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "api.ApprovalRoute": {
      "type": "object",
      "properties": {
        "approver": {
          "$ref": "#/definitions/entity.Approver"
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "condition": {
          "type": "string"
        },
        "group": {
          "type": "string"
        },
        "method": {
          "$ref": "#/definitions/entity.ApproveMethod"
        },
        "name": {
          "type": "string"
        },
        "repositories": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "skip_when_empty": {
          "type": "boolean"
        }
      }
    },
    "api.BaseResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "api.ComponentImageTag": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "component": {
          "type": "string"
        },
        "image_tag": {
          "type": "string"
        }
      }
    },
    "api.ComponentPolicy": {
      "type": "object",
      "properties": {
        "apply_group": {
          "type": "string"
        },
        "apply_strategy": {
          "$ref": "#/definitions/cloudconfig.ParameterApplyPolicy"
        },
        "atomic_group": {
          "type": "boolean"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "component": {
          "type": "string"
        },
        "order_revision": {
          "type": "string"
        },
        "priority": {
          "type": "integer"
        }
      }
    },
    "api.ComponentSelector": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "component": {
          "type": "string"
        }
      }
    },
    "api.EmptyResp": {
      "type": "object"
    },
    "api.ErrCode": {
      "type": "string",
      "enum": [
        "OK",
        "INVALID_ARGUMENT",
        "FAILED_PRECONDITION",
        "OUT_OF_RANGE",
        "UNAUTHENTICATED",
        "PERMISSION_DENIED",
        "NOT_FOUND",
        "ABORTED",
        "ALREADY_EXISTS",
        "RESOURCE_EXHAUSTED",
        "CANCELLED",
        "DATA_LOSS",
        "UNKNOWN",
        "INTERNAL",
        "NOT_IMPLEMENTED",
        "UNAVAILABLE",
        "DEADLINE_EXCEEDED"
      ],
      "x-enum-varnames": [
        "ErrCodeOK",
        "ErrCodeInvalidArgument",
        "ErrCodeFailedPrecond",
        "ErrCodeOutOfRange",
        "ErrCodeUnauthenticated",
        "ErrCodePermissionDenied",
        "ErrCodeNotFound",
        "ErrCodeAborted",
        "ErrCodeAlreadyExists",
        "ErrCodeResourceExhaust",
        "ErrCodeCancelled",
        "ErrCodeDataLoss",
        "ErrCodeUnknown",
        "ErrCodeInternal",
        "ErrCodeNotImplemented",
        "ErrCodeUnavailable",
        "ErrCodeDeadlineExceeded"
      ]
    },
    "api.OrderType": {
      "type": "string",
      "enum": ["asc", "desc"],
      "x-enum-varnames": ["OrderTypeASC", "OrderTypeDESC"]
    },
    "api.PreviewPlanResult": {
      "type": "object",
      "properties": {
        "approval_routes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/api.ApprovalRoute"
          }
        },
        "cluster_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "component_image_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/api.ComponentImageTag"
          }
        },
        "component_order_revision": {
          "type": "string"
        },
        "desired_version": {
          "type": "string"
        },
        "execution_mode": {
          "$ref": "#/definitions/premiumupgrade.ExecutionMode"
        },
        "manifest_hash": {
          "type": "string"
        },
        "scope": {
          "$ref": "#/definitions/api.UpgradeScope"
        },
        "targets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/api.PreviewTarget"
          }
        },
        "warnings": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "api.PreviewStep": {
      "type": "object",
      "properties": {
        "apply_group": {
          "type": "string"
        },
        "apply_strategy": {
          "$ref": "#/definitions/cloudconfig.ParameterApplyPolicy"
        },
        "cluster_id": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/api.PreviewStepComponent"
          }
        },
        "noop": {
          "type": "boolean"
        },
        "sequence": {
          "type": "integer"
        }
      }
    },
    "api.PreviewStepComponent": {
      "type": "object",
      "properties": {
        "base_image": {
          "type": "string"
        },
        "component": {
          "type": "string"
        },
        "from_image_tag": {
          "type": "string"
        },
        "from_version": {
          "type": "string"
        },
        "image_tag_source": {
          "type": "string"
        },
        "noop": {
          "type": "boolean"
        },
        "to_image_tag": {
          "type": "string"
        },
        "to_version": {
          "type": "string"
        }
      }
    },
    "api.PreviewTarget": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string"
        },
        "cluster_name": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "logical_region": {
          "type": "string"
        },
        "shared_pool_id": {
          "type": "string"
        },
        "source_cluster_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/api.PreviewStep"
          }
        },
        "tenant_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "api.SortByType": {
      "type": "string",
      "enum": ["created_at", "timezone"],
      "x-enum-varnames": ["SortByTypeCreatedAt", "SortByTypeTimezone"]
    },
    "api.TargetConflict": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "plan_id": {
          "type": "integer"
        },
        "plan_name": {
          "type": "string"
        },
        "plan_status": {
          "$ref": "#/definitions/premiumupgrade.PlanStatus"
        }
      }
    },
    "api.UpgradeScope": {
      "type": "object",
      "properties": {
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/api.ComponentSelector"
          }
        },
        "mode": {
          "$ref": "#/definitions/premiumupgrade.ScopeMode"
        }
      }
    },
    "application.Application": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "owners": {
          "description": "User Email",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "application.CreateApplicationReq": {
      "type": "object",
      "required": ["name"],
      "properties": {
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "owners": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "application.CreateApplicationResp": {
      "type": "object",
      "properties": {
        "application_id": {
          "type": "integer"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "application.GetApplicationResp": {
      "type": "object",
      "properties": {
        "application": {
          "$ref": "#/definitions/application.Application"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "application.ListApplicationResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/application.Application"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "approval.CreateApprovalReq": {
      "type": "object",
      "properties": {
        "applicant": {
          "description": "Applicant is the user who applies for the approval.",
          "type": "string"
        },
        "cc_tasks": {
          "$ref": "#/definitions/entity.Approver"
        },
        "configuration": {
          "description": "Configuration is the approval configuration.",
          "allOf": [
            {
              "$ref": "#/definitions/entity.ApprovalConfiguration"
            }
          ]
        },
        "detail_link": {
          "description": "DetailLink is a link showed in the notifcation.",
          "type": "string"
        },
        "name": {
          "description": "Name is the approval's name used to categorize the approval.",
          "type": "string"
        },
        "nodes": {
          "description": "Nodes is the approval nodes.\n\nIf it is empty, the approval will be approved after created.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ApproverNode"
          }
        },
        "overview": {
          "description": "Overview is a human-readable summary shown in approval notifications.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "parameters": {
          "description": "Parameters is the parameters showed in the notifcation.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "reason": {
          "description": "Reason is the reason of the approval.",
          "type": "string"
        }
      }
    },
    "approval.CreateApprovalResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "approval.GetApprovalResp": {
      "type": "object",
      "properties": {
        "approval": {
          "$ref": "#/definitions/entity.Approval"
        },
        "can_admin_approve": {
          "type": "boolean"
        },
        "can_approve": {
          "type": "boolean"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "audit.AuditLog": {
      "type": "object",
      "properties": {
        "details": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "id": {
          "type": "integer"
        },
        "object_id": {
          "type": "string"
        },
        "operate_at": {
          "type": "string"
        },
        "operation": {
          "type": "string"
        },
        "operator": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/audit.AuditLogType"
        }
      }
    },
    "audit.AuditLogType": {
      "type": "string",
      "enum": [
        "change",
        "ctl",
        "cluster_maintenance",
        "operation",
        "jump",
        "cloud_config_change",
        "cloud_config_default_config_change",
        "k8s_upgrade_task",
        "tenant",
        "spu_sku",
        "rbac_role",
        "rbac_rolebinding",
        "iam_role",
        "iam_rolebinding",
        "iam_policy",
        "iam_policybinding",
        "iam_apikey"
      ],
      "x-enum-varnames": [
        "AuditLogTypeChange",
        "AuditLogTypeCtl",
        "AuditLogTypeClusterMaintenance",
        "AuditLogTypeOperation",
        "AuditLogTypeJump",
        "AuditLogTypeCloudConfigChange",
        "AuditLogTypeCloudConfigDefaultConfigChange",
        "AuditLogTypeK8sUpgradetask",
        "AuditLogTypeTenant",
        "AuditLogTypeSpuSku",
        "AuditLogTypeRBACRole",
        "AuditLogTypeRBACRoleBinding",
        "AuditLogTypeIAMRole",
        "AuditLogTypeIAMRoleBinding",
        "AuditLogTypeIAMPolicy",
        "AuditLogTypeIAMPolicyBinding",
        "AuditLogTypeIAMAPIKey"
      ]
    },
    "audit.ListAuditLogResp": {
      "type": "object",
      "properties": {
        "audit_logs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/audit.AuditLog"
          }
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "audit.ListAuditLogTypesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        },
        "types": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/audit.AuditLogType"
          }
        }
      }
    },
    "audit.ListChangeAuditLogResp": {
      "type": "object",
      "properties": {
        "audit_logs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/audit.AuditLog"
          }
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "audit.ListClusterMaintenanceAuditLogResp": {
      "type": "object",
      "properties": {
        "audit_logs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/audit.AuditLog"
          }
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "audit.ListCtlAuditLogResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/audit.AuditLog"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "audit.ListJumpAuditLogResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/audit.AuditLog"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "audit.ListOperationAuditLogResp": {
      "type": "object",
      "properties": {
        "audit_logs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/audit.AuditLog"
          }
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ApplyConfigurationChangeReq": {
      "type": "object",
      "properties": {
        "mode": {
          "$ref": "#/definitions/cloudconfig.ApplyMode"
        }
      }
    },
    "cloudconfig.ApplyMode": {
      "type": "object",
      "properties": {
        "allow_methods": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "deny_methods": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "cloudconfig.AvailableClusterVersion": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "is_default": {
          "type": "boolean"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.BatchUpdateComponentConfigsReq": {
      "type": "object",
      "properties": {
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.DefaultComponentConfiguration"
          }
        }
      }
    },
    "cloudconfig.BatchUpdateDefaultConfigurationChangeItemsReq": {
      "type": "object",
      "properties": {
        "batch_update_component_configs": {
          "$ref": "#/definitions/cloudconfig.BatchUpdateComponentConfigsReq"
        },
        "batch_update_template": {
          "$ref": "#/definitions/cloudconfig.BatchUpdateTemplateBindingsReq"
        }
      }
    },
    "cloudconfig.BatchUpdateTemplateBindingsReq": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.TemplateDefaultCaseBindingChange"
          }
        },
        "params_to_set": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.NamedParameter"
          }
        },
        "params_to_unset": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "cloudconfig.ChangeComponentReq": {
      "type": "object",
      "properties": {
        "component": {
          "type": "string"
        },
        "overwrite_image_tag": {
          "$ref": "#/definitions/cloudconfig.ChangeImageTagReq"
        },
        "version": {
          "$ref": "#/definitions/cloudconfig.ChangeVersionReq"
        }
      }
    },
    "cloudconfig.ChangeDefaultComponentsReq": {
      "type": "object",
      "properties": {
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.DefaultComponentConfiguration"
          }
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ChangeFileReq": {
      "type": "object",
      "properties": {
        "config_type": {
          "type": "string"
        },
        "custom_parameters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.NamedParameter"
          }
        },
        "filename": {
          "type": "string"
        },
        "previous_text": {
          "type": "string"
        },
        "template": {
          "$ref": "#/definitions/cloudconfig.ChangeTemplateReq"
        }
      }
    },
    "cloudconfig.ChangeImageTagReq": {
      "type": "object",
      "properties": {
        "to_image_tag": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ChangeTemplateDefaultCaseBindingsReq": {
      "type": "object",
      "properties": {
        "default_case_bindings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.TemplateDefaultCaseBinding"
          }
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ChangeTemplateReq": {
      "type": "object",
      "properties": {
        "to_template": {
          "type": "integer"
        }
      }
    },
    "cloudconfig.ChangeVersionReq": {
      "type": "object",
      "properties": {
        "to_version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ChangedImageTag": {
      "type": "object",
      "properties": {
        "from": {
          "type": "string"
        },
        "to": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ChangedParameter": {
      "type": "object",
      "properties": {
        "from": {},
        "from_source": {
          "$ref": "#/definitions/cloudconfig.ParameterSource"
        },
        "name": {
          "type": "string"
        },
        "risk_level": {
          "description": "\"low\" or \"high\"",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.RiskLevel"
            }
          ]
        },
        "to": {},
        "to_source": {
          "$ref": "#/definitions/cloudconfig.ParameterSource"
        }
      }
    },
    "cloudconfig.ChangedTemplate": {
      "type": "object",
      "properties": {
        "from": {
          "type": "integer"
        },
        "to": {
          "type": "integer"
        }
      }
    },
    "cloudconfig.ChangedVersion": {
      "type": "object",
      "properties": {
        "from": {
          "type": "string"
        },
        "to": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ChangefeedEventFilter": {
      "type": "object",
      "properties": {
        "ignored_delete_value_expression": {
          "type": "string"
        },
        "ignored_events": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ignored_insert_value_expression": {
          "type": "string"
        },
        "ignored_sql_statements": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ignored_update_new_value_expression": {
          "type": "string"
        },
        "ignored_update_old_value_expression": {
          "type": "string"
        },
        "table_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "cloudconfig.ChangefeedNetworkInfo": {
      "type": "object",
      "properties": {
        "advertised_pattern_group": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "kafka_id": {
          "type": "string"
        },
        "network_type": {
          "type": "string"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "private_link_service_name": {
          "type": "string"
        },
        "sink_endpoint_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ChangefeedStartPosition": {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string"
        },
        "timestamp": {
          "type": "string"
        },
        "tso": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ChangefeedTableConfig": {
      "type": "object",
      "properties": {
        "case_sensitive": {
          "type": "boolean"
        },
        "event_filters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangefeedEventFilter"
          }
        },
        "filter_rules": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "mode": {
          "type": "string"
        }
      }
    },
    "cloudconfig.CloneParamAttrReq": {
      "type": "object",
      "required": ["from_version", "to_version"],
      "properties": {
        "from_version": {
          "type": "string"
        },
        "to_version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.CloseDefaultConfigurationChangeReq": {
      "type": "object",
      "properties": {
        "reason": {
          "type": "string"
        },
        "result": {
          "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangePhase"
        }
      }
    },
    "cloudconfig.CloudInstanceType": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "instance_type": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ClusterComponentSearchRegionResult": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "error": {
          "type": "string"
        },
        "has_more": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ClusterComponentVersion"
          }
        },
        "logical_region": {
          "type": "string"
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "cloudconfig.ClusterComponentVersion": {
      "type": "object",
      "properties": {
        "base_image": {
          "type": "string"
        },
        "cloud_provider": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "component_name": {
          "type": "string"
        },
        "effective_image_tag": {
          "type": "string"
        },
        "logical_region": {
          "type": "string"
        },
        "node_instance": {
          "type": "string"
        },
        "overwrite_image_tag": {
          "type": "string"
        },
        "update_strategy": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ClusterConfigurationLocator": {
      "type": "object",
      "required": ["cluster_id", "cluster_type"],
      "properties": {
        "cluster_id": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        }
      }
    },
    "cloudconfig.ClusterType": {
      "type": "string",
      "enum": [
        "",
        "DEDICATED_TIDB",
        "TICDC",
        "CHANGEFEED",
        "SHARED_POOL",
        "LOGICAL_CLUSTER",
        "TICDC_NG",
        "CHANGEFEED_NG",
        "CHANGEFEED_ESSENTIAL"
      ],
      "x-enum-varnames": [
        "ClusterTypeUnknown",
        "ClusterTypeDedicatedTiDB",
        "ClusterTypeTiCDC",
        "ClusterTypeChangefeed",
        "ClusterTypeSharedPool",
        "ClusterTypeLogicalCluster",
        "ClusterTypeTiCDCNG",
        "ClusterTypeChangefeedNG",
        "ClusterTypeChangefeedEssential"
      ]
    },
    "cloudconfig.Component": {
      "type": "object",
      "properties": {
        "base_image": {
          "type": "string"
        },
        "cloud_provider": {
          "type": "string"
        },
        "effective_image_tag": {
          "type": "string"
        },
        "instance_type": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "overwrite_image_tag": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ComponentDefaultCase": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "component": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ComponentInfo": {
      "type": "object",
      "properties": {
        "base_image": {
          "type": "string"
        },
        "component_name": {
          "type": "string"
        },
        "general_availability": {
          "type": "boolean"
        },
        "image_tag": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.Configuration": {
      "type": "object",
      "properties": {
        "components": {
          "description": "key: component name",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/cloudconfig.Component"
          }
        },
        "files": {
          "description": "key: filename",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/cloudconfig.FileConfiguration"
          }
        },
        "target_cluster": {
          "$ref": "#/definitions/cloudconfig.ClusterConfigurationLocator"
        },
        "target_tenant": {
          "$ref": "#/definitions/cloudconfig.TenantInitConfigurationLocator"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ConfigurationChange": {
      "type": "object",
      "properties": {
        "applicant": {
          "type": "string"
        },
        "applied_at": {
          "type": "integer"
        },
        "apply_policy": {
          "$ref": "#/definitions/cloudconfig.ParameterApplyPolicy"
        },
        "approval_id": {
          "type": "integer"
        },
        "change_type": {
          "type": "string"
        },
        "closed_at": {
          "type": "integer"
        },
        "created_at": {
          "type": "integer"
        },
        "execution_window": {
          "description": "only set in get/list API",
          "allOf": [
            {
              "$ref": "#/definitions/maintenance.OpsExecutionWindow"
            }
          ]
        },
        "execution_window_id": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "operator_entity": {
          "type": "string"
        },
        "phase": {
          "$ref": "#/definitions/cloudconfig.ConfigurationChangePhase"
        },
        "premium_upgrade_step_id": {
          "type": "integer"
        },
        "reason": {
          "type": "string"
        },
        "scope": {
          "$ref": "#/definitions/cloudconfig.ConfigurationChangeScope"
        },
        "target_cluster": {
          "$ref": "#/definitions/cloudconfig.ClusterConfigurationLocator"
        },
        "target_template": {
          "$ref": "#/definitions/cloudconfig.ConfigurationTemplateLocator"
        },
        "target_tenant": {
          "$ref": "#/definitions/cloudconfig.TenantInitConfigurationLocator"
        },
        "target_type": {
          "$ref": "#/definitions/cloudconfig.ConfigurationChangeTargetType"
        },
        "target_version": {
          "description": "TargetVersion is the version of the target.\nNOTE: If version is changed, it will be the changed version.",
          "type": "string"
        }
      }
    },
    "cloudconfig.ConfigurationChangePhase": {
      "type": "string",
      "enum": [
        "created",
        "approving",
        "wait_for_apply",
        "applying",
        "applied",
        "failed",
        "cancelled",
        "withdrawn"
      ],
      "x-enum-varnames": [
        "ConfigurationChangePhaseCreated",
        "ConfigurationChangePhaseApproving",
        "ConfigurationChangePhaseWaitForApply",
        "ConfigurationChangePhaseApplying",
        "ConfigurationChangePhaseApplied",
        "ConfigurationChangePhaseFailed",
        "ConfigurationChangePhaseCancelled",
        "ConfigurationChangePhaseWithdrawn"
      ]
    },
    "cloudconfig.ConfigurationChangeScope": {
      "type": "object",
      "properties": {
        "components": {
          "description": "Components contains changes for components\nNOTE: not contain the unchanged components.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ConfigurationComponentChange"
          }
        },
        "files": {
          "description": "Files contains changes for configuration files.\nNOTE: not contain the unchanged files.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ConfigurationFileChange"
          }
        },
        "version": {
          "description": "Version means the change for cluster version",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.ConfigurationVersionChange"
            }
          ]
        }
      }
    },
    "cloudconfig.ConfigurationChangeTargetType": {
      "type": "string",
      "enum": ["cluster", "tenant_init", "template"],
      "x-enum-varnames": [
        "ConfigurationChangeTargetTypeCluster",
        "ConfigurationChangeTargetTypeTenantInit",
        "ConfigurationChangeTargetTypeTemplate"
      ]
    },
    "cloudconfig.ConfigurationChangeable": {
      "type": "object",
      "properties": {
        "changeable": {
          "type": "boolean"
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ConfigurationComponentChange": {
      "type": "object",
      "properties": {
        "component": {
          "description": "Component is the component name.",
          "type": "string"
        },
        "id": {
          "description": "ID is the id in the database.",
          "type": "integer"
        },
        "modified_image_tag": {
          "description": "ModifiedImageTag records the change for effective image tag",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.ChangedImageTag"
            }
          ]
        },
        "modified_overwirte_image_tag": {
          "description": "ModifiedOverwriteImageTag contains the the change for overwrite image tag",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.ChangedImageTag"
            }
          ]
        },
        "modified_version": {
          "description": "ModifiedVersion records the component version change.",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.ChangedVersion"
            }
          ]
        }
      }
    },
    "cloudconfig.ConfigurationFileChange": {
      "type": "object",
      "properties": {
        "all_parameters": {
          "description": "AllParameters contain all used parameters.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.UsedParameter"
          }
        },
        "clear_custom_params": {
          "description": "ClearCustomParams indicates whether to clear all custom params.",
          "type": "boolean"
        },
        "config_type": {
          "description": "ConfigType is the config type of the file",
          "type": "string"
        },
        "filename": {
          "description": "Filename is the name of the file.",
          "type": "string"
        },
        "id": {
          "description": "ID is the id in the database.",
          "type": "integer"
        },
        "modified_parameters": {
          "description": "ModifiedParameters is the modified configs.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangedParameter"
          }
        },
        "modified_template": {
          "description": "ModifiedTemplate is the modified template",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.ChangedTemplate"
            }
          ]
        },
        "previous_text": {
          "description": "PreviousText is the file text before the change.\nIt is used to check this change is sequential.",
          "type": "string"
        },
        "template_id": {
          "description": "TemplateID is the id of used template.\nNOTE: If template is changed, it will be the changed template.",
          "type": "integer"
        }
      }
    },
    "cloudconfig.ConfigurationTemplateLocator": {
      "type": "object",
      "required": ["cluster_type", "template_type"],
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "template_type": {
          "$ref": "#/definitions/cloudconfig.TemplateType"
        },
        "tenant_id": {
          "description": "Own Tenant ID, only for TemplateTypeTenantDefault",
          "type": "string"
        }
      }
    },
    "cloudconfig.ConfigurationVersionChange": {
      "type": "object",
      "properties": {
        "from": {
          "type": "string"
        },
        "id": {
          "description": "ID is the id in the database.",
          "type": "integer"
        },
        "to": {
          "type": "string"
        }
      }
    },
    "cloudconfig.CreateClusterConfigurationChangeReq": {
      "type": "object",
      "required": ["cluster_id", "cluster_type"],
      "properties": {
        "apply_policy": {
          "$ref": "#/definitions/cloudconfig.ParameterApplyPolicy"
        },
        "change_type": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangeComponentReq"
          }
        },
        "execution_window": {
          "$ref": "#/definitions/cluster.CreateOpsExecutionWindowReq"
        },
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangeFileReq"
          }
        },
        "reason": {
          "type": "string"
        },
        "version": {
          "$ref": "#/definitions/cloudconfig.ChangeVersionReq"
        }
      }
    },
    "cloudconfig.CreateConfigurationChangeResp": {
      "type": "object",
      "properties": {
        "change_id": {
          "type": "integer"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.CreateConfigurationTemplateChangeReq": {
      "type": "object",
      "required": ["cluster_type", "template_type"],
      "properties": {
        "apply_policy": {
          "$ref": "#/definitions/cloudconfig.ParameterApplyPolicy"
        },
        "change_type": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangeComponentReq"
          }
        },
        "execution_window": {
          "$ref": "#/definitions/cluster.CreateOpsExecutionWindowReq"
        },
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangeFileReq"
          }
        },
        "reason": {
          "type": "string"
        },
        "template_type": {
          "$ref": "#/definitions/cloudconfig.TemplateType"
        },
        "tenant_id": {
          "description": "Own Tenant ID, only for TemplateTypeTenantDefault",
          "type": "string"
        },
        "version": {
          "$ref": "#/definitions/cloudconfig.ChangeVersionReq"
        }
      }
    },
    "cloudconfig.CreateDefaultConfigurationChangeReleaseReq": {
      "type": "object",
      "required": ["environment"],
      "properties": {
        "description": {
          "type": "string"
        },
        "environment": {
          "type": "string"
        }
      }
    },
    "cloudconfig.CreateDefaultConfigurationChangeResp": {
      "type": "object",
      "properties": {
        "change_id": {
          "type": "integer"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.CreateMetaProfileReq": {
      "type": "object",
      "required": [
        "cluster_type",
        "component_image_tags",
        "profile_name",
        "tenant_id"
      ],
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "component_image_tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "component_versions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "config_custom_templates": {
          "type": "object",
          "additionalProperties": {
            "type": "integer"
          }
        },
        "description": {
          "type": "string"
        },
        "profile_name": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.CreateParamAttrReq": {
      "type": "object",
      "required": ["attribute"],
      "properties": {
        "attribute": {
          "$ref": "#/definitions/cloudconfig.ParameterAttribute"
        }
      }
    },
    "cloudconfig.CreateTemplateReq": {
      "type": "object",
      "properties": {
        "allow_assign_id": {
          "type": "boolean"
        },
        "deny_propagation": {
          "type": "boolean"
        },
        "template": {
          "$ref": "#/definitions/cloudconfig.Template"
        }
      }
    },
    "cloudconfig.CreateTemplateResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.CreateTenantInitConfigurationChangeReq": {
      "type": "object",
      "required": ["cluster_type", "tenant_id"],
      "properties": {
        "apply_policy": {
          "$ref": "#/definitions/cloudconfig.ParameterApplyPolicy"
        },
        "change_type": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangeComponentReq"
          }
        },
        "execution_window": {
          "$ref": "#/definitions/cluster.CreateOpsExecutionWindowReq"
        },
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangeFileReq"
          }
        },
        "reason": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "version": {
          "$ref": "#/definitions/cloudconfig.ChangeVersionReq"
        }
      }
    },
    "cloudconfig.CustomTemplateInfo": {
      "type": "object",
      "properties": {
        "data": {
          "description": "key: config_type",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/cloudconfig.Template"
          }
        }
      }
    },
    "cloudconfig.DefaultComponentChange": {
      "type": "object",
      "properties": {
        "modified": {
          "$ref": "#/definitions/cloudconfig.DefaultComponentConfigChangeData"
        },
        "origin": {
          "$ref": "#/definitions/cloudconfig.DefaultComponentConfiguration"
        }
      }
    },
    "cloudconfig.DefaultComponentConfigChangeData": {
      "type": "object",
      "properties": {
        "base_image": {
          "type": "string"
        },
        "image_tag": {
          "type": "string"
        }
      }
    },
    "cloudconfig.DefaultComponentConfiguration": {
      "type": "object",
      "properties": {
        "base_image": {
          "type": "string"
        },
        "default_case": {
          "$ref": "#/definitions/cloudconfig.ComponentDefaultCase"
        },
        "image_tag": {
          "type": "string"
        }
      }
    },
    "cloudconfig.DefaultConfigurationChange": {
      "type": "object",
      "properties": {
        "applicant": {
          "type": "string"
        },
        "closed_at": {
          "type": "integer"
        },
        "created_at": {
          "type": "integer"
        },
        "display_name": {
          "type": "string"
        },
        "environments": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "id": {
          "type": "integer"
        },
        "item_types": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeItemType"
          }
        },
        "phase": {
          "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangePhase"
        },
        "phase_reason": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "cloudconfig.DefaultConfigurationChangeItem": {
      "type": "object",
      "properties": {
        "data": {
          "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeItemDataUnion"
        },
        "id": {
          "type": "integer"
        },
        "parent_id": {
          "description": "id of DefaultConfigurationChange",
          "type": "integer"
        },
        "type": {
          "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeItemType"
        }
      }
    },
    "cloudconfig.DefaultConfigurationChangeItemDataUnion": {
      "type": "object",
      "properties": {
        "default_component_config": {
          "$ref": "#/definitions/cloudconfig.DefaultComponentChange"
        },
        "template_default_case_binding": {
          "$ref": "#/definitions/cloudconfig.TemplateDefaultCaseBindingChange"
        },
        "version_release": {
          "$ref": "#/definitions/cloudconfig.VersionRelease"
        }
      }
    },
    "cloudconfig.DefaultConfigurationChangeItemRelease": {
      "type": "object",
      "properties": {
        "data": {
          "description": "Data is the data of this release",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeItemReleaseDataUnion"
            }
          ]
        },
        "environment": {
          "description": "Environment is the name of the environment",
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "item_id": {
          "description": "ItemID is the id of DefaultConfigurationChangeItem",
          "type": "integer"
        },
        "parent_id": {
          "description": "ParentID is the id of DefaultConfigurationChange",
          "type": "integer"
        },
        "release_number": {
          "description": "ReleaseNumber is the number of this release, is same as the number of change release",
          "type": "integer"
        }
      }
    },
    "cloudconfig.DefaultConfigurationChangeItemReleaseDataUnion": {
      "type": "object",
      "properties": {
        "default_component_config": {
          "$ref": "#/definitions/cloudconfig.DefaultComponentConfigChangeData"
        },
        "template_default_case_binding": {
          "$ref": "#/definitions/cloudconfig.TemplateDefaultCaseBindingChangeData"
        }
      }
    },
    "cloudconfig.DefaultConfigurationChangeItemType": {
      "type": "string",
      "enum": [
        "version_release",
        "template_default_case_binding",
        "default_component_config"
      ],
      "x-enum-varnames": [
        "DefaultConfigurationChangeItemTypeVersionRelease",
        "DefaultConfigurationChangeItemTypeTemplateDefaultCaseBinding",
        "DefaultConfigurationChangeItemTypeDefaultComponentConfig"
      ]
    },
    "cloudconfig.DefaultConfigurationChangePhase": {
      "type": "string",
      "enum": ["in_progress", "success", "terminated"],
      "x-enum-varnames": [
        "DefaultConfigurationChangePhaseInProgress",
        "DefaultConfigurationChangePhaseSuccess",
        "DefaultConfigurationChangePhaseTerminated"
      ]
    },
    "cloudconfig.DefaultConfigurationChangeRelease": {
      "type": "object",
      "properties": {
        "approval_id": {
          "description": "ApprovalID is the approval ID of this release",
          "type": "integer"
        },
        "description": {
          "description": "Description is the description of this release",
          "type": "string"
        },
        "environment": {
          "description": "Environment is the name of the environment",
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "parent_id": {
          "description": "ParentID is the id of DefaultConfigurationChange",
          "type": "integer"
        },
        "phase": {
          "description": "Phase is the phase of this release",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeReleasePhase"
            }
          ]
        },
        "release_number": {
          "description": "ReleaseNumber is the number of this release.",
          "type": "integer"
        },
        "released_at": {
          "description": "ReleasedAt is the last time when the change is released in `Environment`",
          "type": "integer"
        }
      }
    },
    "cloudconfig.DefaultConfigurationChangeReleasePhase": {
      "type": "string",
      "enum": ["approving", "released", "rollbacked", "cancelled"],
      "x-enum-varnames": [
        "DefaultConfigurationChangeReleasePhaseApproving",
        "DefaultConfigurationChangeReleasePhaseReleased",
        "DefaultConfigurationChangeReleasePhaseRollback",
        "DefaultConfigurationChangeReleasePhaseCancelled"
      ]
    },
    "cloudconfig.DefaultVersionRule": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "cluster_version": {
          "type": "string"
        },
        "component": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.DeleteTemplateDefaultCaseBindingByOpReq": {
      "type": "object",
      "properties": {
        "default_case_bindings": {
          "$ref": "#/definitions/cloudconfig.TemplateDefaultCaseBinding"
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "cloudconfig.DeleteTemplateDefaultCaseBindingResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.DiffTemplateResp": {
      "type": "object",
      "properties": {
        "changed_parameters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangedParameter"
          }
        },
        "config_type": {
          "type": "string"
        }
      }
    },
    "cloudconfig.FileConfiguration": {
      "type": "object",
      "properties": {
        "all_parameters": {
          "description": "key: parameter name",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/cloudconfig.UnifiedParameter"
          }
        },
        "belong_to_component": {
          "type": "string"
        },
        "config_type": {
          "type": "string"
        },
        "filename": {
          "type": "string"
        },
        "format": {
          "type": "string"
        },
        "template_id": {
          "type": "integer"
        },
        "text": {
          "type": "string"
        }
      }
    },
    "cloudconfig.GetConfigurationChangeResp": {
      "type": "object",
      "properties": {
        "change": {
          "$ref": "#/definitions/cloudconfig.ConfigurationChange"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.GetConfigurationResp": {
      "type": "object",
      "properties": {
        "changeable": {
          "$ref": "#/definitions/cloudconfig.ConfigurationChangeable"
        },
        "configuration": {
          "$ref": "#/definitions/cloudconfig.Configuration"
        },
        "default_version": {
          "$ref": "#/definitions/cloudconfig.TenantVersions"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.GetDefaultConfigurationChangeRelease": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "release": {
          "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeRelease"
        },
        "released_items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeItem"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.GetDefaultConfigurationChangeResp": {
      "type": "object",
      "properties": {
        "change": {
          "$ref": "#/definitions/cloudconfig.DefaultConfigurationChange"
        },
        "change_items": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeItem"
            }
          }
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.GetInternalChangefeedResp": {
      "type": "object",
      "properties": {
        "changefeed": {
          "$ref": "#/definitions/cloudconfig.InternalChangefeed"
        }
      }
    },
    "cloudconfig.GetInternalTiCDCClusterResp": {
      "type": "object",
      "properties": {
        "ticdc_cluster": {
          "$ref": "#/definitions/cloudconfig.InternalTiCDCCluster"
        }
      }
    },
    "cloudconfig.GetParamAttrResp": {
      "type": "object",
      "properties": {
        "attribute": {
          "$ref": "#/definitions/cloudconfig.ParameterAttribute"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.GetTemplateResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "template": {
          "$ref": "#/definitions/cloudconfig.Template"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ImportVersionsReq": {
      "type": "object",
      "properties": {
        "gitops_branch": {
          "type": "string"
        },
        "max_version": {
          "type": "string"
        },
        "min_version": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "tier_branch": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ImportVersionsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.InternalChangefeed": {
      "type": "object",
      "properties": {
        "arch": {
          "type": "string"
        },
        "checkpoint_ts": {
          "type": "integer"
        },
        "checkpoint_tso": {
          "type": "string"
        },
        "cluster_type": {
          "type": "string"
        },
        "created_at": {
          "description": "timestamp",
          "type": "integer"
        },
        "display_id": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "downstream_config": {
          "type": "object",
          "additionalProperties": true
        },
        "downstream_type": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "network_info": {
          "$ref": "#/definitions/cloudconfig.ChangefeedNetworkInfo"
        },
        "rcu": {
          "type": "string"
        },
        "start_position": {
          "$ref": "#/definitions/cloudconfig.ChangefeedStartPosition"
        },
        "status": {
          "type": "string"
        },
        "table_config": {
          "$ref": "#/definitions/cloudconfig.ChangefeedTableConfig"
        },
        "ticdc_cluster": {
          "$ref": "#/definitions/cloudconfig.InternalTiCDCCluster"
        },
        "ticdc_cluster_name": {
          "type": "string"
        }
      }
    },
    "cloudconfig.InternalTiCDCCluster": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "type": "string"
        },
        "control_plane_arch": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "deploy_type": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "operator_version": {
          "type": "string"
        },
        "provider_type": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "specification_code": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tidb_cluster_id": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ListAvailableClusterVersionsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.AvailableClusterVersion"
          }
        }
      }
    },
    "cloudconfig.ListAvailableComponentVersionsResp": {
      "type": "object",
      "properties": {
        "detail": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ComponentInfo"
          }
        },
        "versions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "cloudconfig.ListComponentImageUpdateRecordsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/operation.Instance"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ListComponentsResp": {
      "type": "object",
      "properties": {
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "cloudconfig.ListConfigTypesResp": {
      "type": "object",
      "properties": {
        "config_types": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "cloudconfig.ListConfigurationChangeResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ConfigurationChange"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ListDefaultConfigurationChangeItemReleaseResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeItemRelease"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ListDefaultConfigurationChangeItemsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeItem"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "cloudconfig.ListDefaultConfigurationChangeReleasesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeRelease"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ListDefaultConfigurationChangesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.DefaultConfigurationChange"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ListDefaultVersionRulesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.DefaultVersionRule"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ListInstanceTypesResp": {
      "type": "object",
      "properties": {
        "instance_types": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.CloudInstanceType"
          }
        }
      }
    },
    "cloudconfig.ListInternalChangefeedsResp": {
      "type": "object",
      "properties": {
        "changefeeds": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.InternalChangefeed"
          }
        }
      }
    },
    "cloudconfig.ListMetaProfilesResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.MetaProfile"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "cloudconfig.ListParamAttrResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ParameterAttribute"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ListParamVersionsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        },
        "versions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "cloudconfig.ListTemplateDefaultCaseBindingsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.TemplateDefaultCaseBinding"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "cloudconfig.ListTemplatesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.Template"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ListUnreleasedDefaultConfigurationChangeItemsResp": {
      "type": "object",
      "properties": {
        "unreleased_items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.DefaultConfigurationChangeItem"
          }
        }
      }
    },
    "cloudconfig.MetaProfile": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "component_image_tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "component_versions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "config_custom_templates": {
          "type": "object",
          "additionalProperties": {
            "type": "integer"
          }
        },
        "description": {
          "type": "string"
        },
        "profile_id": {
          "type": "integer"
        },
        "profile_name": {
          "type": "string"
        },
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "cloudconfig.NamedParameter": {
      "type": "object",
      "properties": {
        "comment": {
          "description": "Comment is the comment of this parameter",
          "type": "string"
        },
        "name": {
          "description": "Name is the name of this parameter",
          "type": "string"
        },
        "value": {
          "description": "Value is the value of this parameter"
        }
      }
    },
    "cloudconfig.OperationResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "description": "the operation instance id",
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ParameterApplyPolicy": {
      "type": "string",
      "enum": [
        "None",
        "HotReload",
        "RollingRestart",
        "EnsureUpdateToTC",
        "NewInstancesOnly",
        "ForceRestart"
      ],
      "x-enum-comments": {
        "ParameterApplyPolicyNewInstancesOnly": "only used by dm currently"
      },
      "x-enum-varnames": [
        "ParameterApplyPolicyNone",
        "ParameterApplyPolicyHotReload",
        "ParameterApplyPolicyRestart",
        "ParameterApplyPolicyEnsureUpdateToTC",
        "ParameterApplyPolicyNewInstancesOnly",
        "ParameterApplyPolicyForceRestart"
      ]
    },
    "cloudconfig.ParameterAttribute": {
      "type": "object",
      "properties": {
        "apply_policy": {
          "$ref": "#/definitions/cloudconfig.ParameterApplyPolicy"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "config_type": {
          "type": "string"
        },
        "default_value": {},
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "risk_level": {
          "description": "\"low\" or \"high\"",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.RiskLevel"
            }
          ]
        },
        "type": {
          "type": "string"
        },
        "updated_by": {
          "type": "string"
        },
        "validation": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ParameterSource": {
      "type": "string",
      "enum": ["custom", "template", "kernel default"],
      "x-enum-varnames": [
        "ParameterCustom",
        "ParameterTemplate",
        "ParameterKernelDefault"
      ]
    },
    "cloudconfig.ParameterValue": {
      "type": "object",
      "properties": {
        "comment": {
          "description": "Comment is the comment of this parameter",
          "type": "string"
        },
        "value": {
          "description": "Value is the value of this parameter"
        }
      }
    },
    "cloudconfig.PreviewClusterConfigurationChangeReq": {
      "type": "object",
      "required": ["cluster_id", "cluster_type"],
      "properties": {
        "change_type": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangeComponentReq"
          }
        },
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangeFileReq"
          }
        },
        "version": {
          "$ref": "#/definitions/cloudconfig.ChangeVersionReq"
        }
      }
    },
    "cloudconfig.PreviewConfigurationChangeResp": {
      "type": "object",
      "properties": {
        "apply_policies": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ParameterApplyPolicy"
          }
        },
        "change": {
          "$ref": "#/definitions/cloudconfig.ConfigurationChange"
        },
        "configuration": {
          "$ref": "#/definitions/cloudconfig.Configuration"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "reasons": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.PreviewTenantInitConfigurationChangeReq": {
      "type": "object",
      "required": ["cluster_type", "tenant_id"],
      "properties": {
        "change_type": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangeComponentReq"
          }
        },
        "files": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ChangeFileReq"
          }
        },
        "tenant_id": {
          "type": "string"
        },
        "version": {
          "$ref": "#/definitions/cloudconfig.ChangeVersionReq"
        }
      }
    },
    "cloudconfig.ReleaseVersionReq": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "source_version": {
          "type": "string"
        },
        "target_version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.RiskLevel": {
      "type": "string",
      "enum": ["low", "high"],
      "x-enum-varnames": ["RiskLevelLow", "RiskLevelHigh"]
    },
    "cloudconfig.RollbackDefaultConfigurationChangeReleaseReq": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "environment": {
          "type": "string"
        },
        "release_number": {
          "type": "integer"
        }
      }
    },
    "cloudconfig.SearchClusterComponentsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ClusterComponentVersion"
          }
        },
        "partial_failure": {
          "type": "boolean"
        },
        "region_results": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.ClusterComponentSearchRegionResult"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.ShutdownTiCDCReq": {
      "type": "object",
      "required": ["cloud_config_change_id"],
      "properties": {
        "cloud_config_change_id": {
          "type": "integer"
        }
      }
    },
    "cloudconfig.StatDefaultConfigurationChangeItemsResp": {
      "type": "object",
      "properties": {
        "config_types_of_template_default_case_binding": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "cloudconfig.Template": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "config_type": {
          "type": "string"
        },
        "custom_template_info": {
          "$ref": "#/definitions/cloudconfig.CustomTemplateInfo"
        },
        "default_cases": {
          "description": "Output only",
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.TemplateDefaultCase"
          }
        },
        "id": {
          "description": "id in the config center",
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "parameters": {
          "description": "key: parameter name",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/cloudconfig.NamedParameter"
          }
        },
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "cloudconfig.TemplateDefaultCase": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "config_type": {
          "type": "string"
        },
        "instance_type": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.TemplateDefaultCaseBinding": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "default_case": {
          "$ref": "#/definitions/cloudconfig.TemplateDefaultCase"
        },
        "template_id": {
          "type": "integer"
        }
      }
    },
    "cloudconfig.TemplateDefaultCaseBindingChange": {
      "type": "object",
      "properties": {
        "modified": {
          "description": "default as origin",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.TemplateDefaultCaseBindingChangeData"
            }
          ]
        },
        "origin": {
          "$ref": "#/definitions/cloudconfig.TemplateDefaultCaseBinding"
        }
      }
    },
    "cloudconfig.TemplateDefaultCaseBindingChangeData": {
      "type": "object",
      "properties": {
        "template_id": {
          "type": "integer"
        }
      }
    },
    "cloudconfig.TemplateType": {
      "type": "string",
      "enum": ["unspecified", "custom", "custom_part", "tenant_default"],
      "x-enum-comments": {
        "TemplateTypeCustomPart": "internal use only"
      },
      "x-enum-varnames": [
        "TemplateTypeUnspecified",
        "TemplateTypeCustom",
        "TemplateTypeCustomPart",
        "TemplateTypeTenantDefault"
      ]
    },
    "cloudconfig.TenantImages": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/cloudconfig.Component"
      }
    },
    "cloudconfig.TenantInitConfigurationLocator": {
      "type": "object",
      "required": ["cluster_type", "tenant_id"],
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.TenantVersions": {
      "type": "object",
      "properties": {
        "data-migration": {
          "type": "string"
        },
        "tidb": {
          "type": "string"
        },
        "tiproxy": {
          "type": "string"
        }
      }
    },
    "cloudconfig.UnifiedParameter": {
      "type": "object",
      "properties": {
        "attribute": {
          "description": "Attribute is the attribute of this config\nIt may be nil if the parameter is not defined in the param dict.",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.ParameterAttribute"
            }
          ]
        },
        "comment": {
          "description": "Comment is the comment of this parameter",
          "type": "string"
        },
        "custom": {
          "description": "Custom is the custom config value",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.ParameterValue"
            }
          ]
        },
        "name": {
          "description": "Name is the name of this parameter",
          "type": "string"
        },
        "source": {
          "description": "Source is the value source of this parameter",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.ParameterSource"
            }
          ]
        },
        "template": {
          "description": "Template is the template config value",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.ParameterValue"
            }
          ]
        },
        "value": {
          "description": "Value is the value of this parameter"
        }
      }
    },
    "cloudconfig.UpdateComponentImageReq": {
      "type": "object",
      "properties": {
        "author": {
          "type": "string"
        },
        "base_image": {
          "type": "string"
        },
        "change_id": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "policy": {
          "$ref": "#/definitions/operation.ActionStartPolicy"
        },
        "release_id": {
          "type": "string"
        },
        "tag": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cloudconfig.UpdateDefaultClusterVersionReq": {
      "type": "object",
      "properties": {
        "is_default": {
          "type": "boolean"
        }
      }
    },
    "cloudconfig.UpdateDefaultClusterVersionResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.UpdateParamAttrReq": {
      "type": "object",
      "properties": {
        "apply_policy": {
          "$ref": "#/definitions/cloudconfig.ParameterApplyPolicy"
        },
        "default_value": {},
        "description": {
          "type": "string"
        },
        "risk_level": {
          "$ref": "#/definitions/cloudconfig.RiskLevel"
        },
        "updated_by": {
          "type": "string"
        },
        "validation": {
          "type": "string"
        }
      }
    },
    "cloudconfig.UpdateTemplateDefaultCaseBindingByOpReq": {
      "type": "object",
      "properties": {
        "default_case_bindings": {
          "$ref": "#/definitions/cloudconfig.TemplateDefaultCaseBinding"
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "cloudconfig.UpdateTemplateDefaultCaseBindingResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cloudconfig.UpdateTemplateDefaultCaseBindingsReq": {
      "type": "object",
      "properties": {
        "default_cases": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cloudconfig.TemplateDefaultCaseBinding"
          }
        }
      }
    },
    "cloudconfig.UsedParameter": {
      "type": "object",
      "properties": {
        "comment": {
          "description": "Comment is the comment of this parameter",
          "type": "string"
        },
        "name": {
          "description": "Name is the name of this parameter",
          "type": "string"
        },
        "source": {
          "description": "Source is the value source of this parameter",
          "allOf": [
            {
              "$ref": "#/definitions/cloudconfig.ParameterSource"
            }
          ]
        },
        "value": {
          "description": "Value is the value of this parameter"
        }
      }
    },
    "cloudconfig.VersionRelease": {
      "type": "object",
      "properties": {
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "covering_instance_types": {
          "description": "encoded Instance Types",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "source_version": {
          "type": "string"
        },
        "target_version": {
          "type": "string"
        }
      }
    },
    "cluster.ApplyHeterogeneousDeployRequest": {
      "type": "object",
      "required": ["component_type"],
      "properties": {
        "alternative_instance_type": {
          "type": "string"
        },
        "component_type": {
          "$ref": "#/definitions/cluster.ComponentType"
        },
        "current_instance_type": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "tidb_group_id": {
          "type": "string"
        }
      }
    },
    "cluster.ApplyHeterogeneousDeployResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.Cluster": {
      "type": "object",
      "properties": {
        "cluster_components": {
          "$ref": "#/definitions/cluster.ClusterComponent"
        },
        "create_time": {
          "type": "integer"
        },
        "cross_account_deployment_id": {
          "type": "integer"
        },
        "deploy_type": {
          "description": "supported \"DEPLOY_TYPE_NEXTGEN\", \"DEPLOY_TYPE_DEDICATED\", \"DEPLOY_TYPE_SERVERLESS\". Empty string for cloud native",
          "type": "string"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "is_dev_tier": {
          "type": "boolean"
        },
        "is_new_arch": {
          "description": "set to true if the cluster is serverless",
          "type": "boolean"
        },
        "logical_region": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "nextgen_details": {
          "description": "only filled in get api, not in list api",
          "allOf": [
            {
              "$ref": "#/definitions/cluster.NextGenDetails"
            }
          ]
        },
        "profile": {
          "type": "string"
        },
        "project_id": {
          "type": "string",
          "example": "0"
        },
        "project_name": {
          "type": "string"
        },
        "provider": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "resource_pool_details": {
          "$ref": "#/definitions/cluster.ResourcePoolDetails"
        },
        "serverless_details": {
          "description": "only filled in get api, not in list api",
          "allOf": [
            {
              "$ref": "#/definitions/cluster.ServerlessDetails"
            }
          ]
        },
        "service_plan": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string",
          "example": "0"
        },
        "tenant_name": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cluster.ClusterComponent": {
      "type": "object",
      "properties": {
        "pd": {
          "$ref": "#/definitions/cluster.Component"
        },
        "tidb": {
          "$ref": "#/definitions/cluster.Component"
        },
        "tiflash": {
          "$ref": "#/definitions/cluster.Component"
        },
        "tikv": {
          "$ref": "#/definitions/cluster.Component"
        },
        "tiproxy": {
          "$ref": "#/definitions/cluster.Component"
        }
      }
    },
    "cluster.CommonResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "description": "the operation instance id",
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.Component": {
      "type": "object",
      "properties": {
        "machineType": {
          "description": "TODO(chenfei): remove. used by gitops to overlay configuration for component for now",
          "type": "string"
        },
        "node_profile": {
          "$ref": "#/definitions/cluster.NodeProfileOfComponent"
        },
        "replicas": {
          "type": "integer"
        },
        "storage_type": {
          "type": "string"
        }
      }
    },
    "cluster.ComponentInfo": {
      "type": "object",
      "properties": {
        "component_type": {
          "$ref": "#/definitions/cluster.ComponentType"
        },
        "count": {
          "type": "integer"
        },
        "cpu_num": {
          "type": "integer"
        },
        "host_id": {
          "type": "string"
        },
        "instance_cpu_arch": {
          "type": "string"
        },
        "instance_type": {
          "type": "string"
        },
        "internal_endpoint": {
          "type": "string"
        },
        "is_default_tidb_group": {
          "type": "boolean"
        },
        "memory_size_gi": {
          "type": "integer"
        },
        "phase": {
          "type": "string"
        },
        "private_link_service": {
          "$ref": "#/definitions/cluster.PrivateLinkServiceInfo"
        },
        "privatelink_dns_name": {
          "type": "string"
        },
        "spu_display_name": {
          "type": "string"
        },
        "spu_name": {
          "type": "string"
        },
        "storages": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/cluster.ComponentStorage"
          }
        },
        "tidb_group_display_name": {
          "type": "string"
        },
        "tidb_group_id": {
          "type": "string"
        }
      }
    },
    "cluster.ComponentStorage": {
      "type": "object",
      "properties": {
        "additional_iops": {
          "type": "integer"
        },
        "component_id": {
          "type": "integer"
        },
        "disk_type": {
          "type": "string"
        },
        "iops": {
          "type": "integer"
        },
        "size_gi": {
          "type": "integer"
        },
        "storage_id": {
          "type": "integer"
        },
        "throughput_mibps": {
          "type": "integer"
        },
        "volume_type": {
          "type": "string"
        }
      }
    },
    "cluster.ComponentType": {
      "type": "string",
      "enum": [
        "tikv",
        "tidb",
        "tiflash",
        "pd",
        "tiproxy",
        "ticdc",
        "cassandra"
      ],
      "x-enum-varnames": [
        "ComponentTypeTikv",
        "ComponentTypeTidb",
        "ComponentTypeTiflash",
        "ComponentTypePd",
        "ComponentTypeTiproxy",
        "ComponentTypeTicdc",
        "ComponentTypeCassandra"
      ]
    },
    "cluster.CreateClusterOpsMaintenanceWindowReq": {
      "type": "object",
      "required": ["cluster_id", "windows"],
      "properties": {
        "approvers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cluster_id": {
          "type": "string"
        },
        "windows": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/maintenance.ClusterOpsMaintenanceWindowSlot"
          }
        }
      }
    },
    "cluster.CreateClusterOpsMaintenanceWindowResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "item": {
          "$ref": "#/definitions/maintenance.ClusterOpsMaintenanceWindow"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.CreateDedicatedToPremiumPrecheckReq": {
      "type": "object",
      "required": ["source_cluster_id"],
      "properties": {
        "migration_account_email": {
          "type": "string"
        },
        "source_cluster_id": {
          "type": "string"
        },
        "target_premium_project_id": {
          "type": "string"
        }
      }
    },
    "cluster.CreateMaintenanceReq": {
      "type": "object",
      "properties": {
        "cluster_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "deadline": {
          "description": "unix",
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        }
      }
    },
    "cluster.CreateMaintenanceResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.CreateMigrationClusterConfigSyncRequest": {
      "type": "object",
      "properties": {
        "allow_fallback_to_backup": {
          "type": "boolean"
        },
        "skip_pd_config": {
          "type": "boolean"
        },
        "skip_pd_server_config": {
          "type": "boolean"
        },
        "skip_placement_rules": {
          "type": "boolean"
        },
        "skip_store_limits": {
          "type": "boolean"
        },
        "skip_system_variables": {
          "type": "boolean"
        }
      }
    },
    "cluster.CreateMigrationClusterPDNodeRequest": {
      "type": "object",
      "properties": {
        "node_spec_key": {
          "type": "string"
        }
      }
    },
    "cluster.CreateMigrationClusterRequest": {
      "type": "object",
      "required": ["cluster_display_name"],
      "properties": {
        "backup_id": {
          "type": "string"
        },
        "backup_region_id": {
          "type": "string"
        },
        "br_custom_options": {
          "type": "string"
        },
        "br_image_tag": {
          "type": "string"
        },
        "br_version": {
          "type": "string"
        },
        "cluster_display_name": {
          "type": "string"
        },
        "config_sync_strategy": {
          "$ref": "#/definitions/cluster.CreateMigrationClusterConfigSyncRequest"
        },
        "create_pd_image_tag": {
          "type": "string"
        },
        "create_tidb_image_tag": {
          "type": "string"
        },
        "create_tiflash_image_tag": {
          "type": "string"
        },
        "create_tikv_image_tag": {
          "type": "string"
        },
        "pd_image_tag": {
          "type": "string"
        },
        "pd_node_setting": {
          "$ref": "#/definitions/cluster.CreateMigrationClusterPDNodeRequest"
        },
        "reason": {
          "type": "string"
        },
        "restore_mode": {
          "type": "string"
        },
        "target_cluster_version": {
          "type": "string"
        },
        "target_project_id": {
          "type": "string"
        },
        "target_region_id": {
          "type": "string"
        },
        "tidb_image_tag": {
          "type": "string"
        },
        "tidb_node_setting": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.CreateMigrationClusterTiDBNodeRequest"
          }
        },
        "tiflash_image_tag": {
          "type": "string"
        },
        "tiflash_node_setting": {
          "$ref": "#/definitions/cluster.CreateMigrationClusterStorageNodeRequest"
        },
        "tikv_image_tag": {
          "type": "string"
        },
        "tikv_node_setting": {
          "$ref": "#/definitions/cluster.CreateMigrationClusterStorageNodeRequest"
        }
      }
    },
    "cluster.CreateMigrationClusterResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.CreateMigrationClusterStorageNodeRequest": {
      "type": "object",
      "properties": {
        "node_count": {
          "type": "integer"
        },
        "node_spec_key": {
          "type": "string"
        }
      }
    },
    "cluster.CreateMigrationClusterTiDBNodeRequest": {
      "type": "object",
      "required": ["display_name"],
      "properties": {
        "display_name": {
          "type": "string"
        },
        "is_default_group": {
          "type": "boolean"
        },
        "node_count": {
          "type": "integer"
        },
        "node_spec_key": {
          "type": "string"
        }
      }
    },
    "cluster.CreateOpsExecutionWindowReq": {
      "type": "object",
      "properties": {
        "end_at": {
          "type": "integer"
        },
        "start_at": {
          "type": "integer"
        }
      }
    },
    "cluster.CreateTrafficReplayRequest": {
      "type": "object",
      "required": ["cluster_id", "replay_spec", "tenant_id"],
      "properties": {
        "cluster_id": {
          "type": "string"
        },
        "replay_spec": {
          "$ref": "#/definitions/cluster.TrafficReplaySpec"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "cluster.CreateTrafficReplayResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.CreateVPCPeeringReq": {
      "type": "object",
      "required": [
        "cidr",
        "cloud_account_id",
        "cloud_provider",
        "reason",
        "region",
        "vpc_id"
      ],
      "properties": {
        "cidr": {
          "type": "string"
        },
        "cloud_account_id": {
          "type": "string"
        },
        "cloud_provider": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "vpc_id": {
          "type": "string"
        }
      }
    },
    "cluster.DedicatedToPremiumPrecheck": {
      "type": "object",
      "properties": {
        "applicant": {
          "type": "string"
        },
        "create_time": {
          "type": "string"
        },
        "failure_message": {
          "type": "string"
        },
        "finish_time": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "migration_account_email": {
          "type": "string"
        },
        "reports": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.DedicatedToPremiumPrecheckReport"
          }
        },
        "source_cluster_id": {
          "type": "string"
        },
        "start_time": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "target_premium_project_id": {
          "type": "string"
        },
        "update_time": {
          "type": "string"
        }
      }
    },
    "cluster.DedicatedToPremiumPrecheckItem": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string"
        },
        "check_key": {
          "type": "string"
        },
        "evidence": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "why": {
          "type": "string"
        }
      }
    },
    "cluster.DedicatedToPremiumPrecheckReport": {
      "type": "object",
      "properties": {
        "category": {
          "type": "string"
        },
        "complete": {
          "type": "boolean"
        },
        "execution_error": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.DedicatedToPremiumPrecheckItem"
          }
        },
        "summary": {
          "$ref": "#/definitions/cluster.DedicatedToPremiumPrecheckSummary"
        }
      }
    },
    "cluster.DedicatedToPremiumPrecheckResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "precheck": {
          "$ref": "#/definitions/cluster.DedicatedToPremiumPrecheck"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.DedicatedToPremiumPrecheckSummary": {
      "type": "object",
      "properties": {
        "needs_input_count": {
          "type": "integer"
        },
        "no_risk_found_count": {
          "type": "integer"
        },
        "risk_found_count": {
          "type": "integer"
        },
        "total_count": {
          "type": "integer"
        }
      }
    },
    "cluster.DeleteHeterogeneousDeployRequest": {
      "type": "object",
      "required": ["component_type"],
      "properties": {
        "component_type": {
          "$ref": "#/definitions/cluster.ComponentType"
        },
        "reason": {
          "type": "string"
        },
        "tidb_group_id": {
          "type": "string"
        }
      }
    },
    "cluster.DeleteHeterogeneousDeployResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.DeleteTrafficReplayResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.DeleteVPCPeeringReq": {
      "type": "object",
      "required": ["reason"],
      "properties": {
        "reason": {
          "type": "string"
        }
      }
    },
    "cluster.ExecCtlReq": {
      "type": "object",
      "properties": {
        "command": {
          "type": "string"
        }
      }
    },
    "cluster.ExecCtlResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "stderr": {
          "type": "string"
        },
        "stdout": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.GetAlertSummaryResp": {
      "type": "object",
      "properties": {
        "trends": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jira.SeriesTrend"
          }
        }
      }
    },
    "cluster.GetCloudIAMInfoResp": {
      "type": "object",
      "properties": {
        "bucket_name": {
          "type": "string"
        },
        "cloud_provider": {
          "type": "string"
        },
        "logical_name": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "tidb_cloud_account_external_id": {
          "type": "string"
        },
        "tidb_cloud_account_id": {
          "type": "string"
        }
      }
    },
    "cluster.GetClusterComponentsResp": {
      "type": "object",
      "properties": {
        "cassandra": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.ComponentInfo"
          }
        },
        "pd": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.ComponentInfo"
          }
        },
        "tidb": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.ComponentInfo"
          }
        },
        "tiflash": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.ComponentInfo"
          }
        },
        "tiflash_storage_type": {
          "type": "string"
        },
        "tikv": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.ComponentInfo"
          }
        },
        "tikv_storage_type": {
          "type": "string"
        },
        "tiproxy": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.ComponentInfo"
          }
        }
      }
    },
    "cluster.GetClusterOpsMaintenanceWindowResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "item": {
          "$ref": "#/definitions/maintenance.ClusterOpsMaintenanceWindow"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.GetClusterResp": {
      "type": "object",
      "properties": {
        "cluster_components": {
          "$ref": "#/definitions/cluster.ClusterComponent"
        },
        "create_time": {
          "type": "integer"
        },
        "cross_account_deployment_id": {
          "type": "integer"
        },
        "deploy_type": {
          "description": "supported \"DEPLOY_TYPE_NEXTGEN\", \"DEPLOY_TYPE_DEDICATED\", \"DEPLOY_TYPE_SERVERLESS\". Empty string for cloud native",
          "type": "string"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "is_dev_tier": {
          "type": "boolean"
        },
        "is_new_arch": {
          "description": "set to true if the cluster is serverless",
          "type": "boolean"
        },
        "logical_region": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "nextgen_details": {
          "description": "only filled in get api, not in list api",
          "allOf": [
            {
              "$ref": "#/definitions/cluster.NextGenDetails"
            }
          ]
        },
        "profile": {
          "type": "string"
        },
        "project_id": {
          "type": "string",
          "example": "0"
        },
        "project_name": {
          "type": "string"
        },
        "provider": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "resource_pool_details": {
          "$ref": "#/definitions/cluster.ResourcePoolDetails"
        },
        "serverless_details": {
          "description": "only filled in get api, not in list api",
          "allOf": [
            {
              "$ref": "#/definitions/cluster.ServerlessDetails"
            }
          ]
        },
        "service_plan": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string",
          "example": "0"
        },
        "tenant_name": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cluster.GetDMNamespaceResp": {
      "type": "object",
      "properties": {
        "namespace": {
          "type": "string"
        },
        "pod_names": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "cluster.GetHeterogeneousDeployResponse": {
      "type": "object",
      "properties": {
        "deploy": {
          "$ref": "#/definitions/cluster.HeterogeneousDeploy"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.GetMaintenanceResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "maintenance": {
          "$ref": "#/definitions/maintenance.ClusterMaintenance"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.GetTopologyResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "topology": {
          "$ref": "#/definitions/entity.Topology"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.GetTrafficReplayResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "replay": {
          "$ref": "#/definitions/cluster.TrafficReplay"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.HeterogeneousDeploy": {
      "type": "object",
      "properties": {
        "alternative_instance_type": {
          "type": "string"
        },
        "component_type": {
          "$ref": "#/definitions/cluster.ComponentType"
        },
        "current_instance_type": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "pod_counts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.HeterogeneousDeployPodCount"
          }
        },
        "status": {
          "type": "string"
        },
        "tidb_group_id": {
          "type": "string"
        }
      }
    },
    "cluster.HeterogeneousDeployPodCount": {
      "type": "object",
      "properties": {
        "machine_type": {
          "type": "string"
        },
        "pod_count": {
          "type": "integer"
        }
      }
    },
    "cluster.IsInClusterOpsMaintenanceWindowResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "is": {
          "description": "Is indicates whether the cluster is currently in ops maintenance window or no corresponding maintenance window.",
          "type": "boolean"
        },
        "trace_id": {
          "type": "string"
        },
        "window": {
          "description": "Item is the maintenance window if exists.",
          "allOf": [
            {
              "$ref": "#/definitions/maintenance.ClusterOpsMaintenanceWindow"
            }
          ]
        }
      }
    },
    "cluster.ListAlertsResp": {
      "type": "object",
      "properties": {
        "is_last": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jira.Alert"
          }
        },
        "next_page_token": {
          "type": "string"
        }
      }
    },
    "cluster.ListClusterOpsMaintenanceWindowsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/maintenance.ClusterOpsMaintenanceWindow"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.ListClustersResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.Cluster"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "cluster.ListDedicatedToPremiumPrechecksResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.DedicatedToPremiumPrecheck"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.ListMaintenancesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/maintenance.ClusterMaintenance"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.ListTrafficReplaysResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.TrafficReplay"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.ListVPCPeeringsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.VPCPeering"
          }
        }
      }
    },
    "cluster.LogicalCluster": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "tikv_group_id": {
          "type": "string"
        }
      }
    },
    "cluster.MigratePrivateLinkRequest": {
      "type": "object",
      "required": ["target_cluster_id", "tidb_group_pairs"],
      "properties": {
        "reason": {
          "type": "string"
        },
        "target_cluster_id": {
          "type": "string"
        },
        "tidb_group_pairs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.MigratePrivateLinkTiDBGroupPair"
          }
        }
      }
    },
    "cluster.MigratePrivateLinkResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.MigratePrivateLinkTiDBGroupPair": {
      "type": "object",
      "required": ["source_tidb_group_id", "target_tidb_group_id"],
      "properties": {
        "source_tidb_group_display_name": {
          "type": "string"
        },
        "source_tidb_group_id": {
          "type": "string"
        },
        "target_tidb_group_id": {
          "type": "string"
        }
      }
    },
    "cluster.NextGenDetails": {
      "type": "object",
      "properties": {
        "data_plane_id": {
          "type": "string"
        },
        "max_rcu": {
          "type": "integer"
        },
        "min_rcu": {
          "type": "integer"
        },
        "resource_pool_id": {
          "type": "string"
        },
        "shared_pool": {
          "description": "only filled in get api, not in list api",
          "allOf": [
            {
              "$ref": "#/definitions/cluster.SharedPool"
            }
          ]
        },
        "tidb_tag": {
          "type": "string"
        },
        "tikv_group_id": {
          "type": "string"
        }
      }
    },
    "cluster.NodeProfileCompute": {
      "type": "object",
      "properties": {
        "cpu": {
          "type": "integer"
        },
        "memory_mi": {
          "type": "integer"
        }
      }
    },
    "cluster.NodeProfileOfComponent": {
      "type": "object",
      "properties": {
        "compute": {
          "$ref": "#/definitions/cluster.NodeProfileCompute"
        },
        "name": {
          "type": "string"
        },
        "storage_gi": {
          "type": "integer"
        }
      }
    },
    "cluster.PrivateLinkServiceInfo": {
      "type": "object",
      "properties": {
        "availability_zone_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "phase": {
          "type": "string"
        },
        "service_name": {
          "type": "string"
        }
      }
    },
    "cluster.ResourceConfig": {
      "type": "object",
      "properties": {
        "cluster_plan": {
          "type": "string"
        },
        "kubernetes": {
          "type": "string"
        },
        "max_rcu": {
          "type": "integer"
        },
        "max_tidb_replicas": {
          "type": "integer"
        },
        "min_rcu": {
          "type": "integer"
        },
        "min_tidb_replicas": {
          "type": "integer"
        },
        "ru_mode": {
          "type": "string"
        },
        "tidb_pool": {
          "type": "string"
        },
        "zone_redundant_enabled": {
          "type": "boolean"
        }
      }
    },
    "cluster.ResourcePoolDetails": {
      "type": "object",
      "properties": {
        "cidr": {
          "type": "string"
        },
        "default_orgs": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "enabled_tikv_remote_workers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "instance_limit": {
          "type": "integer"
        },
        "is_default": {
          "type": "boolean"
        },
        "logical_clusters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.LogicalCluster"
          }
        },
        "pd_deployment_mode": {
          "type": "string"
        },
        "shared_pool": {
          "description": "only filled in get api, not in list api",
          "allOf": [
            {
              "$ref": "#/definitions/cluster.SharedPool"
            }
          ]
        },
        "tikv_tag": {
          "type": "string"
        },
        "vcpus_limit": {
          "type": "integer"
        }
      }
    },
    "cluster.ServerlessBranch": {
      "type": "object",
      "properties": {
        "create_time": {
          "type": "integer"
        },
        "display_name": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "update_time": {
          "type": "integer"
        }
      }
    },
    "cluster.ServerlessDetails": {
      "type": "object",
      "properties": {
        "branches": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.ServerlessBranch"
          }
        },
        "column_storage": {
          "type": "number"
        },
        "enable_customer_alert": {
          "type": "boolean"
        },
        "keyspace_id": {
          "type": "integer"
        },
        "keyspace_token": {
          "type": "string"
        },
        "request_unit": {
          "type": "integer"
        },
        "resource_config": {
          "$ref": "#/definitions/cluster.ResourceConfig"
        },
        "row_storage": {
          "type": "number"
        }
      }
    },
    "cluster.SharedPool": {
      "type": "object",
      "properties": {
        "component_groups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.SharedPoolComponent"
          }
        },
        "id": {
          "type": "string"
        },
        "phase": {
          "type": "string"
        }
      }
    },
    "cluster.SharedPoolComponent": {
      "type": "object",
      "properties": {
        "component_type": {
          "$ref": "#/definitions/cluster.ComponentType"
        },
        "cpu": {
          "type": "integer"
        },
        "id": {
          "description": "id means the component group id",
          "type": "string"
        },
        "max_node_count": {
          "type": "integer"
        },
        "memory_gi": {
          "type": "integer"
        },
        "min_node_count": {
          "type": "integer"
        },
        "node_count": {
          "type": "integer"
        },
        "phase": {
          "type": "string"
        },
        "storages": {
          "description": "include storage and tikv additional storage",
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.SharedPoolStorage"
          }
        },
        "version": {
          "type": "string"
        }
      }
    },
    "cluster.SharedPoolStorage": {
      "type": "object",
      "properties": {
        "iops": {
          "description": "the storage iops",
          "type": "integer"
        },
        "name": {
          "description": "the storage name",
          "type": "string"
        },
        "size_gi": {
          "description": "the storage size",
          "type": "integer"
        },
        "throughput_mbs": {
          "description": "the storage throughput",
          "type": "integer"
        },
        "type": {
          "description": "the storage type\naws s3/io2 or gcp gcs\nor azure blob",
          "type": "string"
        }
      }
    },
    "cluster.StartTrafficReplayRequest": {
      "type": "object",
      "required": ["cluster_id", "tenant_id"],
      "properties": {
        "cluster_id": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "cluster.StartTrafficReplayResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.StopTrafficReplayRequest": {
      "type": "object",
      "required": ["cluster_id", "tenant_id"],
      "properties": {
        "cluster_id": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "cluster.StopTrafficReplayResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplay": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "current_state": {
          "type": "string"
        },
        "desired_state": {
          "type": "string"
        },
        "org_id": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "replay_config": {
          "$ref": "#/definitions/cluster.TrafficReplayCommonConfig"
        },
        "replay_id": {
          "type": "string"
        },
        "replay_image": {
          "type": "string"
        },
        "replay_status": {
          "$ref": "#/definitions/cluster.TrafficReplayStatus"
        },
        "replay_tasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.TrafficReplayTask"
          }
        },
        "replicas": {
          "type": "integer"
        },
        "source_audit_credential": {
          "$ref": "#/definitions/cluster.TrafficReplayAuditLogAddr"
        },
        "source_cluster_id": {
          "type": "string"
        },
        "task_resources": {
          "$ref": "#/definitions/cluster.TrafficReplayTaskResources"
        },
        "updated_at": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplayAWSAuditLog": {
      "type": "object",
      "properties": {
        "external_id": {
          "type": "string"
        },
        "role_arn": {
          "type": "string"
        },
        "s3_url": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplayAliyunAuditLog": {
      "type": "object",
      "properties": {
        "access_key_id": {
          "type": "string"
        },
        "bucket_url": {
          "type": "string"
        },
        "secret_access_key": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplayAuditLogAddr": {
      "type": "object",
      "properties": {
        "aliyun": {
          "$ref": "#/definitions/cluster.TrafficReplayAliyunAuditLog"
        },
        "aws": {
          "$ref": "#/definitions/cluster.TrafficReplayAWSAuditLog"
        },
        "gcp": {
          "$ref": "#/definitions/cluster.TrafficReplayGCPAuditLog"
        }
      }
    },
    "cluster.TrafficReplayCommonConfig": {
      "type": "object",
      "properties": {
        "password": {
          "type": "string"
        },
        "replay_config": {
          "$ref": "#/definitions/cluster.TrafficReplayConfig"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplayConfig": {
      "type": "object",
      "properties": {
        "buf_size": {
          "type": "integer"
        },
        "custom_arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "dynamic_input": {
          "type": "boolean"
        },
        "format": {
          "type": "string"
        },
        "ignore_errs": {
          "type": "boolean"
        },
        "ps_close": {
          "type": "string"
        },
        "read_only": {
          "type": "boolean"
        },
        "replay_index": {
          "type": "integer"
        },
        "replay_start_time": {
          "type": "string"
        },
        "run_start_time": {
          "type": "string"
        },
        "speed": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplayDataSource": {
      "type": "object",
      "properties": {
        "source_audit_log_addrs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.TrafficReplayAuditLogAddr"
          }
        }
      }
    },
    "cluster.TrafficReplayDataTarget": {
      "type": "object",
      "properties": {
        "endpoint": {
          "type": "string"
        },
        "password": {
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplayGCPAuditLog": {
      "type": "object",
      "properties": {
        "gcs_url": {
          "type": "string"
        },
        "service_account_json": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplayReplicaStatus": {
      "type": "object",
      "properties": {
        "index": {
          "type": "integer"
        },
        "message": {
          "type": "string"
        },
        "phase": {
          "type": "string"
        },
        "pod_name": {
          "type": "string"
        },
        "ready": {
          "type": "boolean"
        },
        "task_info": {
          "$ref": "#/definitions/cluster.TrafficReplayTaskInfo"
        }
      }
    },
    "cluster.TrafficReplaySpec": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "config_custom_arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "config_replay_start_time": {
          "type": "string"
        },
        "config_run_start_time": {
          "type": "string"
        },
        "database_password": {
          "type": "string"
        },
        "database_username": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "replay_image": {
          "type": "string"
        },
        "replay_tasks": {
          "description": "JSON encoded array of task",
          "type": "string"
        },
        "replicas": {
          "type": "integer"
        },
        "source_audit_credential": {
          "$ref": "#/definitions/cluster.TrafficReplayAuditLogAddr"
        },
        "source_cluster_id": {
          "type": "string"
        },
        "target_cluster_id": {
          "type": "string"
        },
        "task_resources": {
          "$ref": "#/definitions/cluster.TrafficReplayTaskResources"
        }
      }
    },
    "cluster.TrafficReplayStatus": {
      "type": "object",
      "properties": {
        "aws_node_role_arn": {
          "type": "string"
        },
        "last_update_time": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "phase": {
          "type": "string"
        },
        "tasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.TrafficReplayTaskStatus"
          }
        }
      }
    },
    "cluster.TrafficReplayTask": {
      "type": "object",
      "properties": {
        "data_source": {
          "$ref": "#/definitions/cluster.TrafficReplayDataSource"
        },
        "data_target": {
          "$ref": "#/definitions/cluster.TrafficReplayDataTarget"
        },
        "image": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "per_replay_configs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.TrafficReplayConfig"
          }
        },
        "replay_start_time": {
          "type": "string"
        },
        "replicas": {
          "type": "integer"
        },
        "resources": {
          "$ref": "#/definitions/cluster.TrafficReplayTaskResources"
        },
        "run_start_time": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplayTaskInfo": {
      "type": "object",
      "properties": {
        "end_time": {
          "type": "string"
        },
        "error": {
          "type": "string"
        },
        "last_command_timestamp": {
          "type": "string"
        },
        "progress": {
          "type": "integer"
        },
        "source_audit_log_addrs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.TrafficReplayAuditLogAddr"
          }
        },
        "start_time": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "sync_time": {
          "type": "string"
        },
        "total_commands": {
          "type": "integer"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplayTaskResources": {
      "type": "object",
      "properties": {
        "instance_type": {
          "type": "string"
        },
        "storage_size": {
          "type": "string"
        }
      }
    },
    "cluster.TrafficReplayTaskStatus": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "replica_statuses": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/cluster.TrafficReplayReplicaStatus"
          }
        }
      }
    },
    "cluster.UpdateClusterOpsMaintenanceWindowReq": {
      "type": "object",
      "required": ["windows"],
      "properties": {
        "approvers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "windows": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/maintenance.ClusterOpsMaintenanceWindowSlot"
          }
        }
      }
    },
    "cluster.UpdateClusterOpsMaintenanceWindowResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "item": {
          "$ref": "#/definitions/maintenance.ClusterOpsMaintenanceWindow"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.UpdateTrafficReplayRequest": {
      "type": "object",
      "required": ["cluster_id", "replay_spec", "tenant_id"],
      "properties": {
        "changed_replay_spec": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string"
        },
        "replay_spec": {
          "$ref": "#/definitions/cluster.TrafficReplaySpec"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "cluster.UpdateTrafficReplayResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "cluster.VPCPeering": {
      "type": "object",
      "properties": {
        "destination_account_id": {
          "type": "string"
        },
        "destination_cidr_block": {
          "type": "string"
        },
        "destination_region": {
          "type": "string"
        },
        "destination_vpc_id": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "provider": {
          "type": "string"
        },
        "source_account_id": {
          "type": "string"
        },
        "source_cidr_block": {
          "type": "string"
        },
        "source_vpc_id": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "vpc_peering_connection_id": {
          "type": "string"
        }
      }
    },
    "configcenter.AddAttributeReq": {
      "type": "object",
      "properties": {
        "apply_policy": {
          "$ref": "#/definitions/entity.ApplyStrategy"
        },
        "id": {
          "type": "integer"
        },
        "param_name": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "configcenter.CopyFromVersionReq": {
      "type": "object",
      "properties": {
        "from_version": {
          "type": "string"
        },
        "to_version": {
          "type": "string"
        }
      }
    },
    "configcenter.ListAttributesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ConfigAttributes"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "configcenter.ModifyReq": {
      "type": "object",
      "properties": {
        "apply_policy": {
          "$ref": "#/definitions/entity.ApplyStrategy"
        },
        "id": {
          "type": "integer"
        },
        "param_name": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "controlplane.CreateDeploymentReq": {
      "type": "object",
      "required": ["params", "scenario"],
      "properties": {
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "scenario": {
          "$ref": "#/definitions/controlplane.Scenario"
        }
      }
    },
    "controlplane.CreateDeploymentResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "controlplane.Deployment": {
      "type": "object",
      "properties": {
        "applicant": {
          "description": "email",
          "type": "string"
        },
        "apply_meta": {
          "description": "ApplyMeta holds the GitHub Actions workflow run info for apply.",
          "allOf": [
            {
              "$ref": "#/definitions/controlplane.WorkflowRunMeta"
            }
          ]
        },
        "approval_id": {
          "type": "integer"
        },
        "closed_at": {
          "type": "integer"
        },
        "created_at": {
          "type": "integer"
        },
        "frozen_snapshot": {
          "description": "FrozenSnapshot is set when preview is dispatched, locking down the exact\nworkflow inputs used for preview. Apply always uses this snapshot.",
          "allOf": [
            {
              "$ref": "#/definitions/controlplane.FrozenSnapshot"
            }
          ]
        },
        "id": {
          "type": "integer"
        },
        "params": {
          "description": "Params holds user-provided deployment parameters.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "phase": {
          "$ref": "#/definitions/controlplane.Phase"
        },
        "preview_meta": {
          "description": "PreviewMeta holds the GitHub Actions workflow run info for preview.",
          "allOf": [
            {
              "$ref": "#/definitions/controlplane.WorkflowRunMeta"
            }
          ]
        },
        "scenario": {
          "$ref": "#/definitions/controlplane.Scenario"
        }
      }
    },
    "controlplane.FrozenSnapshot": {
      "type": "object",
      "properties": {
        "frozen_at": {
          "type": "integer"
        },
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "workflow_inputs": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "workflow_name": {
          "type": "string"
        }
      }
    },
    "controlplane.GetDeploymentResp": {
      "type": "object",
      "properties": {
        "deployment": {
          "$ref": "#/definitions/controlplane.Deployment"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "controlplane.ListDeploymentResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/controlplane.Deployment"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "controlplane.OnApplyCompleteReq": {
      "type": "object",
      "required": ["status"],
      "properties": {
        "run_id": {
          "type": "integer"
        },
        "run_url": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "controlplane.OnPreviewCompleteReq": {
      "type": "object",
      "required": ["status"],
      "properties": {
        "run_id": {
          "type": "integer"
        },
        "run_url": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        }
      }
    },
    "controlplane.Phase": {
      "type": "string",
      "enum": [
        "created",
        "preview_pending",
        "preview_running",
        "preview_succeeded",
        "preview_failed",
        "approving",
        "apply_pending",
        "apply_running",
        "apply_succeeded",
        "apply_failed",
        "canceled"
      ],
      "x-enum-varnames": [
        "PhaseCreated",
        "PhasePreviewPending",
        "PhasePreviewRunning",
        "PhasePreviewSucceeded",
        "PhasePreviewFailed",
        "PhaseApproving",
        "PhaseApplyPending",
        "PhaseApplyRunning",
        "PhaseApplySucceeded",
        "PhaseApplyFailed",
        "PhaseCanceled"
      ]
    },
    "controlplane.Scenario": {
      "type": "string",
      "enum": ["aws_premium_region", "aws_byoc_region"],
      "x-enum-varnames": ["ScenarioAWSPremiumRegion", "ScenarioAWSBYOCRegion"]
    },
    "controlplane.StartPreviewResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "run_id": {
          "type": "integer"
        },
        "run_url": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "controlplane.WorkflowRunMeta": {
      "type": "object",
      "properties": {
        "retry_count": {
          "type": "integer"
        },
        "run_id": {
          "type": "integer"
        },
        "run_url": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "workflow_name": {
          "type": "string"
        }
      }
    },
    "dashboard.CloudOncallInfoResp": {
      "type": "object",
      "properties": {
        "backlogTotal": {
          "type": "integer"
        },
        "componentMonthlyTrend": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.SeriesMonthlyTrend"
          }
        },
        "monthlyTrend": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.MonthlyTrend"
          }
        },
        "priorityMonthlyTrends": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.SeriesMonthlyTrend"
          }
        },
        "topTenants": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.TopTenant"
          }
        },
        "total": {
          "type": "integer"
        },
        "ttrInDays": {
          "type": "number"
        }
      }
    },
    "dashboard.CriticalAlertInfoResp": {
      "type": "object",
      "properties": {
        "alertMonthlyTrend": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.SeriesMonthlyTrend"
          }
        },
        "backlogTotal": {
          "type": "integer"
        },
        "majorAlertMonthlyTrend": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.SeriesMonthlyTrend"
          }
        },
        "topTenants": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.TopTenant"
          }
        },
        "total": {
          "type": "integer"
        },
        "ttrInDays": {
          "type": "number"
        }
      }
    },
    "dashboard.GetClusterDetailOfDedicatedSLAResp": {
      "type": "object",
      "properties": {
        "clusterID": {
          "type": "string"
        },
        "clusterName": {
          "type": "string"
        },
        "deleted": {
          "type": "boolean"
        },
        "downtimeList": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ClusterDowntime"
          }
        },
        "issueKey": {
          "type": "string"
        },
        "issueStatus": {
          "type": "string"
        },
        "slaStatus": {
          "$ref": "#/definitions/entity.SLAStatus"
        },
        "slaValue": {
          "type": "number"
        },
        "tenantID": {
          "type": "string"
        },
        "tenantName": {
          "type": "string"
        },
        "tidbInstance": {
          "type": "integer"
        }
      }
    },
    "dashboard.GetClusterDetailOfNextGenSLAResp": {
      "type": "object",
      "properties": {
        "clusterDeployType": {
          "type": "string"
        },
        "clusterID": {
          "type": "string"
        },
        "clusterName": {
          "type": "string"
        },
        "deleted": {
          "type": "boolean"
        },
        "downtimeList": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ClusterDowntime"
          }
        },
        "issueKey": {
          "type": "string"
        },
        "issueStatus": {
          "type": "string"
        },
        "slaStatus": {
          "$ref": "#/definitions/entity.SLAStatus"
        },
        "slaValue": {
          "type": "number"
        },
        "tenantID": {
          "type": "string"
        },
        "tenantName": {
          "type": "string"
        }
      }
    },
    "dashboard.GetMonthlySummaryOfDedicatedSLAResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.DedicatedClusterSLABasic"
          }
        }
      }
    },
    "dashboard.GetMonthlySummaryOfNextGenSLAResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.NextGenClusterSLABasic"
          }
        }
      }
    },
    "dashboard.GetTop10QPSTenantsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.TopTenant"
          }
        }
      }
    },
    "dashboard.GetTop10TiFlashStorageTenantsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.TopTenant"
          }
        }
      }
    },
    "dashboard.GetTop10TiKVStorageTenantsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.TopTenant"
          }
        }
      }
    },
    "dashboard.IncidentInfoResp": {
      "type": "object",
      "properties": {
        "mttrInMinutes": {
          "type": "number"
        },
        "mttrMonthlyTrends": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.MonthlyTrend"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "dashboard.ReleaseInfoResp": {
      "type": "object",
      "properties": {
        "hotfixApplicationMonthlyTrends": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.SeriesMonthlyTrend"
          }
        },
        "hotfixTotal": {
          "type": "integer"
        },
        "sprintApplicationMonthlyTrends": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.SeriesMonthlyTrend"
          }
        },
        "sprintTotal": {
          "type": "integer"
        }
      }
    },
    "dashboard.SLAInfoResp": {
      "type": "object",
      "properties": {
        "dedicatedSLA": {
          "$ref": "#/definitions/entity.SLA"
        },
        "nextGenSLA": {
          "$ref": "#/definitions/entity.SLA"
        },
        "serverlessSLA": {
          "$ref": "#/definitions/entity.SLA"
        }
      }
    },
    "dashboard.SLOInfoResp": {
      "type": "object",
      "properties": {
        "currentSummary": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ApplicationSLOSummary"
          }
        }
      }
    },
    "eecli.BumpNgTagOpsReq": {
      "type": "object",
      "properties": {
        "applicant": {
          "type": "string"
        },
        "change_id": {
          "type": "string"
        },
        "release_id": {
          "type": "string"
        }
      }
    },
    "eecli.BumpNgTagReqMeta": {
      "type": "object",
      "properties": {
        "ops_req": {
          "$ref": "#/definitions/eecli.BumpNgTagOpsReq"
        }
      }
    },
    "eecli.BumpNgTagRequest": {
      "type": "object",
      "properties": {
        "author": {
          "type": "string"
        },
        "branch": {
          "type": "string"
        },
        "commit": {
          "type": "string"
        },
        "meta": {
          "$ref": "#/definitions/eecli.BumpNgTagReqMeta"
        },
        "prLink": {
          "type": "string"
        },
        "repo": {
          "type": "string"
        }
      }
    },
    "entity.ApplicationSLOSummary": {
      "type": "object",
      "properties": {
        "application": {
          "type": "string"
        },
        "slos": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.SLO"
          }
        }
      }
    },
    "entity.ApplyStrategy": {
      "type": "string",
      "enum": [
        "HotReload",
        "RollingRestart",
        "ChangeCMOnly",
        "EnsureUpdateToTC"
      ],
      "x-enum-varnames": [
        "Hotreload",
        "Restart",
        "ChangeCMOnly",
        "EnsureUpdateToTC"
      ]
    },
    "entity.Approval": {
      "type": "object",
      "properties": {
        "admin_tasks": {
          "description": "AdminTasks is the users who can approve/reject/cancel the approval request at any time.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ApprovalAdminTask"
          }
        },
        "applicant": {
          "description": "Applicant is the user email who created the approval request.",
          "type": "string"
        },
        "cc_tasks": {
          "description": "CCTasks defines the users who will be notified when the approval request is **Approved**.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ApprovalCCTask"
          }
        },
        "configuration": {
          "description": "Configuration is the approval configuration.",
          "allOf": [
            {
              "$ref": "#/definitions/entity.ApprovalConfiguration"
            }
          ]
        },
        "detail_link": {
          "description": "DetailLink is the link to the detail page for this request.\n\nIt is used in the notification message.",
          "type": "string"
        },
        "end_at": {
          "description": "EndAt is the time when the approval request is ended.",
          "type": "integer"
        },
        "from_template": {
          "description": "FromTemplate is the template id used to create the approval",
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "levels": {
          "description": "Levels defines the approval workflow.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ApprovalLevel"
          }
        },
        "name": {
          "description": "Name is the name of the approval request used to categorize approvals.",
          "type": "string"
        },
        "overview": {
          "description": "Overview is a persisted human-readable summary shown in Lark notifications (alias, target name, etc.).",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "parameters": {
          "description": "Parameters is the full operation params used for routing (fromParam/evalCondition).",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "reason": {
          "description": "Reason is the description of the approval request.",
          "type": "string"
        },
        "start_at": {
          "description": "StartAt is the time when the approval request is created.",
          "type": "integer"
        },
        "status": {
          "description": "Status is the status of the approval request.",
          "allOf": [
            {
              "$ref": "#/definitions/entity.ApprovalStatus"
            }
          ]
        }
      }
    },
    "entity.ApprovalAdminTask": {
      "type": "object",
      "properties": {
        "end_at": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "status": {
          "$ref": "#/definitions/entity.ApprovalTaskStatus"
        },
        "user_email": {
          "description": "email",
          "type": "string"
        }
      }
    },
    "entity.ApprovalCCTask": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "user_email": {
          "description": "email",
          "type": "string"
        }
      }
    },
    "entity.ApprovalConfiguration": {
      "type": "object",
      "properties": {
        "skip_applicant_notification": {
          "type": "boolean"
        }
      }
    },
    "entity.ApprovalLevel": {
      "type": "object",
      "properties": {
        "level": {
          "description": "first is 0, MUST be equal to the index of slice",
          "type": "integer"
        },
        "nodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ApprovalNode"
          }
        }
      }
    },
    "entity.ApprovalNode": {
      "type": "object",
      "properties": {
        "backup_tasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ApprovalTask"
          }
        },
        "id": {
          "description": "id in database",
          "type": "integer"
        },
        "method": {
          "$ref": "#/definitions/entity.ApproveMethod"
        },
        "name": {
          "description": "Default to \"Node {Level}-{Index}\"",
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/entity.ApprovalNodeStatus"
        },
        "tasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ApprovalTask"
          }
        }
      }
    },
    "entity.ApprovalNodeStatus": {
      "type": "string",
      "enum": ["PENDING", "APPROVED", "REJECTED", "CANCELED"],
      "x-enum-varnames": [
        "ApprovalNodeStatusPending",
        "ApprovalNodeStatusApproved",
        "ApprovalNodeStatusRejected",
        "ApprovalNodeStatusCancelled"
      ]
    },
    "entity.ApprovalStatus": {
      "type": "string",
      "enum": ["PENDING", "APPROVED", "REJECTED", "CANCELED"],
      "x-enum-varnames": [
        "ApprovalStatusPending",
        "ApprovalStatusApproved",
        "ApprovalStatusRejected",
        "ApprovalStatusCancelled"
      ]
    },
    "entity.ApprovalTask": {
      "type": "object",
      "properties": {
        "end_at": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "notify_lark_type": {
          "$ref": "#/definitions/userv1.LarkType"
        },
        "notify_message_id": {
          "type": "string"
        },
        "start_at": {
          "type": "integer"
        },
        "status": {
          "$ref": "#/definitions/entity.ApprovalTaskStatus"
        },
        "user_email": {
          "description": "email",
          "type": "string"
        }
      }
    },
    "entity.ApprovalTaskStatus": {
      "type": "string",
      "enum": ["PENDING", "APPROVED", "REJECTED", "Done"],
      "x-enum-varnames": [
        "ApprovalTaskStatusPending",
        "ApprovalTaskStatusApproved",
        "ApprovalTaskStatusRejected",
        "ApprovalTaskStatusDone"
      ]
    },
    "entity.ApproveMethod": {
      "type": "string",
      "enum": ["ALL", "ANY"],
      "x-enum-varnames": ["ApproveMethodAll", "ApproveMethodAny"]
    },
    "entity.Approver": {
      "type": "object",
      "properties": {
        "applicant_leader": {
          "description": "The applicant leader is approver",
          "type": "boolean"
        },
        "email": {
          "description": "Email of approver",
          "type": "string"
        },
        "emails": {
          "description": "Emails of approvers",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "from_param": {
          "description": "The approver is generated from param",
          "allOf": [
            {
              "$ref": "#/definitions/entity.ApproverFromParam"
            }
          ]
        },
        "self_approve": {
          "description": "The applicant can approve the request by himself",
          "type": "boolean"
        },
        "user_group": {
          "description": "User group of approvers, defined in user service",
          "type": "string"
        },
        "user_groups": {
          "description": "User groups of approvers, defined in user service",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "entity.ApproverFromParam": {
      "type": "object",
      "properties": {
        "default_approver": {
          "description": "The default approver used when approver not found",
          "allOf": [
            {
              "$ref": "#/definitions/entity.Approver"
            }
          ]
        },
        "param_name": {
          "description": "The name of param",
          "type": "string"
        },
        "param_value_mapping": {
          "description": "The value of param to approver",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/entity.Approver"
          }
        },
        "use_param_value": {
          "description": "Use the param value as the approver email directly",
          "type": "boolean"
        }
      }
    },
    "entity.ApproverNode": {
      "type": "object",
      "properties": {
        "applicant_leader": {
          "description": "The applicant leader is approver",
          "type": "boolean"
        },
        "condition": {
          "description": "Condition is a string expression that evaluates to true or false. If false,\nthis node will be skipped.\n\nRefer to https://github.com/expr-lang/expr",
          "type": "string"
        },
        "email": {
          "description": "Email of approver",
          "type": "string"
        },
        "emails": {
          "description": "Emails of approvers",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "from_param": {
          "description": "The approver is generated from param",
          "allOf": [
            {
              "$ref": "#/definitions/entity.ApproverFromParam"
            }
          ]
        },
        "method": {
          "description": "Method is the approval method, contains ANY, ALL.",
          "allOf": [
            {
              "$ref": "#/definitions/entity.ApproveMethod"
            }
          ]
        },
        "name": {
          "description": "Name is the name of this node.",
          "type": "string"
        },
        "parallel": {
          "description": "Parallel defines the parallel approver nodes.\n\nIf it is set, the other fields are ignored.\n\nOnly one level of parallel nodes is supported.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ApproverNode"
          }
        },
        "self_approve": {
          "description": "The applicant can approve the request by himself",
          "type": "boolean"
        },
        "skip_when_empty": {
          "description": "Skip this node when the approver is empty",
          "type": "boolean"
        },
        "user_group": {
          "description": "User group of approvers, defined in user service",
          "type": "string"
        },
        "user_groups": {
          "description": "User groups of approvers, defined in user service",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "entity.ClusterDowntime": {
      "type": "object",
      "properties": {
        "comment": {
          "type": "string"
        },
        "fake": {
          "type": "boolean"
        },
        "timestamp": {
          "type": "string"
        }
      }
    },
    "entity.ConfigAttributes": {
      "type": "object",
      "properties": {
        "apply_policy": {
          "$ref": "#/definitions/entity.ApplyStrategy"
        },
        "id": {
          "type": "integer"
        },
        "param_name": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "entity.DedicatedClusterSLABasic": {
      "type": "object",
      "properties": {
        "clusterID": {
          "type": "string"
        },
        "clusterName": {
          "type": "string"
        },
        "deleted": {
          "type": "boolean"
        },
        "issueKey": {
          "type": "string"
        },
        "issueStatus": {
          "type": "string"
        },
        "slaStatus": {
          "$ref": "#/definitions/entity.SLAStatus"
        },
        "slaValue": {
          "type": "number"
        },
        "tenantID": {
          "type": "string"
        },
        "tenantName": {
          "type": "string"
        },
        "tidbInstance": {
          "type": "integer"
        }
      }
    },
    "entity.Incident": {
      "type": "object",
      "properties": {
        "biz_regions": {
          "type": "string"
        },
        "components": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "fbowners": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/userv1.User"
          }
        },
        "feishu_channel_msg": {
          "type": "string"
        },
        "feishu_url": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "incident_resolve_time": {
          "type": "string"
        },
        "incident_start_time": {
          "type": "string"
        },
        "jira_issue_links": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.IncidentJiraIssueLink"
          }
        },
        "jira_issues": {
          "type": "string"
        },
        "leaders": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/userv1.User"
          }
        },
        "log_items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.IncidentLogItem"
          }
        },
        "name": {
          "type": "string"
        },
        "oncallers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/userv1.User"
          }
        },
        "postmortem_available": {
          "type": "boolean"
        },
        "postmortem_todo_action_import_status": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/entity.IncidentStatus"
        },
        "tier": {
          "$ref": "#/definitions/entity.IncidentTier"
        },
        "war_room_id": {
          "type": "integer"
        }
      }
    },
    "entity.IncidentJiraIssueLink": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "entity.IncidentLogItem": {
      "type": "object",
      "properties": {
        "created_at": {
          "description": "Will be deprecated next release",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "event_time": {
          "type": "string"
        },
        "from": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "incident_id": {
          "type": "integer"
        },
        "item_type": {
          "$ref": "#/definitions/entity.LogItemType"
        },
        "milestone_type": {
          "type": "string"
        },
        "postmortem_url": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "entity.IncidentPostMortem": {
      "type": "object",
      "properties": {
        "action_items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.IncidentPostMortemToDoAction"
          }
        },
        "background": {
          "type": "string"
        },
        "bug_mechanism": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "customer_impact_minutes": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "impact": {
          "type": "string"
        },
        "incident_end_time": {
          "type": "string"
        },
        "incident_id": {
          "type": "integer"
        },
        "incident_start_time": {
          "type": "string"
        },
        "involved_engineers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/userv1.User"
          }
        },
        "involved_tenants": {
          "type": "string"
        },
        "minutes_to_detect": {
          "type": "integer"
        },
        "minutes_to_resolved": {
          "type": "integer"
        },
        "resolution": {
          "type": "string"
        },
        "reviewed_at": {
          "type": "string"
        },
        "root_causes": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "technical_impact_level": {
          "type": "string"
        },
        "timeline": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.IncidentPostMortemTimelineItem"
          }
        },
        "top_issues": {
          "type": "string"
        },
        "what_did_not_work": {
          "type": "string"
        },
        "what_worked": {
          "type": "string"
        },
        "where_we_were_lucky": {
          "type": "string"
        }
      }
    },
    "entity.IncidentPostMortemTimelineItem": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "happened_at": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "item_type": {
          "type": "string"
        },
        "postmortem_id": {
          "type": "integer"
        }
      }
    },
    "entity.IncidentPostMortemToDoAction": {
      "type": "object",
      "properties": {
        "deadline": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "feishu_task_id": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "incident_id": {
          "type": "integer"
        },
        "linked_jira_issue": {
          "type": "string"
        },
        "persons": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/userv1.User"
          }
        },
        "postmortem_id": {
          "type": "integer"
        },
        "priority": {
          "type": "string"
        },
        "status": {
          "description": "Open or InProgress or Done",
          "type": "string"
        },
        "tcocp_created_at": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "entity.IncidentStatus": {
      "type": "string",
      "enum": ["running", "completed"],
      "x-enum-varnames": ["IncidentStatusRunning", "IncidentStatusFinished"]
    },
    "entity.IncidentTier": {
      "type": "string",
      "enum": ["t0", "t1", "t2", "t3", "t4"],
      "x-enum-varnames": [
        "IncidentTierT0",
        "IncidentTierT1",
        "IncidentTierT2",
        "IncidentTierT3",
        "IncidentTierT4"
      ]
    },
    "entity.Instance": {
      "type": "object",
      "properties": {
        "host": {
          "type": "string"
        },
        "port": {
          "type": "integer"
        }
      }
    },
    "entity.LarkChatSimplified": {
      "type": "object",
      "required": ["id"],
      "properties": {
        "avatar_url": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "is_external": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "entity.LogItemType": {
      "type": "string",
      "enum": ["text", "postmortem", "general", "milestone"],
      "x-enum-varnames": [
        "LogItemTypeText",
        "LogItemTypePostMortem",
        "LogItemTypeGeneral",
        "LogItemTypeMilestone"
      ]
    },
    "entity.MonthlyTrend": {
      "type": "object",
      "properties": {
        "month": {
          "type": "string"
        },
        "value": {
          "type": "number"
        }
      }
    },
    "entity.NextGenClusterSLABasic": {
      "type": "object",
      "properties": {
        "clusterDeployType": {
          "type": "string"
        },
        "clusterID": {
          "type": "string"
        },
        "clusterName": {
          "type": "string"
        },
        "deleted": {
          "type": "boolean"
        },
        "issueKey": {
          "type": "string"
        },
        "issueStatus": {
          "type": "string"
        },
        "slaStatus": {
          "$ref": "#/definitions/entity.SLAStatus"
        },
        "slaValue": {
          "type": "number"
        },
        "tenantID": {
          "type": "string"
        },
        "tenantName": {
          "type": "string"
        }
      }
    },
    "entity.RemediationApprovalFlow": {
      "type": "object",
      "properties": {
        "current_phase": {
          "$ref": "#/definitions/entity.RemediationTicketPhase"
        },
        "current_status": {
          "$ref": "#/definitions/entity.RemediationTicketStatus"
        },
        "nodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.RemediationApprovalFlowNode"
          }
        },
        "ticket_id": {
          "type": "integer"
        }
      }
    },
    "entity.RemediationApprovalFlowApprover": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "entity.RemediationApprovalFlowNode": {
      "type": "object",
      "properties": {
        "action": {
          "$ref": "#/definitions/entity.RemediationApprovalFlowNodeAction"
        },
        "approval_id": {
          "type": "integer"
        },
        "approvers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.RemediationApprovalFlowApprover"
          }
        },
        "auto_advance": {
          "type": "boolean"
        },
        "conditional": {
          "type": "boolean"
        },
        "current": {
          "type": "boolean"
        },
        "label": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "operated_at": {
          "type": "string"
        },
        "operator": {
          "type": "string"
        },
        "phase": {
          "$ref": "#/definitions/entity.RemediationTicketPhase"
        },
        "requires_input": {
          "type": "boolean"
        },
        "status": {
          "$ref": "#/definitions/entity.RemediationApprovalFlowNodeStatus"
        }
      }
    },
    "entity.RemediationApprovalFlowNodeAction": {
      "type": "string",
      "enum": ["none", "approve", "approve_with_input", "submit_input", "wait"],
      "x-enum-varnames": [
        "RemediationApprovalFlowNodeActionNone",
        "RemediationApprovalFlowNodeActionApprove",
        "RemediationApprovalFlowNodeActionApproveWithInput",
        "RemediationApprovalFlowNodeActionSubmitInput",
        "RemediationApprovalFlowNodeActionWait"
      ]
    },
    "entity.RemediationApprovalFlowNodeStatus": {
      "type": "string",
      "enum": [
        "pending",
        "approving",
        "approved",
        "rejected",
        "unreached",
        "skipped"
      ],
      "x-enum-varnames": [
        "RemediationApprovalFlowNodeStatusPending",
        "RemediationApprovalFlowNodeStatusApproving",
        "RemediationApprovalFlowNodeStatusApproved",
        "RemediationApprovalFlowNodeStatusRejected",
        "RemediationApprovalFlowNodeStatusUnreached",
        "RemediationApprovalFlowNodeStatusSkipped"
      ]
    },
    "entity.RemediationTicket": {
      "type": "object",
      "required": ["applicant_email", "id"],
      "properties": {
        "accident_report_link": {
          "type": "string"
        },
        "accumulated_down_minutes": {
          "type": "integer"
        },
        "applicant_email": {
          "type": "string"
        },
        "appr_id": {
          "description": "// 0 stands for no associated approval",
          "type": "integer"
        },
        "associated_incident_id": {
          "type": "integer"
        },
        "biz_region": {
          "description": "Create params",
          "allOf": [
            {
              "$ref": "#/definitions/tenant.TenantRegion"
            }
          ]
        },
        "calculated_compensation": {
          "type": "number"
        },
        "closed_at": {
          "type": "integer"
        },
        "cluster": {
          "type": "string"
        },
        "cluster_billing": {
          "description": "Global Deal Desk Fields",
          "type": "string"
        },
        "cluster_id": {
          "type": "integer"
        },
        "cluster_type": {
          "$ref": "#/definitions/entity.RemediationTicketClusterType"
        },
        "created_at": {
          "type": "integer"
        },
        "current_responsible_person_email": {
          "type": "string"
        },
        "customer": {
          "type": "string"
        },
        "expire_at": {
          "type": "integer"
        },
        "extra_percent": {
          "type": "string"
        },
        "generated_doc_url": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "info_from_creator": {
          "type": "string"
        },
        "month": {
          "description": "Should be in the format like `2006/1`",
          "type": "string"
        },
        "monthly_uptime_percentage": {
          "type": "string"
        },
        "overflow_percentage": {
          "type": "number"
        },
        "phase": {
          "$ref": "#/definitions/entity.RemediationTicketPhase"
        },
        "predefined_percent": {
          "type": "string"
        },
        "reason": {
          "description": "Deprecated Fields, will be removed",
          "allOf": [
            {
              "$ref": "#/definitions/entity.RemediationTicketReason"
            }
          ]
        },
        "report_link": {
          "type": "string"
        },
        "root_cause_from_gs": {
          "description": "Region TSE Fields",
          "type": "string"
        },
        "root_cause_from_rdg": {
          "description": "RDG SLA Owner Fields",
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/entity.RemediationTicketStatus"
        },
        "tenant": {
          "description": "HACK: as js doesn't natively support uint64, we use string-typed cluster and tenant fields for frontend display",
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        },
        "total_compensation": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "entity.RemediationTicketClusterType": {
      "type": "string",
      "enum": ["dedicated_multi_tidb", "dedicated_single_tidb", "serverless"],
      "x-enum-varnames": [
        "RemediationTicketClusterTypeDedicatedMultiTiDB",
        "RemediationTicketClusterTypeDedicatedSingleTiDB",
        "RemediationTicketClusterTypeServerless"
      ]
    },
    "entity.RemediationTicketPhase": {
      "type": "string",
      "enum": [
        "created",
        "region_tse_leader",
        "rdg_sla_owner",
        "rdg_final_decision_maker",
        "global_deal_desk",
        "regional_gm",
        "commercial_operation",
        "succeed",
        "closed"
      ],
      "x-enum-varnames": [
        "RemediationTicketPhaseCreated",
        "RemediationTicketPhaseRegionTSELeader",
        "RemediationTicketPhaseRDGSLAOwner",
        "RemediationTicketPhaseRDGFinalDecisionMaker",
        "RemediationTicketPhaseGlobalDealDesk",
        "RemediationTicketPhaseRegionalGM",
        "RemediationTicketPhaseCommercialOperation",
        "RemediationTicketPhaseSucceed",
        "RemediationTicketPhaseClosed"
      ]
    },
    "entity.RemediationTicketPhaseApproval": {
      "type": "object",
      "required": [
        "approval_id",
        "created_at",
        "from_phase",
        "id",
        "ticket_id",
        "to_phase"
      ],
      "properties": {
        "approval_id": {
          "type": "integer"
        },
        "created_at": {
          "type": "string"
        },
        "from_phase": {
          "$ref": "#/definitions/entity.RemediationTicketPhase"
        },
        "id": {
          "type": "integer"
        },
        "message": {
          "type": "string"
        },
        "ticket_id": {
          "type": "integer"
        },
        "to_phase": {
          "$ref": "#/definitions/entity.RemediationTicketPhase"
        }
      }
    },
    "entity.RemediationTicketPhaseInfo": {
      "type": "object",
      "required": ["phase", "status"],
      "properties": {
        "message": {
          "type": "string"
        },
        "operator_email": {
          "type": "string"
        },
        "phase": {
          "$ref": "#/definitions/entity.RemediationTicketPhase"
        },
        "status": {
          "$ref": "#/definitions/entity.RemediationTicketPhaseStatus"
        },
        "time": {
          "type": "string"
        }
      }
    },
    "entity.RemediationTicketPhaseStatus": {
      "type": "string",
      "enum": ["approved", "rejected", "unreached"],
      "x-enum-varnames": [
        "RemediationTicketPhaseStatusApproved",
        "RemediationTicketPhaseStatusRejected",
        "RemediationTicketPhaseStatusUnreached"
      ]
    },
    "entity.RemediationTicketReason": {
      "type": "string",
      "enum": [
        "misuse",
        "unauthorized_modify",
        "3party_hardware",
        "3party_software",
        "tidb_cloud"
      ],
      "x-enum-varnames": [
        "RemediationTicketReasonMisuse",
        "RemediationTicketReasonUnauthorizedModify",
        "RemediationTicketReason3PartyHardware",
        "RemediationTicketReason3PartySoftware",
        "RemediationTicketReasonTiDBCloud"
      ]
    },
    "entity.RemediationTicketStatus": {
      "type": "string",
      "enum": ["pending", "approving", "approved", "rejected", "closed"],
      "x-enum-comments": {
        "RemediationTicketStatusClosed": "used only in RemediationTicketPhaseClosed and RemediationTicketPhaseCanceled"
      },
      "x-enum-varnames": [
        "RemediationTicketStatusPending",
        "RemediationTicketStatusApproving",
        "RemediationTicketStatusApproved",
        "RemediationTicketStatusRejected",
        "RemediationTicketStatusClosed"
      ]
    },
    "entity.SLA": {
      "type": "object",
      "properties": {
        "current": {
          "type": "number"
        },
        "monthlyTrends": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.SeriesMonthlyTrend"
          }
        }
      }
    },
    "entity.SLAStatus": {
      "type": "string",
      "enum": ["perfect", "warning", "breach"],
      "x-enum-varnames": [
        "SLAStatusPerfect",
        "SLAStatusWarning",
        "SLAStatusBreach"
      ]
    },
    "entity.SLO": {
      "type": "object",
      "properties": {
        "met": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "entity.SeriesMonthlyTrend": {
      "type": "object",
      "properties": {
        "month": {
          "type": "string"
        },
        "series": {
          "type": "string"
        },
        "value": {
          "type": "integer"
        }
      }
    },
    "entity.Template": {
      "type": "object",
      "properties": {
        "admin_tasks": {
          "description": "AdminTasks is the users who can approve/reject/cancel the approval request at any time.",
          "allOf": [
            {
              "$ref": "#/definitions/entity.Approver"
            }
          ]
        },
        "cc_tasks": {
          "description": "CCTasks defines the users who will be notified when the approval request is **Approved**.",
          "allOf": [
            {
              "$ref": "#/definitions/entity.Approver"
            }
          ]
        },
        "id": {
          "description": "ID is the template identifier",
          "type": "string"
        },
        "nodes": {
          "description": "Nodes is the approval nodes.\n\nIf it is empty, the approval will be approved after created.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.ApproverNode"
          }
        }
      }
    },
    "entity.TiDBInstanceMode": {
      "type": "string",
      "enum": ["single", "multi"],
      "x-enum-varnames": ["TiDBInstanceSingle", "TiDBInstanceMulti"]
    },
    "entity.TopTenant": {
      "type": "object",
      "properties": {
        "alias": {
          "type": "string"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "name": {
          "type": "string"
        },
        "region": {
          "$ref": "#/definitions/tenant.TenantRegion"
        },
        "value": {
          "type": "integer"
        }
      }
    },
    "entity.Topology": {
      "type": "object",
      "properties": {
        "cluster_name": {
          "type": "string"
        },
        "pd": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.Instance"
          }
        },
        "tikv": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.Instance"
          }
        }
      }
    },
    "feature_wl.FeatureWhitelistInfo": {
      "type": "object",
      "properties": {
        "created_at": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "email_suffixes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "min_org_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "org_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "owner": {
          "type": "string"
        },
        "updated_at": {
          "type": "string"
        }
      }
    },
    "feature_wl.ListFeatureWhitelistsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/feature_wl.FeatureWhitelistInfo"
          }
        },
        "page": {
          "type": "integer"
        },
        "total": {
          "type": "integer"
        },
        "total_pages": {
          "type": "integer"
        }
      }
    },
    "github.CursorPagerResp": {
      "type": "object",
      "properties": {
        "end_cursor": {
          "type": "string"
        },
        "has_next_page": {
          "type": "boolean"
        }
      }
    },
    "github.GetPullRequestResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "pull_request": {
          "$ref": "#/definitions/github.PullRequest"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.GetRepositoryResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "repository": {
          "$ref": "#/definitions/github.Repository"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.Label": {
      "type": "object",
      "properties": {
        "created_at": {
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "github.ListPullRequestsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github.PullRequest"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.ListRepositoriesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "repositories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github.Repository"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.PullRequest": {
      "type": "object",
      "properties": {
        "author": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "location": {
          "type": "string"
        },
        "number": {
          "type": "integer"
        },
        "owner": {
          "type": "string"
        },
        "repo": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "github.RawDiffReleaseResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "pull_requests": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github.PullRequest"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.RawGetLabelResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "label": {
          "$ref": "#/definitions/github.Label"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.RawGetPullRequestResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "pull_request": {
          "$ref": "#/definitions/github.PullRequest"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.RawGetReleaseResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "release": {
          "$ref": "#/definitions/github.Release"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.RawListLabelsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "labels": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github.Label"
          }
        },
        "page": {
          "$ref": "#/definitions/github.CursorPagerResp"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.RawListPullRequestsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "page": {
          "$ref": "#/definitions/github.CursorPagerResp"
        },
        "pull_requests": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github.PullRequest"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.RawListReleasesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "page": {
          "$ref": "#/definitions/github.CursorPagerResp"
        },
        "releases": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github.Release"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "github.Release": {
      "type": "object",
      "properties": {
        "created_at": {
          "type": "integer"
        },
        "is_latest": {
          "type": "boolean"
        },
        "is_prerelease": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "published_at": {
          "type": "integer"
        },
        "tag_name": {
          "type": "string"
        }
      }
    },
    "github.Repository": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "location": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "owner": {
          "type": "string"
        },
        "pushed_at": {
          "type": "integer"
        },
        "update_at": {
          "type": "integer"
        }
      }
    },
    "github_com_tidbcloud_devops_api_kernelimage.Release": {
      "type": "object",
      "properties": {
        "artifact_uid": {
          "type": "string"
        },
        "availability": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/kernelimage.PlatformAvailability"
          }
        },
        "availability_check_started_at": {
          "type": "string"
        },
        "availability_check_uid": {
          "type": "string"
        },
        "availability_checked_at": {
          "type": "string"
        },
        "availability_last_error": {
          "type": "string"
        },
        "availability_status": {
          "$ref": "#/definitions/kernelimage.AvailabilityStatus"
        },
        "available_at": {
          "type": "string"
        },
        "branch": {
          "type": "string"
        },
        "build_finished_at": {
          "type": "string"
        },
        "commit_sha": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "delivery_batch_uid": {
          "type": "string"
        },
        "delivery_operation_instance_id": {
          "type": "integer"
        },
        "delivery_target_images": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "formal_delivery_uid": {
          "type": "string"
        },
        "git_tag": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "last_error_code": {
          "type": "string"
        },
        "last_error_message": {
          "type": "string"
        },
        "local_devops_environment": {
          "type": "string"
        },
        "mask_reason": {
          "type": "string"
        },
        "masked": {
          "type": "boolean"
        },
        "repo": {
          "type": "string"
        },
        "source_applicant": {
          "type": "string"
        },
        "source_change_id": {
          "type": "string"
        },
        "source_digest": {
          "type": "string"
        },
        "source_release_id": {
          "type": "string"
        },
        "source_repository": {
          "type": "string"
        },
        "source_tag": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/kernelimage.ReleaseStatus"
        },
        "updated_at": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "github_com_tidbcloud_devops_api_kernelimage.SelectionItem": {
      "type": "object",
      "properties": {
        "exclusion_reason": {
          "$ref": "#/definitions/kernelimage.ExclusionReason"
        },
        "is_default": {
          "type": "boolean"
        },
        "release": {
          "$ref": "#/definitions/github_com_tidbcloud_devops_api_kernelimage.Release"
        },
        "selection_state": {
          "$ref": "#/definitions/kernelimage.SelectionState"
        }
      }
    },
    "github_com_tidbcloud_devops_api_kernelimage.SelectionPolicy": {
      "type": "object",
      "properties": {
        "image_tag_count": {
          "type": "integer"
        },
        "local_devops_environment": {
          "type": "string"
        },
        "version_count": {
          "type": "integer"
        }
      }
    },
    "github_com_tidbcloud_devops_api_kernelimage.SelectionVersion": {
      "type": "object",
      "properties": {
        "images": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github_com_tidbcloud_devops_api_kernelimage.SelectionItem"
          }
        },
        "version": {
          "type": "string"
        }
      }
    },
    "github_com_tidbcloud_devops_api_operation.Advisory": {
      "type": "object",
      "properties": {
        "level": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "incident.CreateIncidentPostMortemReq": {
      "type": "object",
      "properties": {
        "background": {
          "type": "string"
        },
        "bug_mechanism": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "customer_impact_minutes": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "impact": {
          "type": "string"
        },
        "incident_end_time": {
          "type": "string"
        },
        "incident_id": {
          "type": "integer"
        },
        "incident_start_time": {
          "type": "string"
        },
        "involved_engineers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/userv1.User"
          }
        },
        "involved_tenants": {
          "type": "string"
        },
        "minutes_to_detect": {
          "type": "integer"
        },
        "minutes_to_resolved": {
          "type": "integer"
        },
        "resolution": {
          "type": "string"
        },
        "reviewed_at": {
          "type": "string"
        },
        "root_causes": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "technical_impact_level": {
          "type": "string"
        },
        "top_issues": {
          "type": "string"
        },
        "what_did_not_work": {
          "type": "string"
        },
        "what_worked": {
          "type": "string"
        },
        "where_we_were_lucky": {
          "type": "string"
        }
      }
    },
    "incident.CreateIncidentPostMortemResp": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        }
      }
    },
    "incident.CreateIncidentPostMortemTimelineReq": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "happened_at": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "item_type": {
          "type": "string"
        },
        "postmortem_id": {
          "type": "integer"
        }
      }
    },
    "incident.CreateIncidentPostMortemTimelineResp": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        }
      }
    },
    "incident.CreateIncidentPostMortemToDoActionReq": {
      "type": "object",
      "properties": {
        "create_feishu_task": {
          "type": "boolean"
        },
        "deadline": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "linked_jira_issue": {
          "type": "string"
        },
        "persons": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "postmortem_id": {
          "type": "integer"
        },
        "priority": {
          "type": "string"
        },
        "status": {
          "description": "Open or InProgress or Done",
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "incident.CreateIncidentPostMortemToDoActionResp": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        }
      }
    },
    "incident.CreateIncidentReq": {
      "type": "object",
      "properties": {
        "biz_regions": {
          "type": "string"
        },
        "components": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "fbowners": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "feishu_url": {
          "type": "string"
        },
        "incident_resolve_time": {
          "type": "string"
        },
        "incident_start_time": {
          "type": "string"
        },
        "jira_issue_links": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.IncidentJiraIssueLink"
          }
        },
        "jira_issues": {
          "type": "string"
        },
        "leaders": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "name": {
          "type": "string"
        },
        "need_generate_feishu": {
          "type": "boolean"
        },
        "oncallers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "status": {
          "type": "string"
        },
        "tier": {
          "type": "string"
        },
        "war_room_id": {
          "type": "integer"
        }
      }
    },
    "incident.CreateIncidentResp": {
      "type": "object",
      "properties": {
        "incident_id": {
          "type": "integer"
        }
      }
    },
    "incident.DeleteIncidentLogItemResp": {
      "type": "object",
      "properties": {
        "deleted_incident_logitem_id": {
          "type": "integer"
        }
      }
    },
    "incident.DeleteIncidentPostMortemResp": {
      "type": "object"
    },
    "incident.DeleteIncidentPostMortemTimelineResp": {
      "type": "object"
    },
    "incident.DeleteIncidentPostMortemToDoActionResp": {
      "type": "object"
    },
    "incident.DeleteIncidentResp": {
      "type": "object",
      "properties": {
        "deleted_incident_id": {
          "type": "integer"
        }
      }
    },
    "incident.GetIncidentComponentOptionsResp": {
      "type": "object",
      "required": ["components"],
      "properties": {
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "definitions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/incident.IncidentComponentDefinition"
          }
        }
      }
    },
    "incident.GetIncidentPostMortemResp": {
      "type": "object",
      "properties": {
        "incident_post_mortem": {
          "$ref": "#/definitions/entity.IncidentPostMortem"
        }
      }
    },
    "incident.GetIncidentPostMortemTimelineResp": {
      "type": "object",
      "properties": {
        "incident_postmortem_timeline": {
          "$ref": "#/definitions/entity.IncidentPostMortemTimelineItem"
        }
      }
    },
    "incident.GetIncidentPostMortemToDoActionResp": {
      "type": "object",
      "properties": {
        "incident_postmortem_todoaction": {
          "$ref": "#/definitions/entity.IncidentPostMortemToDoAction"
        }
      }
    },
    "incident.ImportIncidentPostMortemToDoActionsResp": {
      "type": "object",
      "properties": {
        "postmortem_todo_action_import_started": {
          "type": "boolean"
        },
        "postmortem_todo_action_import_status": {
          "type": "string"
        }
      }
    },
    "incident.IncidentComponentDefinition": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "key": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "order": {
          "type": "integer"
        },
        "rule_doc_url": {
          "type": "string"
        },
        "t1_rule_summary": {
          "type": "string"
        },
        "t2_rule_summary": {
          "type": "string"
        },
        "t3_rule_summary": {
          "type": "string"
        }
      }
    },
    "incident.ListIncidentLogsResp": {
      "type": "object",
      "properties": {
        "incident_id": {
          "type": "integer"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.IncidentLogItem"
          }
        }
      }
    },
    "incident.ListIncidentPostMortemItemsResp": {
      "type": "object",
      "properties": {
        "incident_id": {
          "type": "integer"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.IncidentPostMortem"
          }
        }
      }
    },
    "incident.ListIncidentPostMortemTimelinesResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.IncidentPostMortemTimelineItem"
          }
        },
        "postmortem_id": {
          "type": "integer"
        }
      }
    },
    "incident.ListIncidentPostMortemToDoActionsResp": {
      "type": "object",
      "properties": {
        "incident_id": {
          "type": "integer"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.IncidentPostMortemToDoAction"
          }
        }
      }
    },
    "incident.ListIncidentsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.Incident"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "incident.UpdateIncidentPostMortemReq": {
      "type": "object",
      "properties": {
        "background": {
          "type": "string"
        },
        "bug_mechanism": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "customer_impact_minutes": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "impact": {
          "type": "string"
        },
        "incident_end_time": {
          "type": "string"
        },
        "incident_id": {
          "type": "integer"
        },
        "incident_start_time": {
          "type": "string"
        },
        "involved_engineers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/userv1.User"
          }
        },
        "involved_tenants": {
          "type": "string"
        },
        "minutes_to_detect": {
          "type": "integer"
        },
        "minutes_to_resolved": {
          "type": "integer"
        },
        "resolution": {
          "type": "string"
        },
        "reviewed_at": {
          "type": "string"
        },
        "root_causes": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "technical_impact_level": {
          "type": "string"
        },
        "top_issues": {
          "type": "string"
        },
        "what_did_not_work": {
          "type": "string"
        },
        "what_worked": {
          "type": "string"
        },
        "where_we_were_lucky": {
          "type": "string"
        }
      }
    },
    "incident.UpdateIncidentPostMortemResp": {
      "type": "object"
    },
    "incident.UpdateIncidentPostMortemTimelineReq": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "happened_at": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "item_type": {
          "type": "string"
        },
        "postmortem_id": {
          "type": "integer"
        }
      }
    },
    "incident.UpdateIncidentPostMortemTimelineResp": {
      "type": "object"
    },
    "incident.UpdateIncidentPostMortemToDoActionReq": {
      "type": "object",
      "properties": {
        "deadline": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "linked_jira_issue": {
          "type": "string"
        },
        "persons": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "priority": {
          "type": "string"
        },
        "status": {
          "description": "Open or InProgress or Done",
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "incident.UpdateIncidentPostMortemToDoActionResp": {
      "type": "object"
    },
    "incident.UpdateIncidentReq": {
      "type": "object",
      "properties": {
        "biz_regions": {
          "type": "string"
        },
        "components": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "extract_postmortem_todo_actions": {
          "type": "boolean"
        },
        "fbowners": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "feishu_url": {
          "type": "string"
        },
        "incident_resolve_time": {
          "type": "string"
        },
        "incident_start_time": {
          "type": "string"
        },
        "jira_issue_links": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.IncidentJiraIssueLink"
          }
        },
        "jira_issues": {
          "type": "string"
        },
        "leaders": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "name": {
          "type": "string"
        },
        "oncallers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "status": {
          "type": "string"
        },
        "tier": {
          "type": "string"
        },
        "war_room_id": {
          "type": "integer"
        }
      }
    },
    "incident.UpdateIncidentResp": {
      "type": "object",
      "properties": {
        "postmortem_todo_action_import_started": {
          "type": "boolean"
        },
        "postmortem_todo_action_import_status": {
          "type": "string"
        }
      }
    },
    "itoken.JWK": {
      "type": "object",
      "properties": {
        "alg": {
          "type": "string"
        },
        "e": {
          "type": "string"
        },
        "kid": {
          "type": "string"
        },
        "kty": {
          "type": "string"
        },
        "n": {
          "type": "string"
        },
        "use": {
          "type": "string"
        }
      }
    },
    "itoken.JWKSet": {
      "type": "object",
      "properties": {
        "keys": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/itoken.JWK"
          }
        }
      }
    },
    "jira.Alert": {
      "type": "object",
      "properties": {
        "created_at": {
          "type": "integer"
        },
        "key": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "priority": {
          "type": "string"
        },
        "recovered": {
          "type": "boolean"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "jira.Comment": {
      "type": "object",
      "properties": {
        "author": {
          "$ref": "#/definitions/jira.User"
        },
        "content": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "jira.CreateIssueTriageTagDefinitionRequest": {
      "type": "object",
      "required": ["tag"],
      "properties": {
        "tag": {
          "$ref": "#/definitions/jira.IssueTriageTagDefinition"
        }
      }
    },
    "jira.CreateIssueTriageTagDefinitionResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "tag": {
          "$ref": "#/definitions/jira.IssueTriageTagDefinition"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jira.DeleteIssueTriageTagDefinitionRequest": {
      "type": "object",
      "required": ["name", "type"],
      "properties": {
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/jira.IssueTriageTagType"
        }
      }
    },
    "jira.GetIssueFromJiraResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "issue": {
          "$ref": "#/definitions/jira.IssueInJira"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jira.GetUnifiedIssueResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "issue": {
          "$ref": "#/definitions/jira.UnifiedIssue"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jira.IssueCustomerEnvironment": {
      "type": "string",
      "enum": ["cloud", "on_premise"],
      "x-enum-varnames": [
        "IssueCustomerEnvironmentCloud",
        "IssueCustomerEnvironmentOnPremise"
      ]
    },
    "jira.IssueCustomerInfo": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string"
        },
        "environment": {
          "$ref": "#/definitions/jira.IssueCustomerEnvironment"
        },
        "issue_key": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "jira.IssueInJira": {
      "type": "object",
      "properties": {
        "assignee": {
          "$ref": "#/definitions/jira.User"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jira.Comment"
          }
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "created_at": {
          "type": "integer"
        },
        "customer_info": {
          "$ref": "#/definitions/jira.IssueCustomerInfo"
        },
        "description": {
          "type": "string"
        },
        "eta": {
          "type": "integer"
        },
        "id": {
          "description": "raw ID in jira",
          "type": "string"
        },
        "issue_links": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jira.IssueLink"
          }
        },
        "key": {
          "type": "string"
        },
        "priority": {
          "type": "string"
        },
        "project": {
          "$ref": "#/definitions/jira.Project"
        },
        "reporter": {
          "$ref": "#/definitions/jira.User"
        },
        "resolved_at": {
          "type": "integer"
        },
        "status": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "jira.IssueInRepo": {
      "type": "object",
      "properties": {
        "created_at": {
          "description": "same as IssueSnapshot.CreatedAt",
          "type": "integer"
        },
        "have_timeline_summary": {
          "type": "boolean"
        },
        "have_triage": {
          "type": "boolean"
        },
        "key": {
          "type": "string"
        },
        "snapshot": {
          "$ref": "#/definitions/jira.IssueSnapshot"
        },
        "stored_at": {
          "type": "integer"
        }
      }
    },
    "jira.IssueLink": {
      "type": "object",
      "properties": {
        "inward_issue": {
          "type": "string"
        },
        "outward_issue": {
          "type": "string"
        },
        "type_name": {
          "type": "string"
        }
      }
    },
    "jira.IssueSnapshot": {
      "type": "object",
      "properties": {
        "assignee_email": {
          "type": "string"
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "created_at": {
          "type": "integer"
        },
        "customer_info": {
          "$ref": "#/definitions/jira.IssueCustomerInfo"
        },
        "id": {
          "description": "raw ID in jira",
          "type": "string"
        },
        "key": {
          "type": "string"
        },
        "priority": {
          "type": "string"
        },
        "project_key": {
          "type": "string"
        },
        "reporter_email": {
          "type": "string"
        },
        "resolved_at": {
          "type": "integer"
        },
        "status": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        }
      }
    },
    "jira.IssueTimelineSummary": {
      "type": "object",
      "properties": {
        "timelines": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jira.IssueTimelineSummaryItem"
          }
        }
      }
    },
    "jira.IssueTimelineSummaryItem": {
      "type": "object",
      "properties": {
        "begin_time": {
          "description": "TODO: change to int64",
          "type": "integer"
        },
        "description": {
          "type": "string"
        }
      }
    },
    "jira.IssueTriage": {
      "type": "object",
      "properties": {
        "brief_summary": {
          "type": "string"
        },
        "created_at": {
          "description": "TODO: change to int64",
          "type": "integer"
        },
        "key": {
          "type": "string"
        },
        "tags": {
          "$ref": "#/definitions/jira.IssueTriageTags"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "jira.IssueTriageTagDefinition": {
      "type": "object",
      "properties": {
        "created_at": {
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/jira.IssueTriageTagType"
        }
      }
    },
    "jira.IssueTriageTagType": {
      "type": "string",
      "enum": ["scene", "root_cause", "preventability", "solution"],
      "x-enum-varnames": [
        "IssueTriageTagTypeScence",
        "IssueTriageTagTypeRootCause",
        "IssueTriageTagTypePreventability",
        "IssueTriageTagTypeSolution"
      ]
    },
    "jira.IssueTriageTags": {
      "type": "object",
      "properties": {
        "preventability": {
          "type": "string"
        },
        "root_cause": {
          "type": "string"
        },
        "scene": {
          "type": "string"
        },
        "solution": {
          "type": "string"
        }
      }
    },
    "jira.ListIssueTriageTagDefinitionsRequest": {
      "type": "object",
      "properties": {
        "-": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "labels_contain_json": {
          "type": "string"
        },
        "names_in": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "types_in": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jira.IssueTriageTagType"
          }
        }
      }
    },
    "jira.ListIssueTriageTagDefinitionsResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jira.IssueTriageTagDefinition"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jira.ListIssuesFromJiraResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "is_last": {
          "type": "boolean"
        },
        "issues": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jira.IssueInJira"
          }
        },
        "next_page_token": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jira.ListUnifiedIssuesRequest": {
      "type": "object",
      "properties": {
        "cluster_id_in": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "component_in": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "created_after": {
          "type": "integer"
        },
        "created_before": {
          "type": "integer"
        },
        "customer_env_is": {
          "type": "string"
        },
        "have_timeline_summary": {
          "type": "boolean"
        },
        "have_triage": {
          "type": "boolean"
        },
        "issue_key_in": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "page": {
          "type": "integer"
        },
        "per_page": {
          "type": "integer"
        },
        "project_in": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "status_in": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tenant_id_in": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "with_jira": {
          "type": "boolean"
        },
        "with_jira_comments": {
          "type": "boolean"
        },
        "with_timeline_summary": {
          "type": "boolean"
        },
        "with_triage": {
          "type": "boolean"
        }
      }
    },
    "jira.ListUnifiedIssuesResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jira.UnifiedIssue"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jira.Project": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "jira.SeriesTrend": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "series": {
          "type": "string"
        },
        "value": {
          "type": "integer"
        }
      }
    },
    "jira.SetIssueTimelineSummaryRequest": {
      "type": "object",
      "required": ["key", "summary"],
      "properties": {
        "key": {
          "type": "string"
        },
        "summary": {
          "$ref": "#/definitions/jira.IssueTimelineSummary"
        }
      }
    },
    "jira.SyncIssueSnapshotByJQLRequest": {
      "type": "object",
      "required": ["jql"],
      "properties": {
        "fail_fast": {
          "type": "boolean"
        },
        "jql": {
          "type": "string"
        },
        "max_count": {
          "type": "integer"
        },
        "per_page": {
          "type": "integer"
        }
      }
    },
    "jira.SyncIssueSnapshotByJQLResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "failure_issues": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "success_issues": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jira.SyncIssueSnapshotByKeyRequest": {
      "type": "object",
      "required": ["key"],
      "properties": {
        "key": {
          "type": "string"
        }
      }
    },
    "jira.SyncIssueSnapshotByKeyResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "issue": {
          "$ref": "#/definitions/jira.IssueInRepo"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jira.UnifiedIssue": {
      "type": "object",
      "properties": {
        "issue_in_jira": {
          "$ref": "#/definitions/jira.IssueInJira"
        },
        "issue_in_repo": {
          "$ref": "#/definitions/jira.IssueInRepo"
        },
        "issue_timeline_summary": {
          "$ref": "#/definitions/jira.IssueTimelineSummary"
        },
        "issue_triage": {
          "$ref": "#/definitions/jira.IssueTriage"
        },
        "key": {
          "type": "string"
        }
      }
    },
    "jira.UpsertIssueTriageRequest": {
      "type": "object",
      "required": ["triage"],
      "properties": {
        "triage": {
          "$ref": "#/definitions/jira.IssueTriage"
        }
      }
    },
    "jira.User": {
      "type": "object",
      "properties": {
        "display_name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        }
      }
    },
    "jump.Authorization": {
      "type": "object",
      "properties": {
        "applicant": {
          "description": "email",
          "type": "string"
        },
        "approval_id": {
          "type": "integer"
        },
        "closed_at": {
          "type": "integer"
        },
        "created_at": {
          "type": "integer"
        },
        "enable_gateway_access": {
          "type": "boolean"
        },
        "expiration": {
          "$ref": "#/definitions/jump.JumpExpiration"
        },
        "expire_at": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "jumps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jump.Jump"
          }
        },
        "phase": {
          "description": "status",
          "allOf": [
            {
              "$ref": "#/definitions/jump.AuthorizationPhase"
            }
          ]
        },
        "privilege": {
          "$ref": "#/definitions/jump.JumpPrivilege"
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "jump.AuthorizationPhase": {
      "type": "string",
      "enum": [
        "initialized",
        "approving",
        "creating",
        "created",
        "expired",
        "notapproved",
        "canceled"
      ],
      "x-enum-varnames": [
        "AuthorizationPhaseInitialized",
        "AuthorizationPhaseApproving",
        "AuthorizationPhaseCreating",
        "AuthorizationPhaseCreated",
        "AuthorizationPhaseExpired",
        "AuthorizationPhaseNotApproved",
        "AuthorizationPhaseCanceled"
      ]
    },
    "jump.CancelAuthorizationReq": {
      "type": "object",
      "properties": {
        "force": {
          "type": "boolean"
        },
        "timeout": {
          "type": "integer"
        }
      }
    },
    "jump.Connection": {
      "type": "object",
      "properties": {
        "gateway": {
          "$ref": "#/definitions/jump.ConnectionGateway"
        },
        "ssh": {
          "$ref": "#/definitions/jump.ConnectionSSH"
        },
        "web_terminal": {
          "$ref": "#/definitions/jump.ConnectionWebTerminal"
        }
      }
    },
    "jump.ConnectionGateway": {
      "type": "object",
      "properties": {
        "connection_token": {
          "type": "string"
        },
        "kubeconfig": {
          "type": "string"
        },
        "server_urls": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "jump.ConnectionMethod": {
      "type": "string",
      "enum": ["web_terminal", "ssh", "gateway"],
      "x-enum-varnames": [
        "ConnectionMethodWebTerminal",
        "ConnectionMethodSSH",
        "ConnectionMethodGateway"
      ]
    },
    "jump.ConnectionSSH": {
      "type": "object",
      "properties": {
        "address": {
          "type": "string"
        },
        "base_asset_name": {
          "type": "string"
        },
        "jumppod_name": {
          "type": "string"
        },
        "jumppod_namespace": {
          "type": "string"
        }
      }
    },
    "jump.ConnectionWebTerminal": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        }
      }
    },
    "jump.CreateAuthorizationReq": {
      "type": "object",
      "properties": {
        "destination_type": {
          "$ref": "#/definitions/jump.DestinationType"
        },
        "destinations": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "enable_gateway_access": {
          "type": "boolean"
        },
        "expiration": {
          "$ref": "#/definitions/jump.JumpExpiration"
        },
        "extra": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "privilege": {
          "$ref": "#/definitions/jump.JumpPrivilege"
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "jump.CreateAuthorizationResp": {
      "type": "object",
      "properties": {
        "authorization_id": {
          "type": "integer"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jump.DestinationByocCluster": {
      "type": "object",
      "properties": {
        "bastion_name": {
          "type": "string"
        }
      }
    },
    "jump.DestinationControlPlane": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        }
      }
    },
    "jump.DestinationDedicatedCluster": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "jump.DestinationPremiumCluster": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "jump.DestinationPremiumResourcePool": {
      "type": "object",
      "properties": {
        "resource_pool_id": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "jump.DestinationServerlessCluster": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        }
      }
    },
    "jump.DestinationType": {
      "type": "string",
      "enum": [
        "unspecified",
        "controlplane",
        "dedicated",
        "serverless",
        "byoc",
        "premium",
        "premium_resource_pool"
      ],
      "x-enum-varnames": [
        "DestinationTypeUnspecified",
        "DestinationTypeControlPlane",
        "DestinationTypeDedicated",
        "DestinationTypeServerless",
        "DestinationTypeByoc",
        "DestinationTypePremium",
        "DestinationTypePremiumResourcePool"
      ]
    },
    "jump.DestinationUnion": {
      "type": "object",
      "properties": {
        "byoc_cluster": {
          "$ref": "#/definitions/jump.DestinationByocCluster"
        },
        "control_plane": {
          "$ref": "#/definitions/jump.DestinationControlPlane"
        },
        "dedicated_cluster": {
          "$ref": "#/definitions/jump.DestinationDedicatedCluster"
        },
        "premium_cluster": {
          "$ref": "#/definitions/jump.DestinationPremiumCluster"
        },
        "premium_resource_pool": {
          "$ref": "#/definitions/jump.DestinationPremiumResourcePool"
        },
        "serverless_cluster": {
          "$ref": "#/definitions/jump.DestinationServerlessCluster"
        }
      }
    },
    "jump.GetAuthorizationResp": {
      "type": "object",
      "properties": {
        "authorization": {
          "$ref": "#/definitions/jump.Authorization"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jump.GetConnectionResponse": {
      "type": "object",
      "properties": {
        "connection": {
          "$ref": "#/definitions/jump.Connection"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jump.GetUserResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        },
        "user_id": {
          "type": "string"
        }
      }
    },
    "jump.InviteUserFailedItem": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "err": {
          "type": "string"
        }
      }
    },
    "jump.InviteUserReq": {
      "type": "object",
      "properties": {
        "emails": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "jump.InviteUserResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "failed": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jump.InviteUserFailedItem"
          }
        },
        "success": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jump.Jump": {
      "type": "object",
      "properties": {
        "attributes": {
          "$ref": "#/definitions/jump.JumpAttributes"
        },
        "destination": {
          "$ref": "#/definitions/jump.DestinationUnion"
        },
        "destination_type": {
          "description": "output only",
          "allOf": [
            {
              "$ref": "#/definitions/jump.DestinationType"
            }
          ]
        },
        "id": {
          "type": "integer"
        },
        "method": {
          "$ref": "#/definitions/jump.JumpMethod"
        }
      }
    },
    "jump.JumpAttributes": {
      "type": "object",
      "properties": {
        "k8s": {
          "$ref": "#/definitions/jump.JumpK8sAttributes"
        },
        "tailscale": {
          "$ref": "#/definitions/jump.JumpTailscaleAttributes"
        }
      }
    },
    "jump.JumpExpiration": {
      "type": "string",
      "enum": ["1h", "3h", "6h", "12h", "24h", "3d", "7d", "30d"],
      "x-enum-varnames": [
        "JumpExpiration1Hour",
        "JumpExpiration3Hour",
        "JumpExpiration6Hour",
        "JumpExpiration12Hour",
        "JumpExpiration24Hour",
        "JumpExpiration3Day",
        "JumpExpiration7Day",
        "JumpExpiration30Day"
      ]
    },
    "jump.JumpK8sAttributes": {
      "type": "object",
      "properties": {
        "context": {
          "type": "string"
        },
        "enable_gateway_access": {
          "type": "boolean"
        },
        "token_expire_at": {
          "description": "jump token expire time, zero means no expire",
          "type": "integer"
        }
      }
    },
    "jump.JumpMethod": {
      "type": "string",
      "enum": ["unspecified", "k8s", "tailscale"],
      "x-enum-varnames": [
        "JumpMethodUnspecified",
        "JumpMethodK8s",
        "JumpMethodTailscale"
      ]
    },
    "jump.JumpPrivilege": {
      "type": "string",
      "enum": ["read_only", "read_write", "admin"],
      "x-enum-varnames": [
        "JumpPrivilegeReadOnly",
        "JumpPrivilegeReadWrite",
        "JumpPrivilegeAdmin"
      ]
    },
    "jump.JumpTailscaleAttributes": {
      "type": "object",
      "properties": {
        "dst_hostname": {
          "type": "string"
        },
        "dst_ip": {
          "type": "string"
        },
        "src_hostname": {
          "type": "string"
        },
        "src_ip": {
          "type": "string"
        },
        "user": {
          "type": "string"
        }
      }
    },
    "jump.ListAuthorizationsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/jump.Authorization"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "jump.ListAvailableDestinationsResp": {
      "type": "object",
      "properties": {
        "destinations": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "k8scalendar.ListLifecyclesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8scalendar.VersionLifecycle"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "k8scalendar.ResetNotificationFlagsReq": {
      "type": "object",
      "required": ["cloud", "flags", "version"],
      "properties": {
        "cloud": {
          "type": "string"
        },
        "flags": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string"
          }
        },
        "version": {
          "type": "string"
        }
      }
    },
    "k8scalendar.SyncNowReq": {
      "type": "object",
      "properties": {
        "fail_on_provider_error": {
          "description": "FailOnProviderError when true, syncNow returns error if any provider (EKS/GKE) fetch fails.",
          "type": "boolean"
        }
      }
    },
    "k8scalendar.VersionLifecycle": {
      "type": "object",
      "properties": {
        "cloud": {
          "type": "string"
        },
        "cloud_provider": {
          "type": "string"
        },
        "end_of_extended_support": {
          "type": "string"
        },
        "end_of_standard_support": {
          "type": "string"
        },
        "eos_approaching_notified_for": {
          "type": "string"
        },
        "fingerprint": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "lifecycle_start": {
          "type": "string"
        },
        "notified_eos_changed_fingerprint": {
          "type": "string"
        },
        "notified_version_added_at": {
          "type": "string"
        },
        "release_precision": {
          "type": "string"
        },
        "scraped_at": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "k8sresource.ClusterResource": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "key": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "k8sresource.DedicatedDataPlaneBody": {
      "type": "object",
      "properties": {
        "clusterId": {
          "type": "string"
        },
        "projectId": {
          "type": "string"
        }
      }
    },
    "k8sresource.DedicatedFieldFilterBody": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "operator": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "k8sresource.DedicatedGVKBody": {
      "type": "object",
      "properties": {
        "group": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "k8sresource.DedicatedOptionBody": {
      "type": "object",
      "properties": {
        "detail": {
          "type": "boolean"
        },
        "events": {
          "type": "boolean"
        },
        "maxItems": {
          "type": "integer"
        }
      }
    },
    "k8sresource.DedicatedSelectorBody": {
      "type": "object",
      "properties": {
        "field": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8sresource.DedicatedFieldFilterBody"
          }
        },
        "label": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        }
      }
    },
    "k8sresource.GetK8SResourceResp": {
      "type": "object",
      "properties": {
        "metadata": {
          "type": "string"
        }
      }
    },
    "k8sresource.K8SResource": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string"
        },
        "data": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "snap_id": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "timestamp": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "k8sresource.ListClusterResourcesResp": {
      "type": "object",
      "properties": {
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8sresource.ClusterResource"
          }
        }
      }
    },
    "k8sresource.ListDedicatedK8sResourcesBody": {
      "type": "object",
      "properties": {
        "dataPlane": {
          "$ref": "#/definitions/k8sresource.DedicatedDataPlaneBody"
        },
        "gvk": {
          "$ref": "#/definitions/k8sresource.DedicatedGVKBody"
        },
        "option": {
          "$ref": "#/definitions/k8sresource.DedicatedOptionBody"
        },
        "planeType": {
          "type": "string"
        },
        "selector": {
          "$ref": "#/definitions/k8sresource.DedicatedSelectorBody"
        }
      }
    },
    "k8sresource.ListDedicatedK8sResourcesResp": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string"
        },
        "content_type": {
          "type": "string"
        },
        "hints": {
          "type": "string"
        },
        "item_count": {
          "type": "integer"
        },
        "truncated": {
          "type": "boolean"
        }
      }
    },
    "k8sresource.ListK8SResourcesResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8sresource.K8SResource"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "k8supgrade.CancelUpgradeK8sClusterResp": {
      "type": "object"
    },
    "k8supgrade.CloseTaskReq": {
      "type": "object",
      "required": ["reason"],
      "properties": {
        "reason": {
          "type": "string"
        }
      }
    },
    "k8supgrade.CreateTaskReq": {
      "type": "object",
      "required": ["cloud_provider", "deadline", "eos_version", "name"],
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "deadline": {
          "type": "integer"
        },
        "eos_version": {
          "type": "string"
        },
        "max_restart_times": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "selector_type": {
          "description": "SelectorType indicates the mutually exclusive selector type.\n- internal: internal tenants only\n- non_prod: non-production clusters only\n- by_region: match business region\n- by_tenant_ids: match tenant IDs\n- by_project_ids: match project IDs\n- by_tidb_cluster_ids: match TiDB cluster IDs\n- by_k8s_names: match k8s names",
          "type": "string"
        },
        "selector_value": {
          "description": "SelectorValue stores selector-specific conditions in JSON.\nIt can be empty for some selector types.",
          "type": "string"
        }
      }
    },
    "k8supgrade.CreateTaskResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "k8supgrade.ExcludeK8sUpgradeTaskClusterResp": {
      "type": "object"
    },
    "k8supgrade.GetK8SInformationResp": {
      "type": "object",
      "properties": {
        "admin_nodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.Node"
          }
        },
        "appbox_name": {
          "type": "string"
        },
        "appbox_namespace": {
          "type": "string"
        },
        "business_region": {
          "type": "string"
        },
        "cloud_account": {
          "type": "string"
        },
        "cloud_provider": {
          "type": "string"
        },
        "clusters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.TiDBClusterInfraInfo"
          }
        },
        "control_plane_version": {
          "$ref": "#/definitions/k8supgrade.Version"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "is_3_layer_arch": {
          "type": "boolean"
        },
        "k8s_name": {
          "type": "string"
        },
        "number_of_tidb_clusters": {
          "type": "integer"
        },
        "o11y_k8s_nodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.Node"
          }
        },
        "project_id": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "tenant_kind": {
          "type": "string"
        },
        "tenant_name": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "k8supgrade.GetK8sUpgradeAdminResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "is_admin": {
          "type": "boolean"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "k8supgrade.GetTaskK8sClusterResp": {
      "type": "object",
      "properties": {
        "k8s_cluster": {
          "$ref": "#/definitions/k8supgrade.K8sCluster"
        }
      }
    },
    "k8supgrade.GetTaskResp": {
      "type": "object",
      "properties": {
        "applicant": {
          "description": "email",
          "type": "string"
        },
        "approval_id": {
          "type": "integer"
        },
        "closed_at": {
          "type": "integer"
        },
        "cloud_provider": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "deadline": {
          "type": "integer"
        },
        "excluded_k8s_clusters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.K8sCluster"
          }
        },
        "id": {
          "type": "integer"
        },
        "k8s_cluster_list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.K8sCluster"
          }
        },
        "max_restart_times": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "regions": {
          "type": "object",
          "additionalProperties": {
            "type": "integer"
          }
        },
        "selector_type": {
          "description": "SelectorType indicates the mutually exclusive selector type.",
          "type": "string"
        },
        "selector_value": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/k8supgrade.TaskStatus"
        },
        "synced": {
          "description": "Synced indicates whether the task has been synced.\nThis field is only used for the task in pending phase.",
          "type": "boolean"
        },
        "version_to_be_upgraded": {
          "type": "string"
        }
      }
    },
    "k8supgrade.K8sCluster": {
      "type": "object",
      "properties": {
        "business_region": {
          "type": "string"
        },
        "cloud_provider": {
          "type": "string"
        },
        "desired_version": {
          "type": "string"
        },
        "disable_auto_generation": {
          "description": "DisableAutoGeneration indicates whether to disable auto generation for the UpgradeOperationCR.",
          "type": "boolean"
        },
        "id": {
          "type": "integer"
        },
        "info": {
          "description": "Info contains the information of the K8s cluster.\nIt will not be stored in the database.\nIt represents the latest state of the cluster.",
          "allOf": [
            {
              "$ref": "#/definitions/k8supgrade.K8sInfo"
            }
          ]
        },
        "is_excluded": {
          "type": "boolean"
        },
        "k8s_snapshot": {
          "description": "K8sSnapshot is a snapshot of the K8s cluster before the task starts running.\nIt's used to record the initial state of the cluster.",
          "allOf": [
            {
              "$ref": "#/definitions/k8supgrade.K8sInfo"
            }
          ]
        },
        "maintenance_window_id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "sales_owner_email": {
          "description": "SalesOwnerEmail and TAMName are resolved from tenant service at read time.",
          "type": "string"
        },
        "tam_name": {
          "type": "string"
        },
        "task_id": {
          "type": "integer"
        },
        "tenant_kind": {
          "type": "string"
        },
        "tenant_name": {
          "type": "string"
        },
        "upgrade_operation_cr": {
          "type": "string"
        },
        "upgrade_operation_status": {
          "type": "string"
        },
        "version": {
          "description": "Version is used for optimistic locking. See models/k8supgrade.K8sCluster.Version.",
          "type": "integer"
        }
      }
    },
    "k8supgrade.K8sInfo": {
      "type": "object",
      "properties": {
        "admin_nodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.Node"
          }
        },
        "appbox_name": {
          "type": "string"
        },
        "appbox_namespace": {
          "type": "string"
        },
        "business_region": {
          "type": "string"
        },
        "cloud_account": {
          "type": "string"
        },
        "cloud_provider": {
          "type": "string"
        },
        "clusters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.TiDBClusterInfraInfo"
          }
        },
        "control_plane_version": {
          "$ref": "#/definitions/k8supgrade.Version"
        },
        "is_3_layer_arch": {
          "type": "boolean"
        },
        "k8s_name": {
          "type": "string"
        },
        "number_of_tidb_clusters": {
          "type": "integer"
        },
        "o11y_k8s_nodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.Node"
          }
        },
        "project_id": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "tenant_kind": {
          "type": "string"
        },
        "tenant_name": {
          "type": "string"
        }
      }
    },
    "k8supgrade.ListK8SInformationResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.K8sInfo"
          }
        },
        "timestamp": {
          "description": "Timestamp is the time when the list is generated.",
          "type": "integer"
        },
        "total": {
          "description": "Total is the number of items.",
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "k8supgrade.ListK8sUpgradeSupportedVersionsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        },
        "versions": {
          "description": "key: cloud provider (aws/gcp), value: supported versions",
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "k8supgrade.ListTasksResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.Task"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "k8supgrade.Node": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer"
        },
        "kind": {
          "description": "admin-nodes, tidb-nodes, cdc-nodes, dm-nodes, o11y-k8s-nodes, o11y-tidb-nodes",
          "type": "string"
        },
        "max_skew_version": {
          "description": "MaxSkewVersion is the max version of the node group behind the control plane's version.",
          "type": "integer"
        },
        "version": {
          "$ref": "#/definitions/k8supgrade.Version"
        }
      }
    },
    "k8supgrade.NoticeTemplateReq": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      }
    },
    "k8supgrade.NotifyReq": {
      "type": "object",
      "properties": {
        "channels": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "custom_message": {
          "type": "string"
        }
      }
    },
    "k8supgrade.RenderedNoticeResp": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string"
        }
      }
    },
    "k8supgrade.Task": {
      "type": "object",
      "properties": {
        "applicant": {
          "description": "email",
          "type": "string"
        },
        "approval_id": {
          "type": "integer"
        },
        "closed_at": {
          "type": "integer"
        },
        "cloud_provider": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "deadline": {
          "type": "integer"
        },
        "excluded_k8s_clusters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.K8sCluster"
          }
        },
        "id": {
          "type": "integer"
        },
        "k8s_cluster_list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.K8sCluster"
          }
        },
        "max_restart_times": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "regions": {
          "type": "object",
          "additionalProperties": {
            "type": "integer"
          }
        },
        "selector_type": {
          "description": "SelectorType indicates the mutually exclusive selector type.",
          "type": "string"
        },
        "selector_value": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/k8supgrade.TaskStatus"
        },
        "synced": {
          "description": "Synced indicates whether the task has been synced.\nThis field is only used for the task in pending phase.",
          "type": "boolean"
        },
        "version_to_be_upgraded": {
          "type": "string"
        }
      }
    },
    "k8supgrade.TaskStatus": {
      "type": "string",
      "enum": ["pending", "approving", "running", "completed", "cancelled"],
      "x-enum-varnames": [
        "TaskStatusPending",
        "TaskStatusApproving",
        "TaskStatusRunning",
        "TaskStatusCompleted",
        "TaskStatusCancelled"
      ]
    },
    "k8supgrade.TiDBClusterInfraInfo": {
      "type": "object",
      "properties": {
        "component_nodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgrade.Node"
          }
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "notes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "status": {
          "type": "string"
        },
        "topology": {
          "description": "key: component type, value: replicas",
          "type": "object",
          "additionalProperties": {
            "type": "integer"
          }
        },
        "version": {
          "type": "string"
        }
      }
    },
    "k8supgrade.UpdateK8sUpgradeTaskClusterAutoGenerationReq": {
      "type": "object",
      "properties": {
        "disable_auto_generation": {
          "type": "boolean"
        }
      }
    },
    "k8supgrade.UpdateK8sUpgradeTaskClusterAutoGenerationResp": {
      "type": "object"
    },
    "k8supgrade.UpdateTaskK8sClusterReq": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "is_excluded": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "task_id": {
          "type": "integer"
        },
        "upgrade_operation_cr": {
          "type": "string"
        },
        "upgrade_operation_status": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "k8supgrade.UpdateTaskK8sClusterResp": {
      "type": "object"
    },
    "k8supgrade.UpdateTaskReq": {
      "type": "object",
      "properties": {
        "deadline": {
          "type": "integer"
        },
        "max_restart_times": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "k8supgrade.Version": {
      "type": "object",
      "properties": {
        "major": {
          "description": "Major is the major version of the component.",
          "type": "integer"
        },
        "minor": {
          "description": "Minor is the minor version of the component.",
          "type": "integer"
        }
      }
    },
    "k8supgradeplan.CreatePlanReq": {
      "type": "object",
      "required": [
        "cloud_provider",
        "deadline",
        "eos_date",
        "eos_version",
        "name"
      ],
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "deadline": {
          "type": "integer"
        },
        "eos_date": {
          "type": "integer"
        },
        "eos_version": {
          "type": "string"
        },
        "max_restart_times": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "selector_type": {
          "type": "string"
        },
        "selector_value": {
          "type": "string"
        },
        "trigger_time": {
          "type": "integer"
        }
      }
    },
    "k8supgradeplan.CreatePlanResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "k8supgradeplan.GetPlanResp": {
      "type": "object",
      "properties": {
        "approval_id": {
          "type": "integer"
        },
        "cloud_provider": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "created_by": {
          "type": "string"
        },
        "deadline": {
          "type": "integer"
        },
        "eos_date": {
          "type": "string"
        },
        "eos_version": {
          "type": "string"
        },
        "estimated_clusters": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "linked_task_id": {
          "type": "integer"
        },
        "max_restart_times": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "selector_type": {
          "type": "string"
        },
        "selector_value": {
          "type": "string"
        },
        "source_event_id": {
          "type": "integer"
        },
        "status": {
          "$ref": "#/definitions/k8supgradeplan.PlanStatus"
        },
        "trigger_time": {
          "type": "integer"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "k8supgradeplan.ListPlansResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/k8supgradeplan.PlannedUpgrade"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "k8supgradeplan.PlanStatus": {
      "type": "string",
      "enum": [
        "draft",
        "approving",
        "approved",
        "scheduled",
        "task_created",
        "rejected",
        "cancelled"
      ],
      "x-enum-varnames": [
        "PlanStatusDraft",
        "PlanStatusApproving",
        "PlanStatusApproved",
        "PlanStatusScheduled",
        "PlanStatusTaskCreated",
        "PlanStatusRejected",
        "PlanStatusCancelled"
      ]
    },
    "k8supgradeplan.PlannedUpgrade": {
      "type": "object",
      "properties": {
        "approval_id": {
          "type": "integer"
        },
        "cloud_provider": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "created_by": {
          "type": "string"
        },
        "deadline": {
          "type": "integer"
        },
        "eos_date": {
          "type": "string"
        },
        "eos_version": {
          "type": "string"
        },
        "estimated_clusters": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "linked_task_id": {
          "type": "integer"
        },
        "max_restart_times": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "selector_type": {
          "type": "string"
        },
        "selector_value": {
          "type": "string"
        },
        "source_event_id": {
          "type": "integer"
        },
        "status": {
          "$ref": "#/definitions/k8supgradeplan.PlanStatus"
        },
        "trigger_time": {
          "type": "integer"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "k8supgradeplan.SchedulePlanReq": {
      "type": "object",
      "required": ["trigger_time"],
      "properties": {
        "trigger_time": {
          "type": "integer"
        }
      }
    },
    "k8supgradeplan.UpdatePlanReq": {
      "type": "object",
      "properties": {
        "deadline": {
          "type": "integer"
        },
        "max_restart_times": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "selector_type": {
          "type": "string"
        },
        "selector_value": {
          "type": "string"
        },
        "trigger_time": {
          "type": "integer"
        }
      }
    },
    "kernelimage.AvailabilityStatus": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "CHECKING",
        "AVAILABLE",
        "PARTIAL",
        "UNAVAILABLE",
        "CHECK_FAILED"
      ],
      "x-enum-varnames": [
        "AvailabilityStatusUnknown",
        "AvailabilityStatusChecking",
        "AvailabilityStatusAvailable",
        "AvailabilityStatusPartial",
        "AvailabilityStatusUnavailable",
        "AvailabilityStatusCheckFailed"
      ]
    },
    "kernelimage.BuildCallbackImage": {
      "type": "object",
      "required": ["source_repository", "source_tag"],
      "properties": {
        "source_digest": {
          "type": "string"
        },
        "source_repository": {
          "type": "string"
        },
        "source_tag": {
          "type": "string"
        }
      }
    },
    "kernelimage.BuildCallbackReq": {
      "type": "object",
      "required": ["commit_sha", "images", "repo"],
      "properties": {
        "branch": {
          "type": "string"
        },
        "commit_sha": {
          "type": "string"
        },
        "git_tag": {
          "type": "string"
        },
        "images": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/kernelimage.BuildCallbackImage"
          }
        },
        "repo": {
          "type": "string"
        },
        "source_applicant": {
          "type": "string"
        },
        "source_change_id": {
          "type": "string"
        },
        "source_release_id": {
          "type": "string"
        }
      }
    },
    "kernelimage.BuildCallbackResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "releases": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github_com_tidbcloud_devops_api_kernelimage.Release"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "kernelimage.ExclusionReason": {
      "type": "string",
      "enum": [
        "BUILD_INCOMPLETE",
        "DELIVERY_PENDING",
        "SYNC_INCOMPLETE",
        "MASKED",
        "INVALID_VERSION",
        "OUT_OF_VERSION_WINDOW",
        "OUT_OF_IMAGE_TAG_WINDOW",
        "RETIRED"
      ],
      "x-enum-varnames": [
        "ExclusionReasonBuildIncomplete",
        "ExclusionReasonDeliveryPending",
        "ExclusionReasonSyncIncomplete",
        "ExclusionReasonMasked",
        "ExclusionReasonInvalidVersion",
        "ExclusionReasonOutOfVersionWindow",
        "ExclusionReasonOutOfImageTagWindow",
        "ExclusionReasonRetired"
      ]
    },
    "kernelimage.GetReleaseResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "release": {
          "$ref": "#/definitions/github_com_tidbcloud_devops_api_kernelimage.Release"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "kernelimage.ListReleasesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github_com_tidbcloud_devops_api_kernelimage.Release"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "kernelimage.PlatformAvailability": {
      "type": "object",
      "properties": {
        "checked_at": {
          "type": "string"
        },
        "cloud_provider": {
          "type": "string"
        },
        "digest": {
          "type": "string"
        },
        "digest_matches": {
          "type": "boolean"
        },
        "error_message": {
          "type": "string"
        },
        "image_created_at": {
          "type": "string"
        },
        "image_ref": {
          "type": "string"
        },
        "multi_arch": {
          "type": "boolean"
        },
        "oci_platforms": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "registry": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/kernelimage.PlatformAvailabilityStatus"
        },
        "workflow_run_id": {
          "type": "integer"
        },
        "workflow_run_url": {
          "type": "string"
        }
      }
    },
    "kernelimage.PlatformAvailabilityStatus": {
      "type": "string",
      "enum": ["AVAILABLE", "MISSING", "DIGEST_MISMATCH", "CHECK_FAILED"],
      "x-enum-varnames": [
        "PlatformAvailabilityStatusAvailable",
        "PlatformAvailabilityStatusMissing",
        "PlatformAvailabilityStatusDigestMismatch",
        "PlatformAvailabilityStatusCheckFailed"
      ]
    },
    "kernelimage.ReleaseStatus": {
      "type": "string",
      "enum": [
        "BUILT",
        "DELIVERY_OPERATION_CREATE_FAILED",
        "DELIVERY_APPROVING",
        "SYNCING",
        "SYNC_FAILED",
        "AVAILABLE",
        "RETIRED"
      ],
      "x-enum-varnames": [
        "ReleaseStatusBuilt",
        "ReleaseStatusDeliveryOperationCreateFailed",
        "ReleaseStatusDeliveryApproving",
        "ReleaseStatusSyncing",
        "ReleaseStatusSyncFailed",
        "ReleaseStatusAvailable",
        "ReleaseStatusRetired"
      ]
    },
    "kernelimage.SelectionResp": {
      "type": "object",
      "properties": {
        "calculated_at": {
          "type": "string"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "excluded": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github_com_tidbcloud_devops_api_kernelimage.SelectionItem"
          }
        },
        "policy": {
          "$ref": "#/definitions/github_com_tidbcloud_devops_api_kernelimage.SelectionPolicy"
        },
        "trace_id": {
          "type": "string"
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github_com_tidbcloud_devops_api_kernelimage.SelectionVersion"
          }
        }
      }
    },
    "kernelimage.SelectionState": {
      "type": "string",
      "enum": ["SELECTED", "EXCLUDED"],
      "x-enum-varnames": ["SelectionStateSelected", "SelectionStateExcluded"]
    },
    "maintenance.ClusterMaintenance": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "instance_id": {
          "description": "the id of MaintenanceTask in the core svc",
          "type": "integer"
        },
        "lark_notified_at": {
          "type": "string"
        },
        "last_notified_customer_date": {
          "type": "string"
        },
        "scheduled_apply_time": {
          "type": "string"
        },
        "task": {
          "$ref": "#/definitions/maintenance.ClusterMaintenanceTask"
        }
      }
    },
    "maintenance.ClusterMaintenanceExecution": {
      "type": "object",
      "properties": {
        "cancel_reason": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string",
          "example": "0"
        },
        "id": {
          "type": "integer"
        },
        "status": {
          "$ref": "#/definitions/maintenance.ClusterMaintenanceExecutionStatus"
        },
        "task_id": {
          "description": "the id of MaintenanceTaskExecution in the core svc",
          "type": "integer"
        }
      }
    },
    "maintenance.ClusterMaintenanceExecutionStatus": {
      "type": "string",
      "enum": ["Pending", "Running", "Done", "Canceled"],
      "x-enum-varnames": [
        "ClusterMaintenanceExecutionStatusPending",
        "ClusterMaintenanceExecutionStatusRunning",
        "ClusterMaintenanceExecutionStatusDone",
        "ClusterMaintenanceExecutionStatusCanceled"
      ]
    },
    "maintenance.ClusterMaintenanceTask": {
      "type": "object",
      "properties": {
        "create_at": {
          "type": "string"
        },
        "deadline": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "executions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/maintenance.ClusterMaintenanceExecution"
          }
        },
        "id": {
          "type": "integer"
        },
        "project_id": {
          "type": "string",
          "example": "0"
        },
        "schedule_time": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/maintenance.ClusterMaintenanceTaskStatus"
        }
      }
    },
    "maintenance.ClusterMaintenanceTaskStatus": {
      "type": "string",
      "enum": ["Pending", "Running", "Closed"],
      "x-enum-varnames": [
        "ClusterMaintenanceTaskStatusPending",
        "ClusterMaintenanceTaskStatusRunning",
        "ClusterMaintenanceTaskStatusClosed"
      ]
    },
    "maintenance.ClusterOpsMaintenanceWindow": {
      "type": "object",
      "properties": {
        "approvers": {
          "description": "Approvers is additional approvers for operation outside maintenance window.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cluster_id": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "updated_at": {
          "type": "string"
        },
        "windows": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/maintenance.ClusterOpsMaintenanceWindowSlot"
          }
        }
      }
    },
    "maintenance.ClusterOpsMaintenanceWindowSlot": {
      "type": "object",
      "properties": {
        "description": {
          "description": "Description of this maintenance window.",
          "type": "string"
        },
        "duration": {
          "description": "String format of time.Duration, e.g. \"1h\", \"1d\".",
          "type": "string"
        },
        "start_cron_spec": {
          "description": "Cron expression of window start time.",
          "type": "string"
        }
      }
    },
    "maintenance.OpsExecutionWindow": {
      "type": "object",
      "properties": {
        "created_at": {
          "type": "integer"
        },
        "end_at": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "start_at": {
          "type": "integer"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "message.EmailRecord": {
      "type": "object",
      "properties": {
        "applicant": {
          "type": "string"
        },
        "bcc_addresses": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cc_addresses": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cc_target": {
          "$ref": "#/definitions/message.EmailTarget"
        },
        "created_at": {
          "type": "integer"
        },
        "email_template": {
          "$ref": "#/definitions/message.EmailTemplate"
        },
        "from_address": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "name": {
          "description": "Name of the email record to indentify or group it",
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "to_addresses": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "to_target": {
          "$ref": "#/definitions/message.EmailTarget"
        }
      }
    },
    "message.EmailTarget": {
      "type": "object",
      "properties": {
        "tenant": {
          "$ref": "#/definitions/message.EmailTargetTenant"
        },
        "users": {
          "$ref": "#/definitions/message.EmailTargetUsers"
        }
      }
    },
    "message.EmailTargetTenant": {
      "type": "object",
      "properties": {
        "role": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "message.EmailTargetUsers": {
      "type": "object",
      "properties": {
        "emails": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "message.EmailTemplate": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "variables": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "message.GetEmailRecordResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "record": {
          "$ref": "#/definitions/message.EmailRecord"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "message.ListEmailRecordsResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "records": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/message.EmailRecord"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "message.SendEmailBatchRequest": {
      "type": "object",
      "properties": {
        "concurrency": {
          "type": "integer"
        },
        "from_address": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "per_batch": {
          "type": "integer",
          "default": 100
        },
        "reason": {
          "type": "string"
        },
        "target_tenants": {
          "$ref": "#/definitions/message.SendEmailBatchTenant"
        },
        "target_users": {
          "$ref": "#/definitions/message.SendEmailBatchUsers"
        },
        "template": {
          "$ref": "#/definitions/message.EmailTemplate"
        }
      }
    },
    "message.SendEmailBatchResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "failed_targets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/message.EmailTarget"
          }
        },
        "success_targets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/message.EmailTarget"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "message.SendEmailBatchTenant": {
      "type": "object",
      "properties": {
        "role": {
          "type": "string"
        },
        "tenant_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "message.SendEmailBatchUsers": {
      "type": "object",
      "properties": {
        "emails": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "message.SendEmailRequest": {
      "type": "object",
      "properties": {
        "from_address": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "target": {
          "$ref": "#/definitions/message.EmailTarget"
        },
        "template": {
          "$ref": "#/definitions/message.EmailTemplate"
        }
      }
    },
    "mgmtportal.CommonResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "description": "the operation instance id",
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "monitoring.ComponentDifferenceItem": {
      "type": "object",
      "properties": {
        "actual": {},
        "component": {
          "type": "string"
        },
        "desired": {},
        "key": {
          "type": "string"
        }
      }
    },
    "monitoring.ComponentDifferenceItemsPerCluster": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string"
        },
        "cluster_name": {
          "type": "string"
        },
        "items": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/monitoring.ComponentDifferenceItem"
            }
          }
        },
        "project_id": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "tenant_name": {
          "type": "string"
        },
        "tenant_region": {
          "type": "string"
        }
      }
    },
    "monitoring.ComponentDifferenceReport": {
      "type": "object",
      "properties": {
        "difference": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/monitoring.ComponentDifferenceItemsPerCluster"
          }
        }
      }
    },
    "monitoring.ComponentDifferenceReportMetadata": {
      "type": "object",
      "properties": {
        "cluster_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "created_at": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "request_trace_id": {
          "type": "string"
        },
        "tenant_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "total_cluster_count": {
          "type": "integer"
        },
        "type": {
          "$ref": "#/definitions/monitoring.ComponentDifferenceReportType"
        }
      }
    },
    "monitoring.ComponentDifferenceReportType": {
      "type": "string",
      "enum": ["cluster_spec"],
      "x-enum-varnames": ["ComponentDifferenceReportTypeClusterSpec"]
    },
    "monitoring.GetReportResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "metadata": {
          "$ref": "#/definitions/monitoring.ComponentDifferenceReportMetadata"
        },
        "report": {
          "$ref": "#/definitions/monitoring.ComponentDifferenceReport"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "monitoring.ListReportsResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "metadatas": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/monitoring.ComponentDifferenceReportMetadata"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "o11y.Cluster": {
      "type": "object",
      "properties": {
        "agentRoleARN": {
          "type": "string"
        },
        "alert": {
          "$ref": "#/definitions/o11y.ClusterAlert"
        },
        "applicationID": {
          "type": "string"
        },
        "dnsName": {
          "type": "string"
        },
        "endpointServiceName": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "logs": {
          "$ref": "#/definitions/o11y.ClusterLog"
        },
        "metrics": {
          "$ref": "#/definitions/o11y.ClusterMetrics"
        },
        "note": {
          "type": "string"
        },
        "projectID": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "ruleTemplateID": {
          "type": "string"
        },
        "share_mode": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tenantID": {
          "type": "string"
        },
        "vendor": {
          "type": "string"
        }
      }
    },
    "o11y.ClusterAlert": {
      "type": "object",
      "properties": {
        "ruleTemplate": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "o11y.ClusterLog": {
      "type": "object",
      "properties": {
        "dataRetention": {
          "type": "integer"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "o11y.ClusterMetrics": {
      "type": "object",
      "properties": {
        "dataRetention": {
          "type": "integer"
        },
        "queryEndpoint": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "o11y.CreateClusterRequest": {
      "type": "object",
      "required": ["orgID", "region", "vendor"],
      "properties": {
        "agentAccessARN": {
          "type": "string"
        },
        "agentManagerARN": {
          "type": "string"
        },
        "applicationID": {
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "orgID": {
          "type": "string"
        },
        "projectID": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "ruleTemplateID": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "vendor": {
          "type": "string"
        }
      }
    },
    "o11y.CreateClusterResponse": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer"
        },
        "data": {
          "$ref": "#/definitions/o11y.Cluster"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "o11y.DeleteClusterRequest": {
      "type": "object",
      "required": ["orgID", "region", "vendor"],
      "properties": {
        "orgID": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "vendor": {
          "type": "string"
        }
      }
    },
    "o11y.DeleteClusterResponse": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer"
        },
        "data": {
          "$ref": "#/definitions/o11y.Cluster"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "o11y.GetClusterResponse": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer"
        },
        "data": {
          "$ref": "#/definitions/o11y.Cluster"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "o11y.ListClustersResponse": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer"
        },
        "data": {
          "$ref": "#/definitions/o11y.ListClustersResponseData"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "o11y.ListClustersResponseData": {
      "type": "object",
      "properties": {
        "clusters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/o11y.Cluster"
          }
        }
      }
    },
    "operation.ActionMetadata": {
      "type": "object",
      "properties": {
        "allow_anyone_apply": {
          "description": "If true, anyone can apply this action after approval.",
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/operation.ActionType"
        }
      }
    },
    "operation.ActionStartPolicy": {
      "type": "string",
      "enum": ["manual", "immediate", "schedule"],
      "x-enum-varnames": [
        "ActionStartPolicyManual",
        "ActionStartPolicyImmediate",
        "ActionStartPolicySchedule"
      ]
    },
    "operation.ActionStatus": {
      "type": "string",
      "enum": [
        "created",
        "running",
        "succeeded",
        "failed",
        "unknown",
        "skipped",
        "canceled"
      ],
      "x-enum-varnames": [
        "ActionStatusCreated",
        "ActionStatusRunning",
        "ActionStatusSucceeded",
        "ActionStatusFailed",
        "ActionStatusUnknown",
        "ActionStatusSkipped",
        "ActionStatusCanceled"
      ]
    },
    "operation.ActionType": {
      "type": "string",
      "enum": ["auto", "manual"],
      "x-enum-varnames": ["ActionTypeAuto", "ActionTypeManual"]
    },
    "operation.CreateInstanceAction": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "start_policy": {
          "$ref": "#/definitions/operation.ActionStartPolicy"
        },
        "start_schedule_at": {
          "type": "integer"
        }
      }
    },
    "operation.CreateInstanceReq": {
      "type": "object",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/operation.CreateInstanceAction"
          }
        },
        "execution_window": {
          "$ref": "#/definitions/cluster.CreateOpsExecutionWindowReq"
        },
        "is_draft": {
          "type": "boolean"
        },
        "operation": {
          "type": "string"
        },
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "reason": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/operation.OperationTarget"
        }
      }
    },
    "operation.CreateInstanceResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "operation.FinishInstanceActionReq": {
      "type": "object",
      "properties": {
        "output": {
          "type": "string"
        },
        "result": {
          "$ref": "#/definitions/operation.ActionStatus"
        }
      }
    },
    "operation.GetActionResp": {
      "type": "object",
      "properties": {
        "action": {
          "$ref": "#/definitions/operation.ActionMetadata"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "operation.GetInstanceResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance": {
          "$ref": "#/definitions/operation.Instance"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "operation.GetOperationResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "operation": {
          "$ref": "#/definitions/operation.Operation"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "operation.Instance": {
      "type": "object",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/operation.InstanceAction"
          }
        },
        "applicant": {
          "description": "Applicant is the user email who create the instance.",
          "type": "string"
        },
        "approval_id": {
          "type": "integer"
        },
        "closed_at": {
          "type": "integer"
        },
        "created_at": {
          "type": "integer"
        },
        "execution_window": {
          "description": "only set in get/list API",
          "allOf": [
            {
              "$ref": "#/definitions/maintenance.OpsExecutionWindow"
            }
          ]
        },
        "execution_window_id": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "operation": {
          "type": "string"
        },
        "operator_entity": {
          "description": "OperatorEntity is the real operation entity who create the instance.",
          "type": "string"
        },
        "outputs": {
          "description": "Outputs is a map used to store some contexts or results for actions.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "params": {
          "description": "Params is a map used to provide parameters for actions.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "phase": {
          "description": "status",
          "allOf": [
            {
              "$ref": "#/definitions/operation.InstancePhase"
            }
          ]
        },
        "reason": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/operation.OperationTarget"
        }
      }
    },
    "operation.InstanceAction": {
      "type": "object",
      "properties": {
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "order": {
          "type": "integer"
        },
        "output": {
          "type": "string"
        },
        "start_policy": {
          "$ref": "#/definitions/operation.ActionStartPolicy"
        },
        "start_schedule_at": {
          "description": "schedule time if start policy is `schedule`",
          "type": "integer"
        },
        "started_at": {
          "type": "integer"
        },
        "status": {
          "$ref": "#/definitions/operation.ActionStatus"
        },
        "type": {
          "$ref": "#/definitions/operation.ActionType"
        }
      }
    },
    "operation.InstancePhase": {
      "type": "string",
      "enum": [
        "draft",
        "created",
        "approving",
        "withdrawn",
        "pending",
        "running",
        "succeeded",
        "failed",
        "canceled"
      ],
      "x-enum-varnames": [
        "InstancePhaseDraft",
        "InstancePhaseCreated",
        "InstancePhaseApproving",
        "InstancePhaseWithdrawn",
        "InstancePhasePending",
        "InstancePhaseRunning",
        "InstancePhaseSucceeded",
        "InstancePhaseFailed",
        "InstancePhaseCanceled"
      ]
    },
    "operation.ListActionResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/operation.ActionMetadata"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "operation.ListInstanceResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/operation.Instance"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "operation.ListOperationCategoryResp": {
      "type": "object",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "operation.ListOperationResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/operation.Operation"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "operation.Operation": {
      "type": "object",
      "properties": {
        "actions": {
          "description": "Actions is actions be executed in an operation.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/operation.OperationAction"
          }
        },
        "alias": {
          "description": "Alias is the shown name of an operation when creating.",
          "type": "string"
        },
        "approval": {
          "description": "Approval is the approval template of the operation.\n\nNOTE: The template is injected with format `operation/\u003cName\u003e` to avoid",
          "allOf": [
            {
              "$ref": "#/definitions/entity.Template"
            }
          ]
        },
        "approval_tips": {
          "description": "ApprovalTips is the text shown on approval page.",
          "type": "string"
        },
        "categories": {
          "description": "Categories is the category of an operation.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "description": {
          "description": "Description is the description of an operation.",
          "type": "string"
        },
        "internal": {
          "description": "Internal means this operation is internal and only created by system.\nIt will not be shown on UI when internal is true.",
          "type": "boolean"
        },
        "name": {
          "description": "Name is the unique identifier of an operation.",
          "type": "string"
        },
        "params": {
          "description": "Params is params of an operation, it will be used in actions.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/operation.ParamDefine"
          }
        },
        "runtime_data": {
          "description": "RuntimeData is injected by backend at read time only.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "target": {
          "description": "Target is the target of an operation.",
          "allOf": [
            {
              "$ref": "#/definitions/operation.OperationTarget"
            }
          ]
        }
      }
    },
    "operation.OperationAction": {
      "type": "object",
      "properties": {
        "name": {
          "description": "Name is the action name.",
          "type": "string"
        },
        "optional": {
          "description": "Optional means this action is optional.",
          "type": "boolean"
        },
        "prefer_schedule_hour": {
          "description": "PreferScheduleHour is the default schedule hour, and the schedule time is `now()+hour` when shown on UI.",
          "type": "integer"
        },
        "prefer_start_policy": {
          "description": "PreferStartPolicy is the default start policy when shown on UI.",
          "allOf": [
            {
              "$ref": "#/definitions/operation.ActionStartPolicy"
            }
          ]
        }
      }
    },
    "operation.OperationTarget": {
      "type": "string",
      "enum": [
        "cluster",
        "tenant",
        "project",
        "user",
        "region",
        "resource_pool",
        "undefined"
      ],
      "x-enum-varnames": [
        "OperationTargetCluster",
        "OperationTargetTenant",
        "OperationTargetProject",
        "OperationTargetUser",
        "OperationTargetRegion",
        "OperationTargetResourcePool",
        "OperationTargetUndefined"
      ]
    },
    "operation.ParamDefine": {
      "type": "object",
      "properties": {
        "const": {
          "description": "Const is the const value of the param.",
          "type": "string"
        },
        "default": {
          "description": "Default is the default value of the param.",
          "type": "string"
        },
        "desc": {
          "description": "Description is the description of the param.",
          "type": "string"
        },
        "enum": {
          "description": "Enum is the enum value of the param.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "multi_enum": {
          "description": "MultiEnum is the multi enum value of the param.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "optional": {
          "description": "Optional is whether this param is optional.",
          "type": "boolean"
        },
        "type": {
          "$ref": "#/definitions/operation.ParamType"
        }
      }
    },
    "operation.ParamType": {
      "type": "string",
      "enum": ["string", "int", "map"],
      "x-enum-varnames": ["ParamTypeString", "ParamTypeInt", "ParamTypeMap"]
    },
    "operation.PreviewInstanceResp": {
      "type": "object",
      "properties": {
        "advisories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github_com_tidbcloud_devops_api_operation.Advisory"
          }
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "operation.UpdateInstanceReq": {
      "type": "object",
      "properties": {
        "actions": {
          "description": "actions to update, if empty",
          "type": "array",
          "items": {
            "$ref": "#/definitions/operation.CreateInstanceAction"
          }
        },
        "params": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "premiumupgrade.CheckTargetConflictsReq": {
      "type": "object",
      "required": ["cluster_ids"],
      "properties": {
        "cluster_ids": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string"
          }
        }
      }
    },
    "premiumupgrade.CheckTargetConflictsResp": {
      "type": "object",
      "properties": {
        "conflicts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/api.TargetConflict"
          }
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "premiumupgrade.CreatePlanReq": {
      "type": "object",
      "required": [
        "cluster_ids",
        "desired_version",
        "expected_manifest_hash",
        "name",
        "reason",
        "scope"
      ],
      "properties": {
        "cluster_ids": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string"
          }
        },
        "component_image_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/api.ComponentImageTag"
          }
        },
        "desired_version": {
          "type": "string"
        },
        "execution_mode": {
          "$ref": "#/definitions/premiumupgrade.ExecutionMode"
        },
        "expected_manifest_hash": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "scope": {
          "$ref": "#/definitions/api.UpgradeScope"
        }
      }
    },
    "premiumupgrade.CreatePlanResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "plan": {
          "$ref": "#/definitions/premiumupgrade.UpgradePlan"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "premiumupgrade.ExecutionMode": {
      "type": "string",
      "enum": ["orchestrated", "step_by_step"],
      "x-enum-varnames": [
        "ExecutionModeOrchestrated",
        "ExecutionModeStepByStep"
      ]
    },
    "premiumupgrade.GetPlanResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "plan": {
          "$ref": "#/definitions/premiumupgrade.UpgradePlan"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "premiumupgrade.ListComponentPoliciesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/api.ComponentPolicy"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "premiumupgrade.ListPlansResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/premiumupgrade.UpgradePlan"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "premiumupgrade.PlanStatus": {
      "type": "string",
      "enum": [
        "approval_pending_create",
        "approval_creating",
        "approval_reconcile_required",
        "pending_approval",
        "approved",
        "running",
        "cancelling",
        "completed",
        "partial_failed",
        "failed",
        "rejected",
        "cancelled"
      ],
      "x-enum-varnames": [
        "PlanStatusApprovalPendingCreate",
        "PlanStatusApprovalCreating",
        "PlanStatusApprovalReconcileRequired",
        "PlanStatusPendingApproval",
        "PlanStatusApproved",
        "PlanStatusRunning",
        "PlanStatusCancelling",
        "PlanStatusCompleted",
        "PlanStatusPartialFailed",
        "PlanStatusFailed",
        "PlanStatusRejected",
        "PlanStatusCancelled"
      ]
    },
    "premiumupgrade.PreviewPlanReq": {
      "type": "object",
      "required": ["cluster_ids", "desired_version", "scope"],
      "properties": {
        "cluster_ids": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string"
          }
        },
        "component_image_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/api.ComponentImageTag"
          }
        },
        "desired_version": {
          "type": "string"
        },
        "execution_mode": {
          "$ref": "#/definitions/premiumupgrade.ExecutionMode"
        },
        "scope": {
          "$ref": "#/definitions/api.UpgradeScope"
        }
      }
    },
    "premiumupgrade.PreviewPlanResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "preview": {
          "$ref": "#/definitions/api.PreviewPlanResult"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "premiumupgrade.ScopeMode": {
      "type": "string",
      "enum": ["selected", "all_present"],
      "x-enum-varnames": ["ScopeModeSelected", "ScopeModeAllPresent"]
    },
    "premiumupgrade.StepStatus": {
      "type": "string",
      "enum": [
        "pending",
        "preparing",
        "waiting_conflict",
        "waiting_manual_apply",
        "applying",
        "succeeded",
        "failed",
        "skipped",
        "cancelled"
      ],
      "x-enum-varnames": [
        "StepStatusPending",
        "StepStatusPreparing",
        "StepStatusWaitingConflict",
        "StepStatusWaitingManualApply",
        "StepStatusApplying",
        "StepStatusSucceeded",
        "StepStatusFailed",
        "StepStatusSkipped",
        "StepStatusCancelled"
      ]
    },
    "premiumupgrade.TargetStatus": {
      "type": "string",
      "enum": [
        "pending",
        "running",
        "waiting_conflict",
        "completed",
        "failed",
        "cancelled"
      ],
      "x-enum-varnames": [
        "TargetStatusPending",
        "TargetStatusRunning",
        "TargetStatusWaitingConflict",
        "TargetStatusCompleted",
        "TargetStatusFailed",
        "TargetStatusCancelled"
      ]
    },
    "premiumupgrade.UpgradePlan": {
      "type": "object",
      "properties": {
        "applicant": {
          "type": "string"
        },
        "approval_id": {
          "type": "integer"
        },
        "approval_manifest": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "approval_status": {
          "$ref": "#/definitions/entity.ApprovalStatus"
        },
        "cancel_requested_at": {
          "type": "string"
        },
        "component_order_revision": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "desired_version": {
          "type": "string"
        },
        "execution_mode": {
          "$ref": "#/definitions/premiumupgrade.ExecutionMode"
        },
        "finished_at": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "idempotency_key": {
          "type": "string"
        },
        "last_error": {
          "type": "string"
        },
        "manifest_hash": {
          "type": "string"
        },
        "max_parallel_targets": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "operator_entity": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "requested_cluster_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "requested_components": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "scope_mode": {
          "$ref": "#/definitions/premiumupgrade.ScopeMode"
        },
        "started_at": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/premiumupgrade.PlanStatus"
        },
        "targets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/premiumupgrade.UpgradeTarget"
          }
        },
        "updated_at": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "premiumupgrade.UpgradeStep": {
      "type": "object",
      "properties": {
        "apply_deadline_at": {
          "type": "string"
        },
        "apply_group": {
          "type": "string"
        },
        "apply_mode": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "apply_strategy": {
          "type": "string"
        },
        "attempt_count": {
          "type": "integer"
        },
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/premiumupgrade.UpgradeStepComponent"
          }
        },
        "configuration_change_id": {
          "type": "integer"
        },
        "created_at": {
          "type": "string"
        },
        "finished_at": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "last_error_code": {
          "type": "string"
        },
        "last_error_message": {
          "type": "string"
        },
        "next_retry_at": {
          "type": "string"
        },
        "plan_id": {
          "type": "integer"
        },
        "sequence": {
          "type": "integer"
        },
        "started_at": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/premiumupgrade.StepStatus"
        },
        "status_reason": {
          "type": "string"
        },
        "target_id": {
          "type": "integer"
        },
        "updated_at": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "premiumupgrade.UpgradeStepComponent": {
      "type": "object",
      "properties": {
        "component": {
          "type": "string"
        },
        "from_image_tag": {
          "type": "string"
        },
        "from_version": {
          "type": "string"
        },
        "to_image_tag": {
          "type": "string"
        },
        "to_version": {
          "type": "string"
        }
      }
    },
    "premiumupgrade.UpgradeTarget": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string"
        },
        "cluster_name": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/cloudconfig.ClusterType"
        },
        "created_at": {
          "type": "string"
        },
        "finished_at": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "last_error": {
          "type": "string"
        },
        "logical_region": {
          "type": "string"
        },
        "plan_id": {
          "type": "integer"
        },
        "shared_pool_id": {
          "type": "string"
        },
        "source_cluster_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "started_at": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/premiumupgrade.TargetStatus"
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/premiumupgrade.UpgradeStep"
          }
        },
        "tenant_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "updated_at": {
          "type": "string"
        }
      }
    },
    "privilege.ApprovalPrivilegeContent": {
      "type": "object",
      "properties": {
        "scopes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/privilege.ApprovalPrivilegeScope"
          }
        }
      }
    },
    "privilege.ApprovalPrivilegeScope": {
      "type": "string",
      "enum": ["jump-service"],
      "x-enum-varnames": ["PrivilegeApprovalScopeJumpService"]
    },
    "privilege.GetPrivilegeResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "privilege": {
          "$ref": "#/definitions/privilege.Privilege"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "privilege.ListPrivilegesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/privilege.Privilege"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "privilege.Privilege": {
      "type": "object",
      "properties": {
        "applicant": {
          "type": "string"
        },
        "approval_id": {
          "type": "integer"
        },
        "bindings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/privilege.PrivilegeBinding"
          }
        },
        "closed_at": {
          "type": "integer"
        },
        "content": {
          "$ref": "#/definitions/privilege.PrivilegeContent"
        },
        "created_at": {
          "type": "integer"
        },
        "expired_at": {
          "type": "integer"
        },
        "id": {
          "type": "integer"
        },
        "phase": {
          "$ref": "#/definitions/privilege.PrivilegePhase"
        },
        "reason": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/privilege.PrivilegeType"
        }
      }
    },
    "privilege.PrivilegeBinding": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "user": {
          "description": "email",
          "type": "string"
        }
      }
    },
    "privilege.PrivilegeContent": {
      "type": "object",
      "properties": {
        "approval_scope": {
          "$ref": "#/definitions/privilege.ApprovalPrivilegeContent"
        }
      }
    },
    "privilege.PrivilegePhase": {
      "type": "string",
      "enum": ["created", "approving", "active", "revoked", "unapproved"],
      "x-enum-varnames": [
        "PrivilegePhaseCreated",
        "PrivilegePhaseApproving",
        "PrivilegePhaseActive",
        "PrivilegePhaseRevoked",
        "PrivilegePhaseUnapproved"
      ]
    },
    "privilege.PrivilegeType": {
      "type": "string",
      "enum": ["approval"],
      "x-enum-varnames": ["PrivilegeTypeApproval"]
    },
    "privilege.RequestApprovalPrivilegeReq": {
      "type": "object",
      "properties": {
        "scopes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/privilege.ApprovalPrivilegeScope"
          }
        }
      }
    },
    "privilege.RequestPrivilegeReq": {
      "type": "object",
      "properties": {
        "approval": {
          "$ref": "#/definitions/privilege.RequestApprovalPrivilegeReq"
        },
        "binding_users": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "expired_at": {
          "type": "integer"
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "privilege.RequestPrivilegeResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "privilege_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "project.AddSecondaryCIDRReq": {
      "type": "object",
      "properties": {
        "provider": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "secondary_cidr": {
          "type": "string"
        }
      }
    },
    "project.CommonResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "description": "the operation instance id",
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "project.ListVPCsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/project.VPC"
          }
        }
      }
    },
    "project.VPC": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "org_id": {
          "type": "integer"
        },
        "project_id": {
          "type": "integer"
        },
        "region": {
          "type": "string"
        },
        "secondary_cidrs": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tidb_cloud_cidr_block": {
          "type": "string"
        }
      }
    },
    "region.DefaultProviderIdentity": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "identity": {
          "type": "string"
        },
        "service_plan": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "region.GetRegionResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "region": {
          "$ref": "#/definitions/region.Region"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "region.ListRegionsResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "regions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/region.Region"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "region.Region": {
      "type": "object",
      "properties": {
        "default_provider_identities": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/region.DefaultProviderIdentity"
          }
        },
        "deploy_type": {
          "type": "string"
        },
        "region": {
          "$ref": "#/definitions/region.RegionSpec"
        },
        "region_provider_identities": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/region.RegionProviderIdentity"
          }
        }
      }
    },
    "region.RegionOpsAuditLogSetting": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "log_location": {
          "$ref": "#/definitions/region.RegionOpsAuditLogSettingLogLocation"
        },
        "log_rotation": {
          "$ref": "#/definitions/region.RegionOpsAuditLogSettingLogRotation"
        }
      }
    },
    "region.RegionOpsAuditLogSettingLogLocation": {
      "type": "object",
      "properties": {
        "account_id": {
          "type": "string"
        },
        "bucket_uri": {
          "type": "string"
        },
        "external_id": {
          "type": "string"
        },
        "role_arn": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "region.RegionOpsAuditLogSettingLogRotation": {
      "type": "object",
      "properties": {
        "file_size_limit_in_mb": {
          "type": "integer"
        },
        "rotation_interval_in_min": {
          "type": "integer"
        }
      }
    },
    "region.RegionProviderIdentity": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "identity": {
          "type": "string"
        },
        "is_default": {
          "type": "boolean"
        }
      }
    },
    "region.RegionSpec": {
      "type": "object",
      "properties": {
        "area": {
          "type": "string"
        },
        "cloud_provider_id": {
          "type": "string"
        },
        "country_code": {
          "type": "string"
        },
        "default_backup_time": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "is_public": {
          "type": "boolean"
        },
        "logical_name": {
          "type": "string"
        },
        "opened_tenant_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ops_audit_log_setting": {
          "$ref": "#/definitions/region.RegionOpsAuditLogSetting"
        },
        "region_white_lists": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/region.RegionWhiteList"
          }
        },
        "service_address": {
          "type": "string"
        },
        "service_plan": {
          "type": "string"
        },
        "shared_bucket_url": {
          "type": "string"
        },
        "sort_priority": {
          "type": "integer"
        },
        "state": {
          "type": "string"
        }
      }
    },
    "region.RegionWhiteList": {
      "type": "object",
      "properties": {
        "is_public": {
          "type": "boolean"
        },
        "opened_tenant_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "service_plan": {
          "type": "string"
        }
      }
    },
    "region.RegisterRegionProviderIdentityRequest": {
      "type": "object",
      "required": ["identity", "region_logical_name"],
      "properties": {
        "identity": {
          "type": "string",
          "maxLength": 255
        },
        "is_default": {
          "type": "boolean"
        },
        "region_logical_name": {
          "type": "string"
        }
      }
    },
    "region.RegisterRegionProviderIdentityResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "region_provider_identity": {
          "$ref": "#/definitions/region.RegionProviderIdentity"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "region.RegisterRegionRequest": {
      "type": "object",
      "required": [
        "cloud_provider",
        "deploy_type",
        "display_name",
        "logical_region_name",
        "region_name",
        "region_state",
        "service_address",
        "service_plan"
      ],
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "default_backup_time": {
          "type": "string"
        },
        "deploy_type": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "is_public": {
          "type": "boolean"
        },
        "logical_region_name": {
          "type": "string"
        },
        "opened_tenant_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "reason": {
          "type": "string"
        },
        "region_name": {
          "type": "string"
        },
        "region_state": {
          "type": "string"
        },
        "service_address": {
          "type": "string"
        },
        "service_plan": {
          "type": "string"
        }
      }
    },
    "region.RegisterRegionResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "region.UpdateRegionRequest": {
      "type": "object",
      "properties": {
        "changed": {
          "type": "string"
        },
        "cloud_provider": {
          "type": "string"
        },
        "default_provider_identities": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/region.DefaultProviderIdentity"
          }
        },
        "deploy_type": {
          "type": "string"
        },
        "is_public": {
          "type": "boolean"
        },
        "logical_name": {
          "type": "string"
        },
        "opened_tenant_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "reason": {
          "type": "string"
        },
        "region_state": {
          "type": "string"
        },
        "region_white_lists": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/region.RegionWhiteList"
          }
        },
        "service_address": {
          "type": "string"
        },
        "service_plan": {
          "type": "string"
        }
      }
    },
    "region.UpdateRegionResponse": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "release.Change": {
      "type": "object",
      "properties": {
        "applicant": {
          "$ref": "#/definitions/userv1.User"
        },
        "applicant_email": {
          "type": "string"
        },
        "application": {
          "$ref": "#/definitions/application.Application"
        },
        "application_id": {
          "type": "string"
        },
        "approval_id": {
          "description": "the used approval id",
          "type": "integer"
        },
        "change_item_names": {
          "description": "release ticket names",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "change_items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.ReleaseTicket"
          }
        },
        "closed_at": {
          "type": "string"
        },
        "created_at": {
          "description": "readonly",
          "type": "string"
        },
        "deployments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.ChangeDeployment"
          }
        },
        "detail": {
          "$ref": "#/definitions/release.ChangeDetail"
        },
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "notification": {
          "$ref": "#/definitions/release.ChangeNotification"
        },
        "prev_approval_ids": {
          "description": "the previous approval ids",
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "release": {
          "$ref": "#/definitions/release.Release"
        },
        "release_id": {
          "description": "release id",
          "type": "integer"
        },
        "result": {
          "$ref": "#/definitions/release.ChangeResult"
        },
        "risk_level": {
          "$ref": "#/definitions/release.RiskLevel"
        },
        "status": {
          "$ref": "#/definitions/release.ChangeStatus"
        },
        "status_reason": {
          "description": "the reason to describe why the status changed or pending",
          "type": "string"
        },
        "tier": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.ChangeTier"
          }
        },
        "type": {
          "$ref": "#/definitions/release.ChangeType"
        },
        "window_end_at": {
          "description": "timestamp, zero means unlimited",
          "type": "integer"
        },
        "window_start_at": {
          "description": "timestamp, zero means unlimited",
          "type": "integer"
        }
      }
    },
    "release.ChangeDeployArgoCD": {
      "type": "object",
      "properties": {
        "deploy_prs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.GithubPR"
          }
        }
      }
    },
    "release.ChangeDeployEEAPI": {
      "type": "object",
      "properties": {
        "ee_api_build_ng_image": {
          "$ref": "#/definitions/eecli.BumpNgTagRequest"
        }
      }
    },
    "release.ChangeDeployInfo": {
      "type": "object",
      "properties": {
        "argocd": {
          "$ref": "#/definitions/release.ChangeDeployArgoCD"
        },
        "description": {
          "description": "save as JSON in DB, so all fields MUST be set json tag.",
          "type": "string"
        },
        "ee_api": {
          "$ref": "#/definitions/release.ChangeDeployEEAPI"
        },
        "manual": {
          "$ref": "#/definitions/release.ChangeDeployManual"
        }
      }
    },
    "release.ChangeDeployManual": {
      "type": "object",
      "properties": {
        "description": {
          "description": "Deprecated, use ChangeDeployInfo.Description instead.",
          "type": "string"
        }
      }
    },
    "release.ChangeDeployMethod": {
      "type": "string",
      "enum": ["argocd", "manual", "ee_api"],
      "x-enum-varnames": [
        "ChangeDeployMethodArgoCD",
        "ChangeDeployMethodManual",
        "ChangeDeployMethodEEAPI"
      ]
    },
    "release.ChangeDeployStatus": {
      "type": "string",
      "enum": ["created", "deployed", "verified"],
      "x-enum-varnames": [
        "ChangeDeployStatusCreated",
        "ChangeDeployStatusDeployed",
        "ChangeDeployStatusVerified"
      ]
    },
    "release.ChangeDeployment": {
      "type": "object",
      "properties": {
        "deployed_at": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "info": {
          "$ref": "#/definitions/release.ChangeDeployInfo"
        },
        "method": {
          "$ref": "#/definitions/release.ChangeDeployMethod"
        },
        "note": {
          "type": "string"
        },
        "order": {
          "type": "integer"
        },
        "regions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.RegionName"
          }
        },
        "status": {
          "$ref": "#/definitions/release.ChangeDeployStatus"
        }
      }
    },
    "release.ChangeDetail": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "need_outage": {
          "type": "boolean"
        },
        "note": {
          "type": "string"
        },
        "rollback_plan": {
          "type": "string"
        },
        "staging_test_report": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        }
      }
    },
    "release.ChangeNotification": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "lark_topic_created_at": {
          "type": "string"
        },
        "lark_topic_id": {
          "type": "string"
        },
        "notified_to_close_at": {
          "type": "string"
        }
      }
    },
    "release.ChangeResult": {
      "type": "string",
      "enum": [
        "cancel",
        "successful",
        "failed",
        "failed_partially",
        "rollback"
      ],
      "x-enum-varnames": [
        "ChangeResultCancel",
        "ChangeResultSuccessful",
        "ChangeResultFailed",
        "ChangeResultFailedPartially",
        "ChangeResultRollback"
      ]
    },
    "release.ChangeStatus": {
      "type": "string",
      "enum": [
        "draft",
        "created",
        "approving",
        "wait_for_deploy",
        "in_progress",
        "observing",
        "closed",
        "withdrawn"
      ],
      "x-enum-varnames": [
        "ChangeStatusDraft",
        "ChangeStatusCreated",
        "ChangeStatusApproving",
        "ChangeStatusWaitForDeploy",
        "ChangeStatusInProgress",
        "ChangeStatusObserving",
        "ChangeStatusClosed",
        "ChangeStatusWithdrawn"
      ]
    },
    "release.ChangeTier": {
      "type": "string",
      "enum": ["dedicated", "serverless", "premium"],
      "x-enum-varnames": [
        "ChangeTierDedicated",
        "ChangeTierServerless",
        "ChangeTierPremium"
      ]
    },
    "release.ChangeType": {
      "type": "string",
      "enum": ["sprint", "hotfix"],
      "x-enum-varnames": ["ChangeTypeSprint", "ChangeTypeHotfix"]
    },
    "release.CloseChangeReq": {
      "type": "object",
      "required": ["result", "summary"],
      "properties": {
        "result": {
          "$ref": "#/definitions/release.ChangeResult"
        },
        "summary": {
          "type": "string"
        }
      }
    },
    "release.CreateChangeReq": {
      "type": "object",
      "required": [
        "application_name",
        "name",
        "release_id",
        "risk_level",
        "tier",
        "window_end_at",
        "window_start_at"
      ],
      "properties": {
        "applicant": {
          "type": "string"
        },
        "application_name": {
          "type": "string"
        },
        "change_item_names": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "deployments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.Deployment"
          }
        },
        "is_draft": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "need_outage": {
          "type": "boolean"
        },
        "note": {
          "type": "string"
        },
        "release_id": {
          "type": "integer"
        },
        "risk_level": {
          "$ref": "#/definitions/release.RiskLevel"
        },
        "rollback_plan": {
          "type": "string"
        },
        "staging_test_report": {
          "type": "string"
        },
        "tier": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.ChangeTier"
          }
        },
        "type": {
          "$ref": "#/definitions/release.ChangeType"
        },
        "window_end_at": {
          "type": "integer"
        },
        "window_start_at": {
          "type": "integer"
        }
      }
    },
    "release.CreateChangeResp": {
      "type": "object",
      "properties": {
        "change_id": {
          "type": "integer"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "release.DefaultChangeResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        },
        "window_end_at": {
          "type": "integer"
        },
        "window_start_at": {
          "type": "integer"
        }
      }
    },
    "release.Deployment": {
      "type": "object",
      "required": ["deploy_method", "order", "regions"],
      "properties": {
        "branch": {
          "type": "string"
        },
        "commit": {
          "type": "string"
        },
        "deploy_cd_link": {
          "type": "string"
        },
        "deploy_description": {
          "type": "string"
        },
        "deploy_method": {
          "$ref": "#/definitions/release.ChangeDeployMethod"
        },
        "order": {
          "type": "integer"
        },
        "regions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.RegionName"
          }
        },
        "repo": {
          "type": "string"
        }
      }
    },
    "release.ExecuteDeploymentReq": {
      "type": "object",
      "properties": {
        "force": {
          "type": "boolean"
        }
      }
    },
    "release.GetChangeResp": {
      "type": "object",
      "properties": {
        "change": {
          "$ref": "#/definitions/release.Change"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "release_tickets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.ReleaseTicket"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "release.GetReleaseResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "release": {
          "$ref": "#/definitions/release.Release"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "release.GetTicketResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "ticket": {
          "$ref": "#/definitions/release.ReleaseTicket"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "release.GithubPR": {
      "type": "object",
      "properties": {
        "link": {
          "type": "string"
        },
        "pr_number": {
          "type": "integer"
        },
        "repo_name": {
          "type": "string"
        },
        "repo_owner": {
          "type": "string"
        }
      }
    },
    "release.IsDeploymentReadyResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "is_ready": {
          "type": "boolean"
        },
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "release.ListChangeResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.Change"
          }
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "release.ListReleaseResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.Release"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "release.ListTicketsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.ReleaseTicket"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "release.RegionName": {
      "type": "string",
      "enum": ["us-west1", "us-west-2"],
      "x-enum-varnames": ["RegionNameGCPUsWest1", "RegionNameAWSUsWest2"]
    },
    "release.Release": {
      "type": "object",
      "properties": {
        "closed_at": {
          "type": "string"
        },
        "id": {
          "description": "release id in repo",
          "type": "integer"
        },
        "name": {
          "description": "ex: release-20230501",
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/release.ReleaseStatus"
        },
        "tickets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.ReleaseTicket"
          }
        },
        "type": {
          "$ref": "#/definitions/release.ReleaseType"
        },
        "window_end_at": {
          "type": "string"
        },
        "window_start_at": {
          "type": "string"
        }
      }
    },
    "release.ReleaseStatus": {
      "type": "string",
      "enum": ["before_release", "open", "finished"],
      "x-enum-varnames": [
        "ReleaseStatusBeforeRelease",
        "ReleaseStatusOpen",
        "ReleaseStatusFinished"
      ]
    },
    "release.ReleaseTicket": {
      "type": "object",
      "properties": {
        "assignee_email": {
          "description": "empty string means unassigned",
          "type": "string"
        },
        "github_pr_locations": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "github_prs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/github.PullRequest"
          }
        },
        "name": {
          "type": "string"
        },
        "release_id": {
          "type": "integer"
        },
        "release_name": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/release.ReleaseTicketType"
        }
      }
    },
    "release.ReleaseTicketType": {
      "type": "string",
      "enum": ["dm"],
      "x-enum-varnames": ["ReleaseTicketTypeDM"]
    },
    "release.ReleaseType": {
      "type": "string",
      "enum": ["periodic"],
      "x-enum-varnames": ["ReleaseTypePeriodic"]
    },
    "release.RiskLevel": {
      "type": "string",
      "enum": ["low", "high"],
      "x-enum-varnames": ["RiskLevelLow", "RiskLevelHigh"]
    },
    "release.UpdateChangeReq": {
      "type": "object",
      "properties": {
        "change_item_names": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "deployments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.Deployment"
          }
        },
        "name": {
          "type": "string"
        },
        "need_outage": {
          "type": "boolean"
        },
        "note": {
          "type": "string"
        },
        "regions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.RegionName"
          }
        },
        "risk_level": {
          "$ref": "#/definitions/release.RiskLevel"
        },
        "rollback_plan": {
          "type": "string"
        },
        "staging_test_report": {
          "type": "string"
        },
        "tier": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/release.ChangeTier"
          }
        },
        "type": {
          "$ref": "#/definitions/release.ChangeType"
        },
        "window_end_at": {
          "type": "integer"
        },
        "window_start_at": {
          "type": "integer"
        }
      }
    },
    "release.UpdateTicketReq": {
      "type": "object",
      "properties": {
        "github_pr_locations": {
          "description": "ex: tidbcloud/devops#1",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "release.VerifyDeploymentReq": {
      "type": "object",
      "properties": {
        "note": {
          "type": "string"
        }
      }
    },
    "remediationticket.ApproveTicketPhaseReq": {
      "type": "object",
      "required": ["appr_id", "version"],
      "properties": {
        "accident_report_link": {
          "type": "string"
        },
        "accumulated_down_minutes": {
          "type": "integer"
        },
        "appr_id": {
          "type": "integer"
        },
        "cluster_billing": {
          "description": "Patch From Global Deal Desk",
          "type": "string"
        },
        "extra_percent": {
          "type": "string"
        },
        "monthly_uptime_percentage": {
          "type": "string"
        },
        "predefined_percent": {
          "type": "string"
        },
        "reason": {
          "description": "Will be deprecated",
          "allOf": [
            {
              "$ref": "#/definitions/entity.RemediationTicketReason"
            }
          ]
        },
        "report_link": {
          "type": "string"
        },
        "root_cause_from_gs": {
          "description": "Patch From Region TSE Leader",
          "type": "string"
        },
        "root_cause_from_rdg": {
          "description": "Patch From RDG SLA Owner",
          "type": "string"
        },
        "total_compensation": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "remediationticket.CreateRemediationTicketReq": {
      "type": "object",
      "required": [
        "cluster_id",
        "cluster_type",
        "incident_id",
        "month",
        "tenant_id"
      ],
      "properties": {
        "biz_region": {
          "$ref": "#/definitions/tenant.TenantRegion"
        },
        "cluster_id": {
          "type": "string"
        },
        "cluster_type": {
          "$ref": "#/definitions/entity.RemediationTicketClusterType"
        },
        "customer": {
          "type": "string"
        },
        "incident_id": {
          "type": "integer"
        },
        "month": {
          "description": "should be in the format \"2006/1\"",
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "remediationticket.CreateRemediationTicketResp": {
      "type": "object",
      "properties": {
        "ticket_id": {
          "type": "integer"
        }
      }
    },
    "remediationticket.GenerateFinalDocReq": {
      "type": "object",
      "properties": {
        "forced_regenerate": {
          "type": "boolean"
        }
      }
    },
    "remediationticket.GetApprovalFlowResp": {
      "type": "object",
      "required": ["flow"],
      "properties": {
        "flow": {
          "$ref": "#/definitions/entity.RemediationApprovalFlow"
        }
      }
    },
    "remediationticket.GetProgressResp": {
      "type": "object",
      "required": ["current_phase", "phases"],
      "properties": {
        "current_phase": {
          "$ref": "#/definitions/entity.RemediationTicketPhase"
        },
        "phases": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.RemediationTicketPhaseInfo"
          }
        }
      }
    },
    "remediationticket.GetRemediationTicketResp": {
      "type": "object",
      "required": ["ticket"],
      "properties": {
        "ticket": {
          "$ref": "#/definitions/entity.RemediationTicket"
        }
      }
    },
    "remediationticket.GetTicketApprovalsResp": {
      "type": "object",
      "required": ["phase_approvals"],
      "properties": {
        "phase_approvals": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.RemediationTicketPhaseApproval"
          }
        }
      }
    },
    "remediationticket.ListRemediationTicketsResp": {
      "type": "object",
      "required": ["items", "total"],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.RemediationTicket"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "remediationticket.RejectTicketPhaseReq": {
      "type": "object",
      "required": ["appr_id", "version"],
      "properties": {
        "appr_id": {
          "type": "integer"
        },
        "message": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "remediationticket.SubmitTicketPhaseReq": {
      "type": "object",
      "properties": {
        "accident_report_link": {
          "type": "string"
        },
        "accumulated_down_minutes": {
          "type": "integer"
        },
        "cluster_billing": {
          "description": "Patch From Global Deal Desk",
          "type": "string"
        },
        "extra_percent": {
          "type": "string"
        },
        "monthly_uptime_percentage": {
          "type": "string"
        },
        "predefined_percent": {
          "type": "string"
        },
        "reason": {
          "description": "Will be deprecated",
          "allOf": [
            {
              "$ref": "#/definitions/entity.RemediationTicketReason"
            }
          ]
        },
        "report_link": {
          "type": "string"
        },
        "root_cause_from_gs": {
          "description": "Patch From Region TSE Leader",
          "type": "string"
        },
        "root_cause_from_rdg": {
          "description": "Patch From RDG SLA Owner",
          "type": "string"
        },
        "total_compensation": {
          "type": "string"
        },
        "version": {
          "type": "integer"
        }
      }
    },
    "tenant.AddCreditsInternalReq": {
      "type": "object",
      "required": [
        "expired_date",
        "note",
        "start_date",
        "total_credits",
        "unit_filters",
        "usage"
      ],
      "properties": {
        "discount_enabled": {
          "type": "boolean"
        },
        "expired_date": {
          "type": "string"
        },
        "foreign_id": {
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "start_date": {
          "type": "string"
        },
        "total_credits": {
          "type": "string"
        },
        "unit_filters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tenant.UnitFilterSlim"
          }
        },
        "usage": {
          "type": "string"
        }
      }
    },
    "tenant.AddCreditsReq": {
      "type": "object",
      "properties": {
        "apply_for_test": {
          "type": "boolean"
        },
        "department": {
          "type": "string"
        },
        "discount_enabled": {
          "type": "boolean"
        },
        "expired_date": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "total_credits": {
          "type": "string"
        },
        "unit_filters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tenant.UnitFilterSlim"
          }
        },
        "usage": {
          "type": "string"
        },
        "use_case": {
          "type": "string"
        }
      }
    },
    "tenant.AddImpersonateReq": {
      "type": "object",
      "required": ["expire_at", "reason", "tenant_id"],
      "properties": {
        "expire_at": {
          "type": "integer"
        },
        "reason": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "tenant.AddImpersonateResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "description": "the operation instance id",
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "tenant.AddUserToProjectReq": {
      "type": "object",
      "required": ["project_id", "reason", "tenant_id", "user_id", "user_role"],
      "properties": {
        "project_id": {
          "type": "string",
          "example": "0"
        },
        "reason": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string",
          "example": "0"
        },
        "user_email": {
          "type": "string"
        },
        "user_id": {
          "type": "string",
          "example": "0"
        },
        "user_role": {
          "type": "string"
        }
      }
    },
    "tenant.AddUserToTenantReq": {
      "type": "object",
      "required": ["reason", "tenant_id", "user_id", "user_role"],
      "properties": {
        "reason": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string",
          "example": "0"
        },
        "user_email": {
          "type": "string"
        },
        "user_id": {
          "type": "string",
          "example": "0"
        },
        "user_role": {
          "type": "string"
        }
      }
    },
    "tenant.CommonResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "description": "the operation instance id",
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "tenant.ComponentType": {
      "type": "string",
      "enum": ["tikv", "tidb", "tiflash", "pd", "tiproxy", "undefined"],
      "x-enum-varnames": [
        "ComponentTypeTikv",
        "ComponentTypeTidb",
        "ComponentTypeTiflash",
        "ComponentTypePd",
        "ComponentTypeTiproxy",
        "ComponentTypeUndefined"
      ]
    },
    "tenant.CreateReservedCapacityTemplateReq": {
      "type": "object",
      "required": ["reason", "reserved_capacity_template"],
      "properties": {
        "reason": {
          "type": "string"
        },
        "reserved_capacity_template": {
          "$ref": "#/definitions/tenant.ReservedCapacityTemplate"
        }
      }
    },
    "tenant.DeleteAccountUserReq": {
      "type": "object",
      "required": ["reason", "user_id"],
      "properties": {
        "reason": {
          "type": "string"
        },
        "user_email": {
          "type": "string"
        },
        "user_id": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "tenant.DeleteProjectReq": {
      "type": "object",
      "required": ["project_id", "reason", "tenant_id"],
      "properties": {
        "project_id": {
          "type": "string",
          "example": "0"
        },
        "reason": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "tenant.DeleteReservedCapacityTemplateReq": {
      "type": "object",
      "required": ["reason"],
      "properties": {
        "reason": {
          "type": "string"
        }
      }
    },
    "tenant.DeleteTenantReq": {
      "type": "object",
      "required": ["reason"],
      "properties": {
        "reason": {
          "type": "string"
        }
      }
    },
    "tenant.GetImpersonateResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "description": "the operation instance id",
          "type": "integer"
        },
        "tenant_id": {
          "description": "impersonating tenant id for the user",
          "type": "string",
          "example": "0"
        },
        "trace_id": {
          "type": "string"
        },
        "user": {
          "type": "string"
        }
      }
    },
    "tenant.GetProjectResp": {
      "type": "object",
      "properties": {
        "project": {
          "$ref": "#/definitions/accountcli.Project"
        }
      }
    },
    "tenant.GetReservedCapacityTemplateResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "reserved_capacity_template": {
          "$ref": "#/definitions/tenant.ReservedCapacityTemplate"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "tenant.GetTenantResp": {
      "type": "object",
      "properties": {
        "alias": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "customer_id": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "kind": {
          "$ref": "#/definitions/tenant.TenantKind"
        },
        "name": {
          "type": "string"
        },
        "plan": {
          "$ref": "#/definitions/tenant.TenantPlan"
        },
        "region": {
          "$ref": "#/definitions/tenant.TenantRegion"
        },
        "sales_owner_email": {
          "type": "string"
        },
        "segmentation": {
          "$ref": "#/definitions/tenant.TenantSegmentation"
        },
        "status": {
          "$ref": "#/definitions/tenant.TenantStatus"
        },
        "tam_name": {
          "type": "string"
        },
        "time_zone": {
          "type": "string"
        }
      }
    },
    "tenant.GetUsersResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/accountcli.User"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "tenant.ListByocRegionsResp": {
      "type": "object",
      "properties": {
        "regions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tenant.Region"
          }
        }
      }
    },
    "tenant.ListReservedCapacityTemplatesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "reserved_capacity_templates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tenant.ReservedCapacityTemplate"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "tenant.ListTenantQuotaResp": {
      "type": "object",
      "properties": {
        "tenant_quotas": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tenant.TenantQuota"
          }
        }
      }
    },
    "tenant.ListTenantResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tenant.TenantResponse"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tenant.LogLocation": {
      "type": "object",
      "properties": {
        "account_id": {
          "type": "string"
        },
        "bucket_uri": {
          "type": "string"
        },
        "external_id": {
          "type": "string"
        },
        "role_arn": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "tenant.LogRotation": {
      "type": "object",
      "properties": {
        "file_size_limit_in_mb": {
          "type": "integer"
        },
        "rotation_interval_in_min": {
          "type": "integer"
        }
      }
    },
    "tenant.OrderType": {
      "type": "string",
      "enum": ["asc", "desc"],
      "x-enum-varnames": ["OrderTypeASC", "OrderTypeDESC"]
    },
    "tenant.RecalculateBillsReq": {
      "type": "object",
      "required": ["reason"],
      "properties": {
        "credits_discount_enabled": {
          "type": "boolean"
        },
        "credits_expired_date": {
          "type": "string"
        },
        "credits_provider": {
          "type": "string"
        },
        "credits_start_date": {
          "type": "string"
        },
        "credits_total_credits": {
          "type": "string"
        },
        "credits_unit_filters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tenant.UnitFilterSlim"
          }
        },
        "overwrite_current_cost": {
          "type": "boolean"
        },
        "reason": {
          "type": "string"
        },
        "source_run_id": {
          "type": "string"
        }
      }
    },
    "tenant.RecalculateInvoiceReq": {
      "type": "object",
      "required": ["reason"],
      "properties": {
        "credits_discount_enabled": {
          "type": "boolean"
        },
        "credits_expired_date": {
          "type": "string"
        },
        "credits_provider": {
          "type": "string"
        },
        "credits_start_date": {
          "type": "string"
        },
        "credits_total_credits": {
          "type": "string"
        },
        "credits_unit_filters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tenant.UnitFilterSlim"
          }
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "tenant.Region": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "logical_name": {
          "type": "string"
        },
        "ops_audit_log_setting": {
          "$ref": "#/definitions/tenant.RegionOpsAuditLogSetting"
        },
        "service_address": {
          "type": "string"
        },
        "service_plan": {
          "type": "string"
        },
        "shared_bucket_url": {
          "type": "string"
        },
        "state": {
          "type": "string"
        }
      }
    },
    "tenant.RegionOpsAuditLogSetting": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "log_location": {
          "$ref": "#/definitions/tenant.LogLocation"
        },
        "log_rotation": {
          "$ref": "#/definitions/tenant.LogRotation"
        }
      }
    },
    "tenant.RemoveUserFromProjectReq": {
      "type": "object",
      "required": ["project_id", "reason", "tenant_id", "user_id"],
      "properties": {
        "project_id": {
          "type": "string",
          "example": "0"
        },
        "reason": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string",
          "example": "0"
        },
        "user_email": {
          "type": "string"
        },
        "user_id": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "tenant.RemoveUserFromTenantReq": {
      "type": "object",
      "required": ["reason", "tenant_id", "user_id"],
      "properties": {
        "reason": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string",
          "example": "0"
        },
        "user_email": {
          "type": "string"
        },
        "user_id": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "tenant.ReservedCapacityComponentTopology": {
      "type": "object",
      "properties": {
        "component_type": {
          "type": "string",
          "enum": [
            "TIDB",
            "TIKV",
            "PD",
            "TIPROXY",
            "TIDB_WORKER",
            "TIKV_WORKER",
            "COPROCESSOR_WORKER",
            "TIFLASH_WRITE",
            "TIFLASH_COMPUTE",
            "PD_TSO",
            "PD_SCHEDULING"
          ]
        },
        "node_quota": {
          "$ref": "#/definitions/tenant.ReservedCapacityNodeQuota"
        },
        "storages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tenant.ReservedCapacityStorageSpec"
          }
        }
      }
    },
    "tenant.ReservedCapacityFixedTopology": {
      "type": "object",
      "properties": {
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tenant.ReservedCapacityComponentTopology"
          }
        }
      }
    },
    "tenant.ReservedCapacityNodeQuota": {
      "type": "object",
      "properties": {
        "node_count": {
          "type": "integer"
        },
        "node_spec": {
          "$ref": "#/definitions/tenant.ReservedCapacityNodeSpec"
        }
      }
    },
    "tenant.ReservedCapacityNodeSpec": {
      "type": "object",
      "properties": {
        "cpu": {
          "type": "integer"
        },
        "memory_gi": {
          "type": "integer"
        }
      }
    },
    "tenant.ReservedCapacityStorageSpec": {
      "type": "object",
      "properties": {
        "iops": {
          "type": "integer"
        },
        "name": {
          "type": "string",
          "enum": ["DATA", "RAFTLOG", "SLOWLOG"]
        },
        "size_gi": {
          "type": "integer"
        },
        "throughput_mbs": {
          "type": "integer"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "tenant.ReservedCapacityTemplate": {
      "type": "object",
      "properties": {
        "create_time": {
          "type": "string"
        },
        "delete_time": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "fixed_topology": {
          "$ref": "#/definitions/tenant.ReservedCapacityFixedTopology"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "organization_id": {
          "type": "string",
          "example": "0"
        },
        "purchased_vcpu": {
          "type": "integer"
        },
        "scope": {
          "type": "string",
          "enum": ["DEFAULT", "ORG_PRIVATE"]
        },
        "status": {
          "type": "string",
          "enum": ["ACTIVE", "DEPRECATED"]
        },
        "template_code": {
          "type": "string"
        },
        "topology_summary": {
          "type": "string"
        },
        "update_time": {
          "type": "string"
        },
        "workload": {
          "$ref": "#/definitions/tenant.ReservedCapacityTemplateWorkload"
        }
      }
    },
    "tenant.ReservedCapacityTemplateOperationResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "instance_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "tenant.ReservedCapacityTemplateWorkload": {
      "type": "object",
      "properties": {
        "data_size_gib_max": {
          "type": "integer"
        },
        "data_size_gib_min": {
          "type": "integer"
        },
        "p99_response_latency_max": {
          "type": "integer"
        },
        "p99_response_latency_min": {
          "type": "integer"
        },
        "qps_max": {
          "type": "integer"
        },
        "qps_min": {
          "type": "integer"
        },
        "workload_type": {
          "type": "string",
          "enum": ["READ", "WRITE", "MIXED"]
        }
      }
    },
    "tenant.SortByType": {
      "type": "string",
      "enum": ["created_at", "timezone"],
      "x-enum-varnames": ["SortByTypeCreatedAt", "SortByTypeTimezone"]
    },
    "tenant.TenantKind": {
      "type": "string",
      "enum": ["internal", "external"],
      "x-enum-varnames": ["TenantKindInternal", "TenantKindExternal"]
    },
    "tenant.TenantPlan": {
      "type": "string",
      "enum": ["new_user", "free_trial", "poc", "on_demand"],
      "x-enum-varnames": [
        "TenantPlanNewUser",
        "TenantPlanFreeTrial",
        "TenantPlanPoc",
        "TenantPlanOnDemand"
      ]
    },
    "tenant.TenantQuota": {
      "type": "object",
      "properties": {
        "component": {
          "$ref": "#/definitions/tenant.ComponentType"
        },
        "quota": {
          "type": "integer"
        }
      }
    },
    "tenant.TenantRegion": {
      "type": "string",
      "enum": [
        "APAC",
        "EMEA",
        "JAPAN",
        "LATAM",
        "NA",
        "RDG",
        "UNKNOWN",
        "TEST_INFRA"
      ],
      "x-enum-varnames": [
        "TenantRegionAPAC",
        "TenantRegionEMEA",
        "TenantRegionJapan",
        "TenantRegionLATAM",
        "TenantRegionNA",
        "TenantRegionRDG",
        "TenantRegionUnknown",
        "TenantRegionTestInfra"
      ]
    },
    "tenant.TenantResponse": {
      "type": "object",
      "properties": {
        "alias": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "customer_id": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "kind": {
          "$ref": "#/definitions/tenant.TenantKind"
        },
        "name": {
          "type": "string"
        },
        "plan": {
          "$ref": "#/definitions/tenant.TenantPlan"
        },
        "region": {
          "$ref": "#/definitions/tenant.TenantRegion"
        },
        "sales_owner_email": {
          "type": "string"
        },
        "segmentation": {
          "$ref": "#/definitions/tenant.TenantSegmentation"
        },
        "status": {
          "$ref": "#/definitions/tenant.TenantStatus"
        },
        "tam_name": {
          "type": "string"
        },
        "time_zone": {
          "type": "string"
        }
      }
    },
    "tenant.TenantSegmentation": {
      "type": "string",
      "enum": ["SKA", "KA", "SMB", "UNKNOWN"],
      "x-enum-varnames": [
        "TenantSegmentationSKA",
        "TenantSegmentationKA",
        "TenantSegmentationSMB",
        "TenantSegmentationUnknown"
      ]
    },
    "tenant.TenantStatus": {
      "type": "string",
      "enum": ["pending", "active", "inactive", "deleted", "cleared"],
      "x-enum-varnames": [
        "TenantStatusPending",
        "TenantStatusActive",
        "TenantStatusInactive",
        "TenantStatusDeleted",
        "TenantStatusCleared"
      ]
    },
    "tenant.UnitFilterSlim": {
      "type": "object",
      "properties": {
        "filter_id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "type_id": {
          "type": "integer"
        }
      }
    },
    "tenant.UpdateRegionOpsAuditLogSettingReq": {
      "type": "object",
      "required": ["enabled", "reason", "region_logical_name"],
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "log_location": {
          "$ref": "#/definitions/tenant.LogLocation"
        },
        "log_rotation": {
          "$ref": "#/definitions/tenant.LogRotation"
        },
        "reason": {
          "type": "string"
        },
        "region_logical_name": {
          "type": "string"
        }
      }
    },
    "tenant.UpdateReservedCapacityTemplateStatusReq": {
      "type": "object",
      "required": ["reason", "status"],
      "properties": {
        "reason": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": ["ACTIVE", "DEPRECATED"]
        }
      }
    },
    "tenant.UpdateTenantReq": {
      "type": "object",
      "required": ["reason", "tenant_id"],
      "properties": {
        "reason": {
          "type": "string"
        },
        "tenant_email": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string",
          "example": "0"
        },
        "tenant_status": {
          "type": "string"
        },
        "tenant_type": {
          "type": "string"
        }
      }
    },
    "tidbtools.BackupExport": {
      "type": "object",
      "properties": {
        "backup_at": {
          "type": "integer"
        },
        "backup_id": {
          "type": "string"
        },
        "backup_name": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "error_msg": {
          "type": "string"
        },
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "provider": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "status": {
          "enum": [
            "pending",
            "running",
            "succeeded",
            "failed",
            "canceled",
            "unknown"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.BackupExportStatus"
            }
          ]
        },
        "status_msg": {
          "type": "string"
        },
        "storage_type": {
          "type": "string",
          "enum": ["s3", "gcs", "azblob", "oss"]
        },
        "storage_uri": {
          "type": "string"
        }
      }
    },
    "tidbtools.BackupExportStatus": {
      "type": "string",
      "enum": [
        "pending",
        "running",
        "succeeded",
        "failed",
        "canceled",
        "unknown"
      ],
      "x-enum-varnames": [
        "BackupExportStatusPending",
        "BackupExportStatusRunning",
        "BackupExportStatusSucceeded",
        "BackupExportStatusFailed",
        "BackupExportStatusCanceled",
        "BackupExportStatusUnknown"
      ]
    },
    "tidbtools.BackupScheduledStatus": {
      "type": "string",
      "enum": ["enabled", "paused", "disabled"],
      "x-enum-varnames": [
        "BackupScheduledStatusEnabled",
        "BackupScheduledStatusPaused",
        "BackupScheduledStatusDisabled"
      ]
    },
    "tidbtools.BackupStatus": {
      "type": "string",
      "enum": ["running", "succeeded", "failed", "canceled", "pending"],
      "x-enum-varnames": [
        "BackupStatusRunning",
        "BackupStatusSucceeded",
        "BackupStatusFailed",
        "BackupStatusCanceled",
        "BackupStatusPending"
      ]
    },
    "tidbtools.ChangefeedStatus": {
      "type": "string",
      "enum": [
        "normal",
        "warning",
        "error",
        "failed",
        "creating",
        "starting",
        "stopping",
        "stopped",
        "scaling",
        "editing",
        "deleting",
        "deleted",
        "finished"
      ],
      "x-enum-varnames": [
        "ChangefeedStatusNormal",
        "ChangefeedStatusWarning",
        "ChangefeedStatusError",
        "ChangefeedStatusFailed",
        "ChangefeedStatusCreating",
        "ChangefeedStatusStarting",
        "ChangefeedStatusStopping",
        "ChangefeedStatusStopped",
        "ChangefeedStatusScaling",
        "ChangefeedStatusEditing",
        "ChangefeedStatusDeleting",
        "ChangefeedStatusDeleted",
        "ChangefeedStatusFinished"
      ]
    },
    "tidbtools.ChangefeedSummary": {
      "type": "object",
      "properties": {
        "display_name": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "status": {
          "enum": [
            "creating",
            "normal",
            "starting",
            "stopping",
            "stopped",
            "scaling",
            "editing",
            "warning",
            "error",
            "failed",
            "deleting",
            "deleted",
            "finished"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.ChangefeedStatus"
            }
          ]
        }
      }
    },
    "tidbtools.DMJob": {
      "type": "object",
      "properties": {
        "conn_method": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "error_msg": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "mode": {
          "enum": ["full", "incremental", "all"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.DMJobMode"
            }
          ]
        },
        "name": {
          "type": "string"
        },
        "source_type": {
          "type": "string"
        },
        "status": {
          "enum": [
            "running",
            "paused",
            "finished",
            "failed",
            "stopped",
            "unknown"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.DMJobStatus"
            }
          ]
        },
        "target_cluster": {
          "type": "string"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "tidbtools.DMJobDetail": {
      "type": "object",
      "properties": {
        "conn_method": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "error_msg": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "mode": {
          "enum": ["full", "incremental", "all"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.DMJobMode"
            }
          ]
        },
        "name": {
          "type": "string"
        },
        "source_type": {
          "type": "string"
        },
        "status": {
          "enum": [
            "running",
            "paused",
            "finished",
            "failed",
            "stopped",
            "unknown"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.DMJobStatus"
            }
          ]
        },
        "sub_tasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.DMSubTask"
          }
        },
        "target_cluster": {
          "type": "string"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "tidbtools.DMJobMode": {
      "type": "string",
      "enum": ["full", "incremental", "all"],
      "x-enum-varnames": [
        "DMJobModeFull",
        "DMJobModeIncremental",
        "DMJobModeAll"
      ]
    },
    "tidbtools.DMJobStatus": {
      "type": "string",
      "enum": ["running", "paused", "finished", "failed", "stopped", "unknown"],
      "x-enum-varnames": [
        "DMJobStatusRunning",
        "DMJobStatusPaused",
        "DMJobStatusFinished",
        "DMJobStatusFailed",
        "DMJobStatusStopped",
        "DMJobStatusUnknown"
      ]
    },
    "tidbtools.DMOverview": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string"
        },
        "version_source": {
          "type": "string"
        }
      }
    },
    "tidbtools.DMPrecheck": {
      "type": "object",
      "properties": {
        "dm_job_name": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        },
        "finished": {
          "type": "integer"
        },
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "started_at": {
          "type": "integer"
        },
        "status": {
          "enum": ["passed", "failed", "warning", "running"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.DMPrecheckStatus"
            }
          ]
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.DMPrecheckDetail": {
      "type": "object",
      "properties": {
        "dm_job_name": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        },
        "finished": {
          "type": "integer"
        },
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.DMPrecheckItem"
          }
        },
        "started_at": {
          "type": "integer"
        },
        "status": {
          "enum": ["passed", "failed", "warning", "running"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.DMPrecheckStatus"
            }
          ]
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.DMPrecheckItem": {
      "type": "object",
      "properties": {
        "errmsg": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "result": {
          "type": "string"
        },
        "status": {
          "enum": ["passed", "failed", "warning", "running"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.DMPrecheckStatus"
            }
          ]
        }
      }
    },
    "tidbtools.DMPrecheckStatus": {
      "type": "string",
      "enum": ["passed", "failed", "warning", "running"],
      "x-enum-varnames": [
        "DMPrecheckStatusPassed",
        "DMPrecheckStatusFailed",
        "DMPrecheckStatusWarning",
        "DMPrecheckStatusRunning"
      ]
    },
    "tidbtools.DMSubTask": {
      "type": "object",
      "properties": {
        "binlog_position": {
          "type": "string"
        },
        "binlog_ts": {
          "type": "integer"
        },
        "mode": {
          "enum": ["full", "incremental", "all"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.DMJobMode"
            }
          ]
        },
        "name": {
          "type": "string"
        },
        "progress_percent": {
          "type": "integer"
        },
        "rows_per_sec": {
          "type": "integer"
        },
        "status": {
          "enum": [
            "running",
            "paused",
            "finished",
            "failed",
            "stopped",
            "unknown"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.DMJobStatus"
            }
          ]
        }
      }
    },
    "tidbtools.DedicatedBackupSetting": {
      "type": "object",
      "properties": {
        "current_actions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "dual_region_enabled": {
          "type": "boolean"
        },
        "dual_regions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "encryption_enabled": {
          "type": "boolean"
        },
        "log_backup_enabled": {
          "type": "boolean"
        },
        "next_run_at": {
          "type": "integer"
        },
        "retention_days": {
          "type": "integer"
        },
        "schedule": {
          "type": "string"
        },
        "scheduled_status": {
          "enum": ["enabled", "paused", "disabled"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.BackupScheduledStatus"
            }
          ]
        }
      }
    },
    "tidbtools.DedicatedImport": {
      "type": "object",
      "properties": {
        "completed_percent": {
          "type": "integer"
        },
        "completed_tables": {
          "type": "integer"
        },
        "conn_method": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "error_msg": {
          "type": "string"
        },
        "file_type": {
          "enum": ["CSV", "SQL", "PARQUET"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.ImportFileType"
            }
          ]
        },
        "filter": {
          "type": "string"
        },
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "imported_rows": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "pending_tables": {
          "type": "integer"
        },
        "post_import_completed_percent": {
          "type": "integer"
        },
        "size_bytes": {
          "type": "integer"
        },
        "source_type": {
          "enum": ["LOCAL_FILE", "S3", "GCS"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.ImportSourceType"
            }
          ]
        },
        "status": {
          "enum": [
            "pending",
            "preparing",
            "running",
            "succeeded",
            "failed",
            "canceled"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.ImportStatus"
            }
          ]
        },
        "target_database": {
          "type": "string"
        },
        "target_table": {
          "type": "string"
        },
        "total_rows": {
          "type": "integer"
        },
        "total_tables_count": {
          "type": "integer"
        }
      }
    },
    "tidbtools.Export": {
      "type": "object",
      "properties": {
        "compression": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "created_by": {
          "type": "string"
        },
        "csv_delimiter": {
          "type": "string"
        },
        "csv_null_value": {
          "type": "string"
        },
        "csv_separator": {
          "type": "string"
        },
        "csv_skip_header": {
          "type": "boolean"
        },
        "error_msg": {
          "type": "string"
        },
        "file_type": {
          "type": "string"
        },
        "filter_type": {
          "type": "string"
        },
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "snapshot_at": {
          "type": "integer"
        },
        "snapshot_tso": {
          "type": "string"
        },
        "source_cluster_id": {
          "type": "string"
        },
        "status": {
          "enum": [
            "pending",
            "running",
            "succeeded",
            "failed",
            "canceled",
            "unknown"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.ExportStatus"
            }
          ]
        },
        "status_msg": {
          "type": "string"
        },
        "storage_auth_type": {
          "type": "string"
        },
        "storage_type": {
          "type": "string",
          "enum": ["s3", "gcs", "azblob", "oss"]
        },
        "storage_uri": {
          "type": "string"
        },
        "table_patterns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ExportStatus": {
      "type": "string",
      "enum": [
        "pending",
        "running",
        "succeeded",
        "failed",
        "canceled",
        "unknown"
      ],
      "x-enum-varnames": [
        "ExportStatusPending",
        "ExportStatusRunning",
        "ExportStatusSucceeded",
        "ExportStatusFailed",
        "ExportStatusCanceled",
        "ExportStatusUnknown"
      ]
    },
    "tidbtools.GetImportIntoTaskResp": {
      "type": "object",
      "properties": {
        "completed_percent": {
          "type": "integer"
        },
        "completed_tables": {
          "type": "integer"
        },
        "conn_method": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "error_msg": {
          "type": "string"
        },
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "pending_tables": {
          "type": "integer"
        },
        "post_import_completed_percent": {
          "type": "integer"
        },
        "progress_percent": {
          "type": "integer"
        },
        "source_uri": {
          "type": "string"
        },
        "sql_statement": {
          "type": "string"
        },
        "status": {
          "enum": [
            "pending",
            "preparing",
            "running",
            "succeeded",
            "failed",
            "canceled"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.ImportStatus"
            }
          ]
        },
        "total_tables_count": {
          "type": "integer"
        }
      }
    },
    "tidbtools.GetOverviewResp": {
      "type": "object",
      "properties": {
        "backup_exports": {
          "$ref": "#/definitions/tidbtools.ListBackupExportsResp"
        },
        "backups": {
          "$ref": "#/definitions/tidbtools.ListBackupsResp"
        },
        "changefeeds": {
          "$ref": "#/definitions/tidbtools.ListChangefeedsOverviewResp"
        },
        "dm_jobs": {
          "$ref": "#/definitions/tidbtools.ListDMJobsResp"
        },
        "dm_overview": {
          "$ref": "#/definitions/tidbtools.DMOverview"
        },
        "exports": {
          "$ref": "#/definitions/tidbtools.ListExportsResp"
        },
        "import_into_tasks": {
          "$ref": "#/definitions/tidbtools.ListImportIntoTasksResp"
        },
        "imports": {
          "$ref": "#/definitions/tidbtools.ListImportsResp"
        },
        "log_backups": {
          "$ref": "#/definitions/tidbtools.ListLogBackupsResp"
        },
        "restores": {
          "$ref": "#/definitions/tidbtools.ListRestoresResp"
        },
        "warnings": {
          "description": "Warnings collects non-fatal errors from individual fan-out calls,\nso the overview never fails entirely because one tool is down.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "tidbtools.ImportFileType": {
      "type": "string",
      "enum": ["CSV", "SQL", "PARQUET"],
      "x-enum-varnames": [
        "ImportFileTypeCSV",
        "ImportFileTypeSQL",
        "ImportFileTypeParquet"
      ]
    },
    "tidbtools.ImportSourceType": {
      "type": "string",
      "enum": ["LOCAL_FILE", "S3", "GCS"],
      "x-enum-varnames": [
        "ImportSourceTypeLocalFile",
        "ImportSourceTypeS3",
        "ImportSourceTypeGCS"
      ]
    },
    "tidbtools.ImportStatus": {
      "type": "string",
      "enum": [
        "pending",
        "preparing",
        "running",
        "succeeded",
        "failed",
        "canceled"
      ],
      "x-enum-varnames": [
        "ImportStatusPending",
        "ImportStatusPreparing",
        "ImportStatusRunning",
        "ImportStatusSucceeded",
        "ImportStatusFailed",
        "ImportStatusCanceled"
      ]
    },
    "tidbtools.ListBackupExportsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.BackupExport"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ListBackupsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.SnapshotBackup"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ListChangefeedsOverviewResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.ChangefeedSummary"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ListChangefeedsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.ChangefeedSummary"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ListDMJobsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.DMJob"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ListDMPrechecksResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.DMPrecheck"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ListExportsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.Export"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ListImportIntoTasksResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.PremiumImportIntoTask"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ListImportsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.DedicatedImport"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ListLogBackupsResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.LogBackup"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.ListRestoresResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.Restore"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "tidbtools.LogBackup": {
      "type": "object",
      "properties": {
        "checkpoint_timestamp": {
          "type": "integer"
        },
        "created_at": {
          "type": "integer"
        },
        "error_msg": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size_bytes": {
          "type": "integer"
        },
        "started_at": {
          "type": "integer"
        },
        "status": {
          "enum": [
            "pending",
            "running",
            "stopping",
            "stopped",
            "pausing",
            "paused",
            "resuming",
            "failed",
            "scheduled"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.LogBackupStatus"
            }
          ]
        },
        "storage_uri": {
          "type": "string"
        },
        "truncate_until": {
          "type": "integer"
        }
      }
    },
    "tidbtools.LogBackupStatus": {
      "type": "string",
      "enum": [
        "pending",
        "running",
        "stopping",
        "stopped",
        "pausing",
        "paused",
        "resuming",
        "failed",
        "scheduled"
      ],
      "x-enum-varnames": [
        "LogBackupStatusPending",
        "LogBackupStatusRunning",
        "LogBackupStatusStopping",
        "LogBackupStatusStopped",
        "LogBackupStatusPausing",
        "LogBackupStatusPaused",
        "LogBackupStatusResuming",
        "LogBackupStatusFailed",
        "LogBackupStatusScheduled"
      ]
    },
    "tidbtools.NextGenBackupPolicy": {
      "type": "object",
      "properties": {
        "daily_retention_days": {
          "type": "integer"
        },
        "daily_start_time_utc": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "hourly_retention_days": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "pitr_retention_days": {
          "type": "integer"
        }
      }
    },
    "tidbtools.NextGenBackupSetting": {
      "type": "object",
      "properties": {
        "backup_policies": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.NextGenBackupPolicy"
          }
        },
        "daily_backup_time_utc": {
          "type": "string"
        },
        "last_modify_time": {
          "type": "integer"
        },
        "mode": {
          "type": "string",
          "enum": ["standard_bundle", "flexible_retention"]
        },
        "pitr_end_time": {
          "type": "integer"
        },
        "pitr_start_time": {
          "type": "integer"
        },
        "retention_days": {
          "type": "integer"
        },
        "unavailable": {
          "description": "Unavailable is true while a Premium or Essential v2 restore has not\ncreated the target instance's backup-setting record yet.",
          "type": "boolean"
        }
      }
    },
    "tidbtools.PremiumImportIntoTask": {
      "type": "object",
      "properties": {
        "completed_percent": {
          "type": "integer"
        },
        "completed_tables": {
          "type": "integer"
        },
        "conn_method": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "error_msg": {
          "type": "string"
        },
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "pending_tables": {
          "type": "integer"
        },
        "post_import_completed_percent": {
          "type": "integer"
        },
        "progress_percent": {
          "type": "integer"
        },
        "source_uri": {
          "type": "string"
        },
        "sql_statement": {
          "type": "string"
        },
        "status": {
          "enum": [
            "pending",
            "preparing",
            "running",
            "succeeded",
            "failed",
            "canceled"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.ImportStatus"
            }
          ]
        },
        "total_tables_count": {
          "type": "integer"
        }
      }
    },
    "tidbtools.Restore": {
      "type": "object",
      "properties": {
        "backup_id": {
          "type": "string"
        },
        "error_msg": {
          "type": "string"
        },
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "log_backup_id": {
          "type": "string"
        },
        "mode": {
          "enum": ["snapshot", "pitr"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.RestoreMode"
            }
          ]
        },
        "name": {
          "type": "string"
        },
        "progress_percent": {
          "type": "integer"
        },
        "restore_region": {
          "type": "string"
        },
        "restored_at": {
          "type": "integer"
        },
        "restored_ts": {
          "type": "string"
        },
        "source_backup_name": {
          "type": "string"
        },
        "started_at": {
          "type": "integer"
        },
        "status": {
          "enum": [
            "pending",
            "running",
            "succeeded",
            "failed",
            "canceled",
            "unknown"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.RestoreStatus"
            }
          ]
        },
        "target_cluster_id": {
          "type": "string"
        }
      }
    },
    "tidbtools.RestoreAuditInfo": {
      "type": "object",
      "properties": {
        "event_at": {
          "type": "integer"
        },
        "point_in_time": {
          "type": "integer"
        },
        "restore_mode": {
          "type": "string"
        }
      }
    },
    "tidbtools.RestoreBackupInfo": {
      "type": "object",
      "properties": {
        "created_at": {
          "type": "integer"
        },
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "size_bytes": {
          "type": "integer"
        },
        "status": {
          "type": "string"
        },
        "tso": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "tidbtools.RestoreClusterInfo": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "tidbtools.RestoreDetail": {
      "type": "object",
      "properties": {
        "backup_id": {
          "type": "string"
        },
        "cluster": {
          "$ref": "#/definitions/tidbtools.RestoreClusterInfo"
        },
        "cluster_id": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "status": {
          "enum": [
            "pending",
            "running",
            "succeeded",
            "failed",
            "terminated",
            "canceled",
            "unknown"
          ],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.RestoreStatus"
            }
          ]
        }
      }
    },
    "tidbtools.RestoreErrorDetail": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        },
        "retryable": {
          "type": "boolean"
        }
      }
    },
    "tidbtools.RestoreMode": {
      "type": "string",
      "enum": ["snapshot", "pitr"],
      "x-enum-varnames": ["RestoreModeSnapshot", "RestoreModePITR"]
    },
    "tidbtools.RestoreProgress": {
      "type": "object",
      "properties": {
        "audit": {
          "$ref": "#/definitions/tidbtools.RestoreAuditInfo"
        },
        "backup": {
          "$ref": "#/definitions/tidbtools.RestoreBackupInfo"
        },
        "data_restore_duration_seconds": {
          "type": "integer"
        },
        "data_restore_step": {
          "type": "string"
        },
        "duration_seconds": {
          "type": "integer"
        },
        "error": {
          "$ref": "#/definitions/tidbtools.RestoreErrorDetail"
        },
        "eta_seconds": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "not_found": {
          "description": "NotFound is true when no active restore record exists for the cluster.\nThe HTTP status is still 200; callers should treat this as an empty state.",
          "type": "boolean"
        },
        "progress_percent": {
          "type": "integer"
        },
        "rate_bytes_per_sec": {
          "type": "integer"
        },
        "restore_bytes": {
          "type": "integer"
        },
        "restore_finished_at": {
          "type": "integer"
        },
        "restore_started_at": {
          "type": "integer"
        },
        "runtime_diagnostic": {
          "type": "string"
        },
        "source": {
          "$ref": "#/definitions/tidbtools.RestoreSourceInfo"
        },
        "source_cluster_id": {
          "type": "string"
        },
        "source_metadata_available": {
          "type": "boolean"
        },
        "source_metadata_note": {
          "type": "string"
        },
        "status": {
          "description": "Stage is the human-readable current step name or overall status string.\nJSON field is \"status\" to match the FE RestoreProgress.status field.",
          "type": "string"
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/tidbtools.RestoreStepProgress"
          }
        },
        "target": {
          "$ref": "#/definitions/tidbtools.RestoreTargetInfo"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "tidbtools.RestoreSourceInfo": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "expected_restore_data_bytes": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "service_plan": {
          "type": "string"
        }
      }
    },
    "tidbtools.RestoreStatus": {
      "type": "string",
      "enum": [
        "pending",
        "running",
        "succeeded",
        "failed",
        "canceled",
        "terminated",
        "unknown"
      ],
      "x-enum-varnames": [
        "RestoreStatusPending",
        "RestoreStatusRunning",
        "RestoreStatusSucceeded",
        "RestoreStatusFailed",
        "RestoreStatusCanceled",
        "RestoreStatusTerminated",
        "RestoreStatusUnknown"
      ]
    },
    "tidbtools.RestoreStepProgress": {
      "type": "object",
      "properties": {
        "progress": {
          "type": "number"
        },
        "step_name": {
          "type": "string"
        }
      }
    },
    "tidbtools.RestoreTargetInfo": {
      "type": "object",
      "properties": {
        "cloud_provider": {
          "type": "string"
        },
        "create_ready_at": {
          "type": "integer"
        },
        "create_started_at": {
          "type": "integer"
        },
        "creator": {
          "type": "string"
        },
        "dataplane_id": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "organization_id": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "region_display": {
          "type": "string"
        },
        "service_plan": {
          "type": "string"
        },
        "shared_pool_id": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "tidb_version": {
          "type": "string"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "tidbtools.SnapshotBackup": {
      "type": "object",
      "properties": {
        "cluster_version": {
          "type": "string"
        },
        "error_msg": {
          "type": "string"
        },
        "expire_at": {
          "type": "integer"
        },
        "finished_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "protected": {
          "type": "boolean"
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "size_bytes": {
          "type": "integer"
        },
        "started_at": {
          "type": "integer"
        },
        "status": {
          "enum": ["running", "succeeded", "failed", "canceled", "pending"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.BackupStatus"
            }
          ]
        },
        "storage_uri": {
          "type": "string"
        },
        "tso": {
          "type": "string"
        },
        "type": {
          "enum": ["Manual", "Auto"],
          "allOf": [
            {
              "$ref": "#/definitions/tidbtools.SnapshotBackupType"
            }
          ]
        }
      }
    },
    "tidbtools.SnapshotBackupType": {
      "type": "string",
      "enum": ["Manual", "Auto"],
      "x-enum-varnames": ["SnapshotBackupTypeManual", "SnapshotBackupTypeAuto"]
    },
    "timestamppb.Timestamp": {
      "type": "object",
      "properties": {
        "nanos": {
          "description": "Non-negative fractions of a second at nanosecond resolution. This field is\nthe nanosecond portion of the duration, not an alternative to seconds.\nNegative second values with fractions must still have non-negative nanos\nvalues that count forward in time. Must be between 0 and 999,999,999\ninclusive.",
          "type": "integer"
        },
        "seconds": {
          "description": "Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must\nbe between -315576000000 and 315576000000 inclusive (which corresponds to\n0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).",
          "type": "integer"
        }
      }
    },
    "userbehavior.AddExternalLarkChatReq": {
      "type": "object",
      "required": ["chat_url", "name"],
      "properties": {
        "avatar": {
          "type": "string"
        },
        "chat_url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "userbehavior.CreateSubscriptionReq": {
      "type": "object",
      "properties": {
        "detail_link": {
          "type": "string"
        },
        "event_type": {
          "$ref": "#/definitions/userbehavior.UBEventTp"
        },
        "lark_chats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.LarkChatSimplified"
          }
        },
        "name": {
          "type": "string"
        },
        "selector": {
          "$ref": "#/definitions/userbehavior.SelectorTp"
        },
        "subscribe_type": {
          "$ref": "#/definitions/userbehavior.SubscribeTp"
        },
        "template": {
          "type": "string"
        }
      }
    },
    "userbehavior.CreateSubscriptionResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "subscription_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "userbehavior.EditSubscriptionReq": {
      "type": "object",
      "properties": {
        "event_type": {
          "$ref": "#/definitions/userbehavior.UBEventTp"
        },
        "lark_chats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.LarkChatSimplified"
          }
        },
        "name": {
          "type": "string"
        },
        "selector": {
          "$ref": "#/definitions/userbehavior.SelectorTp"
        },
        "subscribe_type": {
          "$ref": "#/definitions/userbehavior.SubscribeTp"
        },
        "template": {
          "type": "string"
        }
      }
    },
    "userbehavior.EditSubscriptionResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "subscription_id": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "userbehavior.GetSubscriptionResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "subscription": {
          "$ref": "#/definitions/userbehavior.Subscription"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "userbehavior.ListLarkChatOptionsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.LarkChatSimplified"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "userbehavior.ListSubscriptionsResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/userbehavior.Subscription"
          }
        },
        "total": {
          "type": "integer"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "userbehavior.RegionSelectorTp": {
      "type": "string",
      "enum": ["na", "apac", "emea", "jp"],
      "x-enum-varnames": [
        "RegionSelectorNA",
        "RegionSelectorAPAC",
        "RegionSelectorEMEA",
        "RegionSelectorJP"
      ]
    },
    "userbehavior.SelectorTp": {
      "type": "object",
      "properties": {
        "region_selectors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/userbehavior.RegionSelectorTp"
          }
        },
        "tenant_selectors": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "userbehavior.SubscribeTp": {
      "type": "string",
      "enum": ["by_chat"],
      "x-enum-varnames": ["SubscribeByChat"]
    },
    "userbehavior.Subscription": {
      "type": "object",
      "required": ["id"],
      "properties": {
        "available": {
          "type": "boolean"
        },
        "creator": {
          "description": "Creator email",
          "type": "string"
        },
        "detail_link": {
          "type": "string"
        },
        "event_type": {
          "$ref": "#/definitions/userbehavior.UBEventTp"
        },
        "id": {
          "type": "integer"
        },
        "lark_chats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.LarkChatSimplified"
          }
        },
        "name": {
          "type": "string"
        },
        "only_dedicated_cluster": {
          "type": "boolean"
        },
        "only_external_tenant": {
          "type": "boolean"
        },
        "only_paid_tenant": {
          "type": "boolean"
        },
        "selector": {
          "$ref": "#/definitions/userbehavior.SelectorTp"
        },
        "subscribe_type": {
          "$ref": "#/definitions/userbehavior.SubscribeTp"
        },
        "template": {
          "type": "string"
        },
        "text_filter": {
          "type": "string"
        }
      }
    },
    "userbehavior.SuppressGTMEmailReq": {
      "type": "object",
      "required": ["campaign_name", "reason", "source", "tenant_id"],
      "properties": {
        "campaign_name": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        }
      }
    },
    "userbehavior.SuppressGTMEmailResp": {
      "type": "object",
      "properties": {
        "cancelled_count": {
          "type": "integer"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "userbehavior.UBEventTp": {
      "type": "string",
      "enum": [
        "tenant",
        "cluster",
        "import",
        "backup",
        "restore",
        "cdc",
        "dmjob",
        "startup"
      ],
      "x-enum-comments": {
        "UBEventStartup": "monitor new startup company tenants",
        "UBEventTenant": "tenant creation, deletion and plan change"
      },
      "x-enum-varnames": [
        "UBEventTenant",
        "UBEventCluster",
        "UBEventImport",
        "UBEventBackup",
        "UBEventRestore",
        "UBEventCDC",
        "UBEventDMJob",
        "UBEventStartup"
      ]
    },
    "userv1.LarkType": {
      "type": "integer",
      "enum": [0, 1],
      "x-enum-varnames": [
        "LarkType_LARK_TYPE_UNSPECIFIED",
        "LarkType_LARK_TYPE_GLOBAL"
      ]
    },
    "userv1.User": {
      "type": "object",
      "properties": {
        "available": {
          "type": "boolean"
        },
        "deleted_at": {
          "type": "integer"
        },
        "email": {
          "type": "string"
        },
        "github_id": {
          "type": "string"
        },
        "lark_department_id": {
          "type": "string"
        },
        "lark_department_name": {
          "type": "string"
        },
        "lark_type": {
          "$ref": "#/definitions/userv1.LarkType"
        },
        "lark_user_en_name": {
          "type": "string"
        },
        "lark_user_id": {
          "type": "string"
        },
        "lark_user_name": {
          "type": "string"
        },
        "lark_user_nick_name": {
          "type": "string"
        },
        "lark_user_open_id": {
          "type": "string"
        },
        "name_search_abbr": {
          "type": "string"
        },
        "name_search_text": {
          "type": "string"
        },
        "soc2_compliant": {
          "type": "boolean"
        }
      }
    },
    "webhook.JiraBindLarkGroupWhenEscalationRequest": {
      "type": "object",
      "required": [
        "issue_id",
        "issue_key",
        "outward_issue_id",
        "outward_issue_key"
      ],
      "properties": {
        "issue_id": {
          "description": "The ID of the Jira issue",
          "type": "string"
        },
        "issue_key": {
          "description": "The key of the Jira issue",
          "type": "string"
        },
        "outward_issue_id": {
          "description": "The ID of the outward issue to bind",
          "type": "string"
        },
        "outward_issue_key": {
          "description": "The key of the outward issue to bind",
          "type": "string"
        }
      }
    },
    "webhook.JiraCreateLarkGroupForS1TicketsRequest": {
      "type": "object",
      "required": ["issue_key"],
      "properties": {
        "issue_key": {
          "description": "The key of the Jira issue",
          "type": "string"
        }
      }
    },
    "webhook.JiraCreateLarkGroupForS1TicketsResponse": {
      "type": "object",
      "properties": {
        "detail": {
          "description": "The detail message",
          "type": "string"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "group_id": {
          "description": "The ID of the created lark group",
          "type": "string"
        },
        "trace_id": {
          "type": "string"
        }
      }
    },
    "webhook.JiraInviteAssigneeToLarkGroupRequest": {
      "type": "object",
      "required": ["assignee_email", "issue_id", "issue_key"],
      "properties": {
        "assignee_email": {
          "description": "The email of the assignee to invite",
          "type": "string"
        },
        "issue_id": {
          "description": "The ID of the Jira issue",
          "type": "string"
        },
        "issue_key": {
          "description": "The key of the Jira issue",
          "type": "string"
        }
      }
    }
  }
}
