{
  "swagger": "2.0",
  "info": {
    "description": "This is a management portal server",
    "title": "Management Portal API",
    "contact": {},
    "version": "1.0"
  },
  "schemes": ["http"],
  "consumes": ["application/json"],
  "produces": ["application/json"],
  "paths": {
    "/api/v1/admin/access-logs": {
      "get": {
        "operationId": "GetAccessLogs",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["AccessLog"],
        "summary": "Serach Management Portal access logs",
        "parameters": [
          {
            "type": "string",
            "name": "content",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "end_time",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "org_id",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "start_time",
            "in": "query"
          },
          {
            "type": "string",
            "name": "user",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListAccessLogResp"
            }
          }
        }
      }
    },
    "/api/v1/admin/profile/query": {
      "post": {
        "operationId": "CalcNodeProfiles",
        "description": "CalcNodeProfiles",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Profile"],
        "summary": "CalcNodeProfiles",
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CalcNodeProfilesReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CalcNodeProfileResp"
            }
          }
        }
      }
    },
    "/api/v1/admin/api_key": {
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ApiKey"],
        "summary": "Add API Key",
        "parameters": [
          {
            "description": "Add API key",
            "name": "user",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CreateAPIKey"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CreateAPIKeyResp"
            }
          }
        }
      }
    },
    "/api/v1/admin/dashboard/stats": {
      "get": {
        "operationId": "GetDashboardStats",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["System"],
        "summary": "GetDashboardStats",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.GetDashboardStatsResq"
            }
          }
        }
      }
    },
    "/api/v1/admin/me": {
      "get": {
        "operationId": "GetCentralUserProfile",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "GetCentralUserProfile",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CentralUserProfile"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs": {
      "get": {
        "operationId": "ListTenants",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Tenant"],
        "summary": "List Tenant",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "alias",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "discount_check_time_sec",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "id",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "name": "kind",
            "in": "query"
          },
          {
            "type": "string",
            "name": "name",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "no_limit",
            "in": "query"
          },
          {
            "type": "string",
            "description": "options: asc or desc",
            "name": "order",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "name": "plan",
            "in": "query"
          },
          {
            "enum": ["timezone", "created_at"],
            "type": "string",
            "description": "options: timezone, created_at",
            "name": "sort_by",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "name": "status",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListTenantResp"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}": {
      "get": {
        "operationId": "GetTenantByID",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Tenant"],
        "summary": "Get Tenant By ID",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.Tenant"
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteTenantByID",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Tenant"],
        "summary": "Delete Tenant By ID",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      },
      "patch": {
        "operationId": "PatchTenant",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Tenant"],
        "summary": "PatchTenant",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "description": "patch tenant",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.PatchTenantReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/access-logs": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["AccessLog"],
        "summary": "Serach Tenant access logs",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "name": "content",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "end_time",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "org_id",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "start_time",
            "in": "query"
          },
          {
            "type": "string",
            "name": "user",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListAccessLogResp"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/cluster-lifecycles": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Tenant"],
        "summary": "ListTenantClusterLifeCycle",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "name": "end",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "name": "start",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListTenantClusterLifeCycleResp"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/clusters": {
      "get": {
        "operationId": "ListTenantClusters",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantCuster"],
        "summary": "List Tenant Cluster",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListTenantClustersResp"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/clusters/{cluster_id}": {
      "delete": {
        "operationId": "DeleteTenantCluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantCuster"],
        "summary": "DeleteTenantCluster",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/clusters/{cluster_id}/pause": {
      "post": {
        "operationId": "PauseTenantCluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantCuster"],
        "summary": "Pause Tenant Cluster",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/clusters/{cluster_id}/resume": {
      "post": {
        "operationId": "ResumeTenantCluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantCuster"],
        "summary": "Resume Tenant Cluster",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/clusters/{cluster_id}/components": {
      "put": {
        "operationId": "ScaleTenantCluster",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantCuster"],
        "summary": "Scale Tenant Cluster",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          },
          {
            "description": "scale cluster component",
            "name": "scale",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.ScaleComponentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/clusters/{cluster_id}/dashboard_links": {
      "get": {
        "operationId": "GetDashboardLinks",
        "description": "GetDashboardLinks",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantCuster"],
        "summary": "GetDashboardLinks",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.GetDashboardLinksResp"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/impersonation": {
      "post": {
        "operationId": "AddImpersonation",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Impersonation"],
        "summary": "AddImpersonation",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteImpersonation",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Impersonation"],
        "summary": "Delete Impersonation",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/projects/{project_id}": {
      "delete": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantProject"],
        "summary": "Delete Tenant Project",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "project_id",
            "name": "project_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/salesforce": {
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Salesforce"],
        "summary": "Sync Salesforce Leads",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/trial_credit": {
      "get": {
        "operationId": "GetTenantTrialCredits",
        "description": "Get Tenant Billing Status",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Billing"],
        "summary": "Get Tenant Billing Status",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantRemainingCredits"
            }
          }
        }
      },
      "post": {
        "operationId": "AddTrialCredit",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Credit"],
        "summary": "Add Trial Credit",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "description": "add trial credit",
            "name": "user",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.AddTrailCredit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/users": {
      "get": {
        "description": "List tenant user",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantUser"],
        "summary": "List Tenant Users",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListTenantUsersResp"
            }
          }
        }
      },
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantUser"],
        "summary": "Add Tenant User",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "description": "Add User",
            "name": "user",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.TenantUser"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantUser"
            }
          }
        }
      }
    },
    "/api/v1/admin/orgs/{org_id}/users/{user_id}": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantUser"],
        "summary": "Get Tenant User",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantUser"
            }
          }
        }
      },
      "put": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantUser"],
        "summary": "Update Tenant User",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          },
          {
            "description": "update User",
            "name": "user",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.TenantUser"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantUser"
            }
          }
        }
      },
      "delete": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["TenantUser"],
        "summary": "Delete Tenant User",
        "parameters": [
          {
            "type": "string",
            "description": "org_id",
            "name": "org_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/providers": {
      "get": {
        "operationId": "ListProviders",
        "description": "ListProviders",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Provider"],
        "summary": "ListProviders",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListProvidersResp"
            }
          }
        }
      },
      "post": {
        "operationId": "AddProvider",
        "description": "AddProvider",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Provider"],
        "summary": "AddProvider",
        "parameters": [
          {
            "description": "provider",
            "name": "provider",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.Provider"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/providers/{provider}/regions": {
      "get": {
        "operationId": "ListRegions",
        "description": "ListRegions",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Provider"],
        "summary": "ListRegions",
        "parameters": [
          {
            "type": "string",
            "description": "provider",
            "name": "provider",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListRegionResp"
            }
          }
        }
      },
      "post": {
        "operationId": "AddRegion",
        "description": "AddRegion",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Provider"],
        "summary": "AddRegion",
        "parameters": [
          {
            "type": "string",
            "description": "provider",
            "name": "provider",
            "in": "path",
            "required": true
          },
          {
            "description": "region",
            "name": "region",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.ProviderRegion"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ProviderRegion"
            }
          }
        }
      }
    },
    "/api/v1/admin/providers/{provider}/regions/{region_id}": {
      "get": {
        "operationId": "GetRegionByID",
        "description": "GetRegionByID",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Provider"],
        "summary": "GetRegionByID",
        "parameters": [
          {
            "type": "string",
            "description": "provider",
            "name": "provider",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "region_id",
            "name": "region_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ProviderRegion"
            }
          }
        }
      },
      "put": {
        "operationId": "UpdateRegion",
        "description": "UpdateRegion",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Provider"],
        "summary": "UpdateRegion",
        "parameters": [
          {
            "type": "string",
            "description": "provider",
            "name": "provider",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "region_id",
            "name": "region_id",
            "in": "path",
            "required": true
          },
          {
            "description": "region",
            "name": "region",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.ProviderRegion"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ProviderRegion"
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteRegion",
        "description": "DeleteRegion",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Provider"],
        "summary": "DeleteRegion",
        "parameters": [
          {
            "type": "string",
            "description": "provider",
            "name": "provider",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "region_id",
            "name": "region_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/roles": {
      "get": {
        "operationId": "ListCentralRoles",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "ListCentralRoles",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListRolesResp"
            }
          }
        }
      },
      "post": {
        "operationId": "AddCentralRole",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "AddCentralRole",
        "parameters": [
          {
            "description": "AddCentralRole",
            "name": "role",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.Role"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.Role"
            }
          }
        }
      }
    },
    "/api/v1/admin/roles/{role_id}": {
      "get": {
        "operationId": "GetCentralRole",
        "description": "GetCentralRole",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "GetCentralRole",
        "parameters": [
          {
            "type": "string",
            "description": "role_id",
            "name": "role_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.Role"
            }
          }
        }
      },
      "put": {
        "operationId": "UpdateCentralRole",
        "description": "UpdateCentralRole",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "UpdateCentralRole",
        "parameters": [
          {
            "type": "string",
            "description": "role_id",
            "name": "role_id",
            "in": "path",
            "required": true
          },
          {
            "description": "UpdateCentralRole",
            "name": "role",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.Role"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.Role"
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteCentralRole",
        "description": "DeleteCentralRole",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "DeleteCentralRole",
        "parameters": [
          {
            "type": "string",
            "description": "role_id",
            "name": "role_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/admin/system-settings": {
      "get": {
        "operationId": "GetSystemSettings",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["System"],
        "summary": "GetSystemSettings",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.SystemSettings"
            }
          }
        }
      },
      "put": {
        "operationId": "UpdateSystemSettings",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["System"],
        "summary": "UpdateSystemSettings",
        "parameters": [
          {
            "description": "update system settings",
            "name": "settings",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.SystemSettings"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.SystemSettings"
            }
          }
        }
      }
    },
    "/api/v1/admin/users": {
      "get": {
        "operationId": "ListCentralUsers",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "ListCentralUsers",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "string",
            "name": "email",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListCentralUsersResp"
            }
          }
        }
      },
      "post": {
        "operationId": "AddManagementPortalUser",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "Add Management Portal User",
        "parameters": [
          {
            "description": "Add management portal user",
            "name": "user",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CentralUser"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CentralUser"
            }
          }
        }
      }
    },
    "/api/v1/admin/users/{user_id}": {
      "get": {
        "operationId": "GetManagementPortalUser",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "Get Management Portal User",
        "parameters": [
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CentralUser"
            }
          }
        }
      },
      "put": {
        "operationId": "UpdateManagementPortalUser",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "Update Management Portal User",
        "parameters": [
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          },
          {
            "description": "update management portal user",
            "name": "user",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CentralUser"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CentralUser"
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteManagementPortalUser",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["ManagementPortalUser"],
        "summary": "Delete Management Portal User",
        "parameters": [
          {
            "type": "string",
            "description": "user_id",
            "name": "user_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.EmptyResponse"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/costexplorer": {
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Cost Explorer",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "Query",
            "name": "Query",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CostExplorerQuery"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CostExplorerResult"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/costexplorer/bills_details/year/{year}/month/{month}": {
      "get": {
        "operationId": "getBillsDetails",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "year",
            "name": "year",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "month",
            "name": "month",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CostExplorerDetailsResult"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/costexplorer/monthly_bills/year/{year}/month/{month}/export": {
      "post": {
        "operationId": "getMonthlyBillsExport",
        "consumes": ["application/json"],
        "produces": ["application/octet-stream"],
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "year",
            "name": "year",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "month",
            "name": "month",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/apiHttpBody"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/costexplorer/monthly_cost/year/{year}/month/{month}": {
      "get": {
        "operationId": "getCostExplorerMonthly",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Cost Explorer Monthly",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "year",
            "name": "year",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "month",
            "name": "month",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.MonthlycostExplorerResult"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/costexplorer/monthly_cost/year/{year}/month/{month}/export": {
      "post": {
        "operationId": "exportMonthBillCSV",
        "consumes": ["application/json"],
        "produces": ["application/octet-stream"],
        "summary": "Cost Explorer Monthly",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "year",
            "name": "year",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "month",
            "name": "month",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/apiHttpBody"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/credit_risk_levels": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "ListAllCreditRiskLevel",
        "summary": "List All CreditRisk Level",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/forms.CreditRiskLevel"
              }
            }
          }
        }
      },
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "CreateCreditRiskLevel",
        "summary": "Create CreditRisk Level",
        "parameters": [
          {
            "description": "CreditRiskLevel",
            "name": "CreditRiskLevel",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CreditRiskLevelInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CreditRiskLevel"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/credit_risk_levels/{credit_risk_level_id}": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetCreditRiskLevel",
        "summary": "Get CreditRisk Level",
        "parameters": [
          {
            "type": "string",
            "description": "credit_risk_level_id",
            "name": "credit_risk_level_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CreditRiskLevel"
            }
          }
        }
      },
      "put": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "UpdateCreditRiskLevel",
        "summary": "Update CreditRisk Level",
        "parameters": [
          {
            "type": "string",
            "description": "credit_risk_level_id",
            "name": "credit_risk_level_id",
            "in": "path",
            "required": true
          },
          {
            "description": "CreditRiskLevel",
            "name": "CreditRiskLevel",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CreditRiskLevelInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      },
      "delete": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "DeleteCreditRiskLevel",
        "summary": "Delete CreditRisk Level",
        "parameters": [
          {
            "type": "string",
            "description": "credit_risk_level_id",
            "name": "credit_risk_level_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/unit_filters": {
      "get": {
        "operationId": "GetUnitTypeTree",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Get Credit Type Tree",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.UnitFilterNode"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/unit_filters/quick_selections/{target}": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetUnitFilterQuickSelection",
        "summary": "Get Unit Filter Quick Selection",
        "parameters": [
          {
            "description": "target",
            "name": "target",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/forms.UnitFilterSlim"
              }
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/cost_quota": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetTenantCostQuota",
        "summary": "Get Tenant Cost Quota",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CostQuota"
            }
          }
        }
      },
      "put": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "SetTenantCostQuota",
        "summary": "Set Tenant Cost Quota",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "CostQuota",
            "name": "CostQuota",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CostQuota"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CostQuota"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/credit_risk_levels/{credit_risk_level_id}/risk_close_policy": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetCreditRiskClosePolicy",
        "summary": "Get Credit Risk Close Policy",
        "parameters": [
          {
            "type": "string",
            "description": "credit_risk_level_id",
            "name": "credit_risk_level_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantClosePolicy"
            }
          }
        }
      },
      "put": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "CreateOrUpdateCreditRiskClosePolicy",
        "summary": "Create Or Update Credit Risk Close Policy",
        "parameters": [
          {
            "type": "string",
            "description": "credit_risk_level_id",
            "name": "credit_risk_level_id",
            "in": "path",
            "required": true
          },
          {
            "description": "policy",
            "name": "policy",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.TenantClosePolicyInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      },
      "delete": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "DeleteCreditRiskClosePolicy",
        "summary": "Delete Credit Risk Close Policy",
        "parameters": [
          {
            "type": "string",
            "description": "credit_risk_level_id",
            "name": "credit_risk_level_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/credit_types": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetCreditTypeTree",
        "summary": "Get Credit Type Tree",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CreditTypeNode"
            }
          }
        }
      },
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "CreateCreditType",
        "summary": "Create Credit Type",
        "parameters": [
          {
            "description": "credit_type",
            "name": "credit_type",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CreditType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CreditTypeSlim"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/credit_types/{credit_type_id}": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetCreditType",
        "summary": "Get Credit Type",
        "parameters": [
          {
            "type": "string",
            "description": "credit_type_id",
            "name": "credit_type_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CreditType"
            }
          }
        }
      },
      "put": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "updateCreditType",
        "summary": "Update Credit Type",
        "parameters": [
          {
            "type": "string",
            "description": "credit_type_id",
            "name": "credit_type_id",
            "in": "path",
            "required": true
          },
          {
            "description": "credit_type",
            "name": "credit_type",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CreditType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CreditTypeSlim"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/closing": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetTenantCreditClosureProcessInfo",
        "summary": "Get Tenant Credit Closure Process Info",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantCloseInfo"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/closing/actions/cancel": {
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "CancelTenantClosureProcess",
        "summary": "Cancel Tenant Closure Process",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/closing/reasons": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetTenantClosureReason",
        "summary": "Get Tenant Closure Reason",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/closing/reasons/{reason}/actions/run": {
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "RunTenantClosureProcess",
        "summary": "Run Tenant Closure Process",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "reason",
            "name": "reason",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/closing/reasons/{reason}/policies": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "getTenantClosurePolicy",
        "summary": "Get Tenant Closure Policy",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "reason",
            "name": "reason",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantClosePolicy"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/risk_close_policy": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetTenantCreditRiskClosePolicy",
        "summary": "Get Tenant Credit Risk Close Policy",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantClosePolicy"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/tenant_risk_close": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetTenantCreditRiskCloseInfo",
        "summary": "Get Tenant Credit Risk Close Info",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantCloseInfo"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/tenant_risk_close/actions/cancel": {
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "CancelTenantCreditRiskClose",
        "summary": "CancelTenant Credit Risk Close",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/tenant_risk_close/actions/run": {
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "RunTenantCreditRiskClose",
        "summary": "Run Tenant Credit Risk Close",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/credit_risk_level": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetTenantCreditRiskLevel",
        "summary": "Get Tenant CreditRisk Level",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CreditRiskLevel"
            }
          }
        }
      },
      "put": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "UpdateTenantCreditRiskLevel",
        "summary": "Update Tenant CreditRisk Level",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "CreditRiskLevel",
            "name": "CreditRiskLevel",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CreditRiskLevelIDInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/credit_risk_levels/{credit_risk_level_id}/cost_quota": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "GetCreditRiskLevelCostQuota",
        "summary": "GetCreditRiskLevelCostQuota",
        "parameters": [
          {
            "type": "string",
            "description": "credit_risk_level_id",
            "name": "credit_risk_level_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CostQuota"
            }
          }
        }
      },
      "put": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "operationId": "UpdateCreditRiskLevelCostQuota",
        "summary": "UpdateCreditRiskLevelCostQuota",
        "parameters": [
          {
            "type": "string",
            "description": "credit_risk_level_id",
            "name": "credit_risk_level_id",
            "in": "path",
            "required": true
          },
          {
            "description": "CostQuota",
            "name": "CostQuota",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CostQuota"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CostQuota"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/discounts": {
      "get": {
        "operationId": "ListTenantDiscount",
        "description": "List tenant discount",
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "List Tenant Discount",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/forms.Discount"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "CreateTenantDiscount",
        "description": "Create tenant discount",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "Create Tenant Discount",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "discount",
            "name": "discount",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.Discount"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.Discount"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/discounts/{discount_id}": {
      "put": {
        "operationId": "UpdateTenantDiscount",
        "description": "Update tenant discount",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "Update Tenant Discount",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "discount_id",
            "name": "discount_id",
            "in": "path",
            "required": true
          },
          {
            "description": "discount",
            "name": "discount",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.Discount"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.Discount"
            }
          }
        }
      },
      "delete": {
        "operationId": "ReclaimTenantDiscount",
        "description": "Reclaim tenant discount",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "Reclaim Tenant Discount",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "discount_id",
            "name": "discount_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/invoices/{invoice_id}/confirm": {
      "put": {
        "operationId": "ConfirmInvoice",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Confirm Invoice",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "invoice_id",
            "name": "invoice_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.Invoice"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/invoices/{invoice_id}/send": {
      "put": {
        "operationId": "SendInvoice",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Send Invoice",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "invoice_id",
            "name": "invoice_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.Invoice"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/measures": {
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Cost Units",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "Cost",
            "name": "Cost",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.UnitCostsInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.UnitCosts"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/measures/dryrun": {
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Cost Units Dryrun",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "Cost",
            "name": "Cost",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.UnitCostsInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.UnitCosts"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/units": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "List Units",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/forms.UnitInfo"
              }
            }
          }
        }
      },
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Create Unit",
        "parameters": [
          {
            "description": "unit",
            "name": "unit",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.UnitInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.UnitInfo"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/units/_bulk": {
      "post": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Bulk CreateOrUpdate Unit",
        "parameters": [
          {
            "description": "units",
            "name": "unit",
            "in": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/forms.UnitInfo"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/units/{unit_key}": {
      "get": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Get Unit",
        "parameters": [
          {
            "type": "string",
            "description": "UnitKey",
            "name": "unit_key",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.UnitInfo"
            }
          }
        }
      },
      "put": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Update Unit",
        "parameters": [
          {
            "type": "string",
            "description": "UnitKey",
            "name": "unit_key",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.UnitInfo"
            }
          }
        }
      },
      "delete": {
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Delete Unit",
        "parameters": [
          {
            "type": "string",
            "description": "UnitKey",
            "name": "unit_key",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/billing_company": {
      "get": {
        "operationId": "ListBillingCompany",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "List Billing Company",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/forms.BillingCompany"
              }
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/billing_company": {
      "get": {
        "operationId": "GetBillingCompany",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Get Tenant BillingCompany",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantBillingCompany"
            }
          }
        }
      },
      "put": {
        "operationId": "UpdateBillingCompany",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Update Tenant BillingCompany",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "TenantBillingCompany",
            "name": "Query",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.TenantBillingCompanyInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantBillingCompany"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/global-discounts": {
      "get": {
        "operationId": "ListGlobalDiscount",
        "description": "List global discount",
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "List Global Discount",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/forms.Discount"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "CreateGloablDiscount",
        "description": "Create global discount",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "Create Global Discount",
        "parameters": [
          {
            "description": "discount",
            "name": "discount",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.Discount"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.Discount"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/global-discounts/{discount_id}": {
      "put": {
        "operationId": "UpdateGlobalDiscount",
        "description": "Update global discount",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "Update Global Discount",
        "parameters": [
          {
            "type": "string",
            "description": "discount_id",
            "name": "discount_id",
            "in": "path",
            "required": true
          },
          {
            "description": "discount",
            "name": "discount",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.Discount"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.Discount"
            }
          }
        }
      },
      "delete": {
        "operationId": "ReclaimGlobalDiscount",
        "description": "Reclaim global discount",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "Reclaim Global Discount",
        "parameters": [
          {
            "type": "string",
            "description": "discount_id",
            "name": "discount_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.OKType"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/plans/ondemand/global-discounts": {
      "get": {
        "operationId": "GetOnDemandGlobalDiscount",
        "description": "Get Global Discount",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Discount"],
        "summary": "Get Global Discount(deprecated)",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.DiscountInfo"
            }
          }
        }
      },
      "put": {
        "operationId": "UpdateOnDemandGlobalDiscount",
        "description": "Update global discount",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Discount"],
        "summary": "Update Global Discount",
        "parameters": [
          {
            "description": "discount",
            "name": "discount",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.DiscountInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.DiscountInfo"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/plans": {
      "get": {
        "description": "Get Tenant Plan Info",
        "operationId": "GetTenantPlanInfo",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Plan"],
        "summary": "Get Tenant Plan Info",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.TenantPlanInfo"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/plans/ondemand/discounts": {
      "get": {
        "operationId": "GetOndemandTenantDiscount",
        "description": "Get discount",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "Get Tenant DiscountInfo",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.DiscountInfo"
            }
          }
        }
      },
      "put": {
        "operationId": "UpdateOndemandTenantDiscount",
        "description": "update discount",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "Update Tenant DiscountInfo",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          },
          {
            "description": "discount",
            "name": "discount",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.DiscountInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.DiscountInfo"
            }
          }
        }
      }
    },
    "/api/v1/devops/billing-proxy/api/v1/billing/tenants/{tenant_id}/plans/ondemand/effective-discounts": {
      "get": {
        "description": "GetTenantEffectiveDiscounts",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["DiscountInfo"],
        "summary": "Get Tenant Effective DiscountInfo",
        "parameters": [
          {
            "type": "string",
            "description": "tenant_id",
            "name": "tenant_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.DiscountInfo"
            }
          }
        }
      }
    },
    "/api/v1/devops/secondaryconfirm/diff": {
      "get": {
        "operationId": "GetConfigChangeDiff",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Get Config Change for a Specific PR",
        "parameters": [
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "project_id",
            "name": "project_id",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "config_revision_id",
            "name": "config_revision_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.DiffConfigChangeResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/secondaryconfirm/list": {
      "get": {
        "operationId": "ListConfigChanges",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Get Config Changes for a cluster",
        "parameters": [
          {
            "type": "string",
            "description": "cluster_id",
            "name": "cluster_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListConfigChangeResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/secondaryconfirm/apply": {
      "post": {
        "operationId": "ApplyConfigChange",
        "description": "ApplyConfigChange",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "tags": ["Profile"],
        "summary": "ApplyConfigChange",
        "parameters": [
          {
            "name": "ApplyReq",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.ApplyConfigChangeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances": {
      "get": {
        "operationId": "ListClusterMaintenances",
        "description": "List cluster maintenances",
        "produces": ["application/json"],
        "consumes": ["application/json"],
        "tags": ["ListClusterMaintenances"],
        "summary": "List cluster maintenances",
        "parameters": [
          {
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "name": "per_page",
            "in": "query"
          },
          {
            "type": "array",
            "description": "status: Pending OR Running",
            "items": {
              "type": "string"
            },
            "name": "statues",
            "in": "query",
            "required": false
          },
          {
            "type": "array",
            "description": "project ids, should be an array of int",
            "items": {
              "type": "integer"
            },
            "name": "project_ids",
            "in": "query",
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListMaintenancesResp"
            }
          }
        }
      },
      "post": {
        "operationId": "CreateMaintenance",
        "description": "Create maintenance",
        "produces": ["application/json"],
        "consumes": ["application/json"],
        "tags": ["CreateMaintenance"],
        "summary": "Create Maintenance",
        "parameters": [
          {
            "name": "CreateMaintenanceReq",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.CreateMaintenanceReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.CreateMaintenanceResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances/{id}": {
      "get": {
        "operationId": "GetClusterMaintenance",
        "description": "Get cluster maintenance",
        "produces": ["application/json"],
        "consumes": ["application/json"],
        "tags": ["ListClusterMaintenances"],
        "summary": "Get cluster maintenance",
        "parameters": [
          {
            "type": "integer",
            "description": "get maintenance info for some maintenance id",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "type": "boolean",
            "description": "executions",
            "name": "with_executions",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.GetMaintenanceResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances/{id}/close": {
      "post": {
        "operationId": "CloseMaintenance",
        "description": "Close maintenance",
        "produces": ["application/json"],
        "consumes": ["application/json"],
        "tags": ["CloseMaitenance"],
        "summary": "Close maintenance",
        "parameters": [
          {
            "type": "integer",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances/{id}/executions/{exec_id}/start": {
      "post": {
        "operationId": "StartMaintenanceExecution",
        "description": "Start maintenance execution",
        "produces": ["application/json"],
        "consumes": ["application/json"],
        "tags": ["StartMaitenanceExecution"],
        "summary": "Start maintenance execution",
        "parameters": [
          {
            "type": "integer",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "name": "exec_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances/{id}/executions/{exec_id}/finish": {
      "post": {
        "operationId": "FinishMaintenanceExecution",
        "description": "Finish maintenanceExecution",
        "produces": ["application/json"],
        "consumes": ["application/json"],
        "tags": ["FinishMaitenanceExcecution"],
        "summary": "Finish maintenance execution",
        "parameters": [
          {
            "type": "integer",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "name": "exec_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/devops/cluster/maintenances/{id}/executions/{exec_id}/cancel": {
      "post": {
        "operationId": "CancelhMaintenanceExecution",
        "description": "Cancel maintenanceExecution",
        "produces": ["application/json"],
        "consumes": ["application/json"],
        "tags": ["CancelMaitenanceExcecution"],
        "summary": "Cancel maintenance execution",
        "parameters": [
          {
            "type": "integer",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "name": "exec_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/devops/audit/cluster-maintenance": {
      "get": {
        "operationId": "GetAuditMaintenanceLogs",
        "description": "Get Audit Logs for some Maintenance",
        "produces": ["application/json"],
        "consumes": ["application/json"],
        "tags": ["Get Audit Logs for Maintenance"],
        "parameters": [
          {
            "description": "maintenance id",
            "name": "maintenance_id",
            "in": "query",
            "required": true,
            "type": "number"
          },
          {
            "description": "page",
            "name": "page",
            "in": "query",
            "default": false,
            "type": "string"
          },
          {
            "description": "per_page",
            "name": "per_page",
            "in": "query",
            "default": false,
            "type": "number"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.GetAuditLogResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/monitoring/certificate/regions/{region}": {
      "get": {
        "operationId": "ListCertificates",
        "description": "List certificate",
        "produces": ["application/json"],
        "tags": ["CertificateInfo"],
        "summary": "List Certificate",
        "parameters": [
          {
            "type": "string",
            "description": "region",
            "name": "region",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "page,default=1,min=1,max=100",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "per_page,default=20,min=1,max=100",
            "name": "per_page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/forms.Certificate"
              }
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents": {
      "post": {
        "operationId": "CreateIncident",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Create a new incident",
        "parameters": [
          {
            "description": "CreateIncidentRequest",
            "name": "CreateIncidentRequest",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/incident.CreateIncidentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}": {
      "put": {
        "operationId": "UpdateIncident",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Update an existing incident",
        "parameters": [
          {
            "type": "string",
            "description": "incident_id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "description": "UpdateIncidentRequest",
            "name": "UpdateIncidentRequest",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/incident.UpdateIncidentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    },
    "/api/v1/devops/incidents/{incident_id}/logs": {
      "get": {
        "operationId": "ListIncidentLogItems",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "List log items for an incident",
        "parameters": [
          {
            "type": "string",
            "description": "incident_id",
            "name": "incident_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.ListIncidentLogItems"
            }
          }
        }
      },
      "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/forms.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/{logitem_id}": {
      "get": {
        "operationId": "GetIncidentLogItem",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Get a single incident log item",
        "parameters": [
          {
            "type": "string",
            "description": "incident_id",
            "name": "incident_id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "logitem_id",
            "name": "logitem_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/forms.IncidentLogItem"
            }
          }
        }
      },
      "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": "logitem_id",
            "in": "path",
            "required": true
          },
          {
            "description": "request",
            "name": "req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/forms.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}/feishu_message": {
      "post": {
        "operationId": "GenerateFeishuMessage",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "summary": "Generate feishu message for an incident",
        "parameters": [
          {
            "type": "string",
            "description": "incident_id",
            "name": "incident_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.BaseResp"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "apiHttpBody": {
      "type": "object",
      "properties": {
        "content_type": {
          "type": "string",
          "description": "The HTTP Content-Type header value specifying the content type of the body."
        },
        "data": {
          "type": "string",
          "format": "byte",
          "description": "The HTTP request/response body as raw binary."
        },
        "extensions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/protobufAny"
          },
          "description": "Application specific response metadata. Must be set in the first response\nfor streaming APIs."
        }
      },
      "description": "Message that represents an arbitrary HTTP body. It should only be used for\npayload formats that can't be represented as JSON, such as raw binary or\nan HTML page.\n\n\nThis message can be used both in streaming and non-streaming API methods in\nthe request as well as the response.\n\nIt can be used as a top-level request field, which is convenient if one\nwants to extract parameters from either the URL or HTTP template into the\nrequest fields and also want access to the raw HTTP body.\n\nExample:\n\n    message GetResourceRequest {\n      // A unique request id.\n      string request_id = 1;\n\n      // The raw HTTP body is bound to this field.\n      google.api.HttpBody http_body = 2;\n    }\n\n    service ResourceService {\n      rpc GetResource(GetResourceRequest) returns (google.api.HttpBody);\n      rpc UpdateResource(google.api.HttpBody) returns\n      (google.protobuf.Empty);\n    }\n\nExample with streaming methods:\n\n    service CaldavService {\n      rpc GetCalendar(stream google.api.HttpBody)\n        returns (stream google.api.HttpBody);\n      rpc UpdateCalendar(stream google.api.HttpBody)\n        returns (stream google.api.HttpBody);\n    }\n\nUse of this type only changes how the request and response bodies are\nhandled, all other features will continue to work unchanged."
    },
    "protobufAny": {
      "type": "object",
      "properties": {
        "type_url": {
          "type": "string",
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `http`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `http` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `http` (or the empty scheme) might be\nused with implementation specific semantics."
        },
        "value": {
          "type": "string",
          "format": "byte",
          "description": "Must be a valid serialized protocol buffer of the above specified type."
        }
      },
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := ptypes.MarshalAny(foo)\n     ...\n     foo := \u0026pb.Foo{}\n     if err := ptypes.UnmarshalAny(any, foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
    },
    "forms.OKType": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "example": "ok"
        }
      }
    },
    "forms.AccessLog": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string"
        },
        "happened_on": {
          "type": "integer"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "user": {
          "type": "string"
        }
      }
    },
    "forms.AddTrailCredit": {
      "type": "object",
      "properties": {
        "credit_amount": {
          "type": "integer"
        }
      }
    },
    "forms.CalcNodeProfilesReq": {
      "type": "object",
      "properties": {
        "org_id": {
          "type": "string",
          "format": "uint64"
        },
        "project_id": {
          "type": "string",
          "format": "uint64"
        },
        "provider": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "is_dev_tier": {
          "type": "boolean",
          "format": "boolean"
        }
      }
    },
    "forms.CalcNodeProfileResp": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer"
        },
        "component_node_profiles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.NodeProfilesWithComponentType"
          }
        },
        "message": {
          "type": "string"
        }
      },
      "required": ["component_node_profiles"]
    },
    "forms.CentralUser": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "first_name": {
          "type": "string"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "last_name": {
          "type": "string"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "forms.CentralUserProfile": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "name": {
          "type": "string"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "forms.ComponentScale": {
      "type": "object",
      "required": ["component_type", "node_profile_name", "replicas"],
      "properties": {
        "component_type": {
          "type": "string"
        },
        "node_profile_name": {
          "type": "string"
        },
        "replicas": {
          "type": "integer"
        },
        "storage_size_gi": {
          "type": "integer"
        }
      }
    },
    "forms.CreateAPIKey": {
      "type": "object",
      "properties": {
        "creator_user_id": {
          "type": "string",
          "example": "0"
        },
        "key_name": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "forms.CreateAPIKeyResp": {
      "type": "object",
      "properties": {
        "api_key": {
          "type": "string"
        }
      }
    },
    "forms.CreditsHistoryItem": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "integer"
        },
        "created": {
          "type": "integer"
        }
      }
    },
    "forms.DashboardLink": {
      "type": "object",
      "properties": {
        "link": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "forms.DevTierStats": {
      "type": "object",
      "properties": {
        "aws_active_clusters_count": {
          "type": "integer"
        },
        "gcp_active_clusters_count": {
          "type": "integer"
        }
      }
    },
    "forms.Discount": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "discount": {
          "type": "string"
        },
        "discount_code": {
          "type": "string"
        },
        "discount_id": {
          "type": "integer"
        },
        "discount_sid": {
          "type": "string"
        },
        "expired_at": {
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "started_at": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "unit_filters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.UnitFilterSlim"
          }
        },
        "usage": {
          "type": "string"
        }
      }
    },
    "forms.DiscountInfo": {
      "type": "object",
      "properties": {
        "discount": {
          "type": "string"
        }
      }
    },
    "forms.EmptyResponse": {
      "type": "object"
    },
    "forms.EnableDevTier": {
      "type": "object",
      "properties": {
        "enable_on_aws": {
          "type": "boolean"
        },
        "enable_on_gcp": {
          "type": "boolean"
        }
      },
      "required": ["enable_on_aws", "enable_on_gcp"]
    },
    "forms.GetDashboardLinksResp": {
      "type": "object",
      "properties": {
        "dashboards": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.DashboardLink"
          }
        }
      }
    },
    "forms.GetDashboardStatsResq": {
      "type": "object",
      "properties": {
        "dev_tier": {
          "$ref": "#/definitions/forms.DevTierStats"
        }
      }
    },
    "forms.GlobalDiscount": {
      "type": "object",
      "properties": {
        "discount": {
          "type": "string"
        }
      },
      "required": ["discount"]
    },
    "forms.ListAccessLogResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.AccessLog"
          }
        },
        "total": {
          "type": "string"
        }
      }
    },
    "forms.ListCentralUsersResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.CentralUser"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.ListProvidersResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Provider"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.ListRegionResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.ProviderRegion"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.ListRolesResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Role"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.ListTenantClusterLifeCycleResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.TenantClusterLifecycle"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.ListTenantClustersResp": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.TenantCluster"
          }
        },
        "message": {
          "type": "string"
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.ListTenantResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Tenant"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.ListTenantUsersResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.TenantUser"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.NodeProfile": {
      "type": "object",
      "properties": {
        "default_node_num": {
          "type": "integer"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "max_storage_size_gi": {
          "type": "integer"
        },
        "min_storage_size_gi": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        }
      },
      "required": ["id", "max_storage_size_gi", "min_storage_size_gi"]
    },
    "forms.NodeProfileCompute": {
      "type": "object",
      "properties": {
        "cpu": {
          "type": "integer"
        },
        "memory_mi": {
          "type": "integer"
        }
      }
    },
    "forms.NodeProfileOfComponent": {
      "type": "object",
      "properties": {
        "compute": {
          "$ref": "#/definitions/forms.NodeProfileCompute"
        },
        "name": {
          "type": "string"
        },
        "storage_gi": {
          "type": "integer"
        }
      }
    },
    "forms.NodeProfilesWithComponentType": {
      "type": "object",
      "properties": {
        "component_type": {
          "description": "core.proto:ComponentType.string()",
          "type": "string"
        },
        "profiles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.NodeProfile"
          }
        }
      }
    },
    "forms.PatchTenantReq": {
      "type": "object",
      "properties": {
        "account_manager": {
          "description": "the email address of account manager, must end with @pingcap.com",
          "type": "string"
        },
        "alias": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        }
      }
    },
    "forms.Privilege": {
      "type": "object",
      "required": ["operation", "resource"],
      "properties": {
        "operation": {
          "type": "string"
        },
        "resource": {
          "type": "string"
        }
      }
    },
    "forms.Provider": {
      "type": "object",
      "required": ["name"],
      "properties": {
        "name": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "forms.ProviderRegion": {
      "type": "object",
      "properties": {
        "area": {
          "type": "string"
        },
        "country_code": {
          "type": "string"
        },
        "default_backup_time": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "is_public": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "opened_org_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "priority": {
          "type": "integer"
        },
        "provider": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": ["default_backup_time", "name"]
    },
    "forms.Role": {
      "type": "object",
      "required": ["name", "privileges"],
      "properties": {
        "id": {
          "type": "string",
          "example": "0"
        },
        "name": {
          "type": "string"
        },
        "privileges": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Privilege"
          }
        }
      }
    },
    "forms.ScaleComponentReq": {
      "type": "object",
      "required": ["components"],
      "properties": {
        "components": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.ComponentScale"
          }
        }
      }
    },
    "forms.SystemSettings": {
      "type": "object",
      "properties": {
        "enable_dev_tier": {
          "$ref": "#/definitions/forms.EnableDevTier"
        }
      },
      "required": ["enable_dev_tier"]
    },
    "forms.Tenant": {
      "type": "object",
      "properties": {
        "account_manager": {
          "type": "string"
        },
        "alias": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "discount": {
          "type": "integer"
        },
        "discount_description": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "has_discount": {
          "type": "boolean"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "kind": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "plan": {
          "type": "string"
        },
        "remaining_credit": {
          "type": "integer"
        },
        "status": {
          "type": "string"
        },
        "third_party_account_code": {
          "type": "string"
        },
        "third_party_account_provider": {
          "type": "string"
        },
        "timezone": {
          "type": "integer"
        },
        "total_credit": {
          "type": "integer"
        }
      },
      "required": ["id"]
    },
    "forms.TenantCluster": {
      "type": "object",
      "properties": {
        "create_time": {
          "type": "integer"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "is_dev_tier": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "profile": {
          "type": "string"
        },
        "project_id": {
          "type": "string",
          "example": "0"
        },
        "project_name": {
          "type": "string"
        },
        "provider": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_components": {
          "$ref": "#/definitions/forms.TenantComponents"
        },
        "version": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "provider",
        "region",
        "tenant_components",
        "is_dev_tier"
      ]
    },
    "forms.TenantClusterLifecycle": {
      "type": "object",
      "properties": {
        "created_at": {
          "type": "integer"
        },
        "deleted_at": {
          "type": "integer"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "project_id": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "forms.TenantComponent": {
      "type": "object",
      "properties": {
        "node_profile": {
          "$ref": "#/definitions/forms.NodeProfileOfComponent"
        },
        "replicas": {
          "type": "integer"
        }
      }
    },
    "forms.TenantComponents": {
      "type": "object",
      "properties": {
        "pd": {
          "$ref": "#/definitions/forms.TenantComponent"
        },
        "tidb": {
          "$ref": "#/definitions/forms.TenantComponent"
        },
        "tiflash": {
          "$ref": "#/definitions/forms.TenantComponent"
        },
        "tikv": {
          "$ref": "#/definitions/forms.TenantComponent"
        }
      }
    },
    "forms.PocReq": {
      "type": "object",
      "properties": {
        "approve": {
          "type": "boolean"
        }
      },
      "required": ["approve"]
    },
    "forms.TenantCreditsHistory": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "integer"
        },
        "history": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.CreditsHistoryItem"
          }
        }
      }
    },
    "forms.TenantRemainingCredits": {
      "type": "object",
      "properties": {
        "remaining_credit": {
          "type": "integer"
        }
      }
    },
    "forms.TenantUser": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "first_name": {
          "type": "string"
        },
        "id": {
          "type": "string",
          "example": "0"
        },
        "last_name": {
          "type": "string"
        },
        "org_id": {
          "type": "string",
          "example": "0"
        },
        "role": {
          "type": "string"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "status": {
          "type": "string"
        }
      }
    },
    "forms.Address": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "line1": {
          "type": "string"
        },
        "line2": {
          "type": "string"
        },
        "postal_code": {
          "type": "string"
        },
        "state": {
          "type": "string"
        }
      }
    },
    "forms.BillingCompany": {
      "type": "object",
      "properties": {
        "company_key": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "payment_sub_code": {
          "type": "string"
        }
      }
    },
    "forms.BillingDetails": {
      "type": "object",
      "properties": {
        "address": {
          "$ref": "#/definitions/forms.Address"
        },
        "email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      }
    },
    "forms.BillingInformation": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string"
        },
        "company_name": {
          "type": "string"
        },
        "country_code": {
          "type": "string"
        },
        "line1": {
          "type": "string"
        },
        "line2": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "tax_vat": {
          "type": "string"
        },
        "postal_code": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "forms.BillingInformationInput": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string"
        },
        "company_name": {
          "type": "string"
        },
        "country_code": {
          "type": "string"
        },
        "line1": {
          "type": "string"
        },
        "line2": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "tax_vat": {
          "type": "string"
        },
        "postal_code": {
          "type": "string"
        }
      }
    },
    "forms.BindedSupportPlan": {
      "type": "object",
      "properties": {
        "active_date": {
          "type": "string"
        },
        "binded_support_plan_id": {
          "type": "integer"
        },
        "closed_date": {
          "type": "string"
        },
        "fixed_charge_price": {
          "type": "string"
        },
        "level": {
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "status": {
          "type": "string"
        },
        "support_plan_id": {
          "type": "integer"
        },
        "support_price_percentage": {
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "forms.Card": {
      "type": "object",
      "properties": {
        "brand": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "exp_month": {
          "type": "string",
          "example": "0"
        },
        "exp_year": {
          "type": "string",
          "example": "0"
        },
        "fingerprint": {
          "type": "string"
        },
        "funding": {
          "type": "string"
        },
        "last4": {
          "type": "string"
        }
      }
    },
    "forms.SupportPlan": {
      "type": "object",
      "properties": {
        "fixed_charge_price": {
          "type": "string"
        },
        "level": {
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "support_plan_id": {
          "type": "integer"
        },
        "support_price_percentage": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "forms.SupportPlanInput": {
      "type": "object",
      "properties": {
        "fixed_charge_price": {
          "type": "string"
        },
        "level": {
          "type": "string"
        },
        "public": {
          "type": "boolean"
        },
        "support_price_percentage": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "forms.CategoryCosts": {
      "type": "object",
      "properties": {
        "category_unit_costs": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/forms.Price"
          }
        },
        "cost_price": {
          "type": "string"
        },
        "raw_price": {
          "type": "string"
        },
        "unit_costs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.UnitCosts"
          }
        },
        "order": {
          "type": "number"
        }
      },
      "required": ["cost_price"]
    },
    "forms.Contract": {
      "type": "object",
      "properties": {
        "contact_email": {
          "type": "string"
        },
        "contract_id": {
          "type": "string"
        },
        "contract_type": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "file_path": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "last_operator_id": {
          "type": "integer"
        },
        "reason_for_last_operation": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        },
        "updated_at": {
          "type": "string"
        },
        "operated_at": {
          "type": "string"
        }
      },
      "required": ["contract_id"]
    },
    "forms.ContractInput": {
      "type": "object",
      "required": ["contact_email", "file_path"],
      "properties": {
        "contact_email": {
          "type": "string"
        },
        "contract_type": {
          "type": "string"
        },
        "file_path": {
          "type": "string"
        }
      }
    },
    "forms.ContractsResponse": {
      "type": "object",
      "properties": {
        "contracts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Contract"
          }
        },
        "page": {
          "type": "integer"
        },
        "page_size": {
          "type": "integer"
        },
        "total_results": {
          "type": "integer"
        }
      }
    },
    "forms.CostExplorerQuery": {
      "type": "object",
      "properties": {
        "end_date": {
          "type": "string"
        },
        "start_date": {
          "type": "string"
        }
      }
    },
    "forms.CostExplorerResult": {
      "type": "object",
      "properties": {
        "binded_invoice_costs": {
          "$ref": "#/definitions/forms.Costs"
        },
        "credits_costs": {
          "$ref": "#/definitions/forms.Costs"
        },
        "unbind_invoice_costs": {
          "$ref": "#/definitions/forms.Costs"
        }
      }
    },
    "forms.CostQuota": {
      "type": "object",
      "properties": {
        "cost_quota_limit": {
          "type": "string"
        }
      }
    },
    "forms.Costs": {
      "type": "object",
      "properties": {
        "category_item_unit_costs": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/forms.CategoryCosts"
          }
        },
        "kind_category_units_costs": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/forms.CategoryCosts"
          }
        },
        "category_unit_costs": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/forms.Price"
          }
        },
        "category_use_item": {
          "type": "boolean"
        },
        "cost_price": {
          "type": "string"
        },
        "label_unit_costs": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/forms.LabelCosts"
          }
        },
        "raw_price": {
          "type": "string"
        },
        "discount_price": {
          "type": "string"
        },
        "unit_costs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.UnitCosts"
          }
        }
      },
      "required": ["cost_price", "raw_price"]
    },
    "forms.CreateCreditsPackageReq": {
      "type": "object",
      "properties": {
        "bind_types": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.CreditTypeSlim"
          }
        },
        "expired_date": {
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "start_date": {
          "type": "string"
        },
        "total_credits": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "usage": {
          "type": "string"
        },
        "discount_enabled": {
          "type": "boolean"
        }
      }
    },
    "forms.CreateInvoiceReq": {
      "type": "object",
      "properties": {
        "start_date": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "forms.CloseAction": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string"
        },
        "action_time_in_hour": {
          "type": "integer"
        }
      }
    },
    "forms.CloseActionStatusInner": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "forms.CloseActionsStatus": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/forms.CloseActionStatusInner"
        }
      }
    },
    "forms.ClosePolicy": {
      "type": "object",
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.CloseAction"
          }
        },
        "cancel_action": {
          "$ref": "#/definitions/forms.CloseAction"
        }
      }
    },
    "forms.CreditRiskLevel": {
      "type": "object",
      "properties": {
        "cost_quota": {
          "$ref": "#/definitions/forms.CostQuota"
        },
        "credit_risk_level_id": {
          "type": "integer"
        },
        "credit_risk_level_name": {
          "type": "string"
        },
        "unpayable_at": {
          "type": "string"
        }
      },
      "required": ["credit_risk_level_id"]
    },
    "forms.SwitchResponse": {
      "type": "object",
      "properties": {
        "is_allowed": {
          "type": "boolean"
        },
        "tenant_id": {
          "type": "integer"
        }
      }
    },
    "forms.CreditRiskLevelIDInput": {
      "type": "object",
      "properties": {
        "credit_risk_level_id": {
          "type": "integer"
        }
      }
    },
    "forms.CreditRiskLevelInput": {
      "type": "object",
      "properties": {
        "credit_risk_level_name": {
          "type": "string"
        }
      }
    },
    "forms.CreditType": {
      "type": "object",
      "properties": {
        "category": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "general": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "parent_id": {
          "type": "integer"
        },
        "provider": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "type_id": {
          "type": "integer"
        },
        "unit_key_pattern": {
          "type": "string"
        }
      }
    },
    "forms.CreditTypeNode": {
      "type": "object",
      "properties": {
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.CreditTypeNode"
          }
        },
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type_id": {
          "type": "integer"
        }
      }
    },
    "forms.CreditTypeSlim": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "parent_id": {
          "type": "integer"
        },
        "type_id": {
          "type": "integer"
        }
      }
    },
    "forms.CreditsPackage": {
      "type": "object",
      "properties": {
        "bind_types": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.CreditTypeSlim"
          }
        },
        "closed_date": {
          "type": "string"
        },
        "closed_reason": {
          "type": "string"
        },
        "credits_package_id": {
          "type": "integer"
        },
        "discount_enabled": {
          "type": "boolean"
        },
        "expired_date": {
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "remaining_credits": {
          "type": "string"
        },
        "start_date": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        },
        "total_credits": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "usage": {
          "type": "string"
        },
        "credit_code": {
          "type": "string"
        }
      }
    },
    "forms.CreditsSummary": {
      "type": "object",
      "properties": {
        "available_costed_credits": {
          "type": "string"
        },
        "available_credits": {
          "type": "string"
        },
        "available_remaining_credits": {
          "type": "string"
        },
        "last_credits_closed_date": {
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        },
        "total_costed_credits": {
          "type": "string"
        },
        "total_credits": {
          "type": "string"
        }
      }
    },
    "forms.CostExplorerDetailsResult": {
      "type": "object",
      "properties": {
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.UsageDetails"
          }
        }
      }
    },
    "forms.Invoice": {
      "type": "object",
      "properties": {
        "category_item_unit_costs": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/forms.CategoryCosts"
          }
        },
        "category_unit_costs": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/forms.Price"
          }
        },
        "category_use_item": {
          "type": "boolean"
        },
        "cost_price": {
          "type": "string"
        },
        "end_date": {
          "type": "string"
        },
        "invoice_id": {
          "type": "integer"
        },
        "label_unit_costs": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/forms.LabelCosts"
          }
        },
        "raw_price": {
          "type": "string"
        },
        "start_date": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        },
        "type": {
          "type": "string"
        },
        "unit_costs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.UnitCosts"
          }
        }
      },
      "required": [
        "invoice_id",
        "category_unit_costs",
        "label_unit_costs",
        "cost_price"
      ]
    },
    "forms.UsageDetails": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "string"
        },
        "billable_cost": {
          "type": "string"
        },
        "billed_date": {
          "type": "string"
        },
        "cluster_name": {
          "type": "string"
        },
        "credit_usage": {
          "type": "string"
        },
        "discount_cost": {
          "type": "string"
        },
        "project_name": {
          "type": "string"
        },
        "service": {
          "type": "string"
        }
      }
    },
    "forms.LabelCosts": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/forms.CategoryCosts"
      }
    },
    "forms.MonthlycostExplorerResult": {
      "type": "object",
      "properties": {
        "binded_invoice_costs": {
          "$ref": "#/definitions/forms.Costs"
        },
        "credits_costs": {
          "$ref": "#/definitions/forms.Costs"
        },
        "invoice_costs": {
          "$ref": "#/definitions/forms.Costs"
        },
        "invoice_generated": {
          "type": "boolean"
        },
        "unbind_invoice_costs": {
          "$ref": "#/definitions/forms.Costs"
        },
        "total_costs": {
          "$ref": "#/definitions/forms.Costs"
        }
      }
    },
    "forms.PaymentMethod": {
      "type": "object",
      "properties": {
        "managed_by_sales": {
          "type": "boolean"
        },
        "payable": {
          "type": "boolean"
        },
        "payment_code": {
          "type": "string"
        },
        "payment_method_id": {
          "type": "integer"
        },
        "payment_sub_code": {
          "type": "boolean"
        },
        "payment_type": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        },
        "unpayable_at": {
          "type": "string"
        }
      }
    },
    "forms.PaymentMethodType": {
      "type": "object",
      "properties": {
        "payable": {
          "type": "boolean"
        },
        "payment_type": {
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        }
      }
    },
    "forms.PlanInfo": {
      "type": "object",
      "properties": {
        "closed_at": {
          "type": "string"
        },
        "plan": {
          "type": "string"
        },
        "started_at": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "forms.Price": {
      "type": "object",
      "properties": {
        "cost_price": {
          "type": "string"
        },
        "raw_price": {
          "type": "string"
        },
        "discount_price": {
          "type": "string"
        },
        "order": {
          "type": "number"
        }
      },
      "required": ["cost_price"]
    },
    "forms.SetupIntent": {
      "type": "object",
      "properties": {
        "client_secret": {
          "type": "string"
        },
        "public_key": {
          "type": "string"
        }
      }
    },
    "forms.TenantPlanInfo": {
      "type": "object",
      "properties": {
        "dev_tier_plan_info": {
          "$ref": "#/definitions/forms.PlanInfo"
        },
        "effective_discount": {
          "type": "string"
        },
        "effective_plan": {
          "type": "string"
        },
        "ondemand_plan_info": {
          "$ref": "#/definitions/forms.PlanInfo"
        },
        "poc_credits": {
          "type": "string"
        },
        "poc_plan_info": {
          "$ref": "#/definitions/forms.PlanInfo"
        },
        "tenant_id": {
          "type": "integer"
        }
      }
    },
    "forms.StripeCustomerInfo": {
      "type": "object",
      "properties": {
        "address": {
          "$ref": "#/definitions/forms.Address"
        },
        "dbaas_id": {
          "type": "string"
        },
        "default_source": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "forms.StripeInvoice": {
      "type": "object",
      "properties": {
        "amount_due": {
          "type": "string",
          "example": "0"
        },
        "amount_paid": {
          "type": "string",
          "example": "0"
        },
        "created": {
          "type": "string",
          "example": "0"
        },
        "credit_used": {
          "type": "string",
          "example": "0"
        },
        "currency": {
          "type": "string"
        },
        "due_date": {
          "type": "string",
          "example": "0"
        },
        "id": {
          "type": "string"
        },
        "invoice_pdf": {
          "type": "string"
        },
        "number": {
          "type": "string"
        },
        "paid": {
          "type": "boolean"
        },
        "status": {
          "type": "string"
        },
        "total": {
          "type": "string",
          "example": "0"
        }
      }
    },
    "forms.StripePaymentMethod": {
      "type": "object",
      "properties": {
        "billing_details": {
          "$ref": "#/definitions/forms.BillingDetails"
        },
        "card": {
          "$ref": "#/definitions/forms.Card"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "forms.TenantBillingCompany": {
      "type": "object",
      "properties": {
        "company_key": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "forms.TenantCloseInfo": {
      "type": "object",
      "properties": {
        "close_actions_status": {
          "$ref": "#/definitions/forms.CloseActionsStatus"
        },
        "close_policy": {
          "$ref": "#/definitions/forms.ClosePolicy"
        },
        "closed_at": {
          "type": "string"
        },
        "credit_risk_level_id": {
          "type": "integer"
        },
        "reason": {
          "type": "string"
        },
        "started_at": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_id": {
          "type": "integer"
        }
      }
    },
    "forms.TenantClosePolicy": {
      "type": "object",
      "properties": {
        "close_policy": {
          "$ref": "#/definitions/forms.ClosePolicy"
        },
        "credit_risk_level_id": {
          "type": "integer"
        },
        "policy_id": {
          "type": "integer"
        },
        "reason": {
          "type": "string"
        }
      }
    },
    "forms.TenantClosePolicyInput": {
      "type": "object",
      "properties": {
        "close_policy": {
          "$ref": "#/definitions/forms.ClosePolicy"
        }
      }
    },
    "forms.TenantBillingCompanyInput": {
      "type": "object",
      "properties": {
        "company_key": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        }
      }
    },
    "forms.Subscription": {
      "type": "object",
      "properties": {
        "accepted_date": {
          "type": "string"
        },
        "accepted_user": {
          "type": "string"
        },
        "contract_email": {
          "type": "string"
        },
        "file_path": {
          "type": "string"
        },
        "rejected_date": {
          "type": "string"
        },
        "rejected_user": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "subscription_id": {
          "type": "integer"
        },
        "tenant_id": {
          "type": "integer"
        }
      }
    },
    "forms.SubscriptionChange": {
      "type": "object",
      "properties": {
        "change_user": {
          "type": "string"
        }
      }
    },
    "forms.SubscriptionInput": {
      "type": "object",
      "properties": {
        "contract_email": {
          "type": "string"
        },
        "file_path": {
          "type": "string"
        }
      }
    },
    "forms.UnitCosts": {
      "type": "object",
      "properties": {
        "binded_package_id": {
          "type": "integer"
        },
        "consumed_source": {
          "type": "string"
        },
        "cost": {
          "type": "integer"
        },
        "cost_id": {
          "type": "string"
        },
        "cost_time_stamp": {
          "type": "integer"
        },
        "invoice_id": {
          "type": "integer"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "package_id": {
          "type": "integer"
        },
        "package_version": {
          "type": "integer"
        },
        "price": {
          "type": "string"
        },
        "raw_price": {
          "type": "string"
        },
        "unit": {
          "type": "string"
        }
      }
    },
    "forms.UnitCostsInput": {
      "type": "object",
      "properties": {
        "cost": {
          "type": "integer"
        },
        "cost_id": {
          "description": "optional",
          "type": "string"
        },
        "cost_time_stamp": {
          "type": "integer"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "unit": {
          "type": "string"
        }
      }
    },
    "forms.UnitFilterNode": {
      "type": "object",
      "properties": {
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.UnitFilterNode"
          }
        },
        "description": {
          "type": "string"
        },
        "filter_id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "parent_id": {
          "type": "integer"
        },
        "type_id": {
          "description": "this field is a deprecated",
          "type": "integer"
        }
      }
    },
    "forms.UnitFilterSlim": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "filter_id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "parent_id": {
          "type": "integer"
        },
        "type_id": {
          "description": "this field is a deprecated",
          "type": "integer"
        }
      }
    },
    "forms.UnitInfo": {
      "type": "object",
      "properties": {
        "category": {
          "description": "optional",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "unit": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "forms.ApplyConfigChangeReq": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string"
        },
        "config_revision_id": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "created_time": {
          "type": "integer"
        }
      }
    },
    "forms.DiffConfigChangeResp": {
      "type": "object",
      "properties": {
        "secondary": {
          "$ref": "#/definitions/forms.Secondary"
        }
      }
    },
    "forms.ListConfigChangeReq": {
      "type": "object",
      "properties": {
        "cluster_id": {
          "type": "string"
        }
      }
    },
    "forms.ListConfigChangeResp": {
      "type": "object",
      "properties": {
        "history_secondarys": {
          "$ref": "#/definitions/forms.SecondaryList"
        }
      }
    },
    "forms.Secondary": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "created": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "revision_id": {
          "type": "string"
        },
        "diff_info": {
          "$ref": "#/definitions/forms.ConfigPairs"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "forms.SecondaryList": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/forms.Secondary"
      }
    },
    "forms.ConfigPairs": {
      "type": "object",
      "properties": {
        "creation_timestamp_unix": {
          "type": "integer"
        },
        "config_pair_map": {
          "$ref": "#/definitions/forms.ConfigPairsMap"
        }
      }
    },
    "forms.ConfigPairsMap": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/forms.ConfigPair"
      }
    },
    "forms.ConfigPair": {
      "type": "object",
      "properties": {
        "current_image": {
          "type": "string"
        },
        "current_toml": {
          "type": "string"
        },
        "next_image": {
          "type": "string"
        },
        "next_toml": {
          "type": "string"
        }
      }
    },
    "forms.ListReleaseResp": {
      "type": "object",
      "properties": {
        "releases": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Release"
          }
        },
        "page": {
          "type": "integer"
        },
        "page_size": {
          "type": "integer"
        },
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.ListDeploymentResp": {
      "type": "object",
      "properties": {
        "deployment_list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Deployment"
          }
        },
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        },
        "page": {
          "type": "integer"
        },
        "page_size": {
          "type": "integer"
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.PostDeploymentReq": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "window_start_at": {
          "type": "number"
        },
        "window_end_at": {
          "type": "number"
        },
        "tier": {
          "type": "array"
        },
        "risk_level": {
          "type": "string"
        },
        "hotfix_reason": {
          "type": "string"
        },
        "need_outage": {
          "type": "boolean"
        },
        "note": {
          "type": "string"
        },
        "rollback_plan": {
          "type": "string"
        },
        "change_item_names": {
          "type": "array"
        },
        "staging_test_report": {
          "type": "string"
        },
        "deployments": {
          "type": "array",
          "items": {
            "properties": {
              "order": {
                "type": "number"
              },
              "regions": {
                "type": "array"
              },
              "deploy_method": {
                "type": "string"
              },
              "deploy_cd_link": {
                "type": "string"
              },
              "deploy_description": {
                "type": "string"
              }
            }
          }
        },
        "type": {
          "type": "string"
        },
        "application_name": {
          "type": "string"
        },
        "release_id": {
          "type": "number"
        }
      }
    },
    "forms.UpdateDeploymentResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        }
      }
    },
    "forms.UpdateDeploymentReq": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "window_start_at": {
          "type": "number"
        },
        "window_end_at": {
          "type": "number"
        },
        "region": {
          "type": "array"
        },
        "tier": {
          "type": "string"
        },
        "risk_level": {
          "type": "string"
        },
        "canary_release": {
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "rollback_plan": {
          "type": "string"
        },
        "need_outage": {
          "type": "boolean"
        },
        "change_items": {
          "type": "array"
        },
        "deploy_method": {
          "type": "string"
        },
        "deploy_info": {
          "type": "string"
        },
        "deploy_cd_link": {
          "type": "string"
        },
        "application_name": {
          "type": "string"
        }
      }
    },
    "forms.GetDeploymentResp": {
      "type": "object",
      "properties": {
        "change": {
          "$ref": "#/definitions/forms.Deployment"
        },
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        },
        "release_tickets": {
          "$ref": "#/definitions/forms.ReleaseTickets"
        }
      }
    },
    "forms.PostDeploymentResp": {
      "type": "object",
      "properties": {
        "change_id": {
          "type": "string"
        },
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        }
      }
    },
    "forms.GetReleaseResp": {
      "type": "object",
      "properties": {
        "release": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "status": {
              "type": "string"
            },
            "type": {
              "type": "string"
            },
            "window_start_at": {
              "type": "string"
            },
            "window_end_at": {
              "type": "string"
            },
            "closed_at": {
              "type": "string"
            },
            "tickets": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "summary": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        }
      }
    },
    "forms.ReleaseTickets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "github_pr_locations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "forms.IsOrderReadyResp": {
      "type": "object",
      "properties": {
        "is_ready": {
          "type": "boolean"
        },
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "forms.InitChangeResp": {
      "type": "object",
      "properties": {
        "release_tickets": {
          "$ref": "#/definitions/forms.ReleaseTickets"
        },
        "window_start_at": {
          "type": "number"
        },
        "window_end_at": {
          "type": "number"
        },
        "change_name": {
          "type": "string"
        },
        "release_name": {
          "type": "string"
        },
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        }
      }
    },
    "forms.Release": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "name": {
          "type": "string"
        },
        "window_start_at": {
          "type": "string"
        },
        "window_end_at": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "forms.Deployment.Approval.Tasks": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/forms.Deployment.Approval.Task"
      }
    },
    "forms.Deployment.Approval.Task": {
      "type": "object",
      "properties": {
        "lark_id": {
          "type": "string"
        },
        "user_lark_id": {
          "type": "string"
        },
        "start_time": {
          "type": "number"
        },
        "end_time": {
          "type": "number"
        },
        "user_email": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "forms.Deployment.Approval": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "instance_id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "start_time": {
          "type": "number"
        },
        "end_time": {
          "type": "number"
        },
        "status": {
          "type": "number"
        },
        "tasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Deployment.Approval.Tasks"
          }
        }
      }
    },
    "forms.Deployment.Application": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "owners": {
          "type": "string"
        },
        "cdType": {
          "type": "string"
        }
      }
    },
    "forms.Deployment.Applicant": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "team": {
          "type": "string"
        },
        "lark_id": {
          "type": "string"
        }
      }
    },
    "forms.Deployment.Notification": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "lark_topic_created_at": {
          "type": "string"
        },
        "lark_topic_id": {
          "type": "string"
        }
      }
    },
    "forms.Deployment.Release": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "window_start_at": {
          "type": "string"
        },
        "window_end_at": {
          "type": "string"
        },
        "closed_at": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tickets": {
          "type": "string"
        }
      }
    },
    "forms.Deployment.Detail": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "hotfix_reason": {
          "type": "string"
        },
        "need_outage": {
          "type": "string"
        },
        "canary_release": {
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "rollback_plan": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "staging_test_report": {
          "type": "string"
        }
      }
    },
    "forms.Deployments.Deployment": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "order": {
          "type": "number"
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "status": {
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "deployed_at": {
          "type": "string"
        },
        "info": {
          "type": "object",
          "properties": {
            "argocd": {
              "type": "object",
              "properties": {
                "deploy_prs": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/forms.Deployment.DeployPRs"
                  }
                }
              }
            },
            "manual": {
              "type": "object",
              "properties": {
                "description": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "forms.Deployment.DeployPRs": {
      "type": "object",
      "properties": {
        "repo_owner": {
          "type": "object"
        },
        "repo_name": {
          "type": "object"
        },
        "pr_number": {
          "type": "number"
        },
        "link": {
          "type": "string"
        }
      }
    },
    "forms.Deployment.ChangeItems": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "forms.GetAuditLogResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        },
        "total": {
          "type": "number"
        },
        "audit_logs": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "number"
              },
              "type": {
                "type": "string"
              },
              "object_id": {
                "type": "string"
              },
              "operator": {
                "type": "string"
              },
              "operation": {
                "type": "string"
              },
              "operate_at": {
                "type": "string"
              },
              "details": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "forms.GetApplicationsResp": {
      "type": "object",
      "properties": {
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "forms.ListMaintenancesResp": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Maintenance"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "forms.GetMaintenanceResp": {
      "type": "object",
      "properties": {
        "maintenance": {
          "$ref": "#/definitions/forms.Maintenance"
        }
      }
    },
    "forms.Maintenance": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "lark_notified_at": {
          "type": "string",
          "format": "date-time"
        },
        "instance_id": {
          "type": "number"
        },
        "task": {
          "$ref": "#/definitions/forms.MaintenanceTask"
        }
      }
    },
    "forms.MaintenanceTask": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "project_id": {
          "type": "string"
        },
        "create_at": {
          "type": "string",
          "format": "date-time"
        },
        "description": {
          "type": "string"
        },
        "schedule_time": {
          "type": "string",
          "format": "date-time"
        },
        "deadline": {
          "type": "string",
          "format": "date-time"
        },
        "status": {
          "type": "string"
        },
        "executions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.MaintenanceExecution"
          }
        }
      }
    },
    "forms.MaintenanceExecution": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        },
        "task_id": {
          "type": "number"
        },
        "cluster_id": {
          "type": "string"
        },
        "cancel_reason": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "forms.CreateMaintenanceReq": {
      "type": "object",
      "properties": {
        "project_id": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "deadline": {
          "type": "number"
        },
        "cluster_ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "forms.CreateMaintenanceResp": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number"
        }
      }
    },
    "forms.Deployment": {
      "type": "object",
      "properties": {
        "change_id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "window_start_at": {
          "type": "number"
        },
        "window_end_at": {
          "type": "number"
        },
        "closed_at": {
          "type": "string",
          "format": "date-time"
        },
        "status": {
          "type": "string"
        },
        "status_reason": {
          "type": "string"
        },
        "approval_id": {
          "type": "string"
        },
        "result": {
          "type": "string"
        },
        "risk_level": {
          "type": "string"
        },
        "release_id": {
          "type": "number"
        },
        "application_id": {
          "type": "string"
        },
        "change_item_names": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "change_items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Deployment.ChangeItems"
          }
        },
        "release": {
          "$ref": "#/definitions/forms.Deployment.Release"
        },
        "tier": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "is_hotfix": {
          "type": "boolean"
        },
        "type": {
          "type": "string"
        },
        "detail": {
          "$ref": "#/definitions/forms.Deployment.Detail"
        },
        "deployments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Deployments.Deployment"
          }
        },
        "notification": {
          "$ref": "#/definitions/forms.Deployment.Notification"
        },
        "applicant": {
          "$ref": "#/definitions/forms.Deployment.Applicant"
        },
        "application": {
          "$ref": "#/definitions/forms.Deployment.Application"
        },
        "approval": {
          "$ref": "#/definitions/forms.Deployment.Approval"
        },
        "applicant_email": {
          "type": "string"
        }
      }
    },
    "forms.DeployPrReq": {
      "type": "object",
      "properties": {
        "force": {
          "type": "boolean"
        }
      }
    },
    "forms.DeployPrResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        }
      }
    },
    "forms.VerifyDeployReq": {
      "type": "object",
      "properties": {
        "note": {
          "type": "string"
        }
      }
    },
    "forms.VerifyDeployResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        }
      }
    },
    "forms.CancelChangeResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        }
      }
    },
    "forms.SubmitChangeResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        }
      }
    },
    "forms.CloseChangeReq": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        }
      }
    },
    "forms.CloseChangeResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        }
      }
    },
    "forms.ListClusterCertificatesResp": {
      "type": "object",
      "properties": {
        "certificates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.Certificate"
          }
        }
      }
    },
    "forms.Certificate": {
      "type": "object",
      "properties": {
        "tenant_id": {
          "type": "string"
        },
        "tenant_name": {
          "type": "string"
        },
        "tenant_alias": {
          "type": "string"
        },
        "biz_region": {
          "type": "string"
        },
        "cluster_id": {
          "type": "string"
        },
        "cluster_name": {
          "type": "string"
        },
        "cluster_status": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "db_cdc_cluster_client_secret": {
          "type": "number"
        },
        "db_cdc_pd_cluster_secret": {
          "type": "number"
        },
        "db_cluster_ca": {
          "type": "number"
        },
        "db_cluster_client_secret": {
          "type": "number"
        },
        "db_pd_cluster_secret": {
          "type": "number"
        },
        "db_tidb_cluster_secret": {
          "type": "number"
        },
        "db_tidb_server_secret": {
          "type": "number"
        },
        "db_tiflash_cluster_secret": {
          "type": "number"
        },
        "db_tikv_cluster_secret": {
          "type": "number"
        },
        "manual_db_tidb_client_secret": {
          "type": "number"
        },
        "proxy_certificate": {
          "type": "number"
        },
        "topology": {
          "$ref": "#/definitions/forms.ClusterTopology"
        }
      }
    },
    "forms.ClusterTopology": {
      "type": "object",
      "properties": {
        "dm_master": {
          "type": "number"
        },
        "dm_worker": {
          "type": "number"
        },
        "pd": {
          "type": "number"
        },
        "tidb": {
          "type": "number"
        },
        "tiflash": {
          "type": "number"
        },
        "tikv": {
          "type": "number"
        }
      }
    },
    "forms.CtlReq": {
      "type": "object",
      "properties": {
        "command": {
          "type": "string"
        },
        "three_layer": {
          "type": "boolean"
        }
      }
    },
    "forms.CtlResp": {
      "type": "object",
      "properties": {
        "stdout": {
          "type": "string"
        },
        "stderr": {
          "type": "string"
        }
      }
    },
    "forms.GetNetworkTopologyResp": {
      "type": "object",
      "properties": {
        "cluster_name": {
          "type": "string"
        },
        "errcode": {
          "type": "string"
        },
        "errmsg": {
          "type": "string"
        },
        "topology": {
          "type": "object",
          "properties": {
            "pd": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "host": {
                    "type": "string"
                  },
                  "port": {
                    "type": "string"
                  }
                }
              }
            },
            "tikv": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "host": {
                    "type": "string"
                  },
                  "port": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "forms.Employee": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "team": {
          "type": "string"
        }
      }
    },
    "forms.IncidentLogItem": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "created_at": {
          "type": "string"
        },
        "incident_id": {
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "item_type": {
          "type": "string"
        },
        "postmortem_url": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "event_time": {
          "type": "string"
        }
      }
    },
    "forms.ListIncidentLogItems": {
      "type": "object",
      "properties": {
        "incident_id": {
          "type": "integer"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/forms.IncidentLogItem"
          }
        }
      }
    },
    "api.BaseResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "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"
      ]
    },
    "entity.Privilege": {
      "type": "object",
      "required": ["operation", "resource"],
      "properties": {
        "description": {
          "type": "string"
        },
        "operation": {
          "type": "string"
        },
        "resource": {
          "type": "string"
        }
      }
    },
    "entity.Role": {
      "type": "object",
      "required": ["name", "privileges"],
      "properties": {
        "description": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "privileges": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.Privilege"
          }
        }
      }
    },
    "rbac.CreateRoleReq": {
      "type": "object",
      "required": ["name", "privileges"],
      "properties": {
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "privileges": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.Privilege"
          }
        }
      }
    },
    "rbac.GetRoleResp": {
      "type": "object",
      "required": ["name", "privileges"],
      "properties": {
        "description": {
          "type": "string"
        },
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "privileges": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.Privilege"
          }
        }
      }
    },
    "rbac.ListRolesResp": {
      "type": "object",
      "properties": {
        "errcode": {
          "$ref": "#/definitions/api.ErrCode"
        },
        "errmsg": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.Role"
          }
        },
        "total": {
          "type": "integer"
        }
      }
    },
    "rbac.UpdateRoleReq": {
      "type": "object",
      "required": ["name", "privileges"],
      "properties": {
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "privileges": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/entity.Privilege"
          }
        }
      }
    },
    "user.UpdateUserRoleBindingsReq": {
      "type": "object",
      "required": ["email", "role_ids"],
      "properties": {
        "email": {
          "type": "string"
        },
        "role_ids": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        }
      }
    },
    "user.UserProfileResp": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "incident.CreateIncidentReq": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tier": {
          "type": "string"
        },
        "components": {
          "type": "string"
        },
        "biz_regions": {
          "type": "string"
        },
        "oncallers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "leaders": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fbowners": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "feishu_url": {
          "type": "string"
        },
        "jira_issues": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "need_generate_feishu": {
          "type": "boolean"
        }
      }
    },
    "incident.UpdateIncidentReq": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tier": {
          "type": "string"
        },
        "components": {
          "type": "string"
        },
        "biz_regions": {
          "type": "string"
        },
        "oncallers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "leaders": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fbowners": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "feishu_url": {
          "type": "string"
        },
        "jira_issues": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "incident_start_time": {
          "type": "string"
        },
        "incident_resolve_time": {
          "type": "string"
        }
      }
    }
  }
}
