{
  "openapi": "3.0.1",
  "servers": [
    {
      "url": "https://api.cast.ai/",
      "description": "US endpoint"
    },
    {
      "url": "https://api.eu.cast.ai/",
      "description": "EU endpoint"
    }
  ],
  "info": {
    "title": "CAST.AI API documentation",
    "version": "1.0.0",
    "description": "### Feature maturity indicators (may appear on resources, operations and request/response fields)\n - **(BETA)** - new or experimental features, subject to change\n - **(Deprecated)** - outdated or replaced features (a reason and removal date will be provided in the description)\n"
  },
  "tags": [
    {
      "name": "AuthAPI",
      "description": "User authentication"
    },
    {
      "name": "BillingAPI",
      "description": "utility endpoints for billing integrations"
    },
    {
      "name": "CopilotAPI",
      "description": "Provides the CAST AI Copilot A2A (Agent-to-Agent) protocol endpoints."
    },
    {
      "description": "(BETA) Provides the API for the AI Enabler.",
      "name": "AIEnablerAPI"
    },
    {
      "description": "(BETA) Provides the API for AI Enabler playground",
      "name": "AIEnablerPlaygroundAPI"
    },
    {
      "description": "(BETA) Provides the API for the LLM Providers.",
      "name": "AIEnablerProvidersAPI"
    },
    {
      "name": "ProxyConfigAPI"
    },
    {
      "description": "(BETA) Provides the API for the AI Enabler settings.",
      "name": "AIEnablerSettingsAPI"
    },
    {
      "description": "Provides the API to collect and analyze algorithm stats",
      "name": "AlgorithmStatsAPI"
    },
    {
      "name": "AuditAPI"
    },
    {
      "name": "AuditV2API"
    },
    {
      "name": "AuthTokenAPI"
    },
    {
      "description": "Provides the API for CAST AI Autoscaler.",
      "name": "AutoscalerAPI"
    },
    {
      "name": "BillingAPI"
    },
    {
      "name": "ClusterActionsAPI"
    },
    {
      "name": "ComponentsAPI"
    },
    {
      "name": "AllocationGroupAPI"
    },
    {
      "name": "ClusterReportAPI"
    },
    {
      "name": "ReportConfigurationAPI"
    },
    {
      "name": "IdleResourcesAPI"
    },
    {
      "name": "PlatformImpactReportAPI"
    },
    {
      "name": "NamespaceReportAPI"
    },
    {
      "name": "NodeReportAPI"
    },
    {
      "name": "ReportMetricsAPI"
    },
    {
      "name": "WorkloadReportAPI"
    },
    {
      "name": "DedicatedInstanceAPI"
    },
    {
      "description": "Handles interaction with cluster evictor",
      "name": "EvictorAPI"
    },
    {
      "description": "Manages external cluster resources",
      "name": "ExternalClusterAPI"
    },
    {
      "name": "FeaturesAPI"
    },
    {
      "name": "ImageProviderAPI"
    },
    {
      "name": "InsightsAPI"
    },
    {
      "description": "Handles interaction with cluster autoscaler blacklist",
      "name": "InventoryBlacklistAPI"
    },
    {
      "name": "CommitmentsAPI"
    },
    {
      "name": "DiscountsAPI"
    },
    {
      "name": "InventoryAPI"
    },
    {
      "name": "PricingAPI"
    },
    {
      "name": "NodeConfigurationAPI"
    },
    {
      "description": "Handles interaction with cluster node templates",
      "name": "NodeTemplatesAPI"
    },
    {
      "name": "NotificationAPI"
    },
    {
      "name": "OperationsAPI"
    },
    {
      "name": "PartnersAPI"
    },
    {
      "description": "Handles interaction with pod mutations",
      "name": "PodMutationsAPI"
    },
    {
      "description": "Handles interaction with cluster autoscaling policies",
      "name": "PoliciesAPI"
    },
    {
      "description": "Provides control plane services for DBO product (TBA)",
      "name": "DboAPI"
    },
    {
      "name": "PoliciesServiceAPI"
    },
    {
      "name": "RbacServiceAPI"
    },
    {
      "name": "RuntimeSecurityAPI"
    },
    {
      "description": "Provides management of schedules and jobs for running scheduled rebalancing plans.",
      "name": "ScheduledRebalancingAPI"
    },
    {
      "name": "ServiceAccountsAPI"
    },
    {
      "name": "SSOAPI"
    },
    {
      "name": "UsageAPI"
    },
    {
      "name": "UsersAPI"
    },
    {
      "name": "WorkloadOptimizationAPI"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    },
    {
      "ApiKeyAuth": []
    }
  ],
  "paths": {
    "/v1/auth": {
      "post": {
        "operationId": "login",
        "tags": [
          "AuthAPI"
        ],
        "summary": "Login",
        "description": "Redirect browser to AUTH0 login flow, where user authenticates, browser receives authentication cookie, and then user's browser gets redirected to provided `returnTo` URL. From that point on, all API calls don't require additional headers as HTTP-only cookie will be attached to each request.",
        "parameters": [
          {
            "$ref": "#/components/parameters/returnTo"
          },
          {
            "name": "auth0returnTo",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "optional override for URL to redirect browser from auth0 back to backend, for situations where backend is being reached via proxy"
          },
          {
            "name": "screenHint",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "optional hint for which screen to use when redirecting to authentication pages."
          }
        ],
        "responses": {
          "302": {
            "description": "redirects to login page"
          }
        }
      },
      "get": {
        "operationId": "login-callback",
        "tags": [
          "AuthAPI"
        ],
        "summary": "Login callback",
        "description": "Callback endpoint where login flow returns after authentication succeeds on auth0. Not to be called directly.",
        "responses": {
          "302": {
            "description": "redirects to `returnTo` that was provided with initial auth request."
          }
        }
      }
    },
    "/v1/auth/session": {
      "get": {
        "operationId": "get-session",
        "tags": [
          "AuthAPI"
        ],
        "summary": "Current login session info",
        "description": "As JS has no access to JWT token, this provides a subset of information about user session.",
        "responses": {
          "200": {
            "description": "User is currently logged in",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserSession"
                }
              }
            }
          },
          "401": {
            "description": "not logged in."
          }
        }
      }
    },
    "/v1/auth/logout": {
      "post": {
        "operationId": "logout",
        "tags": [
          "AuthAPI"
        ],
        "summary": "Logout",
        "description": "Close login session, remove relevant cookies and redirect browser to provided URL.",
        "parameters": [
          {
            "$ref": "#/components/parameters/returnTo"
          }
        ],
        "responses": {
          "302": {
            "description": "redirects to `returnTo` url."
          }
        }
      }
    },
    "/v1/auth/saml/acs": {
      "post": {
        "operationId": "saml-acs",
        "tags": [
          "AuthAPI"
        ],
        "summary": "SAML flow callback",
        "description": "SAML flow callback invoked after the flow is completed.",
        "responses": {
          "302": {
            "description": "redirects to login page"
          }
        }
      }
    },
    "/v1/billing/sso": {
      "get": {
        "operationId": "billing-sso",
        "tags": [
          "BillingAPI"
        ],
        "parameters": [
          {
            "name": "forwardUrl",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Desired destination URL within ChargeBee.\nSee https://apidocs.chargebee.com/docs/api/portal_sessions#create_a_portal_session_forward_url for more details.\n"
          }
        ],
        "summary": "Single sign-on of ChargeBee portal.",
        "description": "Builds URL to use in end-customer's browser session as an iframe. URL will direct to ChargeBee portal session. Can be tailored with specific portal URL. When application/json media type is requested - returns portal session object for generating a chargeBee hosted portal session popup.",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalSession"
                }
              }
            },
            "description": "customer's chargeBee portal session object."
          },
          "302": {
            "description": "ChargeBee login URL with single-use token in the URL."
          }
        }
      }
    },
    "/v1/billing/subscription": {
      "get": {
        "operationId": "subscription",
        "tags": [
          "BillingAPI"
        ],
        "summary": "Retrieves current user's subscription details.",
        "description": "Retrieves user's subscription details from ChargeBee.",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Subscription"
                }
              }
            },
            "description": "Subscription details."
          }
        }
      }
    },
    "/v1/billing/subscription/checkout": {
      "get": {
        "operationId": "subscription-checkout",
        "tags": [
          "BillingAPI"
        ],
        "parameters": [
          {
            "name": "plan",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Checkout specific subscription plan."
          }
        ],
        "summary": "Checkout current user's subscription.",
        "description": "Builds URL to use in end-customer's browser session as an iframe. URL will direct to ChargeBee default subscription checkout form. When application/json media type is requested - returns hosted page object for generating checkout popup in end-customer's browser session.",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HostedPage"
                }
              }
            },
            "description": "subscription checkout hosted page object."
          },
          "302": {
            "description": "Subscription checkout form iframe URL."
          },
          "404": {
            "description": "Desired subscription plan was not found."
          }
        }
      }
    },
    "/api/copilot/orchestrator": {
      "post": {
        "operationId": "copilot-orchestrator-send",
        "tags": [
          "CopilotAPI"
        ],
        "summary": "Send a message to the Copilot orchestrator (A2A JSON-RPC)",
        "description": "A2A (Agent-to-Agent) JSON-RPC endpoint for the CAST AI Copilot orchestrator. This endpoint routes queries to appropriate specialized agents based on the message content and context. Uses the A2A protocol (v0.3.0) over JSON-RPC 2.0.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/A2AJsonRpcRequest"
              },
              "examples": {
                "messageSend": {
                  "summary": "Send a message to the orchestrator",
                  "value": {
                    "jsonrpc": "2.0",
                    "method": "message/send",
                    "id": 1,
                    "message": {
                      "messageId": "msg-456",
                      "role": "user",
                      "parts": [
                        {
                          "text": "What clusters are running?"
                        }
                      ],
                      "metadata": {
                        "org_id": "org-789",
                        "timezone": "Europe/Prague"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A2A JSON-RPC response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/A2AJsonRpcResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonRpcErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonRpcErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonRpcErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/copilot/orchestrator/context/{context_id}": {
      "get": {
        "operationId": "copilot-orchestrator-get-context",
        "tags": [
          "CopilotAPI"
        ],
        "summary": "Get context status",
        "description": "Retrieves the current status and state of a conversation context.",
        "parameters": [
          {
            "name": "context_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique context identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Context status retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContextStatusResponse"
                }
              }
            }
          },
          "404": {
            "description": "Context not found"
          }
        }
      }
    },
    "/api/copilot/orchestrator/context/{context_id}/timeline": {
      "get": {
        "operationId": "copilot-orchestrator-get-context-timeline",
        "tags": [
          "CopilotAPI"
        ],
        "summary": "Get context timeline",
        "description": "Retrieves the timeline of events and messages for a conversation context.",
        "parameters": [
          {
            "name": "context_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique context identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Context timeline retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContextTimelineResponse"
                }
              }
            }
          },
          "404": {
            "description": "Context not found"
          }
        }
      }
    },
    "/organization-management/v1/organizations/{organizationId}/permission-groups": {
      "get": {
        "operationId": "RbacServiceAPI_ListPermissionGroups",
        "parameters": [
          {
            "description": "Organization ID to get permission groups for.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.ListPermissionGroupsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListPermissionGroups returns the permission groups available to the calling user\nin a given organization. These groups can be used when creating a PAT.",
        "tags": [
          "RbacServiceAPI"
        ]
      }
    },
    "/pricing/v1/organizations/{organizationId}/clusters/prices": {
      "get": {
        "operationId": "PricingAPI_ListOrganizationClusterPrices",
        "parameters": [
          {
            "description": "Organization id.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.ListOrganizationClusterPricesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List hourly unit prices of CPU and memory for CAST Anywhere clusters in organization.",
        "tags": [
          "PricingAPI"
        ]
      }
    },
    "/pricing/v1/organizations/{organizationId}/clusters/{clusterId}/price": {
      "get": {
        "operationId": "PricingAPI_GetClusterPrice",
        "parameters": [
          {
            "description": "Organization id.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Cluster id.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.ClusterPrice"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get the hourly unit price for the CPU and memory of the CAST Anywhere cluster.",
        "tags": [
          "PricingAPI"
        ]
      }
    },
    "/pricing/v1/organizations/{price.organizationId}/clusters/{price.clusterId}/price": {
      "patch": {
        "operationId": "PricingAPI_UpdateClusterPrice",
        "parameters": [
          {
            "description": "Organization id.",
            "in": "path",
            "name": "price.organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Cluster id.",
            "in": "path",
            "name": "price.clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Cluster_pricing_"
              }
            }
          },
          "description": "Cluster pricing.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.ClusterPrice"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Upsert the hourly unit price for the CPU and memory of the CAST Anywhere cluster.",
        "tags": [
          "PricingAPI"
        ],
        "x-codegen-request-body-name": "price"
      },
      "post": {
        "operationId": "PricingAPI_CreateClusterPrice",
        "parameters": [
          {
            "description": "Organization id.",
            "in": "path",
            "name": "price.organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Cluster id.",
            "in": "path",
            "name": "price.clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Cluster_pricing_"
              }
            }
          },
          "description": "Cluster pricing.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.ClusterPrice"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create the hourly unit price for the CPU and memory of the CAST Anywhere cluster.",
        "tags": [
          "PricingAPI"
        ],
        "x-codegen-request-body-name": "price"
      }
    },
    "/savings/v1/organizations/{organizationId}/commitments:batchDelete": {
      "post": {
        "operationId": "CommitmentsAPI_BatchDeleteCommitments",
        "parameters": [
          {
            "description": "Organization ID",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommitmentsAPI_BatchDeleteCommitments_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete multiple commitments",
        "tags": [
          "CommitmentsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/savings/v1/organizations/{organizationId}/commitments:batchUpdate": {
      "post": {
        "operationId": "CommitmentsAPI_BatchUpdateCommitments",
        "parameters": [
          {
            "description": "Organization ID",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommitmentsAPI_BatchUpdateCommitments_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.BatchUpdateCommitmentsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Update multiple commitments.\nFor commitments with auto-assignment enabled, it will additionally create missing matching assignments.",
        "tags": [
          "CommitmentsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/savings/v1beta/organizations/{organizationId}/commitments/{commitmentId}:getUsageHistory": {
      "get": {
        "operationId": "CommitmentsAPI_GetCommitmentUsageHistory",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "commitmentId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "aggregationInterval",
            "required": true,
            "schema": {
              "default": "AGGREGATION_INTERVAL_UNSPECIFIED",
              "enum": [
                "AGGREGATION_INTERVAL_UNSPECIFIED",
                "HOUR",
                "DAY"
              ],
              "type": "string"
            }
          },
          {
            "description": "Filter by cloud provider. If not specified, data for all clouds will be returned.\n\n - invalid: Invalid.\n - aws: Amazon web services.\n - gcp: Google cloud provider.\n - azure: Microsoft Azure.\n - unknown: Unknown.",
            "in": "query",
            "name": "cloud",
            "schema": {
              "default": "invalid",
              "enum": [
                "invalid",
                "INVALID",
                "aws",
                "AWS",
                "gcp",
                "GCP",
                "azure",
                "AZURE",
                "unknown",
                "UNKNOWN"
              ],
              "type": "string"
            }
          },
          {
            "description": "Deprecated: Use commitment_types instead.",
            "in": "query",
            "name": "commitmentType",
            "schema": {
              "default": "COMMITMENT_TYPE_UNSPECIFIED",
              "enum": [
                "COMMITMENT_TYPE_UNSPECIFIED",
                "RESERVED_INSTANCE",
                "RESOURCE_CUD",
                "SAVINGS_PLAN",
                "CAPACITY_BLOCK",
                "ON_DEMAND_CAPACITY_RESERVATION",
                "FLEX_CUD"
              ],
              "type": "string"
            },
            "deprecated": true
          },
          {
            "description": "Filter by commitment types. If not specified, data for all commitment types will be returned.",
            "explode": true,
            "in": "query",
            "name": "commitmentTypes",
            "schema": {
              "items": {
                "enum": [
                  "COMMITMENT_TYPE_UNSPECIFIED",
                  "RESERVED_INSTANCE",
                  "RESOURCE_CUD",
                  "SAVINGS_PLAN",
                  "CAPACITY_BLOCK",
                  "ON_DEMAND_CAPACITY_RESERVATION",
                  "FLEX_CUD"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetCommitmentUsageHistoryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get historical data on commitment usage.\nIf commitmentId is \"-\", aggregated usage data for all commitments will be returned.",
        "tags": [
          "CommitmentsAPI"
        ]
      }
    },
    "/savings/v1beta/organizations/{organizationId}/commitments:getAWSReservedInstancesImportCMD": {
      "get": {
        "operationId": "CommitmentsAPI_GetAWSReservedInstancesImportCMD",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "AWS region IDs",
            "explode": true,
            "in": "query",
            "name": "regionIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetAWSReservedInstancesImportCMDResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get AWS commitments (reserved instances) import script",
        "tags": [
          "CommitmentsAPI"
        ]
      }
    },
    "/savings/v1beta/organizations/{organizationId}/commitments:getAWSReservedInstancesImportScript": {
      "get": {
        "operationId": "CommitmentsAPI_GetAWSReservedInstancesImportScript",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get a template containing AWS commitment (reserved instances) import script",
        "tags": [
          "CommitmentsAPI"
        ]
      }
    },
    "/savings/v1beta/organizations/{organizationId}/commitments:importAWSReservedInstances": {
      "post": {
        "operationId": "CommitmentsAPI_ImportAWSReservedInstances",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Behaviour\n\n - OVERWRITE: Overwrite all existing commitments",
            "in": "query",
            "name": "behaviour",
            "schema": {
              "default": "BEHAVIOUR_UNSPECIFIED",
              "enum": [
                "BEHAVIOUR_UNSPECIFIED",
                "OVERWRITE"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "items": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.AWSRegionReservedInstances"
                },
                "type": "array"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Import AWS commitments (reserved instances)",
        "tags": [
          "CommitmentsAPI"
        ],
        "x-codegen-request-body-name": "regionReservedInstances"
      }
    },
    "/v1/agent.sh": {
      "get": {
        "description": "All parameters are optional. If no parameters are provided, then the script will default to EKS configuration.\n\nThe returned install script can be run in your terminal to install the\n[CASTAI Kubernetes agent](https://github.com/castai/k8s-agent). The script can also be used to update an already\nrunning agent in your cluster.\n\nThe agent supports automatic discovery of cluster properties. However, if you specify at least one of the\nproperties, then all properties for that provider must be specified.\n\nOpenShift (ROSA) supports autodiscovery so choosing it does not require any OpenShift parameters. However, autodiscovery\ncan be turned off by providing the properties explicitly. When any of the OpenShift parameters are provided, then\nall OpenShift parameters must be provided, with the exception of `openshift.runAsUser`, `openshift.runAsGroup` and `openshift.fsGroup`,\nwhich are optional and can be specified without the other parameters.",
        "operationId": "AutoscalerAPI_GetAgentScript",
        "parameters": [
          {
            "description": "AWS region of your EKS cluster.",
            "in": "query",
            "name": "eks.region",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Your AWS account id. Can be retrieved by executing `aws sts get-caller-identity`.",
            "in": "query",
            "name": "eks.accountId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of your EKS cluster.",
            "in": "query",
            "name": "eks.clusterName",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "GCP region of your GKE cluster.",
            "in": "query",
            "name": "gke.region",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "GCP project id in which your GKE cluster is created.",
            "in": "query",
            "name": "gke.projectId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of your GKE cluster.",
            "in": "query",
            "name": "gke.clusterName",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Location of your GKE cluster.",
            "in": "query",
            "name": "gke.location",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Cluster to be connected via GCP Private Service Connect",
            "in": "query",
            "name": "gke.psc",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Provider of the cluster.",
            "in": "query",
            "name": "provider",
            "schema": {
              "default": "invalid_provider",
              "enum": [
                "invalid_provider",
                "eks",
                "gke",
                "aks",
                "openshift",
                "kops",
                "anywhere"
              ],
              "type": "string"
            }
          },
          {
            "description": "The Cloud Service Provider (CSP) of your kOps cluster.\n\nPossible values are: `aws`, `gcp`.\n\n - invalid: Invalid.\n - aws: Amazon web services.\n - gcp: Google cloud provider.\n - azure: Microsoft Azure.\n - unknown: Unknown.",
            "in": "query",
            "name": "kops.csp",
            "schema": {
              "default": "invalid",
              "enum": [
                "invalid",
                "INVALID",
                "aws",
                "AWS",
                "gcp",
                "GCP",
                "azure",
                "AZURE",
                "unknown",
                "UNKNOWN"
              ],
              "type": "string"
            }
          },
          {
            "description": "The region of your kOps cluster. Region is CSP specific.",
            "in": "query",
            "name": "kops.region",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of your kOps cluster.",
            "in": "query",
            "name": "kops.clusterName",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The kOps cluster state store. Only remote S3 state is supported at the moment.",
            "in": "query",
            "name": "kops.stateStore",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Azure location of your AKS cluster.",
            "in": "query",
            "name": "aks.location",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Azure resource group where AKS nodes are deployed.",
            "in": "query",
            "name": "aks.nodeResourceGroup",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Azure account subscription id.",
            "in": "query",
            "name": "aks.subscriptionId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Cloud Service Provider (CSP) of your OpenShift cluster.\n\nPossible values are: `aws`.\n\n - invalid: Invalid.\n - aws: Amazon web services.\n - gcp: Google cloud provider.\n - azure: Microsoft Azure.\n - unknown: Unknown.",
            "in": "query",
            "name": "openshift.csp",
            "schema": {
              "default": "invalid",
              "enum": [
                "invalid",
                "INVALID",
                "aws",
                "AWS",
                "gcp",
                "GCP",
                "azure",
                "AZURE",
                "unknown",
                "UNKNOWN"
              ],
              "type": "string"
            }
          },
          {
            "description": "The region of your OpenShift cluster. Region is CSP specific.",
            "in": "query",
            "name": "openshift.region",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of your OpenShift cluster.",
            "in": "query",
            "name": "openshift.clusterName",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The OpenShift cluster ID. It can be found in the ClusterVersion object.\n\n[Link to docs](https://docs.openshift.com/container-platform/4.8/support/gathering-cluster-data.html#support-get-cluster-id_gathering-cluster-data).",
            "in": "query",
            "name": "openshift.internalId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The uid of the user that runs the agent pod.",
            "in": "query",
            "name": "openshift.runAsUser",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The gid of the user that runs the agent pod.",
            "in": "query",
            "name": "openshift.runAsGroup",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The gid of the user that owns the agent pod's volumes.",
            "in": "query",
            "name": "openshift.fsGroup",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of your cluster.",
            "in": "query",
            "name": "anywhere.clusterName",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "example": "curl -H \"Authorization: Token redacted\" \"https://api.cast.ai/v1/agent.yaml?provider=eks\" | kubectl apply -f -"
              }
            },
            "description": "The agent install script."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Bad request. Additional details returned in the error response."
          }
        },
        "summary": "Get a Kubernetes agent install script",
        "tags": [
          "AutoscalerAPI"
        ]
      }
    },
    "/v1/audit": {
      "get": {
        "operationId": "AuditAPI_ListAuditEntries",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "the cluster id to filter by",
            "in": "query",
            "name": "clusterId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "from_date is a timestamp to filter audits from",
            "in": "query",
            "name": "fromDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "to_date is a timestamp to filter audits to",
            "in": "query",
            "name": "toDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "labels is a map of labels to filter audits by\n\nThis is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18",
            "in": "query",
            "name": "labels",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "operation is a string to filter audits by",
            "in": "query",
            "name": "operation",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "initiated_by_id is a string to filter audits by ID of the user who initiated the operation",
            "in": "query",
            "name": "initiatedById",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "initiated_by_email is a string to filter audits by email of the user who initiated the operation",
            "in": "query",
            "name": "initiatedByEmail",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.audit.v1beta1.ListAuditEntriesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListAuditEntries returns audit entries for given cluster.",
        "tags": [
          "AuditAPI"
        ]
      }
    },
    "/v1/audit-events": {
      "get": {
        "operationId": "AuditAPI_ListAuditEvents",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The unique cluster identifier.",
            "in": "query",
            "name": "clusterId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The date and time to query from.",
            "in": "query",
            "name": "fromDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The maximum date and time to query to.",
            "in": "query",
            "name": "toDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "This is a request variable of the map type. The query format is \"map_name[key]=value\", e.g. If the map name is Age, the key type is string, and the value type is integer, the query parameter is expressed as Age[\"bob\"]=18",
            "in": "query",
            "name": "labels",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The audit entry operation.",
            "in": "query",
            "name": "operation",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Unique identifier of the user who initiated the operation.",
            "in": "query",
            "name": "initiatedById",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "E-mail of the user who initiated the operation.",
            "in": "query",
            "name": "initiatedByEmail",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.audit.v1beta1.ListAuditEventsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListAuditEvents is the second version of the audit events endpoint.",
        "tags": [
          "AuditAPI"
        ]
      }
    },
    "/v1/audit-events/{id}": {
      "get": {
        "operationId": "AuditAPI_GetAuditEvent",
        "parameters": [
          {
            "description": "The audit entry record ID.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The date and time the audit event record was created.",
            "in": "query",
            "name": "time",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.audit.v1beta1.AuditEntry"
                }
              }
            },
            "description": "Audit entry information."
          }
        },
        "summary": "GetAuditEvent returns a specific audit event.",
        "tags": [
          "AuditAPI"
        ]
      }
    },
    "/v1/auth/tokens": {
      "get": {
        "operationId": "AuthTokenAPI_ListAuthTokens",
        "parameters": [
          {
            "description": "User id to filter by, if this is set we will only return tokens that have this user id.",
            "in": "query",
            "name": "userId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Organizations controls whether to return tokens for all organizations the user belongs to or only the current one.\n\n - ORGANIZATIONS_UNSPECIFIED: ORGANIZATIONS_UNSPECIFIED is the default value and means only current organization.\n - ALL: ALL means all organizations the user belongs to.",
            "in": "query",
            "name": "organizations",
            "schema": {
              "default": "ORGANIZATIONS_UNSPECIFIED",
              "enum": [
                "ORGANIZATIONS_UNSPECIFIED",
                "ALL"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.authtoken.v1beta1.ListAuthTokensResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Lists user auth tokens.",
        "tags": [
          "AuthTokenAPI"
        ]
      },
      "post": {
        "operationId": "AuthTokenAPI_CreateAuthToken",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "CreateAuthToken creates a new api auth token.",
        "tags": [
          "AuthTokenAPI"
        ],
        "x-codegen-request-body-name": "item"
      }
    },
    "/v1/auth/tokens/{id}": {
      "delete": {
        "operationId": "AuthTokenAPI_DeleteAuthToken",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.authtoken.v1beta1.DeleteAuthTokenResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes auth token.",
        "tags": [
          "AuthTokenAPI"
        ]
      },
      "get": {
        "operationId": "AuthTokenAPI_GetAuthToken",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Retrieves the specified auth token.",
        "tags": [
          "AuthTokenAPI"
        ]
      },
      "post": {
        "operationId": "AuthTokenAPI_UpdateAuthToken",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthTokenUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Updates the specified auth token.",
        "tags": [
          "AuthTokenAPI"
        ],
        "x-codegen-request-body-name": "item"
      }
    },
    "/v1/billing/enterprise/platform-usage-detail": {
      "get": {
        "operationId": "BillingAPI_GetEnterprisePlatformUsageDetail",
        "parameters": [
          {
            "description": "Start date (inclusive), format: YYYY-MM-DD.",
            "in": "query",
            "name": "period.from",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "End date (inclusive), format: YYYY-MM-DD.",
            "in": "query",
            "name": "period.to",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Feature name to get detail for (e.g., \"phase2\", \"woop\").",
            "in": "query",
            "name": "feature",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/billing.v1.GetEnterprisePlatformUsageDetailResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetEnterprisePlatformUsageDetail returns detailed per-organization usage breakdown\nfor a specific feature across all child organizations of an enterprise organization.",
        "tags": [
          "BillingAPI"
        ]
      }
    },
    "/v1/billing/enterprise/platform-usage-report": {
      "get": {
        "operationId": "BillingAPI_GetEnterprisePlatformUsageReport",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/billing.v1.GetEnterprisePlatformUsageReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetEnterprisePlatformUsageReport returns usage report broken down by feature\nacross all child organizations for an enterprise organization (current month).",
        "tags": [
          "BillingAPI"
        ]
      }
    },
    "/v1/billing/enterprise/usage-report": {
      "get": {
        "operationId": "BillingAPI_GetEnterpriseUsageReport",
        "parameters": [
          {
            "description": "Start time of resource usage period.",
            "in": "query",
            "name": "period.from",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End time of resource usage period.",
            "in": "query",
            "name": "period.to",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/billing.v1.GetEnterpriseUsageReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetEnterpriseUsageReport returns enterprise resource usage report broken down per child organization.",
        "tags": [
          "BillingAPI"
        ]
      }
    },
    "/v1/billing/platform-usage-detail": {
      "get": {
        "operationId": "BillingAPI_GetPlatformUsageDetail",
        "parameters": [
          {
            "description": "Start date (inclusive), format: YYYY-MM-DD.",
            "in": "query",
            "name": "period.from",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "End date (inclusive), format: YYYY-MM-DD.",
            "in": "query",
            "name": "period.to",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Feature name to get detail for (e.g., \"phase2\", \"woop\").",
            "in": "query",
            "name": "feature",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/billing.v1.GetPlatformUsageDetailResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetPlatformUsageDetail returns detailed per-cluster usage breakdown for a specific feature.",
        "tags": [
          "BillingAPI"
        ]
      }
    },
    "/v1/billing/platform-usage-report": {
      "get": {
        "operationId": "BillingAPI_GetPlatformUsageReport",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/billing.v1.GetPlatformUsageReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetPlatformUsageReport returns usage report broken down by feature for an organization (current month).",
        "tags": [
          "BillingAPI"
        ]
      }
    },
    "/v1/billing/subscription-details/{organizationId}": {
      "get": {
        "operationId": "BillingAPI_GetSubscriptionDetails",
        "parameters": [
          {
            "description": "Organization ID.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/billing.v1.GetSubscriptionDetailsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetSubscriptionDetails returns subscription details for the given organization.",
        "tags": [
          "BillingAPI"
        ]
      }
    },
    "/v1/billing/usage-report": {
      "get": {
        "operationId": "BillingAPI_GetUsageReport",
        "parameters": [
          {
            "description": "Start time of resource usage period.",
            "in": "query",
            "name": "period.from",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End time of resource usage period.",
            "in": "query",
            "name": "period.to",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/billing.v1.GetUsageReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetUsageReport returns resource usage report.",
        "tags": [
          "BillingAPI"
        ]
      }
    },
    "/v1/clusters/{clusterId}/components/{component}/audit": {
      "post": {
        "operationId": "ComponentsAPI_IngestAudit",
        "parameters": [
          {
            "description": "The ID of the cluster the component is running in.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the source component for the events.",
            "in": "path",
            "name": "component",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/components.v1.AuditEntries"
              }
            }
          },
          "description": "The entries to ingest.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/components.v1.IngestAuditResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "IngestEvents accepts audit events from CAST AI components running outside of the mother-ship.",
        "tags": [
          "ComponentsAPI"
        ],
        "x-codegen-request-body-name": "entries"
      }
    },
    "/v1/clusters/{clusterId}/components/{component}/events": {
      "post": {
        "operationId": "ComponentsAPI_IngestEvents",
        "parameters": [
          {
            "description": "The ID of the cluster the component is running in.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the source component for the events.",
            "in": "path",
            "name": "component",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/components.v1.ComponentEvents"
              }
            }
          },
          "description": "The events to ingest.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/components.v1.IngestEventsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "IngestEvents accepts events from CAST AI components running outside of the mother-ship.",
        "tags": [
          "ComponentsAPI"
        ],
        "x-codegen-request-body-name": "events"
      }
    },
    "/v1/clusters/{clusterId}/components/{component}/logs": {
      "post": {
        "operationId": "ComponentsAPI_IngestLogs",
        "parameters": [
          {
            "description": "The ID of the cluster the component is running in.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the source component for the logs.",
            "in": "path",
            "name": "component",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/components.v1.ComponentLogs"
              }
            }
          },
          "description": "The logs to ingest.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/components.v1.IngestLogsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "IngestLogs accepts logs from CAST AI components running outside of the mother-ship.",
        "tags": [
          "ComponentsAPI"
        ],
        "x-codegen-request-body-name": "logs"
      }
    },
    "/v1/clusters/{clusterId}/components/{component}/metrics": {
      "post": {
        "operationId": "ComponentsAPI_IngestMetrics",
        "parameters": [
          {
            "description": "The ID of the cluster the component is running in.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the source component for the logs.",
            "in": "path",
            "name": "component",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/prometheus.WriteRequest"
              }
            }
          },
          "description": "The request is a WriteRequest prometheus known spec https://github.com/prometheus/prometheus/blob/main/prompb/remote.proto.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/components.v1.IngestMetricsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "IngestMetrics accepts prometheus metrics from components running outside of the mother-ship.",
        "tags": [
          "ComponentsAPI"
        ],
        "x-codegen-request-body-name": "request"
      }
    },
    "/v1/cost-reports/allocation-group-costs": {
      "get": {
        "operationId": "AllocationGroupAPI_GetAllocationGroupCostTimedSummaries",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Allocation group ID. Leave empty for the full list.",
            "in": "query",
            "name": "groupId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupCostTimedSummariesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets allocation group timed cost summaries.",
        "tags": [
          "AllocationGroupAPI"
        ]
      }
    },
    "/v1/cost-reports/allocation-group-summaries": {
      "get": {
        "operationId": "AllocationGroupAPI_GetAllocationGroupCostSummaries",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Allocation group ID. Leave empty for the full list.",
            "in": "query",
            "name": "groupId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupCostSummariesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets allocation group cost summaries.",
        "tags": [
          "AllocationGroupAPI"
        ]
      }
    },
    "/v1/cost-reports/allocation-group-totals": {
      "get": {
        "operationId": "AllocationGroupAPI_GetAllocationGroupTotalCostTimed",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupTotalCostTimedResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets allocation groups timed total cost only.",
        "tags": [
          "AllocationGroupAPI"
        ]
      }
    },
    "/v1/cost-reports/allocation-groups": {
      "get": {
        "operationId": "AllocationGroupAPI_ListAllocationGroups",
        "parameters": [
          {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.ListAllocationGroupsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Lists allocation groups.",
        "tags": [
          "AllocationGroupAPI"
        ]
      },
      "post": {
        "operationId": "AllocationGroupAPI_CreateAllocationGroup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupDetails"
              }
            }
          },
          "description": "Allocation group details",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroup"
                }
              }
            },
            "description": "Allocation group details"
          }
        },
        "summary": "Creates an allocation group for custom report.",
        "tags": [
          "AllocationGroupAPI"
        ],
        "x-codegen-request-body-name": "allocationGroup"
      }
    },
    "/v1/cost-reports/allocation-groups/datatransfer-costs/summary": {
      "get": {
        "operationId": "AllocationGroupAPI_GetCostAllocationGroupDataTransferSummary",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetCostAllocationGroupDataTransferSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets allocation group summary for datatransfer costs.",
        "tags": [
          "AllocationGroupAPI"
        ]
      }
    },
    "/v1/cost-reports/allocation-groups/efficiency/summary": {
      "get": {
        "operationId": "AllocationGroupAPI_GetAllocationGroupEfficiencySummary",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupEfficiencySummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets allocation group efficiency summary.",
        "tags": [
          "AllocationGroupAPI"
        ]
      }
    },
    "/v1/cost-reports/allocation-groups/{groupId}/datatransfer-costs/workloads": {
      "get": {
        "operationId": "AllocationGroupAPI_GetCostAllocationGroupDataTransferWorkloads",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetCostAllocationGroupDataTransferWorkloadsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workloads of datatransfer cost allocation group.",
        "tags": [
          "AllocationGroupAPI"
        ]
      }
    },
    "/v1/cost-reports/allocation-groups/{groupId}/workload-costs": {
      "get": {
        "operationId": "AllocationGroupAPI_GetAllocationGroupWorkloadCosts",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupWorkloadCostsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workloads of cost allocation group.",
        "tags": [
          "AllocationGroupAPI"
        ]
      }
    },
    "/v1/cost-reports/allocation-groups/{groupId}/workload-efficiency": {
      "get": {
        "operationId": "AllocationGroupAPI_GetAllocationGroupWorkloadsEfficiency",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupWorkloadsEfficiencyResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets allocation group efficiency workloads.",
        "tags": [
          "AllocationGroupAPI"
        ]
      }
    },
    "/v1/cost-reports/allocation-groups/{id}": {
      "delete": {
        "operationId": "AllocationGroupAPI_DeleteAllocationGroup",
        "parameters": [
          {
            "description": "ID of the allocation group",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.DeleteAllocationGroupResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes an allocation group.",
        "tags": [
          "AllocationGroupAPI"
        ]
      },
      "get": {
        "operationId": "AllocationGroupAPI_GetAllocationGroup",
        "parameters": [
          {
            "description": "ID of the allocation group",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroup"
                }
              }
            },
            "description": "Allocation group"
          }
        },
        "summary": "Get allocation group.",
        "tags": [
          "AllocationGroupAPI"
        ]
      },
      "put": {
        "operationId": "AllocationGroupAPI_UpdateAllocationGroup",
        "parameters": [
          {
            "description": "ID of the allocation group",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupDetails"
              }
            }
          },
          "description": "Allocation group details",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroup"
                }
              }
            },
            "description": "Allocation group details"
          }
        },
        "summary": "Updates an allocation group for custom report.",
        "tags": [
          "AllocationGroupAPI"
        ],
        "x-codegen-request-body-name": "allocationGroup"
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/cost": {
      "get": {
        "operationId": "ClusterReportAPI_GetClusterCostReport",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterCostReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster cost report data.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/cost-anomalies": {
      "get": {
        "operationId": "ClusterReportAPI_GetCostAnomalies",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items by metric type.",
            "explode": true,
            "in": "query",
            "name": "metrics",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetCostAnomaliesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the all the detected cost anomalies for a cluster in a given time period.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/datatransfer-costs": {
      "get": {
        "operationId": "WorkloadReportAPI_GetWorkloadDataTransferCost",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.workloadNames",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "filter.labelsOperator",
            "schema": {
              "default": "OR",
              "enum": [
                "OR",
                "AND"
              ],
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.workloadTypes",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether to include destination addresses in the response.",
            "in": "query",
            "name": "includeDestinations",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadDataTransferCostResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workloads datatransfer costs",
        "tags": [
          "WorkloadReportAPI"
        ]
      },
      "post": {
        "operationId": "WorkloadReportAPI_GetWorkloadDataTransferCost2",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether to include destination addresses in the response.",
            "in": "query",
            "name": "includeDestinations",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.WorkloadFilter"
              }
            }
          },
          "description": "Filter workloads by labels or names.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadDataTransferCostResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workloads datatransfer costs",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/efficiency": {
      "get": {
        "operationId": "ClusterReportAPI_GetClusterEfficiencyReport",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterEfficiencyReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster efficiency report data.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/estimated-savings": {
      "get": {
        "operationId": "ClusterReportAPI_GetSavingsRecommendation",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetSavingsRecommendationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the available savings estimation report. Current cluster state is evaluated and a report is generated\nbased on the workloads and nodes running in your cluster.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/estimated-savings-history": {
      "get": {
        "operationId": "ClusterReportAPI_GetClusterCostHistory",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "fromDate",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "toDate",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterCostHistoryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets available savings history over time. Real cluster cost and estimated optimal cost.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespace-cost-summaries": {
      "post": {
        "operationId": "NamespaceReportAPI_GetClusterNamespaceCostReportSummaries",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.NamespaceFilter"
              }
            }
          },
          "description": "Filtering options.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNamespaceCostReportSummariesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster namespaces cost report summaries.",
        "tags": [
          "NamespaceReportAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespace-datatransfer-costs": {
      "get": {
        "operationId": "NamespaceReportAPI_GetClusterNamespaceDataTransferCost",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items by namespace. Acts like a case-insensitive substring search.",
            "in": "query",
            "name": "filter.namespace",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNamespaceDataTransferCostResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster namespaces data transfer report",
        "tags": [
          "NamespaceReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespace-datatransfer-totalcost": {
      "get": {
        "operationId": "NamespaceReportAPI_GetClusterNamespaceDataTransferTimedTotalCost",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNamespaceDataTransferTimedTotalCostResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets a timed breakdown of the data transfer costs for the top K namespaces in the cluster\n(by default breakdown is by day).",
        "tags": [
          "NamespaceReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespace-totalcost": {
      "post": {
        "operationId": "NamespaceReportAPI_GetClusterNamespaceCostReport",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.NamespaceFilter"
              }
            }
          },
          "description": "Filtering options.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNamespaceCostReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster namespaces cost report.",
        "tags": [
          "NamespaceReportAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespaces/{namespace}": {
      "get": {
        "operationId": "NamespaceReportAPI_GetSingleNamespaceCostReport",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Which namespace to return data for.",
            "in": "path",
            "name": "namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetSingleNamespaceCostReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets a single namespace cost report with a daily breakdown.",
        "tags": [
          "NamespaceReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespaces/{namespace}/{workloadType}/{workloadName}/cost": {
      "get": {
        "operationId": "WorkloadReportAPI_GetSingleWorkloadCostReport",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadType",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetSingleWorkloadCostReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets single workload cost report.",
        "tags": [
          "WorkloadReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespaces/{namespace}/{workloadType}/{workloadName}/datatransfer-costs": {
      "get": {
        "operationId": "WorkloadReportAPI_GetSingleWorkloadDataTransferCost",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadType",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetSingleWorkloadDataTransferCostResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets single workload cost report.",
        "tags": [
          "WorkloadReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespaces/{namespace}/{workloadType}/{workloadName}/efficiency": {
      "get": {
        "operationId": "WorkloadReportAPI_GetClusterWorkloadEfficiencyReportByName",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Namespace of the workload.",
            "in": "path",
            "name": "namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Workload type, e.g. Deployment, StatefulSet, DaemonSet.",
            "in": "path",
            "name": "workloadType",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the workload.",
            "in": "path",
            "name": "workloadName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Optional parameter marking whether the current state for workload and its containers should be returned.",
            "in": "query",
            "name": "includeCurrent",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Optional parameter marking whether the history of workload and its containers should be returned.",
            "in": "query",
            "name": "includeHistory",
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadEfficiencyReportByNameResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster workload efficiency report for a workload by name.",
        "tags": [
          "WorkloadReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespaces/{namespace}/{workloadType}/{workloadName}/events": {
      "get": {
        "operationId": "WorkloadReportAPI_GetSingleWorkloadEvents",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Namespace of the workload.",
            "in": "path",
            "name": "namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Kubernetes kind of the workload (e.g. \"Deployment\", \"StatefulSet\").",
            "in": "path",
            "name": "workloadType",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the workload.",
            "in": "path",
            "name": "workloadName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps. 0 = auto. Allowed: 30, 300, 600, 900, 3600, 86400.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Filter by Kubernetes reason strings (e.g. \"OOMKilled\"). Empty = all types. Unknown values return 400.",
            "explode": true,
            "in": "query",
            "name": "eventTypes",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "When true, each event_type series is additionally split by managed_by (e.g. \"woop\" or \"\").",
            "in": "query",
            "name": "groupByManagedBy",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Optional time_zone in IANA format, e.g., 'Europe/Madrid'.\nDefault is Etc/UTC.",
            "in": "query",
            "name": "timeZone",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetSingleWorkloadEventsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workload event metrics (e.g. OOM kills) aggregated by time bucket for a single workload.",
        "tags": [
          "WorkloadReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespaces/{namespace}/{workloadType}/{workloadName}/gpu-summary": {
      "get": {
        "operationId": "WorkloadReportAPI_GetSingleWorkloadGPUSummary",
        "parameters": [
          {
            "description": "Workload cluster ID.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Namespace the workload is in.",
            "in": "path",
            "name": "namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Type of the workload.",
            "in": "path",
            "name": "workloadType",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the workload.",
            "in": "path",
            "name": "workloadName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetSingleWorkloadGPUSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets single workload GPU summary.",
        "tags": [
          "WorkloadReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespaces/{namespace}/{workloadType}/{workloadName}/traffic-destination-histories": {
      "get": {
        "operationId": "WorkloadReportAPI_GetWorkloadTrafficDestinationsHistory",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Namespace of the workload.",
            "in": "path",
            "name": "namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Workload type, e.g. Deployment, StatefulSet, DaemonSet.",
            "in": "path",
            "name": "workloadType",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the workload.",
            "in": "path",
            "name": "workloadName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Limit the number of items in destinations. Default value is 0 = UNLIMITED.",
            "in": "query",
            "name": "limit",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadTrafficDestinationsHistoryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workload traffic destinations with their costs and history.",
        "tags": [
          "WorkloadReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/namespaces/{namespace}/{workloadType}/{workloadName}/traffic-destinations": {
      "get": {
        "operationId": "WorkloadReportAPI_GetWorkloadTrafficDestinations",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Namespace of the workload.",
            "in": "path",
            "name": "namespace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Workload type, e.g. Deployment, StatefulSet, DaemonSet.",
            "in": "path",
            "name": "workloadType",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the workload.",
            "in": "path",
            "name": "workloadName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Limit the number of items in destinations. Default value is 0 = UNLIMITED.",
            "in": "query",
            "name": "limit",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadTrafficDestinationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workload traffic destinations with their costs.",
        "tags": [
          "WorkloadReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/node-templates": {
      "get": {
        "operationId": "NodeReportAPI_GetClusterNodeTemplatesReport",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNodeTemplatesReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the node templates report for a cluster.",
        "tags": [
          "NodeReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/nodes/storage": {
      "get": {
        "operationId": "NodeReportAPI_GetClusterNodesStorageReport",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNodesStorageReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets ephemeral storage metrics per node for a cluster.",
        "tags": [
          "NodeReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/reporting-capabilities": {
      "post": {
        "operationId": "ReportConfigurationAPI_GetClusterReportingCapabilities",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.workloadNames",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "filter.labelsOperator",
            "schema": {
              "default": "OR",
              "enum": [
                "OR",
                "AND"
              ],
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.workloadTypes",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterReportingCapabilitiesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns information about the reporting capabilities for a specific cluster.",
        "tags": [
          "ReportConfigurationAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/resource-usage": {
      "get": {
        "operationId": "ClusterReportAPI_GetClusterResourceUsage",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterResourceUsageResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster resource usage.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/rightsizing-patch.sh": {
      "post": {
        "operationId": "WorkloadReportAPI_GetClusterWorkloadRightsizingPatch",
        "parameters": [
          {
            "description": "Defines cluster id.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadRightsizingPatchRequest.Workloads"
              }
            }
          },
          "description": "Reference to the Workloads IDs list.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "text/x-shellscript": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster workload efficiency report for the workloads.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "workloads"
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/rightsizing-summary": {
      "get": {
        "operationId": "ClusterReportAPI_GetRightsizingSummary",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetRightsizingSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the rightsizing summary for the cluster.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/savings": {
      "get": {
        "operationId": "ClusterReportAPI_GetClusterSavingsReport",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterSavingsReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster savings report.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/summary": {
      "get": {
        "operationId": "ClusterReportAPI_GetClusterSummary",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets current details about the cluster.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/workload-cost-summaries": {
      "post": {
        "operationId": "WorkloadReportAPI_GetWorkloadCostSummaries",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Labels to be included for each workload.",
            "explode": true,
            "in": "query",
            "name": "labelsToInclude",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.WorkloadFilter"
              }
            }
          },
          "description": "Workload filtering options.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadCostSummariesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster workloads compute cost report.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/workload-costs": {
      "get": {
        "operationId": "WorkloadReportAPI_GetClusterWorkloadReport",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.workloadNames",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "filter.labelsOperator",
            "schema": {
              "default": "OR",
              "enum": [
                "OR",
                "AND"
              ],
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.workloadTypes",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Labels to be included for each workload.",
            "explode": true,
            "in": "query",
            "name": "labelsToInclude",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster workloads cost report.",
        "tags": [
          "WorkloadReportAPI"
        ]
      },
      "post": {
        "operationId": "WorkloadReportAPI_GetClusterWorkloadReport2",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Labels to be included for each workload.",
            "explode": true,
            "in": "query",
            "name": "labelsToInclude",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the costs should include costs of the unallocated nodes resources, fairly distributed to workloads based on requested workload resources.",
            "in": "query",
            "name": "includeIdleResourceCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.WorkloadFilter"
              }
            }
          },
          "description": "Filter workloads by labels or names.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster workloads cost report.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/workload-efficiency": {
      "get": {
        "operationId": "WorkloadReportAPI_GetClusterWorkloadEfficiencyReport",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.workloadNames",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "filter.labelsOperator",
            "schema": {
              "default": "OR",
              "enum": [
                "OR",
                "AND"
              ],
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.workloadTypes",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "filter.namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadEfficiencyReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster workload efficiency report.",
        "tags": [
          "WorkloadReportAPI"
        ]
      },
      "post": {
        "operationId": "WorkloadReportAPI_GetClusterWorkloadEfficiencyReport2",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.WorkloadFilter"
              }
            }
          },
          "description": "Filter workloads by labels or names.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadEfficiencyReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cluster workload efficiency report.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/cost-reports/clusters/{clusterId}/workload-event-metrics": {
      "get": {
        "operationId": "WorkloadReportAPI_GetClusterWorkloadEventMetrics",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps. 0 = auto. Allowed: 30, 300, 600, 900, 3600, 86400.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Filter by Kubernetes reason strings (e.g. \"OOMKilled\"). Empty = all types. Unknown values return 400.",
            "explode": true,
            "in": "query",
            "name": "eventTypes",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "When true, each series is additionally split by managed_by (e.g. \"woop\" or \"\").",
            "in": "query",
            "name": "groupByManagedBy",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Optional time_zone in IANA format, e.g., 'Europe/Madrid'.\nDefault is Etc/UTC.",
            "in": "query",
            "name": "timeZone",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadEventMetricsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workload event metrics (e.g. OOM kills) aggregated by time bucket for a cluster.",
        "tags": [
          "WorkloadReportAPI"
        ]
      }
    },
    "/v1/cost-reports/idle-resources/disks": {
      "get": {
        "operationId": "IdleResourcesAPI_ListIdleDisks",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.ListIdleDisksResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List idle disks in all connected clouds.",
        "tags": [
          "IdleResourcesAPI"
        ]
      }
    },
    "/v1/cost-reports/namespaces": {
      "post": {
        "operationId": "WorkloadReportAPI_GetNamespacesForClusters",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.NamespaceFilters"
              }
            }
          },
          "description": "Filter items by workload specific fields.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetNamespacesForClustersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the kubernetes namespaces for the given cluster IDs.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "namespaceFilters"
      }
    },
    "/v1/cost-reports/node-labels/names": {
      "post": {
        "operationId": "NodeReportAPI_GetNodeLabelNames",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.NodeLabelFilters"
              }
            }
          },
          "description": "Filter items by more label specific fields.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetNodeLabelNamesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the kubernetes label names applied to the node in the organization.",
        "tags": [
          "NodeReportAPI"
        ],
        "x-codegen-request-body-name": "labelFilters"
      }
    },
    "/v1/cost-reports/node-labels/values": {
      "post": {
        "operationId": "NodeReportAPI_GetNodeLabelValues",
        "parameters": [
          {
            "description": "Label name. Max length of 317 = 253 (optional prefix) + 1 (slash) + 63 (name segment) according to\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set",
            "in": "query",
            "name": "label",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.NodeLabelFilters"
              }
            }
          },
          "description": "Filter items by more label specific fields.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetNodeLabelValuesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the kubernetes label values for the given label name.",
        "tags": [
          "NodeReportAPI"
        ],
        "x-codegen-request-body-name": "labelFilters"
      }
    },
    "/v1/cost-reports/organization/clusters/efficiency": {
      "get": {
        "operationId": "ClusterReportAPI_GetOrganizationClustersEfficiencySummary",
        "parameters": [
          {
            "description": "Start of period for summary",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period for summary",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersEfficiencySummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the efficiency summary per cluster for an organization.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/organization/clusters/report": {
      "get": {
        "operationId": "ClusterReportAPI_GetOrganizationClustersCostReport",
        "parameters": [
          {
            "description": "Start of period for summary",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period for summary",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersCostReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets summary for all clusters for an organization",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/organization/clusters/summary": {
      "get": {
        "operationId": "ClusterReportAPI_GetClustersSummary",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClustersSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets current details about all clusters of organization.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/organization/cost-comparison": {
      "get": {
        "operationId": "PlatformImpactReportAPI_GetCostComparisonReport",
        "parameters": [
          {
            "description": "Cluster IDs for filtering. Leave empty to include all.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Start of period A.",
            "in": "query",
            "name": "startTimeA",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Start of period B.",
            "in": "query",
            "name": "startTimeB",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Period range in days.",
            "in": "query",
            "name": "rangeDays",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetCostComparisonReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cost comparison report for two different periods. All clusters or selected.",
        "tags": [
          "PlatformImpactReportAPI"
        ]
      }
    },
    "/v1/cost-reports/organization/daily-cost": {
      "get": {
        "operationId": "ClusterReportAPI_GetClustersCostReport",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClustersCostReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets cost report data over all clusters of user organization.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/organization/efficiency": {
      "get": {
        "operationId": "ClusterReportAPI_GetOrganizationEfficiencyReport",
        "parameters": [
          {
            "description": "Start of period for the report",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period for the report",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationEfficiencyReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the efficiency per timestamp for an organization.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/organization/efficiency/summary": {
      "get": {
        "operationId": "ClusterReportAPI_GetOrganizationEfficiencySummary",
        "parameters": [
          {
            "description": "Start of period for summary",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period for summary",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Use listing prices instead of discounted prices.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationEfficiencySummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the efficiency summary for an organization.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/cost-reports/organization/oaj-state": {
      "post": {
        "operationId": "ReportConfigurationAPI_UpdateOAJState",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.UpdateOAJStateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.UpdateOAJStateResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Updates organization OAJ state.",
        "tags": [
          "ReportConfigurationAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/cost-reports/organization/workload-event-metrics": {
      "get": {
        "operationId": "WorkloadReportAPI_GetOrganizationWorkloadEventMetrics",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps. 0 = auto. Allowed: 30, 300, 600, 900, 3600, 86400.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Filter by Kubernetes reason strings (e.g. \"OOMKilled\"). Empty = all types. Unknown values return 400.",
            "explode": true,
            "in": "query",
            "name": "eventTypes",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "When true, each series is additionally split by managed_by (e.g. \"woop\" or \"\").",
            "in": "query",
            "name": "groupByManagedBy",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Optional time_zone in IANA format, e.g., 'Europe/Madrid'.\nDefault is Etc/UTC.",
            "in": "query",
            "name": "timeZone",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationWorkloadEventMetricsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workload event metrics aggregated by time bucket across all clusters in the organisation.",
        "tags": [
          "WorkloadReportAPI"
        ]
      }
    },
    "/v1/cost-reports/workload-labels/names": {
      "post": {
        "operationId": "WorkloadReportAPI_GetWorkloadLabelNames",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.WorkloadLabelFilters"
              }
            }
          },
          "description": "Filter items by more label specific fields.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadLabelNamesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the kubernetes label names applied to the workloads in the organization.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "labelFilters"
      }
    },
    "/v1/cost-reports/workload-labels/values": {
      "post": {
        "operationId": "WorkloadReportAPI_GetWorkloadLabelValues",
        "parameters": [
          {
            "description": "Label name. Max length of 317 = 253 (optional prefix) + 1 (slash) + 63 (name segment) according to\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set",
            "in": "query",
            "name": "label",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.WorkloadLabelFilters"
              }
            }
          },
          "description": "Filter items by more label specific fields.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadLabelValuesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the kubernetes label values for the given label name.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "labelFilters"
      }
    },
    "/v1/cost-reports/workloads/gpu-report": {
      "post": {
        "operationId": "WorkloadReportAPI_GetWorkloadsGPUReport",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsGPUReportRequest.Filter"
              }
            }
          },
          "description": "Workloads filtering options.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsGPUReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workloads GPU report with time-series data grouped by GPU model.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/cost-reports/workloads/gpu-summary": {
      "post": {
        "operationId": "WorkloadReportAPI_GetWorkloadsGPUSummary",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsGPUSummaryRequest.Filter"
              }
            }
          },
          "description": "Workloads filtering options.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsGPUSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workloads GPU summary report.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/cost-reports/workloads/gpu-utilization": {
      "post": {
        "operationId": "WorkloadReportAPI_GetWorkloadsGPUUtilization",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsGPUUtilizationRequest.Filter"
              }
            }
          },
          "description": "Filter workloads by cluster_ids or workload specific data.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsGPUUtilizationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets real time workloads GPU utilization %.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/cost-reports/workloads/gpu-wasted-cost": {
      "post": {
        "operationId": "WorkloadReportAPI_GetWorkloadsWastedGPUCostImpact",
        "parameters": [
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsWastedGPUCostImpactRequest.Filter"
              }
            }
          },
          "description": "Workloads filtering options.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsWastedGPUCostImpactResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets workloads cost impact of wasted GPU resources report.",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/cost-reports/workloads/metadata": {
      "post": {
        "operationId": "WorkloadReportAPI_GetWorkloadsMetadata",
        "parameters": [
          {
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Whether to use listing prices instead of actual prices for cost calculations.",
            "in": "query",
            "name": "useListingPrices",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/costreport.v1beta1.WorkloadLabelFilters"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsMetadataResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the workloads metadata",
        "tags": [
          "WorkloadReportAPI"
        ],
        "x-codegen-request-body-name": "filters"
      }
    },
    "/v1/dbo/accounts": {
      "get": {
        "operationId": "DboAPI_ListAccounts",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/dbo.v1.Account"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "List onboarded cloud accounts.",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups": {
      "get": {
        "description": "Lists cache groups in a given organization.",
        "operationId": "DboAPI_ListCacheGroups",
        "parameters": [
          {
            "in": "query",
            "name": "instanceId",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "clusterId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "metricsRange.start",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "metricsRange.end",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "deployed",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.ListCacheGroupsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List cache groups.",
        "tags": [
          "DboAPI"
        ]
      },
      "post": {
        "description": "Creates new cache group.",
        "operationId": "DboAPI_CreateCacheGroup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dbo.v1.CacheGroup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.CacheGroup"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create cache group.",
        "tags": [
          "DboAPI"
        ],
        "x-codegen-request-body-name": "group"
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations": {
      "get": {
        "description": "Lists cache configurations for a given cache group.",
        "operationId": "DboAPI_ListCacheConfigurations",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "databaseName",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.ListCacheConfigurationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List cache configurations",
        "tags": [
          "DboAPI"
        ]
      },
      "post": {
        "description": "Creates new cache configuration in a given cache group.",
        "operationId": "DboAPI_CreateCacheConfiguration",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dbo.v1.CacheConfiguration"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.CacheConfiguration"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Create cache configuration",
        "tags": [
          "DboAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{cacheId}/efficiency": {
      "get": {
        "description": "Retrieves cache efficiency.",
        "operationId": "DboAPI_GetCacheEfficiency",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cacheId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "description": "Optionally filter the results by a specific template hash",
            "in": "query",
            "name": "templateHash",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by username.",
            "in": "query",
            "name": "username",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheEfficiencyResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache efficiency data.",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{cacheId}/queries": {
      "get": {
        "description": "Retrieves cache queries for the current organization.",
        "operationId": "DboAPI_GetCacheQueries",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cacheId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "An optional parameter for performing substring matching on the query template string.",
            "in": "query",
            "name": "queryContains",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheQueriesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache queries",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{cacheId}/queries/{templateHash}": {
      "get": {
        "description": "Retrieves cache query for the current organization by its template hash.",
        "operationId": "DboAPI_GetCacheQuery",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cacheId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "templateHash",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "metricsRange.start",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "metricsRange.end",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.CacheQuery"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache query",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{cacheId}/queries/{templateHash}/insights": {
      "get": {
        "description": "Retrieves detailed query insights such as cache miss latency, TTL values, and unique parameter counts over time.",
        "operationId": "DboAPI_GetCacheQueryInsights",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cacheId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "templateHash",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "metricsRange.start",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "metricsRange.end",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "stepSeconds",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheQueryInsightsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache query insights",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{cacheId}/queries/{templateHash}/template": {
      "get": {
        "description": "Retrieves the full query template string for the provided template hash.",
        "operationId": "DboAPI_GetCacheQueryTemplate",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cacheId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "templateHash",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheQueryTemplateResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache query template",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{cacheId}/rules": {
      "get": {
        "description": "Lists cache TTL configurations for a given cache configuration.",
        "operationId": "DboAPI_ListCacheTTLs",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cacheId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "table",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "templateHash",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.ListCacheTTLsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List cache TTL configurations",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{cacheId}/rules/{id}": {
      "delete": {
        "description": "Deletes TTL cache configuration.",
        "operationId": "DboAPI_DeleteCacheTTL",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cacheId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.DeleteCacheTTLResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes TTL cache configuration",
        "tags": [
          "DboAPI"
        ]
      },
      "put": {
        "description": "Updates TTL cache configuration.",
        "operationId": "DboAPI_UpdateCacheTTL",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cacheId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dbo.v1.TTLConfiguration"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.TTLConfiguration"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Updates TTL cache configuration",
        "tags": [
          "DboAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{cacheId}/summary": {
      "get": {
        "description": "Retrieves cache summary for the current organization.",
        "operationId": "DboAPI_GetCacheSummary",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cacheId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter by username.",
            "in": "query",
            "name": "username",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache summary",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{databaseName}": {
      "get": {
        "description": "Get a cache configuration for a given cache group and database name",
        "operationId": "DboAPI_GetCacheConfiguration",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "databaseName",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheConfigurationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache configuration",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{id}": {
      "delete": {
        "description": "Deletes cache configuration.",
        "operationId": "DboAPI_DeleteCacheConfiguration",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.DeleteCacheConfigurationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes cache configuration",
        "tags": [
          "DboAPI"
        ]
      },
      "put": {
        "description": "Updates cache configuration.",
        "operationId": "DboAPI_UpdateCacheConfiguration",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dbo.v1.CacheConfiguration"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.CacheConfiguration"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Updates cache configuration",
        "tags": [
          "DboAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/dbo/cache-groups/{groupId}/cache-configurations/{id}/rules": {
      "post": {
        "description": "Creates new cache TTL configuration.",
        "operationId": "DboAPI_CreateCacheTTL",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dbo.v1.TTLConfiguration"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.TTLConfiguration"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Create cache TTL configuration",
        "tags": [
          "DboAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/dbo/cache-groups/{groupId}/diagnostics/upload-url": {
      "post": {
        "description": "Creates an ephemeral upload URL for a diagnostics file",
        "operationId": "DboAPI_CreateCacheDiagnosticUploadURL",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.CreateCacheDiagnosticUploadURLResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create upload URL for diagnostic file",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{id}": {
      "delete": {
        "description": "Deletes a given cache group.",
        "operationId": "DboAPI_DeleteCacheGroup",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.DeleteCacheGroupResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes cache group.",
        "tags": [
          "DboAPI"
        ]
      },
      "get": {
        "description": "Returns cache group by ID.",
        "operationId": "DboAPI_GetCacheGroup",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "metricsRange.start",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "metricsRange.end",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.CacheGroup"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache group.",
        "tags": [
          "DboAPI"
        ]
      },
      "put": {
        "description": "Updates cache group.",
        "operationId": "DboAPI_UpdateCacheGroup",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dbo.v1.CacheGroup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.CacheGroup"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Update cache group.",
        "tags": [
          "DboAPI"
        ],
        "x-codegen-request-body-name": "group"
      }
    },
    "/v1/dbo/cache-groups/{id}/cache-performance": {
      "get": {
        "description": "Retrieves cache group performance timeseries data.",
        "operationId": "DboAPI_GetCacheGroupPerformance",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "description": "Filter by specific database (cache configuration) ID.",
            "in": "query",
            "name": "databaseId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by endpoint name. Cannot be combined with username.",
            "in": "query",
            "name": "endpointName",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by username. Cannot be combined with endpoint_name.",
            "in": "query",
            "name": "username",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheGroupPerformanceResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache group performance",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{id}/cache-performance/summary": {
      "get": {
        "description": "Retrieves aggregated cache performance metrics for a cache group.",
        "operationId": "DboAPI_GetCacheGroupPerformanceSummary",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "metricsRange.start",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "metricsRange.end",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter by specific database (cache configuration) ID.",
            "in": "query",
            "name": "databaseId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by endpoint name. Cannot be combined with username.",
            "in": "query",
            "name": "endpointName",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by username. Cannot be combined with endpoint_name.",
            "in": "query",
            "name": "username",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheGroupPerformanceSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache group performance summary",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{id}/metrics-filter-options": {
      "get": {
        "description": "Retrieves available filter options (e.g., users) for cache group metrics.",
        "operationId": "DboAPI_GetCacheGroupMetricsFilterOptions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "timeRange.start",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "timeRange.end",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter by specific database (cache configuration) ID.",
            "in": "query",
            "name": "databaseId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheGroupMetricsFilterOptionsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache group metrics filter options",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{id}/operational-metrics": {
      "get": {
        "description": "Retrieves cache group operational metrics timeseries data.",
        "operationId": "DboAPI_GetCacheGroupOperationalMetrics",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "metricsRange.start",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "metricsRange.end",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "description": "Cache configuration id: if provided, will filter by it.",
            "in": "query",
            "name": "configurationId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by endpoint name. Cannot be combined with username.",
            "in": "query",
            "name": "endpointName",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by username. Cannot be combined with endpoint_name.",
            "in": "query",
            "name": "username",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheGroupOperationalMetricsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache group operational metrics",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-groups/{id}/pooling-eligibility": {
      "get": {
        "description": "Retrieves cache group operational metrics timeseries data.",
        "operationId": "DboAPI_GetCacheGroupPoolingEligibility",
        "parameters": [
          {
            "description": "Cache Group ID",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.GetCacheGroupPoolingEligibilityResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cache group pooling eligibility report",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/cache-state-exchange/{cacheGroupId}": {
      "post": {
        "description": "State/config exchange between a proxy instance and CAST AI control plane.",
        "operationId": "DboAPI_ExchangeCacheState",
        "parameters": [
          {
            "in": "path",
            "name": "cacheGroupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dbo.v1.ProxyState"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.ExchangeCacheStateResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "State exchange",
        "tags": [
          "DboAPI"
        ],
        "x-codegen-request-body-name": "state"
      }
    },
    "/v1/dbo/db-clusters/{clusterId}": {
      "get": {
        "description": "Retrieves database cluster details.",
        "operationId": "DboAPI_GetDatabaseCluster",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.DatabaseCluster"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get database cluster details",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/db-components": {
      "get": {
        "description": "Lists database components for the current organization.",
        "operationId": "DboAPI_ListDatabaseComponents",
        "parameters": [
          {
            "description": "Start of period.",
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.ListDatabaseComponentsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List database components",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/db-instances/{instanceId}": {
      "get": {
        "description": "Retrieves database instances details.",
        "operationId": "DboAPI_GetDatabaseInstance",
        "parameters": [
          {
            "in": "path",
            "name": "instanceId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.DatabaseInstance"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get database instance details",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/db-instances/{instanceId}/infrastructure-metrics": {
      "get": {
        "description": "Retrieves database instance infrastructure metrics.",
        "operationId": "DboAPI_GetDatabaseInstanceInfrastructureMetrics",
        "parameters": [
          {
            "in": "path",
            "name": "instanceId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Start of period.",
            "in": "query",
            "name": "startTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of period.",
            "in": "query",
            "name": "endTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "required": true,
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/dbo.v1.InstanceMetrics"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get database instance infrastructure metrics",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/registrations": {
      "post": {
        "operationId": "DboAPI_CreateRegistration",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dbo.v1.Registration"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.Registration"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Create new registration.",
        "tags": [
          "DboAPI"
        ],
        "x-codegen-request-body-name": "registration"
      }
    },
    "/v1/dbo/registrations/{registrationId}/script": {
      "get": {
        "operationId": "DboAPI_GetRegistrationScript",
        "parameters": [
          {
            "in": "path",
            "name": "registrationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/google.api.HttpBody"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns shell script to execute a registration",
        "tags": [
          "DboAPI"
        ]
      }
    },
    "/v1/dbo/registrations/{registrationId}/status": {
      "get": {
        "operationId": "DboAPI_GetRegistrationStatus",
        "parameters": [
          {
            "in": "path",
            "name": "registrationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.RegistrationStatusUpdate"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get registration status.",
        "tags": [
          "DboAPI"
        ]
      },
      "post": {
        "operationId": "DboAPI_CreateRegistrationStatusUpdate",
        "parameters": [
          {
            "in": "path",
            "name": "registrationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dbo.v1.RegistrationStatusUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dbo.v1.CreateRegistrationStatusUpdateResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create registration status update.",
        "tags": [
          "DboAPI"
        ],
        "x-codegen-request-body-name": "statusUpdate"
      }
    },
    "/v1/dedicated-instances": {
      "get": {
        "operationId": "DedicatedInstanceAPI_ListDedicatedInstances",
        "parameters": [
          {
            "in": "query",
            "name": "gcp.name",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "gcp.project",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "gcp.zone",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "usingCluster",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dedicatedinstance.v1beta1.ListDedicatedInstancesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListDedicatedInstances returns list of dedicated instances.",
        "tags": [
          "DedicatedInstanceAPI"
        ]
      }
    },
    "/v1/discounts": {
      "get": {
        "operationId": "DiscountsAPI_ListDiscounts",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.ListDiscountsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List discounts",
        "tags": [
          "DiscountsAPI"
        ]
      },
      "post": {
        "operationId": "DiscountsAPI_CreateDiscount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.inventory.v1beta1.Discount"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.CreateDiscountResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create discount",
        "tags": [
          "DiscountsAPI"
        ],
        "x-codegen-request-body-name": "discount"
      }
    },
    "/v1/discounts/{discountId}": {
      "delete": {
        "operationId": "DiscountsAPI_DeleteDiscount",
        "parameters": [
          {
            "description": "ID of the discount to be deleted",
            "in": "path",
            "name": "discountId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete a given discount by its id",
        "tags": [
          "DiscountsAPI"
        ]
      },
      "put": {
        "operationId": "DiscountsAPI_UpdateDiscount",
        "parameters": [
          {
            "description": "ID of the discount to be updated",
            "in": "path",
            "name": "discountId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.inventory.v1beta1.Discount"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.UpdateDiscountResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Update a given discount",
        "tags": [
          "DiscountsAPI"
        ],
        "x-codegen-request-body-name": "discount"
      }
    },
    "/v1/features": {
      "get": {
        "operationId": "FeaturesAPI_List",
        "parameters": [
          {
            "description": "Prefix to filter flags by.",
            "in": "query",
            "name": "flagNamePrefix",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.features.v1.ListResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List all available feature flags",
        "tags": [
          "FeaturesAPI"
        ]
      },
      "post": {
        "operationId": "FeaturesAPI_Resolve",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.features.v1.ResolveMessage"
              }
            }
          },
          "description": "ResolveMessage is the message used to resolve a feature flag.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.features.v1.ResolveResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Resolve resolves a flags for the provided context",
        "tags": [
          "FeaturesAPI"
        ],
        "x-codegen-request-body-name": "message"
      }
    },
    "/v1/instances/types": {
      "get": {
        "operationId": "InventoryAPI_ListInstanceTypeNames",
        "parameters": [
          {
            "explode": true,
            "in": "query",
            "name": "cloudServiceProviders",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.ListInstanceTypeNamesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List all unique instance type names and families",
        "tags": [
          "InventoryAPI"
        ]
      }
    },
    "/v1/inventory/blacklist": {
      "get": {
        "description": "Gets cluster autoscaler blacklist configuration.",
        "operationId": "InventoryBlacklistAPI_ListBlacklists",
        "parameters": [
          {
            "description": "Organization id for which the instance type or family is blacklisted.",
            "in": "query",
            "name": "organizationId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Cluster id, that will only be set if instance type or family is blacklisted for specific cluster.",
            "in": "query",
            "name": "clusterId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/inventoryblacklist.v1.ListBlacklistsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get blacklist configuration",
        "tags": [
          "InventoryBlacklistAPI"
        ]
      }
    },
    "/v1/inventory/blacklist/add": {
      "post": {
        "description": "Blacklists a specific instance family or type",
        "operationId": "InventoryBlacklistAPI_AddBlacklist",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inventoryblacklist.v1.AddBlacklistRequest"
              }
            }
          },
          "description": "Defines request object to add autoscaler inventory's blacklist item.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/inventoryblacklist.v1.AddBlacklistResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Add to blacklist",
        "tags": [
          "InventoryBlacklistAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/inventory/blacklist/remove": {
      "post": {
        "description": "Whitelists a specific instance family or type",
        "operationId": "InventoryBlacklistAPI_RemoveBlacklist",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inventoryblacklist.v1.RemoveBlacklistRequest"
              }
            }
          },
          "description": "Defines request object to remove autoscaler inventory's blacklisted items.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/inventoryblacklist.v1.RemoveBlacklistResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Remove from blacklist",
        "tags": [
          "InventoryBlacklistAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/invitations": {
      "get": {
        "operationId": "UsersAPI_ListInvitations",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.ListInvitationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets all pending invitations in the organization.",
        "tags": [
          "UsersAPI"
        ]
      },
      "post": {
        "operationId": "UsersAPI_CreateInvitations",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.users.v1beta1.CreateInvitationsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.CreateInvitationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create invitations to join organization by email",
        "tags": [
          "UsersAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/invitations/{id}": {
      "delete": {
        "operationId": "UsersAPI_DeleteInvitation",
        "parameters": [
          {
            "description": "Invitation ID.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.DeleteInvitationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete an invitation by id.",
        "tags": [
          "UsersAPI"
        ]
      }
    },
    "/v1/invitations/{invitationId}": {
      "post": {
        "operationId": "UsersAPI_ClaimInvitation",
        "parameters": [
          {
            "description": "Invitation ID.",
            "in": "path",
            "name": "invitationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.users.v1beta1.Request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.ClaimInvitationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Consume invitation and add current user to organization",
        "tags": [
          "UsersAPI"
        ],
        "x-codegen-request-body-name": "request"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/actions": {
      "get": {
        "operationId": "ClusterActionsAPI_PollClusterActions",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/clusteractions.v1.PollClusterActionsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Polls for pending cluster actions.",
        "tags": [
          "ClusterActionsAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/actions/logs": {
      "post": {
        "operationId": "ClusterActionsAPI_IngestLogs",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/clusteractions.v1.LogEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/clusteractions.v1.IngestLogsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Ingest cluster controller logs.",
        "tags": [
          "ClusterActionsAPI"
        ],
        "x-codegen-request-body-name": "log"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/actions/{actionId}/ack": {
      "post": {
        "operationId": "ClusterActionsAPI_AckClusterAction",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "actionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/clusteractions.v1.ClusterActionAck"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/clusteractions.v1.AckClusterActionResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Ack completed cluster action.",
        "tags": [
          "ClusterActionsAPI"
        ],
        "x-codegen-request-body-name": "ack"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/agent-status": {
      "get": {
        "operationId": "ClusterReportAPI_GetClusterAgentStatus",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterAgentStatusResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get status of all castware components in the cluster.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/egressd-script": {
      "get": {
        "operationId": "ReportConfigurationAPI_GetEgressdScript",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetEgressdScriptResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns single command for external cluster with egressd installation script.",
        "tags": [
          "ReportConfigurationAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/evictor-advanced-config": {
      "get": {
        "operationId": "EvictorAPI_GetAdvancedConfig",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.evictor.v1.AdvancedConfig"
                }
              }
            },
            "description": "AdvancedConfig object."
          }
        },
        "summary": "Gets evictor advanced configuration for the target cluster.",
        "tags": [
          "EvictorAPI"
        ]
      },
      "post": {
        "operationId": "EvictorAPI_UpsertAdvancedConfig",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.evictor.v1.AdvancedConfig"
              }
            }
          },
          "description": "EvictionConfig details.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.evictor.v1.AdvancedConfig"
                }
              }
            },
            "description": "AdvancedConfig obect."
          }
        },
        "summary": "Upsert cluster's evictor advanced configuration.",
        "tags": [
          "EvictorAPI"
        ],
        "x-codegen-request-body-name": "advancedConfig"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/filter-instance-types": {
      "post": {
        "description": "Lists instance types based on the provided policy.",
        "operationId": "NodeTemplatesAPI_FilterInstanceTypes",
        "parameters": [
          {
            "description": "ID of the cluster",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Disabled legacy behaviour of deduplicating instance types in the region.",
            "in": "query",
            "name": "disableInstanceTypeDeduplication",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nodetemplates.v1.NodeTemplate"
              }
            }
          },
          "description": "Filter",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodetemplates.v1.FilterInstanceTypesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Filter instance types",
        "tags": [
          "NodeTemplatesAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/generate-node-templates": {
      "post": {
        "description": "Generates node templates from the latest snapshot",
        "operationId": "NodeTemplatesAPI_GenerateNodeTemplates",
        "parameters": [
          {
            "description": "ID of the cluster to generate templates for",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodetemplates.v1.GenerateNodeTemplatesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Generate node templates",
        "tags": [
          "NodeTemplatesAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/gpu-metrics-exporter-script": {
      "get": {
        "deprecated": true,
        "operationId": "ReportConfigurationAPI_GetGpuMetricsExporterScript",
        "parameters": [
          {
            "description": "The ID of the cluster that will install gpu-metrics-exporter.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetGpuMetricsExporterScriptResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use Kvisor for gpu-metrics collection.\nReturns single command for external cluster with gpu-metrics-exporter installation script.",
        "tags": [
          "ReportConfigurationAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/karpenter/migrate": {
      "get": {
        "operationId": "AutoscalerAPI_GetKarpenterDefinitionsMigrationIntent",
        "parameters": [
          {
            "description": "The id of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetKarpenterMigrationIntentResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get karpenter definitions migration intent",
        "tags": [
          "AutoscalerAPI"
        ]
      },
      "post": {
        "operationId": "AutoscalerAPI_MigrateKarpenterDefinitions",
        "parameters": [
          {
            "description": "The id of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.MigrateKarpenterDefinitionsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Migrate karpenter custom resource definitions to CAST AI configuration",
        "tags": [
          "AutoscalerAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/node-configurations": {
      "get": {
        "operationId": "NodeConfigurationAPI_ListConfigurations",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodeconfig.v1.ListConfigurationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Lists cluster's node configurations.",
        "tags": [
          "NodeConfigurationAPI"
        ]
      },
      "post": {
        "operationId": "NodeConfigurationAPI_CreateConfiguration",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nodeconfig.v1.NewNodeConfiguration"
              }
            }
          },
          "description": "New node configuration.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodeconfig.v1.NodeConfiguration"
                }
              }
            },
            "description": "Created configuration."
          }
        },
        "summary": "Creates new node configuration for a specific cluster.",
        "tags": [
          "NodeConfigurationAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/node-configurations/suggestions": {
      "get": {
        "operationId": "NodeConfigurationAPI_GetSuggestedConfiguration",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodeconfig.v1.GetSuggestedConfigurationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns suggested configuration for the cluster",
        "tags": [
          "NodeConfigurationAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/node-configurations/{id}": {
      "delete": {
        "operationId": "NodeConfigurationAPI_DeleteConfiguration",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ID of the node configuration.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodeconfig.v1.DeleteConfigurationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes node configuration of a specific cluster.",
        "tags": [
          "NodeConfigurationAPI"
        ]
      },
      "get": {
        "operationId": "NodeConfigurationAPI_GetConfiguration",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ID of the node configuration.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodeconfig.v1.NodeConfiguration"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get cluster's node configuration.",
        "tags": [
          "NodeConfigurationAPI"
        ]
      },
      "post": {
        "operationId": "NodeConfigurationAPI_UpdateConfiguration",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ID of the node configuration.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nodeconfig.v1.NodeConfigurationUpdate"
              }
            }
          },
          "description": "Node configuration update.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodeconfig.v1.NodeConfiguration"
                }
              }
            },
            "description": "Updated configuration."
          }
        },
        "summary": "Updates configuration of a specific cluster.",
        "tags": [
          "NodeConfigurationAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/node-configurations/{id}/default": {
      "post": {
        "operationId": "NodeConfigurationAPI_SetDefault",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ID of the node configuration.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodeconfig.v1.NodeConfiguration"
                }
              }
            },
            "description": "Updated configuration."
          }
        },
        "summary": "Marks node configuration as default.",
        "tags": [
          "NodeConfigurationAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/node-constraints": {
      "get": {
        "operationId": "PoliciesAPI_GetClusterNodeConstraints",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/policies.v1.GetClusterNodeConstraintsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets all viable settings to be used for the Node Constraints feature.",
        "tags": [
          "PoliciesAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/node-templates": {
      "get": {
        "description": "Lists active node templates.",
        "operationId": "NodeTemplatesAPI_ListNodeTemplates",
        "parameters": [
          {
            "description": "ID of the cluster to list templates for",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Flag whether to include the default template",
            "in": "query",
            "name": "includeDefault",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Flag whether to exclude stats about template nodes.",
            "in": "query",
            "name": "excludeStats",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodetemplates.v1.ListNodeTemplatesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List node templates",
        "tags": [
          "NodeTemplatesAPI"
        ]
      },
      "post": {
        "description": "Creates a node template to be used in autoscaling.",
        "operationId": "NodeTemplatesAPI_CreateNodeTemplate",
        "parameters": [
          {
            "description": "ID of the cluster that the template is for",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nodetemplates.v1.NewNodeTemplate"
              }
            }
          },
          "description": "NodeTemplate to create",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodetemplates.v1.NodeTemplate"
                }
              }
            },
            "description": "Created template"
          }
        },
        "summary": "Create node template",
        "tags": [
          "NodeTemplatesAPI"
        ],
        "x-codegen-request-body-name": "nodeTemplate"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/node-templates/{nodeTemplateName}": {
      "delete": {
        "description": "Deletes a node template.",
        "operationId": "NodeTemplatesAPI_DeleteNodeTemplate",
        "parameters": [
          {
            "description": "ID of the cluster that the template is for",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the template to delete",
            "in": "path",
            "name": "nodeTemplateName",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodetemplates.v1.DeleteNodeTemplateResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete node template",
        "tags": [
          "NodeTemplatesAPI"
        ]
      },
      "put": {
        "description": "Updates a node template.",
        "operationId": "NodeTemplatesAPI_UpdateNodeTemplate",
        "parameters": [
          {
            "description": "The ID of the cluster that the template is for",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the node template to update",
            "in": "path",
            "name": "nodeTemplateName",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/nodetemplates.v1.UpdateNodeTemplate"
              }
            }
          },
          "description": "The node template to update",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodetemplates.v1.NodeTemplate"
                }
              }
            },
            "description": "The updated node template"
          }
        },
        "summary": "Update node template",
        "tags": [
          "NodeTemplatesAPI"
        ],
        "x-codegen-request-body-name": "nodeTemplate"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/policies": {
      "get": {
        "operationId": "PoliciesAPI_GetClusterPolicies",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/policies.v1.Policies"
                }
              }
            },
            "description": "Policies details."
          }
        },
        "summary": "Gets policies configuration for the target cluster.",
        "tags": [
          "PoliciesAPI"
        ]
      },
      "put": {
        "operationId": "PoliciesAPI_UpsertClusterPolicies",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/policies.v1.Policies"
              }
            }
          },
          "description": "Policies details.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/policies.v1.Policies"
                }
              }
            },
            "description": "Policies details."
          }
        },
        "summary": "Upsert cluster's policies configuration.",
        "tags": [
          "PoliciesAPI"
        ],
        "x-codegen-request-body-name": "policies"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/problematic-nodes": {
      "get": {
        "description": "Gets cluster problematic nodes that are currently running in the cluster. These nodes cannot be rebalanced.",
        "operationId": "AutoscalerAPI_GetProblematicNodes",
        "parameters": [
          {
            "description": "The id of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetProblematicNodesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get problematic nodes",
        "tags": [
          "AutoscalerAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/problematic-workloads": {
      "get": {
        "description": "Gets cluster problematic workloads that are currently running in the cluster. These workloads cannot be rebalanced.",
        "operationId": "AutoscalerAPI_GetProblematicWorkloads",
        "parameters": [
          {
            "description": "The id of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "When enabled won't consider pods without controller, job pods, pods with removal-disabled annotation as problematic pods.",
            "in": "query",
            "name": "aggressiveMode",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetProblematicWorkloadsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get problematic workloads",
        "tags": [
          "AutoscalerAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/rebalanced-workloads": {
      "get": {
        "description": "Gets the rebalanced workloads. Only relevant when rebalancing execution is in-progress.",
        "operationId": "AutoscalerAPI_GetRebalancedWorkloads",
        "parameters": [
          {
            "description": "The id of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetRebalancedWorkloadsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get rebalanced workloads",
        "tags": [
          "AutoscalerAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/rebalancing-jobs": {
      "get": {
        "description": "Lists rebalancing jobs per cluster.",
        "operationId": "ScheduledRebalancingAPI_ListRebalancingJobs",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "rebalancingScheduleId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.ListRebalancingJobsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List rebalancing jobs",
        "tags": [
          "ScheduledRebalancingAPI"
        ]
      },
      "post": {
        "description": "Creates rebalancing job, associating a cluster and a rebalancing schedule.",
        "operationId": "ScheduledRebalancingAPI_CreateRebalancingJob",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingJob"
              }
            }
          },
          "description": "RebalancingJob to create",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingJob"
                }
              }
            },
            "description": "Created job"
          }
        },
        "summary": "Create rebalancing job",
        "tags": [
          "ScheduledRebalancingAPI"
        ],
        "x-codegen-request-body-name": "job"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/rebalancing-jobs/{id}": {
      "delete": {
        "description": "Deletes a single rebalancing job.",
        "operationId": "ScheduledRebalancingAPI_DeleteRebalancingJob",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.DeleteRebalancingJobResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete rebalancing job",
        "tags": [
          "ScheduledRebalancingAPI"
        ]
      },
      "get": {
        "description": "Gets a rebalancing job by it's ID",
        "operationId": "ScheduledRebalancingAPI_GetRebalancingJob",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingJob"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get rebalancing job",
        "tags": [
          "ScheduledRebalancingAPI"
        ]
      },
      "put": {
        "description": "Updates rebalancing job setup.",
        "operationId": "ScheduledRebalancingAPI_UpdateRebalancingJob",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingJob"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingJob"
                }
              }
            },
            "description": "Created job"
          }
        },
        "summary": "Update rebalancing job",
        "tags": [
          "ScheduledRebalancingAPI"
        ],
        "x-codegen-request-body-name": "job"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/rebalancing-plans": {
      "get": {
        "description": "Lists cluster rebalancing plans by cluster ID.",
        "operationId": "AutoscalerAPI_ListRebalancingPlans",
        "parameters": [
          {
            "description": "ID of the cluster that is being rebalanced.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "A limit on the number of objects to be returned, between 1 and 500.",
            "in": "query",
            "name": "limit",
            "schema": {
              "default": "10",
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "A cursor for use in pagination.\n\nThis is a token that defines your place in the list. For instance, if you make a list request - you will receive a `nextCursor` field in response metadata. Given that the `nextCursor` field is\nnot empty, it can be used as a cursor query parameter to get subsequent items. If `nextCursor` is empty - there are no more items to retrieve.",
            "in": "query",
            "name": "cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Status list filter",
            "explode": true,
            "in": "query",
            "name": "filter.statuses",
            "schema": {
              "items": {
                "enum": [
                  "invalid",
                  "generating",
                  "generated",
                  "creating_nodes",
                  "preparing_nodes",
                  "draining_nodes",
                  "deleting_nodes",
                  "finished",
                  "error",
                  "partially_finished"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "If include operations is true then operations is returned in response, otherwise is skipped",
            "in": "query",
            "name": "includeOperations",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "If include configurations is true then configurations is returned in response, otherwise is skipped",
            "in": "query",
            "name": "includeConfigurations",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "If true, negative plans are also returned. Note: negative plans are already returned when querying for specific statuses.",
            "in": "query",
            "name": "includeNegative",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.ListRebalancingPlansResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List cluster rebalancing plans",
        "tags": [
          "AutoscalerAPI"
        ]
      },
      "post": {
        "description": "Initiates the cluster rebalancing process which will optimize current node configuration by consolidating\nexisting workloads into fewer bin-packed, right-sized nodes.\n\nThis is a long-running operation, the request is queued and the response is immediate.",
        "operationId": "AutoscalerAPI_GenerateRebalancingPlan",
        "parameters": [
          {
            "description": "ID of the cluster to be rebalanced.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoscalerAPI_GenerateRebalancingPlan_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GenerateRebalancingPlanResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Generate a cluster rebalancing plan",
        "tags": [
          "AutoscalerAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/rebalancing-plans/{rebalancingPlanId}": {
      "get": {
        "description": "Will only return a body when the plan's generation has fully finished.",
        "operationId": "AutoscalerAPI_GetRebalancingPlan",
        "parameters": [
          {
            "description": "ID of the cluster that is being rebalanced.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ID of the rebalancing plan.",
            "in": "path",
            "name": "rebalancingPlanId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If include operations is true then operations is returned in response, otherwise is skipped",
            "in": "query",
            "name": "includeOperations",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "If include configurations is true then configurations is returned in response, otherwise is skipped",
            "in": "query",
            "name": "includeConfigurations",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get a rebalancing plan",
        "tags": [
          "AutoscalerAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/rebalancing-plans/{rebalancingPlanId}/execute": {
      "post": {
        "description": "Triggers and executes the rebalancing plan.",
        "operationId": "AutoscalerAPI_ExecuteRebalancingPlan",
        "parameters": [
          {
            "description": "The id of the cluster which should be rebalanced.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the rebalancing plan to use for rebalancing.",
            "in": "path",
            "name": "rebalancingPlanId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Trigger the rebalancing plan",
        "tags": [
          "AutoscalerAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/rebalancing-schedule-preview": {
      "post": {
        "description": "Preview which nodes will be affected given the provided rebalancing schedule.",
        "operationId": "ScheduledRebalancingAPI_PreviewRebalancingSchedule",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingScheduleUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.PreviewRebalancingScheduleResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Preview rebalancing schedule",
        "tags": [
          "ScheduledRebalancingAPI"
        ],
        "x-codegen-request-body-name": "schedule"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/reliability-metrics-script": {
      "get": {
        "operationId": "ReportConfigurationAPI_GetReliabilityMetricsScript",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetReliabilityMetricsScriptResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns single command for external cluster with reliability-metrics (kvisor) installation script.",
        "tags": [
          "ReportConfigurationAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/settings": {
      "get": {
        "operationId": "AutoscalerAPI_GetClusterSettings",
        "parameters": [
          {
            "description": "The id of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetClusterSettingsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cluster settings",
        "tags": [
          "AutoscalerAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/simulate-spot-interruption": {
      "post": {
        "description": "Publishes a simulated spot interruption prediction for the node. The node will\nbe annotated with a TTL and a rebalancing plan initiated automatically.\nIf the rebalancing fails, the TTL annotation is removed and the node stays in the cluster.",
        "operationId": "AutoscalerAPI_SimulateNodeSpotInterruption",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoscalerAPI_SimulateNodeSpotInterruption_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Simulate a spot interruption on a node",
        "tags": [
          "AutoscalerAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/unscheduled-pods": {
      "get": {
        "operationId": "ClusterReportAPI_GetClusterUnscheduledPods",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/costreport.v1beta1.GetClusterUnscheduledPodsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets unscheduled pods in the cluster.",
        "tags": [
          "ClusterReportAPI"
        ]
      }
    },
    "/v1/kubernetes/clusters/{clusterId}/workloads": {
      "get": {
        "description": "Gets all cluster workloads.",
        "operationId": "AutoscalerAPI_GetClusterWorkloads",
        "parameters": [
          {
            "description": "ID of the cluster that is being rebalanced.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetClusterWorkloadsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cluster workloads",
        "tags": [
          "AutoscalerAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters": {
      "get": {
        "operationId": "ExternalClusterAPI_ListClusters",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.ListClustersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Lists clusters for current user's organization.",
        "tags": [
          "ExternalClusterAPI"
        ]
      },
      "post": {
        "operationId": "ExternalClusterAPI_RegisterCluster",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/externalcluster.v1.RegisterClusterRequest"
              }
            }
          },
          "description": "RegisterClusterRequest registers cluster.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.Cluster"
                }
              }
            },
            "description": "Registered cluster."
          }
        },
        "summary": "Registers new external cluster.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/kubernetes/external-clusters/filters/nodes": {
      "get": {
        "operationId": "ExternalClusterAPI_GetListNodesFilters",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.GetListNodesFiltersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns list of available filters for nodes list.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/impersonation-service-account": {
      "post": {
        "operationId": "ExternalClusterAPI_ImpersonationServiceAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/externalcluster.v1.ImpersonationServiceAccountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.ImpersonationServiceAccountResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get or create service account for GCP impersonation.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/kubernetes/external-clusters/onboarding/connect-and-enable-castai-cmd": {
      "get": {
        "operationId": "ExternalClusterAPI_GetConnectAndEnableCASTAICmd",
        "parameters": [
          {
            "description": "Customer cluster name.",
            "in": "query",
            "name": "clusterName",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Provider: eks, gke, aks, etc.",
            "in": "query",
            "name": "provider",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Whether NVIDIA device plugin DaemonSet should be installed during Phase 2 on-boarding.",
            "in": "query",
            "name": "nvidiaDevicePlugin",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI Security Insights agent should be installed.",
            "in": "query",
            "name": "installSecurityAgent",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI Autoscaler components should be installed.\nTo enable backwards compatibility, when the field is omitted, it is defaulted to true.",
            "in": "query",
            "name": "installAutoscalerAgent",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI GPU metrics exporter should be installed.",
            "in": "query",
            "name": "installGpuMetricsExporter",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI AI-Optimizer Proxy should be installed.",
            "in": "query",
            "name": "installAiOptimizerProxy",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether Netflow network exporter should be installed.",
            "in": "query",
            "name": "installNetflowExporter",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI Workload Autoscaler should be installed.",
            "in": "query",
            "name": "installWorkloadAutoscaler",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI Pod Mutator should be installed.",
            "in": "query",
            "name": "installPodMutator",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether cluster should be onboarded with CAST AI Omni.",
            "in": "query",
            "name": "installOmni",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether cluster should be onboarded with Castware Operator.",
            "in": "query",
            "name": "installOperator",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether to install image scanning as part of security.\nNo-op if install_security_agent is set to false.\nTo enable backwards compatibility, when the field is omitted, it is defaulted to true.",
            "in": "query",
            "name": "installSecurityImageScanning",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether to install compliance scanning as part of security.\nNo-op if install_security_agent is set to false.\nTo enable backwards compatibility, when the field is omitted, it is defaulted to true.",
            "in": "query",
            "name": "installSecurityCompliance",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether to use umbrella Helm chart for onboarding.",
            "in": "query",
            "name": "useUmbrella",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether to use castctl to connect a cluster.\nDeprecated. Use onboarding_path=ONBOARDING_PATH_CASTCTL.",
            "in": "query",
            "name": "useCastctl",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Installation method (script, helm, castctl, …).\nDefaults to ONBOARDING_PATH_SCRIPT for backward compatibility.",
            "in": "query",
            "name": "onboardingPath",
            "schema": {
              "default": "ONBOARDING_PATH_UNSPECIFIED",
              "enum": [
                "ONBOARDING_PATH_UNSPECIFIED",
                "ONBOARDING_PATH_SCRIPT",
                "ONBOARDING_PATH_HELM",
                "ONBOARDING_PATH_CASTCTL"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.GetConnectAndEnableCASTAICmdResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns single command for getting the script for one-pass onboarding.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/operations/{id}": {
      "get": {
        "operationId": "OperationsAPI_GetOperation",
        "parameters": [
          {
            "description": "ID of the operation.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.operations.v1beta1.Operation"
                }
              }
            },
            "description": "Operation object."
          }
        },
        "summary": "GetOperation returns the operation object by ID.",
        "tags": [
          "OperationsAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}": {
      "delete": {
        "description": "Cluster can be removed only if it was disconnected or is in failed state.",
        "operationId": "ExternalClusterAPI_DeleteCluster",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The resource has been deleted."
          }
        },
        "summary": "Deletes the cluster from CAST console. It won't delete the actual cluster from cloud provider's console.",
        "tags": [
          "ExternalClusterAPI"
        ]
      },
      "get": {
        "operationId": "ExternalClusterAPI_GetCluster",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.Cluster"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Gets the details of a specific cluster.",
        "tags": [
          "ExternalClusterAPI"
        ]
      },
      "post": {
        "operationId": "ExternalClusterAPI_UpdateCluster",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/externalcluster.v1.ClusterUpdate"
              }
            }
          },
          "description": "Cluster update configuration.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.Cluster"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Updates configuration of a specific cluster.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "update"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/assume-role-principal": {
      "delete": {
        "operationId": "ExternalClusterAPI_DeleteAssumeRolePrincipal",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.DeleteAssumeRolePrincipalResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete AWS cross role user for assume role.",
        "tags": [
          "ExternalClusterAPI"
        ]
      },
      "get": {
        "operationId": "ExternalClusterAPI_GetAssumeRolePrincipal",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.GetAssumeRolePrincipalResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Return AWS cross role user for assume role.",
        "tags": [
          "ExternalClusterAPI"
        ]
      },
      "post": {
        "operationId": "ExternalClusterAPI_CreateAssumeRolePrincipal",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.CreateAssumeRolePrincipalResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create AWS cross role user for assume role.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/assume-role-user": {
      "get": {
        "operationId": "ExternalClusterAPI_GetAssumeRoleUser",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.GetAssumeRoleUserResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns AWS user arn used for assume role.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/cleanup-script": {
      "get": {
        "operationId": "ExternalClusterAPI_GetCleanupScript",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.GetCleanupScriptResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns single command for external cluster cleanup script",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/credentials-script": {
      "get": {
        "operationId": "ExternalClusterAPI_GetCredentialsScript",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Whether an AWS CrossRole should be used for authentication.",
            "in": "query",
            "name": "crossRole",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether NVIDIA device plugin DaemonSet should be installed during Phase 2 on-boarding.",
            "in": "query",
            "name": "nvidiaDevicePlugin",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI Security Insights agent should be installed.",
            "in": "query",
            "name": "installSecurityAgent",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI Autoscaler components should be installed.\nTo enable backwards compatibility, when the field is omitted, it is defaulted to true.",
            "in": "query",
            "name": "installAutoscalerAgent",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI GPU metrics exporter should be installed.",
            "in": "query",
            "name": "installGpuMetricsExporter",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI AI-Optimizer Proxy should be installed.",
            "in": "query",
            "name": "installAiOptimizerProxy",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether GCP SA Impersonate feature should be enabled.",
            "in": "query",
            "name": "gcpSaImpersonate",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether Netflow network exporter should be installed.",
            "in": "query",
            "name": "installNetflowExporter",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI Workload Autoscaler should be installed.",
            "in": "query",
            "name": "installWorkloadAutoscaler",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether CAST AI Pod Mutator should be installed.",
            "in": "query",
            "name": "installPodMutator",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether cluster should be onboarded with CAST AI Omni.",
            "in": "query",
            "name": "installOmni",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether the cluster is connected via GCP Private Service Connect",
            "in": "query",
            "name": "gcpPsc",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether to install kent",
            "in": "query",
            "name": "installKent",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Params for kent installation",
            "explode": true,
            "in": "query",
            "name": "kentParams",
            "schema": {
              "items": {
                "enum": [
                  "enable_spot_interruption_prediction",
                  "enable_rebalancing",
                  "install_evictor"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Whether to install the Operator.",
            "in": "query",
            "name": "installOperator",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether to install with umbrella helm chart.",
            "in": "query",
            "name": "installUmbrella",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether to install image scanning as part of security.\nNo-op if install_security_agent is set to false.\nTo enable backwards compatibility, when the field is omitted, it is defaulted to true.",
            "in": "query",
            "name": "installSecurityImageScanning",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Whether to install compliance scanning as part of security.\nNo-op if install_security_agent is set to false.\nTo enable backwards compatibility, when the field is omitted, it is defaulted to true.",
            "in": "query",
            "name": "installSecurityCompliance",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.GetCredentialsScriptResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns single command for external cluster credentials onboarding.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/disconnect": {
      "post": {
        "description": "CAST provisioned nodes are deleted only when `deleteProvisionedNodes` flag is set.\nCloud resources used by CAST provisioned nodes are deleted only if nodes are deleted.",
        "operationId": "ExternalClusterAPI_DisconnectCluster",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/externalcluster.v1.DisconnectConfig"
              }
            }
          },
          "description": "Disconnect cluster configuration.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.Cluster"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Disconnects cluster by removing all CAST dependencies from cloud provider's account.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/events": {
      "post": {
        "operationId": "ExternalClusterAPI_HandleCloudEvent",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/externalcluster.v1.CloudEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.HandleCloudEventResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Handles cloud spot interruption events for a cluster.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "event"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/gcp-create-sa": {
      "post": {
        "operationId": "ExternalClusterAPI_GCPCreateSA",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalClusterAPI_GCPCreateSA_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.GCPCreateSAResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create service account  for GCP impersonation.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/gcp-disable-sa": {
      "post": {
        "operationId": "ExternalClusterAPI_DisableGCPSA",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.DisableGCPSAResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Disable service account and service key for impersonation.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/gke-create-sa": {
      "post": {
        "operationId": "ExternalClusterAPI_GKECreateSA",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalClusterAPI_GKECreateSA_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.GKECreateSAResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create service account and service key for GKE impersonation.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/gke-disable-sa": {
      "post": {
        "operationId": "ExternalClusterAPI_DisableGKESA",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.DisableGKESAResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create service account and service key for GKE impersonation.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/hibernate": {
      "post": {
        "operationId": "ExternalClusterAPI_TriggerHibernateCluster",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Mode of the operation.\n\n - OPERATION_MODE_UNSPECIFIED: Default value.\n - OPERATION_MODE_DEFAULT: Normal operation - executes the hibernate/resume.\n - OPERATION_MODE_DRY_RUN: Dry-run mode - validates only without executing.",
            "in": "query",
            "name": "mode",
            "schema": {
              "default": "OPERATION_MODE_UNSPECIFIED",
              "enum": [
                "OPERATION_MODE_UNSPECIFIED",
                "OPERATION_MODE_DEFAULT",
                "OPERATION_MODE_DRY_RUN"
              ],
              "type": "string"
            }
          },
          {
            "description": "Stops the cluster control plane during hibernation. Currently only supported on AKS.\nWhen enabled, hibernate fails on non-retryable errors (e.g. insufficient permissions).",
            "in": "query",
            "name": "stopControlPlane",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.TriggerHibernateClusterResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Hiberantes cluster.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/instances/{instanceId}/logs": {
      "post": {
        "operationId": "ExternalClusterAPI_IngestInstanceLogs",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "instanceId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/externalcluster.v1.NodeLogs"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.IngestInstanceLogsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Ingest node join logs including kubelet and cloud init logs.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "logs"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/node-batches": {
      "post": {
        "operationId": "ExternalClusterAPI_AddNodeBatch",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/externalcluster.v1.NodeBatchSpec"
              }
            }
          },
          "description": "New node batchconfiguration.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.AddNodeBatchResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Adds a batch of nodes to the cluster.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "spec"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/node-batches/{nodeBatchId}": {
      "get": {
        "operationId": "ExternalClusterAPI_GetNodeBatch",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ID of the node batch.",
            "in": "path",
            "name": "nodeBatchId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.GetNodeBatchResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the status of add node batch operation.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/nodes": {
      "get": {
        "operationId": "ExternalClusterAPI_ListNodes",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "nodeId",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "nodeStatus",
            "schema": {
              "default": "node_status_unspecified",
              "enum": [
                "node_status_unspecified",
                "unknown",
                "pending",
                "creating",
                "ready",
                "not_ready",
                "draining",
                "deleting",
                "deleted",
                "interrupted",
                "cordoned"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "instanceType",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lifecycleType",
            "schema": {
              "default": "lifecycle_type_unspecified",
              "enum": [
                "lifecycle_type_unspecified",
                "on_demand",
                "fallback",
                "spot"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "removalDisabled",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "unschedulable",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "zone",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "nodeConfigurationName",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "nodeConfigurationVersion",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "nodeTemplateName",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "nodeTemplateVersion",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "nodeName",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "excludeDeleting",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.ListNodesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Lists the nodes for a cluster.",
        "tags": [
          "ExternalClusterAPI"
        ]
      },
      "post": {
        "operationId": "ExternalClusterAPI_AddNode",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/externalcluster.v1.NodeConfig"
              }
            }
          },
          "description": "New node configuration.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.AddNodeResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Adds a node to the cluster.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/nodes/{nodeId}": {
      "delete": {
        "operationId": "ExternalClusterAPI_DeleteNode",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ID of the node.",
            "in": "path",
            "name": "nodeId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Node drain timeout in seconds. Defaults to 600s if not set.",
            "in": "query",
            "name": "drainTimeout",
            "schema": {
              "format": "int64",
              "type": "string"
            }
          },
          {
            "description": "If set to true, node will be deleted even if node fails to be drained gracefully.",
            "in": "query",
            "name": "forceDelete",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.DeleteNodeResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes the specified cluster node.",
        "tags": [
          "ExternalClusterAPI"
        ]
      },
      "get": {
        "operationId": "ExternalClusterAPI_GetNode",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "nodeId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.Node"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Gets a single node by ID.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/nodes/{nodeId}/drain": {
      "post": {
        "operationId": "ExternalClusterAPI_DrainNode",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ID of the node.",
            "in": "path",
            "name": "nodeId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/externalcluster.v1.DrainConfig"
              }
            }
          },
          "description": "Node drain configuration.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.DrainNodeResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Drains the specified cluster node.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/reconcile": {
      "post": {
        "operationId": "ExternalClusterAPI_ReconcileCluster",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Whether to skip AKS refresh of instance-template.",
            "in": "query",
            "name": "skipAksInitData",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.ReconcileClusterResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Reconciles cluster.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/resume": {
      "post": {
        "operationId": "ExternalClusterAPI_TriggerResumeCluster",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Mode of the operation.\n\n - OPERATION_MODE_UNSPECIFIED: Default value.\n - OPERATION_MODE_DEFAULT: Normal operation - executes the hibernate/resume.\n - OPERATION_MODE_DRY_RUN: Dry-run mode - validates only without executing.",
            "in": "query",
            "name": "mode",
            "schema": {
              "default": "OPERATION_MODE_UNSPECIFIED",
              "enum": [
                "OPERATION_MODE_UNSPECIFIED",
                "OPERATION_MODE_DEFAULT",
                "OPERATION_MODE_DRY_RUN"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/externalcluster.v1.NodeConfig"
              }
            }
          },
          "description": "Node template that will be used to create temporary pools.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.TriggerResumeClusterResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Resumes cluster.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "template"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/tags": {
      "post": {
        "operationId": "ExternalClusterAPI_UpdateClusterTags",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              }
            }
          },
          "description": "New cluster tags",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.UpdateClusterTagsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Updates tags of a specific cluster.",
        "tags": [
          "ExternalClusterAPI"
        ],
        "x-codegen-request-body-name": "tags"
      }
    },
    "/v1/kubernetes/external-clusters/{clusterId}/token": {
      "post": {
        "operationId": "ExternalClusterAPI_CreateClusterToken",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/externalcluster.v1.CreateClusterTokenResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns cluster token that is used for agent and cluster controller.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/kubernetes/maxpods-formula-presets": {
      "get": {
        "operationId": "NodeConfigurationAPI_ListMaxPodsPresets",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/nodeconfig.v1.ListMaxPodsPresetsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get list of presets available.",
        "tags": [
          "NodeConfigurationAPI"
        ]
      }
    },
    "/v1/kubernetes/pod-mutations": {
      "get": {
        "deprecated": true,
        "description": "Lists active pod mutations.\n[Deprecated] Use the new PodMutationsAPI under the patching-engine product category.",
        "operationId": "PodMutationsAPI_ListPodMutations",
        "parameters": [
          {
            "in": "query",
            "name": "clusterId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Returns only enabled pod mutations",
            "in": "query",
            "name": "enabled",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Returns full view of the pod mutation to apply",
            "in": "query",
            "name": "materializePatch",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/podmutations.v1.ListPodMutationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List pod mutations",
        "tags": [
          "PodMutationsAPI"
        ]
      },
      "post": {
        "deprecated": true,
        "description": "Creates a pod mutation.\n[Deprecated] Use the new PodMutationsAPI under the patching-engine product category.",
        "operationId": "PodMutationsAPI_CreatePodMutation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/podmutations.v1.PodMutation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/podmutations.v1.PodMutation"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create pod mutation",
        "tags": [
          "PodMutationsAPI"
        ],
        "x-codegen-request-body-name": "podMutation"
      }
    },
    "/v1/kubernetes/pod-mutations/clusters/{clusterId}/components/pod-mutator": {
      "get": {
        "deprecated": true,
        "description": "Check if the mutator is running on the cluster.\n[Deprecated] Use the new PodMutationsAPI under the patching-engine product category.",
        "operationId": "PodMutationsAPI_GetMutatorStatus",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/podmutations.v1.GetMutatorStatusResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get mutator status",
        "tags": [
          "PodMutationsAPI"
        ]
      }
    },
    "/v1/kubernetes/pod-mutations/clusters/{clusterId}/components/pod-mutator/install-script": {
      "get": {
        "deprecated": true,
        "description": "Returns the install command for the pod mutator.\n[Deprecated] Use the new PodMutationsAPI under the patching-engine product category.",
        "operationId": "PodMutationsAPI_GetInstallCmdForMutator",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/podmutations.v1.GetInstallCmdForMutatorResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get install command for mutator",
        "tags": [
          "PodMutationsAPI"
        ]
      }
    },
    "/v1/kubernetes/pod-mutations/clusters/{clusterId}/components/pod-mutator/install.sh": {
      "get": {
        "deprecated": true,
        "description": "Returns the install script for the pod mutator.\n[Deprecated] Use the new PodMutationsAPI under the patching-engine product category.",
        "operationId": "PodMutationsAPI_GetInstallScriptForMutator",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get install script",
        "tags": [
          "PodMutationsAPI"
        ]
      }
    },
    "/v1/kubernetes/pod-mutations/{id}": {
      "delete": {
        "deprecated": true,
        "description": "[Deprecated] Use the new PodMutationsAPI under the patching-engine product category.",
        "operationId": "PodMutationsAPI_DeletePodMutation",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/podmutations.v1.DeletePodMutationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes pod mutation configuration",
        "tags": [
          "PodMutationsAPI"
        ]
      },
      "get": {
        "deprecated": true,
        "description": "Get pod mutation by id.\n[Deprecated] Use the new PodMutationsAPI under the patching-engine product category.",
        "operationId": "PodMutationsAPI_GetPodMutation",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/podmutations.v1.GetPodMutationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get pod mutations",
        "tags": [
          "PodMutationsAPI"
        ]
      },
      "put": {
        "deprecated": true,
        "description": "Updates a pod mutation.\n[Deprecated] Use the new PodMutationsAPI under the patching-engine product category.",
        "operationId": "PodMutationsAPI_UpdatePodMutation",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/podmutations.v1.PodMutation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/podmutations.v1.PodMutation"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Update pod mutation",
        "tags": [
          "PodMutationsAPI"
        ],
        "x-codegen-request-body-name": "podMutation"
      }
    },
    "/v1/llm/openai/categorized-prompts": {
      "get": {
        "operationId": "AIEnablerAPI_GetCategorizedPrompts",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetCategorizedPromptsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetCategorizedPrompts returns a list of categorized prompts from the AI Enabler.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/categorized-prompts/{categorizedPromptId}": {
      "put": {
        "operationId": "AIEnablerAPI_UpdateCategorizedPrompt",
        "parameters": [
          {
            "in": "path",
            "name": "categorizedPromptId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "feedbackScore",
            "required": true,
            "schema": {
              "default": "FEEDBACK_SCORE_UNSPECIFIED",
              "enum": [
                "FEEDBACK_SCORE_UNSPECIFIED",
                "BAD",
                "GOOD"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "feedback",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.UpdateCategorizedPromptResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "UpdateCategorizedPrompt updates the categorized prompt.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/chat-completions/reports/api-keys-savings": {
      "get": {
        "operationId": "AIEnablerAPI_GetChatCompletionsAPIKeysSavingsReport",
        "parameters": [
          {
            "in": "query",
            "name": "fromTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "categoryId",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "routed",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetChatCompletionsAPIKeysSavingsReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deprecated: Analytics are available via the analytics API.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/chat-completions/reports/api-keys/{apiKeyId}/recommendations": {
      "get": {
        "operationId": "AIEnablerAPI_GetChatCompletionsAPIKeysRecommendationsReport",
        "parameters": [
          {
            "in": "path",
            "name": "apiKeyId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fromTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "routed",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetChatCompletionsRecommendationsReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deprecated: Analytics are available via the analytics API.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/chat-completions/reports/api-keys/{apiKeyId}/usage": {
      "get": {
        "operationId": "AIEnablerAPI_GetChatCompletionsAPIKeyUsageReport",
        "parameters": [
          {
            "in": "path",
            "name": "apiKeyId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fromTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "routed",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetChatCompletionsAPIKeyUsageReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deprecated: Analytics are available via the analytics API.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/chat-completions/reports/categories/{categoryId}/recommendations": {
      "get": {
        "operationId": "AIEnablerAPI_GetChatCompletionsCategoryRecommendationsReport",
        "parameters": [
          {
            "in": "path",
            "name": "categoryId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fromTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetChatCompletionsCategoryRecommendationsReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deprecated: Analytics are available via the analytics API.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/chat-completions/reports/categories/{categoryId}/usage": {
      "get": {
        "operationId": "AIEnablerAPI_GetChatCompletionsCategoryUsageReport",
        "parameters": [
          {
            "in": "path",
            "name": "categoryId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fromTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetChatCompletionsCategoryUsageReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deprecated: Analytics are available via the analytics API.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/chat-completions/reports/recommendations": {
      "get": {
        "operationId": "AIEnablerAPI_GetChatCompletionsRecommendationsReport",
        "parameters": [
          {
            "in": "query",
            "name": "fromTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "routed",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetChatCompletionsRecommendationsReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deprecated: Use GetIsOnboarded in the analytics API for onboarding checks. Analytics are available via the analytics API.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/chat-completions/reports/usage": {
      "get": {
        "operationId": "AIEnablerAPI_GetChatCompletionsUsageReport",
        "parameters": [
          {
            "in": "query",
            "name": "fromTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "routed",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetChatCompletionsUsageReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deprecated: Analytics are available via the analytics API.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/models": {
      "get": {
        "operationId": "AIEnablerAPI_GetModels",
        "parameters": [
          {
            "in": "query",
            "name": "providerName",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetModelsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a list of models available for routing.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/routing-events": {
      "get": {
        "operationId": "AIEnablerAPI_GetRoutingEvents",
        "parameters": [
          {
            "in": "query",
            "name": "promptId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fromTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "type",
            "schema": {
              "items": {
                "enum": [
                  "EVENT_TYPE_INVALID",
                  "EVENT_TYPE_PROMPT_RECEIVED",
                  "EVENT_TYPE_PROMPT_CATEGORIZED",
                  "EVENT_TYPE_LOOKUP_PROVIDERS_AND_MODELS",
                  "EVENT_TYPE_ORDER_PROVIDERS_AND_MODELS",
                  "EVENT_TYPE_PICK_PROVIDER_AND_MODEL",
                  "EVENT_TYPE_ROUTE_REQUEST"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetRoutingEventsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetRoutingEvents returns a list of routing events.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/openai/supported-providers": {
      "get": {
        "operationId": "AIEnablerAPI_GetSupportedProviders",
        "parameters": [
          {
            "in": "query",
            "name": "supportedInPlayground",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetSupportedProvidersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a list of supported providers along with the supported models.",
        "tags": [
          "AIEnablerAPI"
        ]
      }
    },
    "/v1/llm/playground-chat-completions": {
      "post": {
        "deprecated": true,
        "operationId": "AIEnablerPlaygroundAPI_CreatePlaygroundChatCompletions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/aioptimizer.v1.CreatePlaygroundChatCompletionsRequest"
              }
            }
          },
          "description": "Defines the request for creating chat completions in playground.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.CreatePlaygroundChatCompletionsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /ai-optimizer/v1beta/organizations/{organization_id}/playground-chat-completions instead.",
        "tags": [
          "AIEnablerPlaygroundAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/llm/providers": {
      "get": {
        "operationId": "AIEnablerProvidersAPI_GetProviders",
        "parameters": [
          {
            "description": "Filters the returned provider models by model type.",
            "in": "query",
            "name": "modelType",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "When true, only providers with include_in_cli=true are returned.",
            "in": "query",
            "name": "includeInCli",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "When true, models past their deprecated_at date are included in modelsMetadata.",
            "in": "query",
            "name": "includeDeprecated",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetProvidersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets the list of registered LLM providers.",
        "tags": [
          "AIEnablerProvidersAPI"
        ]
      },
      "post": {
        "operationId": "AIEnablerProvidersAPI_RegisterProviders",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/aioptimizer.v1.RegisterProvidersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.RegisterProvidersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Registers LLM providers.",
        "tags": [
          "AIEnablerProvidersAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/llm/providers/{providerId}": {
      "delete": {
        "operationId": "AIEnablerProvidersAPI_DeleteProvider",
        "parameters": [
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.DeleteProviderResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes LLM provider.",
        "tags": [
          "AIEnablerProvidersAPI"
        ]
      },
      "patch": {
        "operationId": "AIEnablerProvidersAPI_UpdateProvider",
        "parameters": [
          {
            "in": "path",
            "name": "providerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AIEnablerProvidersAPI_UpdateProvider_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.UpdateProviderResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Updates the registered LLM provider.",
        "tags": [
          "AIEnablerProvidersAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/llm/providers:prioritize": {
      "post": {
        "operationId": "AIEnablerProvidersAPI_PrioritizeProviders",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/aioptimizer.v1.PrioritizeProvidersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.PrioritizeProvidersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Prioritizes registered LLM providers.",
        "tags": [
          "AIEnablerProvidersAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/llm/settings": {
      "get": {
        "operationId": "AIEnablerSettingsAPI_GetSettings",
        "parameters": [
          {
            "description": "The API key for which the settings are being fetched. If not provided, the settings are fetched for the current organization.",
            "in": "query",
            "name": "apiKey",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Optional team ID to include in the settings fallback. When provided, team settings are considered in the resolution hierarchy.",
            "in": "query",
            "name": "teamId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.GetSettingsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns the settings of the LLM Optimizer. If the apiKey query parameter is specified, fetches the settings for that\napiKey. Otherwise, fetches the settings for the current organization. If there are no apiKey-specific settings, returns\norganization settings. Team settings are included in the fallback hierarchy when applicable.",
        "tags": [
          "AIEnablerSettingsAPI"
        ]
      },
      "put": {
        "operationId": "AIEnablerSettingsAPI_UpsertSettings",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/aioptimizer.v1.UpsertSettingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/aioptimizer.v1.UpsertSettingsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Updates the settings of the LLM Optimizer.",
        "tags": [
          "AIEnablerSettingsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/me": {
      "get": {
        "operationId": "UsersAPI_CurrentUserProfile",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.CurrentUserProfileResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get profile for current user.",
        "tags": [
          "UsersAPI"
        ]
      },
      "post": {
        "operationId": "UsersAPI_UpdateCurrentUserProfile",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.users.v1beta1.User"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.User"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Update profile for current user.",
        "tags": [
          "UsersAPI"
        ],
        "x-codegen-request-body-name": "item"
      }
    },
    "/v1/metrics/allocation-groups": {
      "get": {
        "operationId": "ReportMetricsAPI_GetAllocationGroupPromMetrics",
        "parameters": [
          {
            "description": "IDs of clusters to include. Empty filter returns metrics for all the clusters of the organization.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns scrapable allocation group metrics in Prometheus format.",
        "tags": [
          "ReportMetricsAPI"
        ]
      }
    },
    "/v1/metrics/clusters/{clusterId}/node-templates": {
      "get": {
        "deprecated": true,
        "operationId": "ReportMetricsAPI_GetClusterNodeTemplatePromMetrics",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns scrapable node-templates metrics in Prometheus format.",
        "tags": [
          "ReportMetricsAPI"
        ]
      }
    },
    "/v1/metrics/clusters/{clusterId}/workload-costs": {
      "get": {
        "deprecated": true,
        "operationId": "ReportMetricsAPI_GetClusterWorkloadPromMetrics",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "If specified, these additional labels will be included in the results to the already\nreturned [cluster_id,workload_name,workload_type,namespace].",
            "explode": true,
            "in": "query",
            "name": "additionalLabels",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns scrapable workload metrics in Prometheus format.",
        "tags": [
          "ReportMetricsAPI"
        ]
      }
    },
    "/v1/metrics/nodes": {
      "get": {
        "operationId": "ReportMetricsAPI_GetNodePromMetrics",
        "parameters": [
          {
            "description": "IDs of clusters to include. Empty filter returns all the clusters of the organization.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns scrapable node metrics in Prometheus format.",
        "tags": [
          "ReportMetricsAPI"
        ]
      }
    },
    "/v1/metrics/prom": {
      "get": {
        "operationId": "ReportMetricsAPI_GetPromMetrics",
        "parameters": [
          {
            "description": "IDs of clusters to include. Empty filter returns all the clusters of the organization.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns scrapable metrics in Prometheus format.",
        "tags": [
          "ReportMetricsAPI"
        ]
      }
    },
    "/v1/metrics/workload-network": {
      "get": {
        "operationId": "ReportMetricsAPI_GetWorkloadNetworkPromMetrics",
        "parameters": [
          {
            "description": "IDs of clusters to include. Empty filter returns metrics for all the clusters of the organization.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns scrapable workload network metrics in Prometheus format.",
        "tags": [
          "ReportMetricsAPI"
        ]
      }
    },
    "/v1/metrics/workloads": {
      "get": {
        "operationId": "ReportMetricsAPI_GetWorkloadPromMetrics",
        "parameters": [
          {
            "description": "IDs of clusters to include. Empty filter returns all the clusters of the organization.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "If specified, these additional labels will be included in the results to the already\nreturned [cluster_id,workload_name,workload_type,namespace].",
            "explode": true,
            "in": "query",
            "name": "additionalLabels",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns scrapable workload metrics in Prometheus format.",
        "tags": [
          "ReportMetricsAPI"
        ]
      }
    },
    "/v1/notifications": {
      "get": {
        "operationId": "NotificationAPI_ListNotifications",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The severities you want to filter",
            "explode": true,
            "in": "query",
            "name": "filter.severities",
            "schema": {
              "items": {
                "enum": [
                  "UNSPECIFIED",
                  "CRITICAL",
                  "ERROR",
                  "WARNING",
                  "INFO",
                  "SUCCESS"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filters to return acknowledged or not acknowledged notifications.",
            "in": "query",
            "name": "filter.isAcked",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "The id of the Notification",
            "in": "query",
            "name": "filter.notificationId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the Notification",
            "in": "query",
            "name": "filter.notificationName",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the Cluster included in the ClusterMetadata",
            "in": "query",
            "name": "filter.clusterId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the Cluster included in the ClusterMetadata",
            "in": "query",
            "name": "filter.clusterName",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The id of the Operation included in the OperationMetadata",
            "in": "query",
            "name": "filter.operationId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The type of the Operation included in the OperationMetadata",
            "in": "query",
            "name": "filter.operationType",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The project the cluster belongs in the ClusterMetadata",
            "in": "query",
            "name": "filter.project",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filters to return expired or not expired notifications.",
            "in": "query",
            "name": "filter.isExpired",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.ListNotificationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListNotifications returns notification entries for given organization.",
        "tags": [
          "NotificationAPI"
        ]
      }
    },
    "/v1/notifications/ack": {
      "post": {
        "operationId": "NotificationAPI_AckNotifications",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.notifications.v1beta1.AckNotificationsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.AckNotificationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "AckNotifications acknowledges multiple notifications for the given organization",
        "tags": [
          "NotificationAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/notifications/slack-configurations": {
      "get": {
        "operationId": "NotificationAPI_ListSlackConfigs",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The severities to be applied for filtering.",
            "explode": true,
            "in": "query",
            "name": "filter.severities",
            "schema": {
              "items": {
                "enum": [
                  "UNSPECIFIED",
                  "CRITICAL",
                  "ERROR",
                  "WARNING",
                  "INFO",
                  "SUCCESS"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "The status to be applied for filtering.",
            "in": "query",
            "name": "filter.status",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The categories to be applied for filtering. Empty means all categories (and subcategories).",
            "explode": true,
            "in": "query",
            "name": "filter.categories",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "The subcategories to be applied for filtering.",
            "explode": true,
            "in": "query",
            "name": "filter.subcategories",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.ListSlackConfigsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListSlackConfigs retrieves a list of Slack configurations for the given organization.",
        "tags": [
          "NotificationAPI"
        ]
      },
      "post": {
        "operationId": "NotificationAPI_CreateSlackConfig",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.notifications.v1beta1.AddSlackConfig"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackConfig"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "CreateSlackConfig creates a new Slack configuration for the given organization.",
        "tags": [
          "NotificationAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/notifications/slack-configurations/{id}": {
      "delete": {
        "operationId": "NotificationAPI_DeleteSlackConfig",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.DeleteSlackConfigResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "DeleteSlackConfig marks a Slack configuration as deleted.",
        "tags": [
          "NotificationAPI"
        ]
      },
      "get": {
        "operationId": "NotificationAPI_GetSlackConfig",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackConfig"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "GetSlackConfig retrieves a specific Slack configuration.",
        "tags": [
          "NotificationAPI"
        ]
      },
      "put": {
        "operationId": "NotificationAPI_UpdateSlackConfig",
        "parameters": [
          {
            "description": "The unique identifier of the Slack configuration being updated.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.notifications.v1beta1.UpdateSlackConfig"
              }
            }
          },
          "description": "The information required to update an existing Slack configuration.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackConfig"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "UpdateSlackConfig changes an existing Slack configuration for the given organization.",
        "tags": [
          "NotificationAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/notifications/slack-configurations/{id}/test": {
      "post": {
        "operationId": "NotificationAPI_SendTestSlackConfigNotification",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.SendTestSlackConfigNotificationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "SendTestSlackConfigNotification will attempt to send a test notification for a specific Slack configuration.",
        "tags": [
          "NotificationAPI"
        ]
      }
    },
    "/v1/notifications/slack-workspaces": {
      "get": {
        "operationId": "NotificationAPI_ListSlackWorkspaces",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.ListSlackWorkspacesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListSlackWorkspaces returns a list of Slack workspaces.",
        "tags": [
          "NotificationAPI"
        ]
      }
    },
    "/v1/notifications/slack-workspaces/install": {
      "post": {
        "operationId": "NotificationAPI_CreateSlackWorkspaceInstall",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.CreateSlackWorkspaceInstallResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "CreateSlackWorkspaceInstall creates a new Slack workspace installation.",
        "tags": [
          "NotificationAPI"
        ]
      }
    },
    "/v1/notifications/slack-workspaces/install/{id}": {
      "put": {
        "operationId": "NotificationAPI_CompleteSlackWorkspaceInstall",
        "parameters": [
          {
            "description": "The unique identifier for new Slack workspace being installed.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The installation authorization code, provided by Slack.",
            "in": "query",
            "name": "accessCode",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The URI used to finalize the workspace installation.",
            "in": "query",
            "name": "redirectUri",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.CompleteSlackWorkspaceInstallResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "CompleteSlackWorkspaceInstall completes a Slack workspace installation.",
        "tags": [
          "NotificationAPI"
        ]
      }
    },
    "/v1/notifications/slack-workspaces/{id}": {
      "delete": {
        "operationId": "NotificationAPI_DeleteSlackWorkspace",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.DeleteSlackWorkspaceResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "DeleteSlackWorkspace deletes a specific Slack workspace record.",
        "tags": [
          "NotificationAPI"
        ]
      },
      "get": {
        "operationId": "NotificationAPI_GetSlackWorkspace",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackWorkspace"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "GetSlackWorkspace retrieves a specific Slack workspace.",
        "tags": [
          "NotificationAPI"
        ]
      }
    },
    "/v1/notifications/slack-workspaces/{id}/channels": {
      "get": {
        "operationId": "NotificationAPI_ListSlackChannels",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.ListSlackChannelsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListSlackChannels returns a list of Slack workspace channels.",
        "tags": [
          "NotificationAPI"
        ]
      }
    },
    "/v1/notifications/test-slack-workspaces/{id}": {
      "post": {
        "operationId": "NotificationAPI_SendSlackWorkspaceTestNotification",
        "parameters": [
          {
            "description": "The workspace id to send the notification to.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.notifications.v1beta1.TestSlackConfig"
              }
            }
          },
          "description": "The information required to test the Slack configuration.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.SendSlackWorkspaceTestNotificationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "SendSlackWorkspaceTestNotification will attempt to send a test notification for a specific slack workspace.",
        "tags": [
          "NotificationAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/notifications/webhook-categories": {
      "get": {
        "operationId": "NotificationAPI_ListWebhookCategories",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.ListWebhookCategoriesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListWebhookConfig returns all available webhook categories and subcategories",
        "tags": [
          "NotificationAPI"
        ]
      }
    },
    "/v1/notifications/webhook-configurations": {
      "get": {
        "operationId": "NotificationAPI_ListWebhookConfigs",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The severities to be applied for filtering",
            "explode": true,
            "in": "query",
            "name": "filter.severities",
            "schema": {
              "items": {
                "enum": [
                  "UNSPECIFIED",
                  "CRITICAL",
                  "ERROR",
                  "WARNING",
                  "INFO",
                  "SUCCESS"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "The status to be applied for filtering",
            "in": "query",
            "name": "filter.status",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The categories to be applied for filtering. For all leave it (as well as subcategories) empty.",
            "explode": true,
            "in": "query",
            "name": "filter.categories",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "The subcategories to be applied for filtering.",
            "explode": true,
            "in": "query",
            "name": "filter.subcategories",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.ListWebhookConfigsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListWebhookConfig returns all existing webhook configurations for the given organization",
        "tags": [
          "NotificationAPI"
        ]
      },
      "post": {
        "operationId": "NotificationAPI_CreateWebhookConfig",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.notifications.v1beta1.AddWebhookConfig"
              }
            }
          },
          "description": "The Webhook configuration data",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.WebhookConfig"
                }
              }
            },
            "description": "The Webhook configuration data"
          }
        },
        "summary": "CreateWebhookConfig creates a new webhook configuration for the given organization",
        "tags": [
          "NotificationAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/notifications/webhook-configurations/{id}": {
      "delete": {
        "operationId": "NotificationAPI_DeleteWebhookConfig",
        "parameters": [
          {
            "description": "The UUID of the Webhook configuration being deleted",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.DeleteWebhookConfigResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "DeleteWebhookConfig an existing webhook configuration",
        "tags": [
          "NotificationAPI"
        ]
      },
      "get": {
        "operationId": "NotificationAPI_GetWebhookConfig",
        "parameters": [
          {
            "description": "The UUID of the Webhook configuration being deleted",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.WebhookConfig"
                }
              }
            },
            "description": "The Webhook configuration data"
          }
        },
        "summary": "GetWebhookConfig an existing webhook configuration for the given organization",
        "tags": [
          "NotificationAPI"
        ]
      },
      "put": {
        "operationId": "NotificationAPI_UpdateWebhookConfig",
        "parameters": [
          {
            "description": "The UUID of the Webhook configuration being deleted",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.notifications.v1beta1.UpdateWebhookConfig"
              }
            }
          },
          "description": "The Webhook configuration data",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.WebhookConfig"
                }
              }
            },
            "description": "The Webhook configuration data"
          }
        },
        "summary": "UpdateWebhookConfig an existing webhook configuration for the given organization",
        "tags": [
          "NotificationAPI"
        ],
        "x-codegen-request-body-name": "config"
      }
    },
    "/v1/notifications/{id}": {
      "get": {
        "operationId": "NotificationAPI_GetNotification",
        "parameters": [
          {
            "description": "The UUID of the Notification",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.notifications.v1beta1.Notification"
                }
              }
            },
            "description": "The Notification configuration data"
          }
        },
        "summary": "GetNotification returns an existing notification for the given organization",
        "tags": [
          "NotificationAPI"
        ]
      }
    },
    "/v1/organizations": {
      "get": {
        "operationId": "UsersAPI_ListOrganizations",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.ListOrganizationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List user organizations. If all arguments are empty, lists organizations for caller user.\nOrganizations are sorted based on the date user joined the org, so first organization will always be the default one.",
        "tags": [
          "UsersAPI"
        ]
      },
      "post": {
        "operationId": "UsersAPI_CreateOrganization",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
              }
            }
          },
          "description": "Organization to create.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
                }
              }
            },
            "description": "The created organization."
          }
        },
        "summary": "Creates an organization.",
        "tags": [
          "UsersAPI"
        ],
        "x-codegen-request-body-name": "organization"
      }
    },
    "/v1/organizations/reservations/balance": {
      "get": {
        "deprecated": true,
        "operationId": "InventoryAPI_GetOrganizationReservationsBalance",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetOrganizationReservationsBalanceResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /v1/savings/commitments instead.",
        "tags": [
          "InventoryAPI"
        ]
      }
    },
    "/v1/organizations/resource-usage": {
      "get": {
        "operationId": "InventoryAPI_GetOrganizationResourceUsage",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetOrganizationResourceUsageResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get used resources for the currently authenticated organization",
        "tags": [
          "InventoryAPI"
        ]
      }
    },
    "/v1/organizations/{id}": {
      "delete": {
        "operationId": "UsersAPI_DeleteOrganization",
        "parameters": [
          {
            "description": "Delete an organization by id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.DeleteOrganizationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete an organization by id.",
        "tags": [
          "UsersAPI"
        ]
      },
      "get": {
        "operationId": "UsersAPI_GetOrganization",
        "parameters": [
          {
            "description": "Get organization by id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
                }
              }
            },
            "description": "Organization data."
          }
        },
        "summary": "Get an organization by id.",
        "tags": [
          "UsersAPI"
        ]
      },
      "post": {
        "operationId": "UsersAPI_EditOrganization",
        "parameters": [
          {
            "description": "Get organization by id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
                }
              }
            },
            "description": "Organization data."
          }
        },
        "summary": "Edit an organization by id.",
        "tags": [
          "UsersAPI"
        ],
        "x-codegen-request-body-name": "organization"
      }
    },
    "/v1/organizations/{organizationId}/cache-groups/{cacheGroupId}/components/{component}/logs": {
      "post": {
        "operationId": "ComponentsAPI_IngestCacheGroupLogs",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cacheGroupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The name of the source component for the logs.",
            "in": "path",
            "name": "component",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Pod IP.",
            "in": "query",
            "name": "podIp",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/components.v1.ComponentLogs"
              }
            }
          },
          "description": "The logs to ingest.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/components.v1.IngestCacheGroupLogsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "CacheGroupLogs accepts logs, for a give cache group, from CAST AI components running outside of the mother-ship.",
        "tags": [
          "ComponentsAPI"
        ],
        "x-codegen-request-body-name": "logs"
      }
    },
    "/v1/organizations/{organizationId}/clusters/{clusterId}/sync-resource-usage": {
      "post": {
        "operationId": "InventoryAPI_SyncClusterResources",
        "parameters": [
          {
            "description": "The organization ID.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The cluster ID.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Sync cluster resources",
        "tags": [
          "InventoryAPI"
        ]
      }
    },
    "/v1/organizations/{organizationId}/groups": {
      "post": {
        "operationId": "RbacServiceAPI_CreateGroup",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID for which the group is created.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.rbac.v1beta1.CreateGroupRequest.Group"
              }
            }
          },
          "description": "Group is the group to be created.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.Group"
                }
              }
            },
            "description": "Group is the created groups."
          }
        },
        "summary": "CreateGroup creates a group for the organization.",
        "tags": [
          "RbacServiceAPI"
        ],
        "x-codegen-request-body-name": "group"
      }
    },
    "/v1/organizations/{organizationId}/groups/{group.id}": {
      "patch": {
        "operationId": "RbacServiceAPI_UpdateGroup",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID for which the group is updated.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ID is the unique identifier of the group.",
            "in": "path",
            "name": "group.id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Groups_is_the_groups_to_be_updated_"
              }
            }
          },
          "description": "Groups is the groups to be updated.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.Group"
                }
              }
            },
            "description": "Groups is the updated groups."
          }
        },
        "summary": "UpdateGroup updates the group for the organization.",
        "tags": [
          "RbacServiceAPI"
        ],
        "x-codegen-request-body-name": "group"
      }
    },
    "/v1/organizations/{organizationId}/groups/{id}": {
      "delete": {
        "operationId": "RbacServiceAPI_DeleteGroup",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID for which the group is deleted.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ID is the id of the groups to be deleted.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.DeleteGroupResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "DeleteGroup deletes the group for the organization.",
        "tags": [
          "RbacServiceAPI"
        ]
      },
      "get": {
        "operationId": "RbacServiceAPI_GetGroup",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID for which the group is fetched.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ID is the id of the groups to be fetched.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.Group"
                }
              }
            },
            "description": "Groups is the fetched groups."
          }
        },
        "summary": "GetGroup fetches a group for the organization.",
        "tags": [
          "RbacServiceAPI"
        ]
      }
    },
    "/v1/organizations/{organizationId}/reservations": {
      "get": {
        "deprecated": true,
        "operationId": "InventoryAPI_GetReservations",
        "parameters": [
          {
            "description": "The organization ID.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetReservationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /v1/savings/commitments instead.",
        "tags": [
          "InventoryAPI"
        ]
      },
      "post": {
        "deprecated": true,
        "operationId": "InventoryAPI_AddReservation",
        "parameters": [
          {
            "description": "The organization ID.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.inventory.v1beta1.GenericReservation"
              }
            }
          },
          "description": "Reservation",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.AddReservationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /v1/savings/commitments/import/gcp/cud or /v1/savings/commitments/import/azure/reservation instead.",
        "tags": [
          "InventoryAPI"
        ],
        "x-codegen-request-body-name": "reservation"
      }
    },
    "/v1/organizations/{organizationId}/reservations/balance": {
      "get": {
        "deprecated": true,
        "operationId": "InventoryAPI_GetReservationsBalance",
        "parameters": [
          {
            "description": "The organization ID.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetReservationsBalanceResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /v1/savings/commitments instead.",
        "tags": [
          "InventoryAPI"
        ]
      }
    },
    "/v1/organizations/{organizationId}/reservations/overwrite": {
      "post": {
        "deprecated": true,
        "operationId": "InventoryAPI_OverwriteReservations",
        "parameters": [
          {
            "description": "The organization ID.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.inventory.v1beta1.GenericReservationsList"
              }
            }
          },
          "description": "Reservations",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.OverwriteReservationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /v1/savings/commitments/import/gcp/cud or /v1/savings/commitments/import/azure/reservation instead.",
        "tags": [
          "InventoryAPI"
        ],
        "x-codegen-request-body-name": "reservations"
      }
    },
    "/v1/organizations/{organizationId}/reservations/{reservationId}": {
      "delete": {
        "deprecated": true,
        "operationId": "InventoryAPI_DeleteReservation",
        "parameters": [
          {
            "description": "The organization ID.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Reservation ID",
            "in": "path",
            "name": "reservationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /v1/savings/commitments/{commitment_id} instead.",
        "tags": [
          "InventoryAPI"
        ]
      }
    },
    "/v1/organizations/{organizationId}/role-bindings": {
      "get": {
        "operationId": "RbacServiceAPI_ListRoleBindings",
        "parameters": [
          {
            "description": "Unique identifier for the organization to list role bindings for.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter by role ID. Multiple values can be passed as query parameters (e.g.,\n&role_id=x&role_id=y)",
            "explode": true,
            "in": "query",
            "name": "roleId",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter by group ID. Multiple values can be passed as query parameters\n(e.g., &group_id=x&group_id=y)",
            "explode": true,
            "in": "query",
            "name": "groupId",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter by scope ID. Multiple values can be passed as query parameters\n(e.g., &scope_id=x&scope_id=y)",
            "explode": true,
            "in": "query",
            "name": "scopeId",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter by scope type. Multiple values can be passed as query parameters\n(e.g., &scope_type=x&scope_type=y)\n\n - ORGANIZATION: Organization scope represents the organization level authentication (Organization -> ResourceID)\n - CLUSTER: Cluster scope represents the cluster level authentication (Organization -> Cluster -> ResourceID)",
            "explode": true,
            "in": "query",
            "name": "scopeType",
            "schema": {
              "items": {
                "enum": [
                  "ORGANIZATION",
                  "CLUSTER"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter by subject type. Multiple values can be passed as query parameters\n(e.g., &subject_type=x&subject_type=y)",
            "explode": true,
            "in": "query",
            "name": "subjectType",
            "schema": {
              "items": {
                "enum": [
                  "SUBJECT_USER",
                  "SUBJECT_GROUP",
                  "SUBJECT_SERVICE_ACCOUNT"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter by subject ID. Multiple values can be passed as query parameters\n(e.g., &subject_id=x&subject_id=y)",
            "explode": true,
            "in": "query",
            "name": "subjectId",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.ListRoleBindingsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListRoleBindings lists the role bindings for the organization.",
        "tags": [
          "RbacServiceAPI"
        ]
      },
      "post": {
        "operationId": "RbacServiceAPI_CreateRoleBindings",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID for which the role binding is created.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "items": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.CreateRoleBindingsRequest.RoleBinding"
                },
                "type": "array"
              }
            }
          },
          "description": "RoleBindings is the array of role bindings to be created.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBinding"
                  },
                  "type": "array"
                }
              }
            },
            "description": "RoleBindings is the array of created role bindings."
          }
        },
        "summary": "CreateRoleBindings creates role bindings for the organization.",
        "tags": [
          "RbacServiceAPI"
        ],
        "x-codegen-request-body-name": "roleBindings"
      }
    },
    "/v1/organizations/{organizationId}/role-bindings/{id}": {
      "delete": {
        "operationId": "RbacServiceAPI_DeleteRoleBinding",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID for which the role binding is deleted.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ID is the id of the role binding to be deleted.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.DeleteRoleBindingResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "DeleteRoleBinding deletes the role binding for the organization.",
        "tags": [
          "RbacServiceAPI"
        ]
      },
      "get": {
        "operationId": "RbacServiceAPI_GetRoleBinding",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID for which the role binding is fetched.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ID is the id of the role binding to be fetched.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBinding"
                }
              }
            },
            "description": "RoleBinding is the fetched role binding."
          }
        },
        "summary": "GetRoleBinding fetches the role binding for the organization.",
        "tags": [
          "RbacServiceAPI"
        ]
      }
    },
    "/v1/organizations/{organizationId}/role-bindings/{roleBinding.id}": {
      "patch": {
        "operationId": "RbacServiceAPI_UpdateRoleBinding",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID for which the role binding is updated.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ID is the unique identifier of the role binding.",
            "in": "path",
            "name": "roleBinding.id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoleBinding_is_the_role_binding_to_be_updated_"
              }
            }
          },
          "description": "RoleBinding is the role binding to be updated.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBinding"
                }
              }
            },
            "description": "RoleBinding is the updated role binding."
          }
        },
        "summary": "UpdateRoleBinding updates the role binding for the organization.",
        "tags": [
          "RbacServiceAPI"
        ],
        "x-codegen-request-body-name": "roleBinding"
      }
    },
    "/v1/organizations/{organizationId}/roles": {
      "get": {
        "operationId": "RbacServiceAPI_ListRoles",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": " - ALL: Return all roles regardless of type\n - ENTERPRISE: Return only enterprise roles\n - DEFAULT: Return only default roles",
            "in": "query",
            "name": "type",
            "schema": {
              "default": "ALL",
              "enum": [
                "ALL",
                "ENTERPRISE",
                "DEFAULT"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.rbac.v1beta1.ListRolesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListRoles lists the roles for the organization.",
        "tags": [
          "RbacServiceAPI"
        ]
      }
    },
    "/v1/organizations/{organizationId}/service-accounts": {
      "delete": {
        "operationId": "ServiceAccountsAPI_DeleteServiceAccounts",
        "parameters": [
          {
            "description": "OrganizationID is the id of the organization to list service accounts for.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ServiceAccountIDs is the list of service account ids to be deleted.",
            "explode": true,
            "in": "query",
            "name": "serviceAccountIds",
            "required": true,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.DeleteServiceAccountsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Service accounts have been deleted."
          }
        },
        "summary": "DeleteServiceAccounts deletes a list of service accounts for the given organization.",
        "tags": [
          "ServiceAccountsAPI"
        ]
      },
      "get": {
        "operationId": "ServiceAccountsAPI_ListServiceAccounts",
        "parameters": [
          {
            "description": "OrganizationID is the id of the organization to list service accounts for.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.ListServiceAccountsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListServiceAccounts lists all service accounts for organization in context.",
        "tags": [
          "ServiceAccountsAPI"
        ]
      },
      "post": {
        "operationId": "ServiceAccountsAPI_CreateServiceAccount",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.CreateServiceAccountRequest.ServiceAccount"
              }
            }
          },
          "description": "ServiceAccount is the service account to be created.",
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.CreateServiceAccountResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "CreateServiceAccount creates a service account for the given organization.",
        "tags": [
          "ServiceAccountsAPI"
        ],
        "x-codegen-request-body-name": "serviceAccount"
      }
    },
    "/v1/organizations/{organizationId}/service-accounts/{serviceAccountId}": {
      "delete": {
        "operationId": "ServiceAccountsAPI_DeleteServiceAccount",
        "parameters": [
          {
            "description": "OrganizationID is the id of the organization to list service accounts for.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ID is the id of the service account to be deleted.",
            "in": "path",
            "name": "serviceAccountId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.DeleteServiceAccountResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Service account has been deleted."
          }
        },
        "summary": "DeleteServiceAccount deletes a service account for the given organization.",
        "tags": [
          "ServiceAccountsAPI"
        ]
      },
      "get": {
        "operationId": "ServiceAccountsAPI_GetServiceAccount",
        "parameters": [
          {
            "description": "OrganizationID is the id of the organization to list service accounts for.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ID is the id of the service account to be fetched.",
            "in": "path",
            "name": "serviceAccountId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.GetServiceAccountResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetServiceAccount gets a service account for the given organization.",
        "tags": [
          "ServiceAccountsAPI"
        ]
      },
      "patch": {
        "operationId": "ServiceAccountsAPI_UpdateServiceAccount",
        "parameters": [
          {
            "description": "OrganizationID is the id of the organization to update the service account for.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ServiceAccountID is the id of the service account to be updated.",
            "in": "path",
            "name": "serviceAccountId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceAccountsAPI_UpdateServiceAccount_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.UpdateServiceAccountResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "UpdateServiceAccount updates a service account for the given organization.",
        "tags": [
          "ServiceAccountsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/organizations/{organizationId}/service-accounts/{serviceAccountId}/keys": {
      "post": {
        "operationId": "ServiceAccountsAPI_CreateServiceAccountKey",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ServiceAccountID is the service account ID.",
            "in": "path",
            "name": "serviceAccountId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceAccountsAPI_CreateServiceAccountKey_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.CreateServiceAccountKeyResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "CreateServiceAccountKey creates a service account key for the given organization.",
        "tags": [
          "ServiceAccountsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/organizations/{organizationId}/service-accounts/{serviceAccountId}/keys/{key.id}": {
      "patch": {
        "operationId": "ServiceAccountsAPI_UpdateServiceAccountKey",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ServiceAccountID is the service account ID.",
            "in": "path",
            "name": "serviceAccountId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key.id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Key_is_the_service_account_key_to_update_"
              }
            }
          },
          "description": "Key is the service account key to update.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.UpdateServiceAccountKeyResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "UpdateServiceAccountKey updates a service account key for the given organization.",
        "tags": [
          "ServiceAccountsAPI"
        ],
        "x-codegen-request-body-name": "key"
      }
    },
    "/v1/organizations/{organizationId}/service-accounts/{serviceAccountId}/keys/{keyId}": {
      "delete": {
        "operationId": "ServiceAccountsAPI_DeleteServiceAccountKey",
        "parameters": [
          {
            "description": "OrganizationID is the organization ID.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ServiceAccountID is the service account ID.",
            "in": "path",
            "name": "serviceAccountId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "KeyID is the key ID.",
            "in": "path",
            "name": "keyId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.DeleteServiceAccountKeyResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Service account key has been deleted."
          }
        },
        "summary": "DeleteServiceAccountKey deletes a service account key for the given organization.",
        "tags": [
          "ServiceAccountsAPI"
        ]
      },
      "get": {
        "operationId": "ServiceAccountsAPI_GetServiceAccountKey",
        "parameters": [
          {
            "description": "OrganizationID is the id of the organization to get a service account key for.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ServiceAccountID is the id of the service account to get a key for.",
            "in": "path",
            "name": "serviceAccountId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "KeyID is the id of the key to be fetched.",
            "in": "path",
            "name": "keyId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.GetServiceAccountKeyResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetServiceAccountKey gets a service account key for the given organization.",
        "tags": [
          "ServiceAccountsAPI"
        ]
      }
    },
    "/v1/organizations/{organizationId}/users": {
      "delete": {
        "operationId": "UsersAPI_RemoveOrganizationUsers",
        "parameters": [
          {
            "description": "Organization id which should no longer contain the users.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Users is the list of user ids to remove.",
            "explode": true,
            "in": "query",
            "name": "users",
            "required": true,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.RemoveOrganizationUsersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Removes users from organization members.",
        "tags": [
          "UsersAPI"
        ]
      },
      "get": {
        "operationId": "UsersAPI_ListOrganizationUsers",
        "parameters": [
          {
            "description": "Get organization users by organization id.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "IncludeGroups is the flag to include group membership in the response.",
            "in": "query",
            "name": "includeGroups",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Filter by role ID. Multiple values can be passed as query parameters (e.g.,\n&role_id=x&role_id=y)",
            "explode": true,
            "in": "query",
            "name": "roleId",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.ListOrganizationUsersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Gets all users which are members of the organization.",
        "tags": [
          "UsersAPI"
        ]
      },
      "post": {
        "operationId": "UsersAPI_AddUserToOrganization",
        "parameters": [
          {
            "description": "Organization id which should take the user in.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.users.v1beta1.NewMembership"
              }
            }
          },
          "description": "Membership to add to an organization.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.AddUserToOrganizationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Makes the user a member of the organization.",
        "tags": [
          "UsersAPI"
        ],
        "x-codegen-request-body-name": "membership"
      }
    },
    "/v1/organizations/{organizationId}/users/{userId}": {
      "delete": {
        "operationId": "UsersAPI_RemoveUserFromOrganization",
        "parameters": [
          {
            "description": "Organization id which should no longer contain the user.",
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "User id to remove.",
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.RemoveUserFromOrganizationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Removes the user from organization members.",
        "tags": [
          "UsersAPI"
        ]
      }
    },
    "/v1/organizations/{organizationId}/users/{userId}/groups": {
      "get": {
        "operationId": "UsersAPI_ListUserGroups",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/castai.users.v1beta1.GroupRef"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Lists groups that a user is assigned to in the organization.",
        "tags": [
          "UsersAPI"
        ]
      }
    },
    "/v1/partners/{partnerOrganizationId}/organizations": {
      "get": {
        "operationId": "PartnersAPI_ListOrganizations",
        "parameters": [
          {
            "description": "Id is a partner organization id.",
            "in": "path",
            "name": "partnerOrganizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.partners.v1beta1.ListOrganizationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List partner child organizations.\nOrganizations are sorted based on the date organizations were created, so first organization will always be the latest.",
        "tags": [
          "PartnersAPI"
        ]
      },
      "post": {
        "operationId": "PartnersAPI_CreateOrganization",
        "parameters": [
          {
            "description": "PartnerOrganizationId is a partner organization id.",
            "in": "path",
            "name": "partnerOrganizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.partners.v1beta1.CreateOrganization"
              }
            }
          },
          "description": "Organization is a partner child organization request object.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Create partner child organization.",
        "tags": [
          "PartnersAPI"
        ],
        "x-codegen-request-body-name": "organization"
      }
    },
    "/v1/partners/{partnerOrganizationId}/organizations/{childOrganizationId}/tokens": {
      "post": {
        "operationId": "PartnersAPI_CreateToken",
        "parameters": [
          {
            "description": "PartnerOrganizationId is a partner organization id.",
            "in": "path",
            "name": "partnerOrganizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ChildOrganizationId is a partner child organization id.",
            "in": "path",
            "name": "childOrganizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.partners.v1beta1.CreateToken"
              }
            }
          },
          "description": "Token is a token creation request object.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Returns token to access partner child organization.",
        "tags": [
          "PartnersAPI"
        ],
        "x-codegen-request-body-name": "token"
      }
    },
    "/v1/partners/{partnerOrganizationId}/organizations/{childOrganizationId}/tokens/{id}": {
      "delete": {
        "operationId": "PartnersAPI_DeleteToken",
        "parameters": [
          {
            "description": "PartnerOrganizationId is a partner organization id.",
            "in": "path",
            "name": "partnerOrganizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "ChildOrganizationId is a partner child organization id.",
            "in": "path",
            "name": "childOrganizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Id is a child organization access token id.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.partners.v1beta1.DeleteTokenResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes token which is used to access partner child organization.",
        "tags": [
          "PartnersAPI"
        ]
      }
    },
    "/v1/pricing/clusters/{clusterId}/nodes": {
      "get": {
        "operationId": "PricingAPI_GetPricingForClusterNodes",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The node ids",
            "explode": true,
            "in": "query",
            "name": "nodeIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "The specific timestamp for which pricing information is requested. If not provided, the current prices are returned.",
            "in": "query",
            "name": "pricingAsOf",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Optional. Inclusive start of the interval.\n\nIf specified, a Timestamp matching this interval will have to be the same\nor after the start.",
            "in": "query",
            "name": "pricingPeriod.startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Optional. Exclusive end of the interval.\n\nIf specified, a Timestamp matching this interval will have to be before the\nend.",
            "in": "query",
            "name": "pricingPeriod.endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetPricingForClusterNodesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get pricing for cluster nodes by node ids or all nodes if ids are not provided",
        "tags": [
          "PricingAPI"
        ]
      }
    },
    "/v1/pricing/clusters/{clusterId}/nodes/{nodeId}": {
      "get": {
        "operationId": "PricingAPI_GetPricingForClusterNode",
        "parameters": [
          {
            "description": "The ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The node id",
            "in": "path",
            "name": "nodeId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The specific timestamp for which pricing information is requested. If not provided, the current prices are returned.",
            "in": "query",
            "name": "pricingAsOf",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetPricingForClusterNodeResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get pricing for single cluster node",
        "tags": [
          "PricingAPI"
        ]
      }
    },
    "/v1/pricing/nodes": {
      "get": {
        "operationId": "PricingAPI_GetPricingForOrganizationNodes",
        "parameters": [
          {
            "description": "The node ids",
            "explode": true,
            "in": "query",
            "name": "nodeIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "The specific timestamp for which pricing information is requested. If not provided, the current prices are returned.",
            "in": "query",
            "name": "pricingAsOf",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Optional. Inclusive start of the interval.\n\nIf specified, a Timestamp matching this interval will have to be the same\nor after the start.",
            "in": "query",
            "name": "pricingPeriod.startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Optional. Exclusive end of the interval.\n\nIf specified, a Timestamp matching this interval will have to be before the\nend.",
            "in": "query",
            "name": "pricingPeriod.endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetPricingForOrganizationNodesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get the pricing of organization nodes by ids or all nodes if ids are not provided",
        "tags": [
          "PricingAPI"
        ]
      }
    },
    "/v1/pricing/sync/gcp/billing-api": {
      "post": {
        "operationId": "PricingAPI_SyncGCPBillingAPIData",
        "parameters": [
          {
            "description": "GCP cluster ID.",
            "in": "query",
            "name": "clusterId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "GCP billing account ID.",
            "in": "query",
            "name": "billingAccountId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.SyncGCPBillingAPIDataResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Sync GCP billing pricing API data",
        "tags": [
          "PricingAPI"
        ]
      }
    },
    "/v1/rebalancing-schedules": {
      "get": {
        "description": "Lists rebalancing schedules for the organization.",
        "operationId": "ScheduledRebalancingAPI_ListRebalancingSchedules",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.ListRebalancingSchedulesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List rebalancing schedules",
        "tags": [
          "ScheduledRebalancingAPI"
        ]
      },
      "post": {
        "description": "Creates an organization-wide rebalancing schedule that can be used on multiple rebalancing jobs.",
        "operationId": "ScheduledRebalancingAPI_CreateRebalancingSchedule",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingSchedule"
              }
            }
          },
          "description": "RebalancingSchedule to create",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingSchedule"
                }
              }
            },
            "description": "Created schedule"
          }
        },
        "summary": "Create rebalancing schedule",
        "tags": [
          "ScheduledRebalancingAPI"
        ],
        "x-codegen-request-body-name": "schedule"
      },
      "put": {
        "description": "Updates configuration of rebalancing schedule.",
        "operationId": "ScheduledRebalancingAPI_UpdateRebalancingSchedule",
        "parameters": [
          {
            "in": "query",
            "name": "id",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingScheduleUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingSchedule"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Edit rebalancing schedule",
        "tags": [
          "ScheduledRebalancingAPI"
        ],
        "x-codegen-request-body-name": "schedule"
      }
    },
    "/v1/rebalancing-schedules/{id}": {
      "delete": {
        "description": "Deletes a rebalancing schedule.",
        "operationId": "ScheduledRebalancingAPI_DeleteRebalancingSchedule",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.DeleteRebalancingScheduleResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete rebalancing schedule",
        "tags": [
          "ScheduledRebalancingAPI"
        ]
      },
      "get": {
        "description": "Gets a rebalancing schedule by it's ID",
        "operationId": "ScheduledRebalancingAPI_GetRebalancingSchedule",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingSchedule"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get rebalancing schedule",
        "tags": [
          "ScheduledRebalancingAPI"
        ]
      }
    },
    "/v1/regions": {
      "get": {
        "operationId": "InventoryAPI_ListRegions",
        "parameters": [
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageToken",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includeUnavailable",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.ListRegionsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List all regions",
        "tags": [
          "InventoryAPI"
        ]
      }
    },
    "/v1/report/usage/daily": {
      "get": {
        "deprecated": true,
        "operationId": "UsageAPI_GetUsageReport",
        "parameters": [
          {
            "description": "Start time of resource usage period.",
            "in": "query",
            "name": "filter.period.from",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End time of resource usage period.",
            "in": "query",
            "name": "filter.period.to",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Optional cluster id for usage filtering",
            "in": "query",
            "name": "filter.clusterId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.usage.v1beta1.GetUsageReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /v1/billing/usage-report instead.",
        "tags": [
          "UsageAPI"
        ]
      }
    },
    "/v1/report/usage/summary": {
      "get": {
        "deprecated": true,
        "operationId": "UsageAPI_GetUsageSummary",
        "parameters": [
          {
            "description": "Start time of resource usage period.",
            "in": "query",
            "name": "period.from",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End time of resource usage period.",
            "in": "query",
            "name": "period.to",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Optional cluster id for which avg would be calculated.",
            "in": "query",
            "name": "clusterId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.usage.v1beta1.GetUsageSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /v1/billing/usage-report instead.",
        "tags": [
          "UsageAPI"
        ]
      }
    },
    "/v1/savings/assignments": {
      "get": {
        "deprecated": true,
        "operationId": "CommitmentsAPI_GetCommitmentsAssignments",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetCommitmentsAssignmentsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /pricing/v1beta/organizations/{organization_id}/commitments/{commitment_id}/assignments instead.\nGet all commitments assignments",
        "tags": [
          "CommitmentsAPI"
        ]
      },
      "post": {
        "operationId": "CommitmentsAPI_CreateCommitmentAssignment",
        "parameters": [
          {
            "description": "Cluster ID",
            "in": "query",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Commitment ID",
            "in": "query",
            "name": "commitmentId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Assign commitment to a cluster",
        "tags": [
          "CommitmentsAPI"
        ]
      }
    },
    "/v1/savings/assignments/{assignmentId}": {
      "delete": {
        "operationId": "CommitmentsAPI_DeleteCommitmentAssignment",
        "parameters": [
          {
            "description": "Assignment ID",
            "in": "path",
            "name": "assignmentId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Remove commitment assignment",
        "tags": [
          "CommitmentsAPI"
        ]
      }
    },
    "/v1/savings/commitments": {
      "get": {
        "deprecated": true,
        "operationId": "CommitmentsAPI_GetCommitments",
        "parameters": [
          {
            "description": "indicated if commitment usage should be included in a response",
            "in": "query",
            "name": "includeUsage",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "get commitments that are assigned to a cluster",
            "in": "query",
            "name": "clusterId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "indicates if usage per clusters should be included",
            "in": "query",
            "name": "includeUsagePerClusters",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "indicates if usage per instance types should be included",
            "in": "query",
            "name": "includeUsagePerInstanceTypes",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetCommitmentsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "[Deprecated] Use /pricing/v1beta/organizations/{organization_id}/commitments instead.\nGet commitments",
        "tags": [
          "CommitmentsAPI"
        ]
      }
    },
    "/v1/savings/commitments/import/azure/reservation": {
      "post": {
        "deprecated": true,
        "operationId": "CommitmentsAPI_ImportAzureReservations",
        "parameters": [
          {
            "description": "Behaviour\n\n - OVERWRITE: Overwrite all existing commitments\n - APPEND: Append commitments without deleting existing ones",
            "in": "query",
            "name": "behaviour",
            "schema": {
              "default": "OVERWRITE",
              "enum": [
                "OVERWRITE",
                "APPEND"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "items": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.AzureReservationImport"
                },
                "type": "array"
              }
            }
          },
          "description": "Import Azure reservation commitments",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Import Azure commitments (reservations)\n[Deprecated] Used to be exposed for use with UI elements, now the process is automated",
        "tags": [
          "CommitmentsAPI"
        ],
        "x-codegen-request-body-name": "azureReservationImports"
      }
    },
    "/v1/savings/commitments/import/gcp/cud": {
      "post": {
        "operationId": "CommitmentsAPI_ImportGCPCommitments",
        "parameters": [
          {
            "description": "Behaviour\n\n - OVERWRITE: Overwrite all existing commitments",
            "in": "query",
            "name": "behaviour",
            "schema": {
              "default": "OVERWRITE",
              "enum": [
                "OVERWRITE"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "items": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GCPCommitmentImport"
                },
                "type": "array"
              }
            }
          },
          "description": "Import GCPCommitments",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Import GCP commitments (CUDs)",
        "tags": [
          "CommitmentsAPI"
        ],
        "x-codegen-request-body-name": "gcpCommitmentImports"
      }
    },
    "/v1/savings/commitments/import/gcp/cud/script": {
      "get": {
        "operationId": "CommitmentsAPI_GetGCPCommitmentsImportScript",
        "parameters": [
          {
            "description": "GCP Project ids",
            "explode": true,
            "in": "query",
            "name": "projects",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetGCPCommitmentsImportScriptResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get GCP commitments (CUDs) import script",
        "tags": [
          "CommitmentsAPI"
        ]
      }
    },
    "/v1/savings/commitments/{commitmentId}": {
      "delete": {
        "operationId": "CommitmentsAPI_DeleteCommitment",
        "parameters": [
          {
            "description": "Commitment ID",
            "in": "path",
            "name": "commitmentId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete commitment",
        "tags": [
          "CommitmentsAPI"
        ]
      },
      "get": {
        "operationId": "CommitmentsAPI_GetCommitment",
        "parameters": [
          {
            "description": "Commitment ID",
            "in": "path",
            "name": "commitmentId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "get commitments that are assigned to a cluster",
            "in": "query",
            "name": "clusterId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "indicated if commitment usage should be included in a response",
            "in": "query",
            "name": "includeUsage",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "indicates if usage per clusters should be included",
            "in": "query",
            "name": "includeUsagePerClusters",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "indicates if usage per instance types should be included",
            "in": "query",
            "name": "includeUsagePerInstanceTypes",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetCommitmentResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get commitment",
        "tags": [
          "CommitmentsAPI"
        ]
      },
      "put": {
        "operationId": "CommitmentsAPI_UpdateCommitment",
        "parameters": [
          {
            "in": "path",
            "name": "commitmentId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.inventory.v1beta1.UpdateCommitmentInput"
              }
            }
          },
          "description": "Commitments",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.UpdateCommitmentResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Update commitment.\nIf commitment auto-assignment is enabled, it will additionally create missing matching assignments.",
        "tags": [
          "CommitmentsAPI"
        ],
        "x-codegen-request-body-name": "commitment"
      }
    },
    "/v1/savings/commitments/{commitmentId}/assignments": {
      "get": {
        "operationId": "CommitmentsAPI_GetCommitmentAssignments",
        "parameters": [
          {
            "in": "path",
            "name": "commitmentId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.GetCommitmentAssignmentsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get commitment assignments",
        "tags": [
          "CommitmentsAPI"
        ]
      },
      "put": {
        "operationId": "CommitmentsAPI_ReplaceCommitmentAssignments",
        "parameters": [
          {
            "in": "path",
            "name": "commitmentId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            }
          },
          "description": "Cluster ids. The order of the ids corresponds to priorities if prioritization is enabled for the commitment. The first item in the array is the highest priority one.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.ReplaceCommitmentAssignmentsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Replace commitment assignments.\nIf commitment auto-assignment is enabled, it will generate and append matching assignments that are missing in the request.",
        "tags": [
          "CommitmentsAPI"
        ],
        "x-codegen-request-body-name": "clusterIds"
      }
    },
    "/v1/scripts/commitments/gcp/cud/import.sh": {
      "get": {
        "operationId": "CommitmentsAPI_GetGCPCommitmentsScriptTemplate",
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Get a template containing GCP commitments (CUDs) import script",
        "tags": [
          "CommitmentsAPI"
        ]
      }
    },
    "/v1/scripts/connect-and-enable-castai.sh": {
      "get": {
        "operationId": "ExternalClusterAPI_GetConnectAndEnableCASTAIScript",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/google.api.HttpBody"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns the script for one-pass onboarding.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/scripts/egressd/install.sh": {
      "get": {
        "operationId": "ReportConfigurationAPI_GetEgressdScriptTemplate",
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Returns egressd installation script template.",
        "tags": [
          "ReportConfigurationAPI"
        ]
      }
    },
    "/v1/scripts/gpu-metrics-exporter/install.sh": {
      "get": {
        "operationId": "ReportConfigurationAPI_GetGpuMetricsExporterScriptTemplate",
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Returns gpu-metrics-exporter installation script template.",
        "tags": [
          "ReportConfigurationAPI"
        ]
      }
    },
    "/v1/scripts/reliability-metrics/install.sh": {
      "get": {
        "operationId": "ReportConfigurationAPI_GetReliabilityMetricsScriptTemplate",
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Returns reliability-metrics (kvisor) installation script template.",
        "tags": [
          "ReportConfigurationAPI"
        ]
      }
    },
    "/v1/scripts/{provider}/cleanup.sh": {
      "get": {
        "operationId": "ExternalClusterAPI_GetCleanupScriptTemplate",
        "parameters": [
          {
            "in": "path",
            "name": "provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Returns cleanup script for the specified provider.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/scripts/{provider}/onboarding.sh": {
      "get": {
        "operationId": "ExternalClusterAPI_GetCredentialsScriptTemplate",
        "parameters": [
          {
            "in": "path",
            "name": "provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "crossRole",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Returns credentials onboarding script for the specified provider.",
        "tags": [
          "ExternalClusterAPI"
        ]
      }
    },
    "/v1/security/image-provider/images": {
      "get": {
        "operationId": "ImageProviderAPI_GetImages",
        "parameters": [
          {
            "description": "image name",
            "in": "query",
            "name": "name",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "tag prefix to search for",
            "in": "query",
            "name": "tagPrefix",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/imageprovider.v1.GetImagesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get base images by name and tag prefix",
        "tags": [
          "ImageProviderAPI"
        ]
      }
    },
    "/v1/security/insights/agents": {
      "post": {
        "operationId": "InsightsAPI_GetAgentsStatus",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.GetAgentsStatusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetAgentsStatusResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get status of security agents",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/insights/attack-paths": {
      "get": {
        "operationId": "InsightsAPI_GetAttackPaths",
        "parameters": [
          {
            "description": "(optional) cluster_id filter",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) resource_id filter",
            "in": "query",
            "name": "resourceId",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetAttackPathsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get attack paths list.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/attack-paths/{id}": {
      "get": {
        "operationId": "InsightsAPI_GetAttackPathDetails",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetAttackPathDetailsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get attack path details including graph.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/best-practices": {
      "get": {
        "operationId": "InsightsAPI_GetBestPracticesReport",
        "parameters": [
          {
            "description": "(optional) cluster_id filter",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) namespace filter",
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) threat category filter",
            "in": "query",
            "name": "category",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "(optional) labels filter",
            "explode": true,
            "in": "query",
            "name": "labels",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) severity filter",
            "explode": true,
            "in": "query",
            "name": "severityLevels",
            "schema": {
              "items": {
                "enum": [
                  "any",
                  "none",
                  "low",
                  "medium",
                  "high",
                  "critical",
                  "notAvailable"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) standard to display rules in\n\n - cast: default standard\n - cisAks12: cis aks 12\n - cisEks12: cis eks 12\n - cisGke13: cis gke 13\n - cisAks13: cis aks 13\n - cisEks13: cis eks 13\n - cisGke14: cis gke 14\n - cisAks14: cis aks 14\n - cisAks15: cis aks 15\n - cisEks14: cis eks 14\n - cisEks15: cis eks 15\n - cisGke15: cis gke 15\n - cisGke16: cis gke 16\n - cisAks16: cis aks 16",
            "in": "query",
            "name": "standard",
            "schema": {
              "default": "cast",
              "enum": [
                "cast",
                "cisAks12",
                "cisEks12",
                "cisGke13",
                "cisAks13",
                "cisEks13",
                "cisGke14",
                "cisAks14",
                "cisAks15",
                "cisEks14",
                "cisEks15",
                "cisGke15",
                "cisGke16",
                "cisAks16"
              ],
              "type": "string"
            }
          },
          {
            "description": "display read only clusters",
            "in": "query",
            "name": "readonlyClusters",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "(optional) filter by resource K8s id",
            "in": "query",
            "name": "resourceIdFilter",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetBestPracticesReportResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get latest best practices report.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/best-practices/checks/resources": {
      "post": {
        "operationId": "InsightsAPI_GetChecksResources",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.GetChecksResourcesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetChecksResourcesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get resources for provided checks and filtering\nPOST due to possible amount of parameters",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/insights/best-practices/checks/{ruleId}": {
      "get": {
        "operationId": "InsightsAPI_GetBestPracticesCheckDetails",
        "parameters": [
          {
            "description": "(required) rule id",
            "in": "path",
            "name": "ruleId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "(optional) standard to use\n\n - cast: default standard\n - cisAks12: cis aks 12\n - cisEks12: cis eks 12\n - cisGke13: cis gke 13\n - cisAks13: cis aks 13\n - cisEks13: cis eks 13\n - cisGke14: cis gke 14\n - cisAks14: cis aks 14\n - cisAks15: cis aks 15\n - cisEks14: cis eks 14\n - cisEks15: cis eks 15\n - cisGke15: cis gke 15\n - cisGke16: cis gke 16\n - cisAks16: cis aks 16",
            "in": "query",
            "name": "standard",
            "schema": {
              "default": "cast",
              "enum": [
                "cast",
                "cisAks12",
                "cisEks12",
                "cisGke13",
                "cisAks13",
                "cisEks13",
                "cisGke14",
                "cisAks14",
                "cisAks15",
                "cisEks14",
                "cisEks15",
                "cisGke15",
                "cisGke16",
                "cisAks16"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetBestPracticesCheckDetailsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get single check information and objects that matched the rule in the last best practices report.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/best-practices/checks/{ruleId}/enforce": {
      "post": {
        "operationId": "InsightsAPI_EnforceCheckPolicy",
        "parameters": [
          {
            "description": "(required) rule id to enforce",
            "in": "path",
            "name": "ruleId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InsightsAPI_EnforceCheckPolicy_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.EnforceCheckPolicyResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Enforce linter rule as policy.",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/insights/best-practices/checks/{ruleId}/exceptions": {
      "get": {
        "operationId": "InsightsAPI_GetCheckExceptions",
        "parameters": [
          {
            "in": "path",
            "name": "ruleId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetCheckExceptionsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get active exceptions for selected rule",
        "tags": [
          "InsightsAPI"
        ]
      },
      "post": {
        "operationId": "InsightsAPI_SaveCheckExceptions",
        "parameters": [
          {
            "in": "path",
            "name": "ruleId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.CheckExceptionsPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.SaveCheckExceptionsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Send check exceptions.",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/v1/security/insights/best-practices/checks/{ruleId}/exceptions/filters": {
      "get": {
        "operationId": "InsightsAPI_SaveCheckExceptionsFilters",
        "parameters": [
          {
            "in": "path",
            "name": "ruleId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.SaveCheckExceptionsFiltersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get check exceptions filters.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/best-practices/checks/{ruleId}/exceptions/preview": {
      "post": {
        "operationId": "InsightsAPI_PreviewExceptionGroupsResources",
        "parameters": [
          {
            "in": "path",
            "name": "ruleId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.CheckExceptionsPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.PreviewExceptionGroupsResourcesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get a preview of resources that will be excepted with exception groups",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/v1/security/insights/best-practices/checks/{ruleId}/resources": {
      "post": {
        "operationId": "InsightsAPI_GetCheckResources",
        "parameters": [
          {
            "in": "path",
            "name": "ruleId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InsightsAPI_GetCheckResources_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetCheckResourcesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get resources for provided check and filtering\nPOST due to possible amount of parameters",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/insights/best-practices/enforcements/{enforcementId}": {
      "delete": {
        "operationId": "InsightsAPI_DeletePolicyEnforcement",
        "parameters": [
          {
            "description": "(required) enforcement id",
            "in": "path",
            "name": "enforcementId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.DeletePolicyEnforcementResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete policy enforcement.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/best-practices/filters": {
      "get": {
        "operationId": "InsightsAPI_GetBestPracticesReportFilters",
        "parameters": [
          {
            "description": "(optional) return filters available for specific clusters",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "filtersv2",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetBestPracticesReportFiltersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Retrieve a list of possible filters for best practices report.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/best-practices/schedule-scan": {
      "post": {
        "operationId": "InsightsAPI_ScheduleBestPracticesScan",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.ScheduleBestPracticesScanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.ScheduleBestPracticesScanResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Schedule best practices scan for cluster.",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/insights/best-practices/standards": {
      "get": {
        "operationId": "InsightsAPI_GetComplianceStandards",
        "parameters": [
          {
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetComplianceStandardsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get all compliance standards supported for the organization",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/daily-summary/{date}": {
      "get": {
        "operationId": "InsightsAPI_GetDailySummary",
        "parameters": [
          {
            "in": "path",
            "name": "date",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetDailySummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetDailySummary returns the data of the daily vulnerability notification.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/exceptions/best-practices/checks": {
      "get": {
        "operationId": "InsightsAPI_GetExceptedChecks",
        "parameters": [
          {
            "description": "(optional) cluster_id filter",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) namespace filter",
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) threat category filter",
            "in": "query",
            "name": "category",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "(optional) severity filter",
            "explode": true,
            "in": "query",
            "name": "severityLevels",
            "schema": {
              "items": {
                "enum": [
                  "any",
                  "none",
                  "low",
                  "medium",
                  "high",
                  "critical",
                  "notAvailable"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) standard to display rules in\n\n - cast: default standard\n - cisAks12: cis aks 12\n - cisEks12: cis eks 12\n - cisGke13: cis gke 13\n - cisAks13: cis aks 13\n - cisEks13: cis eks 13\n - cisGke14: cis gke 14\n - cisAks14: cis aks 14\n - cisAks15: cis aks 15\n - cisEks14: cis eks 14\n - cisEks15: cis eks 15\n - cisGke15: cis gke 15\n - cisGke16: cis gke 16\n - cisAks16: cis aks 16",
            "in": "query",
            "name": "standard",
            "schema": {
              "default": "cast",
              "enum": [
                "cast",
                "cisAks12",
                "cisEks12",
                "cisGke13",
                "cisAks13",
                "cisEks13",
                "cisGke14",
                "cisAks14",
                "cisAks15",
                "cisEks14",
                "cisEks15",
                "cisGke15",
                "cisGke16",
                "cisAks16"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetExceptedChecksResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get checks that have not passed but are excepted",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images": {
      "get": {
        "operationId": "InsightsAPI_GetContainerImages",
        "parameters": [
          {
            "description": "(optional) status filter",
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "(optional) cves filter",
            "explode": true,
            "in": "query",
            "name": "cves",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) packages filter",
            "explode": true,
            "in": "query",
            "name": "packages",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) namespaces filter",
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) clusters filter",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) labels filter",
            "explode": true,
            "in": "query",
            "name": "labels",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) exception filter\n\n - all: return all resources\n - active: return only not excepted resources\n - excepted: return only excepted resources",
            "in": "query",
            "name": "exceptionFilter",
            "schema": {
              "default": "all",
              "enum": [
                "all",
                "active",
                "excepted"
              ],
              "type": "string"
            }
          },
          {
            "description": "(optional) filter image by resource_id",
            "in": "query",
            "name": "resourceIdFilter",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "(optional) filter image by scan_status",
            "in": "query",
            "name": "scanStatus",
            "schema": {
              "default": "Unknown",
              "enum": [
                "Unknown",
                "Pending",
                "Failed",
                "Completed"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetContainerImagesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get a list of container images for organization",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images/by-manifest-digest/{manifestDigest}/details": {
      "get": {
        "operationId": "InsightsAPI_GetContainerImageDetailsByManifestDigest",
        "parameters": [
          {
            "in": "path",
            "name": "manifestDigest",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "name",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetContainerImageDetailsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get details for container image by manifest digest and name",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images/by-manifest-digest/{manifestDigest}/tags-resources": {
      "get": {
        "operationId": "InsightsAPI_GetContainerImageResourcesByManifestDigest",
        "parameters": [
          {
            "in": "path",
            "name": "manifestDigest",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetContainerImageResourcesByManifestDigestResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get details for container image by manifest digest and name",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images/delete": {
      "post": {
        "operationId": "InsightsAPI_DeleteImages",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.DeleteImagesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.DeleteImagesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "DeleteImages should be used for deleting old images",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/insights/images/exceptions": {
      "post": {
        "operationId": "InsightsAPI_ImageExceptionChanges",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.ImageExceptionChangesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.ImageExceptionChangesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Send a diff of changes (x exceptions added, y exceptions removed) for excepted images",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/insights/images/filters": {
      "get": {
        "operationId": "InsightsAPI_GetContainerImagesFilters",
        "parameters": [
          {
            "description": "(optional) return filters available for specific clusters",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetContainerImagesFiltersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get a list of possible filters for images endpoint",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images/registries": {
      "get": {
        "operationId": "InsightsAPI_GetImageRegistries",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetImageRegistriesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get image registries for organization",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images/{tagId}/details": {
      "get": {
        "operationId": "InsightsAPI_GetContainerImageDetails",
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetContainerImageDetailsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get details for container image by tag",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images/{tagId}/digests": {
      "get": {
        "operationId": "InsightsAPI_GetContainerImageDigests",
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetContainerImageDigestsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get container image digests for organization by tag id",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images/{tagId}/packages": {
      "get": {
        "operationId": "InsightsAPI_GetContainerImagePackages",
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": " - all: return all resources\n - active: return only not excepted resources\n - excepted: return only excepted resources",
            "in": "query",
            "name": "exceptionFilter",
            "schema": {
              "default": "all",
              "enum": [
                "all",
                "active",
                "excepted"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetContainerImagePackagesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get a list of image packages",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images/{tagId}/resources": {
      "get": {
        "operationId": "InsightsAPI_GetContainerImageResources",
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "labels",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetContainerImageResourcesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get cluster resources for container image",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images/{tagId}/vulnerabilities": {
      "get": {
        "operationId": "InsightsAPI_GetContainerImageVulnerabilities",
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "(optional) Filter by package ID.",
            "in": "query",
            "name": "pkgId",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": " - all: return all resources\n - active: return only not excepted resources\n - excepted: return only excepted resources",
            "in": "query",
            "name": "exceptionFilter",
            "schema": {
              "default": "all",
              "enum": [
                "all",
                "active",
                "excepted"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetContainerImageVulnerabilitiesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get a list of image vulnerabilities",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/images/{tagId}/vulnerabilities/{pkgVulnId}/details": {
      "get": {
        "operationId": "InsightsAPI_GetContainerImagePackageVulnerabilityDetails",
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "pkgVulnId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetContainerImagePackageVulnerabilityDetailsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get image vulnerability for a specific package",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/overview/attack-paths": {
      "get": {
        "operationId": "InsightsAPI_GetAttackPathsOverview",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetAttackPathsOverviewResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetAttackPathsOverview returns a high-level overview of attack paths.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/overview/best-practices": {
      "get": {
        "operationId": "InsightsAPI_GetBestPracticesOverview",
        "parameters": [
          {
            "description": " - cast: default standard\n - cisAks12: cis aks 12\n - cisEks12: cis eks 12\n - cisGke13: cis gke 13\n - cisAks13: cis aks 13\n - cisEks13: cis eks 13\n - cisGke14: cis gke 14\n - cisAks14: cis aks 14\n - cisAks15: cis aks 15\n - cisEks14: cis eks 14\n - cisEks15: cis eks 15\n - cisGke15: cis gke 15\n - cisGke16: cis gke 16\n - cisAks16: cis aks 16",
            "in": "query",
            "name": "standard",
            "schema": {
              "default": "cast",
              "enum": [
                "cast",
                "cisAks12",
                "cisEks12",
                "cisGke13",
                "cisAks13",
                "cisEks13",
                "cisGke14",
                "cisAks14",
                "cisAks15",
                "cisEks14",
                "cisEks15",
                "cisGke15",
                "cisGke16",
                "cisAks16"
              ],
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetBestPracticesOverviewResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetBestPracticesOverview returns a high-level overview of best practices.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/overview/image-security": {
      "get": {
        "operationId": "InsightsAPI_GetImageSecurityOverview",
        "parameters": [
          {
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetImageSecurityOverviewResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetImageSecurityOverview returns a high-level overview of image security.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/overview/nodes": {
      "get": {
        "operationId": "InsightsAPI_GetNodesOverview",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetNodesOverviewResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetManagedNodesOverview returns a high-level overview of managed nodes.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/overview/vulnerabilities": {
      "get": {
        "operationId": "InsightsAPI_GetVulnerabilitiesOverview",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetVulnerabilitiesOverviewResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetVulnerabilitiesOverview for the entire organization.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/resources/{id}": {
      "get": {
        "operationId": "InsightsAPI_GetResourceDetails",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": " - cast: default standard\n - cisAks12: cis aks 12\n - cisEks12: cis eks 12\n - cisGke13: cis gke 13\n - cisAks13: cis aks 13\n - cisEks13: cis eks 13\n - cisGke14: cis gke 14\n - cisAks14: cis aks 14\n - cisAks15: cis aks 15\n - cisEks14: cis eks 14\n - cisEks15: cis eks 15\n - cisGke15: cis gke 15\n - cisGke16: cis gke 16\n - cisAks16: cis aks 16",
            "in": "query",
            "name": "standard",
            "required": true,
            "schema": {
              "default": "cast",
              "enum": [
                "cast",
                "cisAks12",
                "cisEks12",
                "cisGke13",
                "cisAks13",
                "cisEks13",
                "cisGke14",
                "cisAks14",
                "cisAks15",
                "cisEks14",
                "cisEks15",
                "cisGke15",
                "cisGke16",
                "cisAks16"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetResourceDetailsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetResourceDetails for display in attack path nodes",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/vulnerabilities": {
      "get": {
        "operationId": "InsightsAPI_ListVulnerabilities",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "labels",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "severities",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "risks",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "fixes",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.ListVulnerabilitiesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListVulnerabilities across the entire organization.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/vulnerabilities/filters": {
      "get": {
        "operationId": "InsightsAPI_FiltersForVulnerabilities",
        "parameters": [
          {
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "labels",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "severities",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "risks",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.FiltersForVulnerabilitiesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "FiltersForVulnerabilities are provided here.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/vulnerabilities/mttr": {
      "get": {
        "operationId": "InsightsAPI_GetVulnerabilitiesMTTR",
        "parameters": [
          {
            "description": "ID of the clusters to include in the MTTR calculation.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Labels to filter workloads by (e.g. \"env=prod\" or \"team=payments\").",
            "explode": true,
            "in": "query",
            "name": "labels",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Namespaces to filter workloads by.",
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Include intervals resolved at or after this time (inclusive).",
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Include intervals resolved at or before this time (inclusive).",
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetVulnerabilitiesMTTRResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetVulnerabilitiesMTTR returns MTTR aggregates for resolved vulnerabilities in the selected scope.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/vulnerabilities/trend": {
      "get": {
        "operationId": "InsightsAPI_GetVulnerabilitiesTrend",
        "parameters": [
          {
            "description": "ID of the clusters to include in the trend.",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Labels to filter the trend by (e.g. \"env=prod\").",
            "explode": true,
            "in": "query",
            "name": "labels",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Namespaces to filter the trend by.",
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Number of top items to return.",
            "in": "query",
            "name": "limit",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetVulnerabilitiesTrendResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetVulnerabilitiesTrend shows how vulnerabilities have trended over time.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/workloads": {
      "get": {
        "operationId": "InsightsAPI_ListWorkloads",
        "parameters": [
          {
            "description": "(optional) name filter",
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "(optional) cluster_id filter",
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) namespace filter",
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "(optional) labels filter",
            "explode": true,
            "in": "query",
            "name": "labels",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.ListWorkloadsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListWorkloads lists workloads in the organization",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/{clusterId}/agent": {
      "get": {
        "operationId": "InsightsAPI_GetAgentStatus",
        "parameters": [
          {
            "description": "(required) cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetAgentStatusResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get status of security agent",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/insights/{clusterId}/log": {
      "post": {
        "operationId": "InsightsAPI_IngestAgentLog",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.LogEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.IngestAgentLogResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Ingest log sent by Security Agent",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "log"
      }
    },
    "/v1/security/insights/{clusterId}/sync-state": {
      "post": {
        "operationId": "InsightsAPI_GetAgentSyncState",
        "parameters": [
          {
            "description": "(required) cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.AgentSyncStateFilter"
              }
            }
          },
          "description": "(required) sync state filter",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetAgentSyncStateResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Agent calls this endpoint to sync state for scanned images.",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "filter"
      }
    },
    "/v1/security/insights/{clusterId}/telemetry": {
      "post": {
        "operationId": "InsightsAPI_PostAgentTelemetry",
        "parameters": [
          {
            "description": "(required) cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InsightsAPI_PostAgentTelemetry_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.PostAgentTelemetryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Agent posts telemetry data to this endpoint.",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/integrations": {
      "get": {
        "operationId": "InsightsAPI_ListIntegrations",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.ListIntegrationsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get list of integrations.",
        "tags": [
          "InsightsAPI"
        ]
      },
      "post": {
        "operationId": "InsightsAPI_CreateIntegration",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.CreateIntegrationRequest.Payload"
              }
            }
          },
          "description": "(required) integration payload",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.CreateIntegrationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Create integration.",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/v1/security/integrations/{id}": {
      "delete": {
        "operationId": "InsightsAPI_DeleteIntegration",
        "parameters": [
          {
            "description": "(required) integration id",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.DeleteIntegrationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete integration.",
        "tags": [
          "InsightsAPI"
        ]
      },
      "get": {
        "operationId": "InsightsAPI_GetIntegration",
        "parameters": [
          {
            "description": "(required) integration id",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetIntegrationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get integration.",
        "tags": [
          "InsightsAPI"
        ]
      },
      "patch": {
        "operationId": "InsightsAPI_UpdateIntegration",
        "parameters": [
          {
            "description": "(required) integration id",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/insights.v1.UpdateIntegrationRequest.Payload"
              }
            }
          },
          "description": "(required) integration payload",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.UpdateIntegrationResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Update integration.",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/v1/security/integrations/{id}/projects": {
      "get": {
        "operationId": "InsightsAPI_GetProjects",
        "parameters": [
          {
            "description": "integration id",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetProjectsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetProjects of the ticketing system setup through integrations.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/integrations/{id}/ticket": {
      "post": {
        "operationId": "InsightsAPI_CreateTicket",
        "parameters": [
          {
            "description": "integration id",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InsightsAPI_CreateTicket_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.CreateTicketResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "CreateTicket in the ticketing system setup through integrations.",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/integrations/{id}/vulnerability-ticket": {
      "post": {
        "operationId": "InsightsAPI_CreateVulnerabilityTicket",
        "parameters": [
          {
            "description": "integration id",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InsightsAPI_CreateVulnerabilityTicket_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.CreateTicketResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "CreateVulnerabilityTicket create a ticket for a vulnerability.",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/anomalies": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetAnomalies",
        "parameters": [
          {
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "default": "ANOMALY_STATUS_FILTER_UNSPECIFIED",
              "enum": [
                "ANOMALY_STATUS_FILTER_UNSPECIFIED",
                "ANOMALY_STATUS_FILTER_OPEN",
                "ANOMALY_STATUS_FILTER_UNACKED",
                "ANOMALY_STATUS_FILTER_CLOSED"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "resourceId",
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "types",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "search is a plain-text search over all fields of the anomaly\n(rule name, cluster name, namespace, workload name or rule type).",
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetAnomaliesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/anomalies/ack": {
      "post": {
        "operationId": "RuntimeSecurityAPI_AckAnomalies",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/runtime.v1.AckAnomaliesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.AckAnomaliesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/anomalies/close": {
      "post": {
        "operationId": "RuntimeSecurityAPI_CloseAnomalies",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/runtime.v1.CloseAnomaliesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.CloseAnomaliesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/anomalies/trigger-webhook": {
      "post": {
        "operationId": "RuntimeSecurityAPI_TriggerAnomaliesWebhook",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/runtime.v1.TriggerAnomaliesWebhookRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.TriggerAnomaliesWebhookResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/anomalies/{id}": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetAnomaly",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetAnomalyResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/anomalies/{id}/events": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetAnomalyEvents",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetAnomalyEventsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/anomalies/{id}/trigger-webhook": {
      "post": {
        "operationId": "RuntimeSecurityAPI_TriggerAnomalyWebhook",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.TriggerAnomalyWebhookResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/events": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetRuntimeEvents",
        "parameters": [
          {
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "types",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "groupSelectors",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetRuntimeEventsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/events/groups": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetRuntimeEventGroups",
        "parameters": [
          {
            "explode": true,
            "in": "query",
            "name": "clusterIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "types",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "groupBy",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetRuntimeEventGroupsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/events/process-tree/{clusterId}": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetRuntimeEventsProcessTree",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "containerId",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "processPid",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "processStartTime",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetRuntimeEventsProcessTreeResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/list": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetLists",
        "parameters": [
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetListsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      },
      "post": {
        "operationId": "RuntimeSecurityAPI_CreateList",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/runtime.v1.CreateListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.ListHeader"
                }
              }
            },
            "description": ""
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/list/delete": {
      "post": {
        "operationId": "RuntimeSecurityAPI_DeleteLists",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/runtime.v1.DeleteListsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.DeleteListsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/list/{id}": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetList",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.ListHeaderWithRules"
                }
              }
            },
            "description": ""
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/list/{id}/add": {
      "post": {
        "operationId": "RuntimeSecurityAPI_AddListEntries",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeSecurityAPI_AddListEntries_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.AddListEntriesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/list/{id}/entries": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetListEntries",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetListEntriesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/list/{id}/remove": {
      "post": {
        "operationId": "RuntimeSecurityAPI_RemoveListEntries",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeSecurityAPI_AddListEntries_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.RemoveListEntriesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/netflow/{clusterId}/graph": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetNetflowGraph",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "CEL based search.",
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "groupSourceBy",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "groupDestinationBy",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetNetflowGraphResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/netflow/{clusterId}/list": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetNetflowList",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Group source traffic by specified fields.",
            "explode": true,
            "in": "query",
            "name": "groupSourceBy",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Group destination traffic by specified fields.",
            "explode": true,
            "in": "query",
            "name": "groupDestinationBy",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "CEL based search.",
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetNetflowListResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/netflow/{clusterId}/trend": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetNetflowTrend",
        "parameters": [
          {
            "description": "ID of the cluster.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter items to include from specified time.",
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter items to include up to specified time.",
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Aggregate items in specified interval steps.",
            "in": "query",
            "name": "stepSeconds",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Number of top items to return.",
            "in": "query",
            "name": "limit",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Group source traffic by specified fields.",
            "explode": true,
            "in": "query",
            "name": "groupSourceBy",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Group destination traffic by specified fields.",
            "explode": true,
            "in": "query",
            "name": "groupDestinationBy",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "CEL based search.",
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetNetflowTrendResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/overview/anomalies": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetAnomaliesOverview",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetAnomaliesOverviewResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetAnomaliesOverview returns an overview of anomalies for all nodes and workloads.",
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/rules": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetRules",
        "parameters": [
          {
            "in": "query",
            "name": "enabled",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "category",
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "severity",
            "schema": {
              "items": {
                "enum": [
                  "SEVERITY_UNKNOWN",
                  "SEVERITY_NONE",
                  "SEVERITY_LOW",
                  "SEVERITY_MEDIUM",
                  "SEVERITY_HIGH",
                  "SEVERITY_CRITICAL"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "search is a plain-text search over all fields of the rule (name, type, category).",
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetRulesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      },
      "post": {
        "operationId": "RuntimeSecurityAPI_CreateRule",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/runtime.v1.CreateRuleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.Rule"
                }
              }
            },
            "description": ""
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/rules/delete": {
      "post": {
        "operationId": "RuntimeSecurityAPI_DeleteRules",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/runtime.v1.DeleteRulesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.DeleteRulesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/rules/toggle": {
      "post": {
        "operationId": "RuntimeSecurityAPI_ToggleRules",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/runtime.v1.ToggleRulesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.ToggleRulesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/rules/validate": {
      "post": {
        "operationId": "RuntimeSecurityAPI_Validate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/runtime.v1.ValidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.ValidateResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/rules/{id}": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetRule",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetRuleResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      },
      "put": {
        "operationId": "RuntimeSecurityAPI_EditRule",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeSecurityAPI_EditRule_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.Rule"
                }
              }
            },
            "description": ""
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/security/runtime/sbom/{imageDigest}": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetContainerImageSbom",
        "parameters": [
          {
            "description": "The digest of the image for which the SBOM is requested.",
            "in": "path",
            "name": "imageDigest",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The format in which the SBOM should be returned. Supported formats are:\n  - application/vnd.cyclonedx+json;version=1.6\n  - text/spdx+json;version=2.3\nIf not provided, the default is \"application/vnd.cyclonedx+json;version=1.6\".",
            "in": "query",
            "name": "sbomFormat",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Whether to include only packages in-use in the SBOM.\nIf not provided, the default is false.",
            "in": "query",
            "name": "onlyRuntimePackages",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetContainerImageSbomResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/runtime/workloads-netflow/{clusterId}": {
      "get": {
        "operationId": "RuntimeSecurityAPI_GetClusterWorkloadsNetflow",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "startTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "endTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "usePodDetails",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Controls whether destination addresses are included in the response. Defaults to true.",
            "in": "query",
            "name": "includeDstAddrs",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runtime.v1.GetClusterWorkloadsNetflowResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "tags": [
          "RuntimeSecurityAPI"
        ]
      }
    },
    "/v1/security/settings/clusters": {
      "get": {
        "operationId": "InsightsAPI_ListClusterSecuritySettings",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.ListClusterSecuritySettingsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListClusterSecuritySettings returns a list of clusters for the organization with their security settings.",
        "tags": [
          "InsightsAPI"
        ]
      }
    },
    "/v1/security/settings/clusters/{id}": {
      "get": {
        "operationId": "InsightsAPI_GetClusterSecuritySettings",
        "parameters": [
          {
            "description": "The ID of the cluster",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.GetClusterSecuritySettingsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetClusterSecuritySettings returns security settings for a specific cluster.",
        "tags": [
          "InsightsAPI"
        ]
      },
      "post": {
        "operationId": "InsightsAPI_ConfigureClusterSecuritySettings",
        "parameters": [
          {
            "description": "The ID of the cluster to configure",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InsightsAPI_ConfigureClusterSecuritySettings_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/insights.v1.ConfigureClusterSecuritySettingsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ConfigureClusterSecuritySettings allows to configure security settings on a cluster.",
        "tags": [
          "InsightsAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/sso-connections": {
      "get": {
        "operationId": "SSOAPI_ListSSOConnections",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.sso.v1beta1.ListSSOConnectionsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List organization SSO connections.",
        "tags": [
          "SSOAPI"
        ]
      },
      "post": {
        "operationId": "SSOAPI_CreateSSOConnection",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.sso.v1beta1.CreateSSOConnection"
              }
            }
          },
          "description": "Connection to add to an organization.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.sso.v1beta1.SSOConnection"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Create organization SSO connection.",
        "tags": [
          "SSOAPI"
        ],
        "x-codegen-request-body-name": "connection"
      }
    },
    "/v1/sso-connections/{id}": {
      "delete": {
        "operationId": "SSOAPI_DeleteSSOConnection",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.sso.v1beta1.DeleteSSOConnectionResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Delete organization SSO connection.",
        "tags": [
          "SSOAPI"
        ]
      },
      "get": {
        "operationId": "SSOAPI_GetSSOConnection",
        "parameters": [
          {
            "description": "SSO connection ID.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.sso.v1beta1.GetSSOConnectionResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Get organization SSO connection.",
        "tags": [
          "SSOAPI"
        ]
      },
      "post": {
        "operationId": "SSOAPI_UpdateSSOConnection",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/castai.sso.v1beta1.UpdateSSOConnection"
              }
            }
          },
          "description": "Updated SSO connection object.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.sso.v1beta1.SSOConnection"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Update organization SSO connection.",
        "tags": [
          "SSOAPI"
        ],
        "x-codegen-request-body-name": "connection"
      }
    },
    "/v1/sso-connections/{id}/sync": {
      "post": {
        "operationId": "SSOAPI_SetSyncForSSOConnection",
        "parameters": [
          {
            "description": "SSO connection ID.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SSOAPI_SetSyncForSSOConnection_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.sso.v1beta1.SetSyncForSSOConnectionResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "SetSyncForSSOConnection sets sync for organization's SSO connection. Returns token for enableing and empty for disabling.",
        "tags": [
          "SSOAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/time-zones": {
      "get": {
        "description": "List available time zones for rebalancing schedules.",
        "operationId": "ScheduledRebalancingAPI_ListAvailableRebalancingTZ",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/scheduledrebalancing.v1.ListAvailableRebalancingTZResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List available rebalancing Time Zones",
        "tags": [
          "ScheduledRebalancingAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/components/workload-autoscaler": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetAgentStatus",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetAgentStatusResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns status of workload-autoscaler agent.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/custom-metrics/configs/data-sources": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_ListCustomMetricsDataSources",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.ListCustomMetricsDataSourcesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a list of custom metrics data sources for given cluster.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      },
      "post": {
        "operationId": "WorkloadOptimizationAPI_CreateCustomMetricsDataSource",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/workloadoptimization.v1.NewCustomMetricsDataSource"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Creates a custom metrics data source for given cluster.",
        "tags": [
          "WorkloadOptimizationAPI"
        ],
        "x-codegen-request-body-name": "dataSource"
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/custom-metrics/configs/data-sources/{id}": {
      "delete": {
        "operationId": "WorkloadOptimizationAPI_DeleteCustomMetricsDataSource",
        "parameters": [
          {
            "description": "The cluster ID that owns this custom metrics data source.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ID of the custom metrics data source to delete.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes a custom metrics data source.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      },
      "patch": {
        "operationId": "WorkloadOptimizationAPI_UpdateCustomMetricsDataSource",
        "parameters": [
          {
            "description": "The cluster ID that owns this custom metrics data source.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ID of the custom metrics data source to update.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkloadOptimizationAPI_UpdateCustomMetricsDataSource_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Updates a custom metrics data source.",
        "tags": [
          "WorkloadOptimizationAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/limit-ranges": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_ListLimitRanges",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.ListLimitRangesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a list of limit ranges for given cluster.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/policies": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_ListWorkloadScalingPolicies",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.ListWorkloadScalingPoliciesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a list of workload scaling policies for given cluster.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      },
      "post": {
        "operationId": "WorkloadOptimizationAPI_CreateWorkloadScalingPolicy",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/workloadoptimization.v1.NewWorkloadScalingPolicy"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Creates a scaling policy that can be assigned to workloads at a later time.",
        "tags": [
          "WorkloadOptimizationAPI"
        ],
        "x-codegen-request-body-name": "policy"
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/policies/order": {
      "put": {
        "description": "Determines the order in which policies are applied to workloads based on assignment rules.\nBy default, policies are sorted by their creation timestamp (CreatedAt).\n\nYou MUST provide the complete list of policy IDs in the exact order they should be applied.",
        "operationId": "WorkloadOptimizationAPI_SetScalingPoliciesOrder",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkloadOptimizationAPI_SetScalingPoliciesOrder_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.SetScalingPoliciesOrderResponse"
                }
              }
            },
            "description": "The policy order has been updated, and workloads are being processed."
          }
        },
        "summary": "Updates the order of scaling policies for a given cluster.",
        "tags": [
          "WorkloadOptimizationAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/policies/{policyId}": {
      "delete": {
        "operationId": "WorkloadOptimizationAPI_DeleteWorkloadScalingPolicy",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "policyId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.DeleteWorkloadScalingPolicyResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Deletes a scaling policy.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      },
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadScalingPolicy",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "policyId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Returns scaling policy.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      },
      "put": {
        "operationId": "WorkloadOptimizationAPI_UpdateWorkloadScalingPolicy",
        "parameters": [
          {
            "description": "Cluster ID associated with the scaling policy.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Policy ID associated with the scaling policy.",
            "in": "path",
            "name": "policyId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/workloadoptimization.v1.UpdateWorkloadScalingPolicy"
              }
            }
          },
          "description": "The values to configure for the policy.",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
                }
              }
            },
            "description": "The updated scaling policy"
          }
        },
        "summary": "Updates a scaling policy.",
        "tags": [
          "WorkloadOptimizationAPI"
        ],
        "x-codegen-request-body-name": "policy"
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/policies/{policyId}/workloads": {
      "put": {
        "operationId": "WorkloadOptimizationAPI_AssignScalingPolicyWorkloads",
        "parameters": [
          {
            "description": "Cluster ID associated with the scaling policy.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Policy ID associated with the scaling policy.",
            "in": "path",
            "name": "policyId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkloadOptimizationAPI_AssignScalingPolicyWorkloads_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.AssignScalingPolicyWorkloadsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Assigns the provided list of workload IDs to the specified policy.",
        "tags": [
          "WorkloadOptimizationAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/resource-quotas": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_ListResourceQuotas",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.ListResourceQuotasResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a list of resource quotas for given cluster.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workload-events": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_ListWorkloadEvents",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fromDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "workloadId",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "workloadName",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "workloadNamespace",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "workloadKind",
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "type",
            "schema": {
              "items": {
                "enum": [
                  "EVENT_TYPE_INVALID",
                  "EVENT_TYPE_SURGE",
                  "EVENT_TYPE_OOM_KILL",
                  "EVENT_TYPE_CONFIGURATION_CHANGEDV2",
                  "EVENT_TYPE_RECOMMENDED_POD_COUNT_CHANGED",
                  "EVENT_TYPE_RECOMMENDED_REQUESTS_CHANGED",
                  "EVENT_TYPE_SCALING_POLICY_CREATED",
                  "EVENT_TYPE_SCALING_POLICY_DELETED",
                  "EVENT_TYPE_SCALING_POLICY_UPDATED",
                  "EVENT_TYPE_SCALING_POLICY_ASSIGNED",
                  "EVENT_TYPE_FAILED_HELM_TEST_HOOK",
                  "EVENT_TYPE_SCALING_POLICY_ORDER_UPDATED",
                  "EVENT_TYPE_MEMORY_PRESSURE_EVICTION",
                  "EVENT_TYPE_SYSTEM_OVERRIDE_TRIGGERED",
                  "EVENT_TYPE_SYSTEM_OVERRIDE_RESET",
                  "EVENT_TYPE_STARTUP_FAILURE",
                  "EVENT_TYPE_CPU_PRESSURE",
                  "EVENT_TYPE_HPA_MAXED_OUT",
                  "EVENT_TYPE_HPA_ALMOST_MAXED_OUT",
                  "EVENT_TYPE_UNBOUND_MEMORY_GROWTH",
                  "EVENT_TYPE_CPU_PRESSURE_RESOLVED",
                  "EVENT_TYPE_NATIVE_VPA_STATE_CHANGED"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.ListWorkloadEventsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a list of workload events for given cluster.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workload-events-summary": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadEventsSummary",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fromDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "workloadId",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "workloadName",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "workloadNamespace",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "workloadKind",
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "type",
            "schema": {
              "items": {
                "enum": [
                  "EVENT_TYPE_INVALID",
                  "EVENT_TYPE_SURGE",
                  "EVENT_TYPE_OOM_KILL",
                  "EVENT_TYPE_CONFIGURATION_CHANGEDV2",
                  "EVENT_TYPE_RECOMMENDED_POD_COUNT_CHANGED",
                  "EVENT_TYPE_RECOMMENDED_REQUESTS_CHANGED",
                  "EVENT_TYPE_SCALING_POLICY_CREATED",
                  "EVENT_TYPE_SCALING_POLICY_DELETED",
                  "EVENT_TYPE_SCALING_POLICY_UPDATED",
                  "EVENT_TYPE_SCALING_POLICY_ASSIGNED",
                  "EVENT_TYPE_FAILED_HELM_TEST_HOOK",
                  "EVENT_TYPE_SCALING_POLICY_ORDER_UPDATED",
                  "EVENT_TYPE_MEMORY_PRESSURE_EVICTION",
                  "EVENT_TYPE_SYSTEM_OVERRIDE_TRIGGERED",
                  "EVENT_TYPE_SYSTEM_OVERRIDE_RESET",
                  "EVENT_TYPE_STARTUP_FAILURE",
                  "EVENT_TYPE_CPU_PRESSURE",
                  "EVENT_TYPE_HPA_MAXED_OUT",
                  "EVENT_TYPE_HPA_ALMOST_MAXED_OUT",
                  "EVENT_TYPE_UNBOUND_MEMORY_GROWTH",
                  "EVENT_TYPE_CPU_PRESSURE_RESOLVED",
                  "EVENT_TYPE_NATIVE_VPA_STATE_CHANGED"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadEventsSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a workload events summary for given cluster.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workload-events/{eventId}": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadEvent",
        "parameters": [
          {
            "description": "The Cluster ID in which the given event happened.",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The ID of the event.",
            "in": "path",
            "name": "eventId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The creation time of the event.",
            "in": "query",
            "name": "createdAt",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadEventResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a specific workload event by the given id.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_ListWorkloads",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "workloadIds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "workloadNames",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "scalingPolicyNames",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "kinds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "managementOptions",
            "schema": {
              "items": {
                "enum": [
                  "UNDEFINED",
                  "READ_ONLY",
                  "MANAGED"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "configuredBy",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "searchQuery",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "recommendationStatusType",
            "schema": {
              "default": "STATUS_UNKNOWN",
              "enum": [
                "STATUS_UNKNOWN",
                "STATUS_WAITING",
                "STATUS_APPLIED",
                "STATUS_STOPPED"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "recommendationIsLowConfidence",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "workloadHasError",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "workloadHasCustomMetrics",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "anyContainerWithRuntime",
            "schema": {
              "default": "RUNTIME_UNSPECIFIED",
              "enum": [
                "RUNTIME_UNSPECIFIED",
                "JVM"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.ListWorkloadsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a list of workloads for the given cluster.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads-summary": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadsSummary",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includeCosts",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadsSummaryResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns workloads optimization summary.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads-summary-metrics": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadsSummaryMetrics",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fromTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadsSummaryMetricsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns workloads summary time series.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads/filters": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadFilters",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "managementOptions",
            "schema": {
              "items": {
                "enum": [
                  "UNDEFINED",
                  "READ_ONLY",
                  "MANAGED"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadFiltersResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns workload filter values.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads/migrate-to-hpa-v2": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetHPAV2MigrationEligibility",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetHPAV2MigrationEligibilityResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns HPA v2 migration eligibility for a cluster",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      },
      "post": {
        "operationId": "WorkloadOptimizationAPI_MigrateClusterToHPAV2",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.MigrateClusterToHPAV2Response"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Migrates all eligible cluster workloads to HPA v2",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads/{workloadId}": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkload",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includeMetrics",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "includeCosts",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "fromTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a workload by a given id.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads/{workloadId}/gpu-metrics": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadGPUMetrics",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadGPUMetricsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns step-bucketed GPU utilization time-series and recommendations for a workload.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads/{workloadId}/native-vpa-spec": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadNativeVpaSpec",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadNativeVpaSpecResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns native VPA spec of the workload by a given id.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads/{workloadId}/recommendation-manifest": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadRecommendationManifest",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadRecommendationManifestResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns the deployed Recommendation CR manifest for the workload, sourced from the latest cluster snapshot.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads/{workloadId}/spec": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadSpec",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadSpecResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns a spec of the workload by a given id.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/clusters/{clusterId}/workloads/{workloadId}/system-overrides:reset": {
      "post": {
        "operationId": "WorkloadOptimizationAPI_ResetSystemOverrides",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkloadOptimizationAPI_ResetSystemOverrides_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.ResetSystemOverridesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Resets the system overrides for a workload.",
        "tags": [
          "WorkloadOptimizationAPI"
        ],
        "x-codegen-request-body-name": "body"
      }
    },
    "/v1/workload-autoscaling/organizations/{organizationId}/components/workload-autoscaler": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetOrganizationAgentStatuses",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetOrganizationAgentStatusesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns status of workload-autoscaler agents for all clusters in an organization.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/scripts/workload-autoscaler-install": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetInstallCmd",
        "parameters": [
          {
            "in": "query",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cmeDsUrl",
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "cmePresets",
            "schema": {
              "items": {
                "enum": [
                  "INVALID",
                  "MICROMETER",
                  "CODAHALE",
                  "DROPWIZARD",
                  "OTEL_JAVA_AGENT",
                  "SDK_PROMETHEUS"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetInstallCmdResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns workload-autoscaler installation command.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/workload-autoscaling/scripts/workload-autoscaler-install.sh": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetInstallScript",
        "parameters": [
          {
            "in": "query",
            "name": "cmeDsUrl",
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "cmePresets",
            "schema": {
              "items": {
                "enum": [
                  "INVALID",
                  "MICROMETER",
                  "CODAHALE",
                  "DROPWIZARD",
                  "OTEL_JAVA_AGENT",
                  "SDK_PROMETHEUS"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "format": "string",
                  "type": "string"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "Returns workload-autoscaler installation script.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1/zones": {
      "get": {
        "operationId": "InventoryAPI_ListZones",
        "parameters": [
          {
            "in": "query",
            "name": "pageSize",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "pageToken",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.inventory.v1beta1.ListZonesResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "List all zones",
        "tags": [
          "InventoryAPI"
        ]
      }
    },
    "/v1beta/workload-autoscaling/clusters/{clusterId}/hpas:analyze": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_ListClusterHPAs",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "explode": true,
            "in": "query",
            "name": "workloadNames",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "namespaces",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "scalingPolicyNames",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "kinds",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "managementOptions",
            "schema": {
              "items": {
                "enum": [
                  "UNDEFINED",
                  "READ_ONLY",
                  "MANAGED"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Identifier of the HPA converter to apply to each returned HPA. When empty,\nno conversion is executed and the `conversion` field on each item is unset.\n\n - AVERAGE_VALUE_FROM_ORIGINAL_REQUESTS: Converts HPA utilization (%) targets to AverageValue using workload container requests.",
            "in": "query",
            "name": "includeConversion",
            "schema": {
              "default": "HPA_CONVERTER_TYPE_UNSPECIFIED",
              "enum": [
                "HPA_CONVERTER_TYPE_UNSPECIFIED",
                "AVERAGE_VALUE_FROM_ORIGINAL_REQUESTS"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.ListClusterHPAsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns all HPAs configured on workloads in the given cluster, including\nworkload context (requests, P75 usage, recommendation, current pod count) and\nan optional converted HPA spec produced by a named converter. The UI is\nexpected to perform aggregation, filtering and pagination client-side.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1beta/workload-autoscaling/clusters/{clusterId}/workloads/{workloadId}/custom-metrics": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetWorkloadCustomMetricsV1Beta",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "containerName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sampling interval for metrics. For long time ranges, the server may enforce a step even if one is\nnot provided. The actual step used is returned in the response.",
            "in": "query",
            "name": "step",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fromTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "When true, missing data points in the time range are backfilled with null values at each step interval.\nRequires a step to be in effect (explicitly requested or server-calculated). Ignored when no step applies.",
            "in": "query",
            "name": "backfillDataPoints",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadCustomMetricsV1BetaResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Returns raw custom metrics time-series data for a workload.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v1beta/workload-autoscaling/clusters/{clusterId}/workloads/{workloadId}/custom-metrics:aggregate": {
      "get": {
        "operationId": "WorkloadOptimizationAPI_GetAggregatedWorkloadCustomMetricsV1Beta",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "containerName",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "fromTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "toTime",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Sampling interval for metrics. The server may enforce a step even when one is not provided, or change it\nif it's too short. The actual step used is returned in the response.",
            "in": "query",
            "name": "step",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sliding window duration for aggregation (e.g. 30 minutes).",
            "in": "query",
            "name": "aggregationSlidingWindow",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "aggregation.type",
            "required": true,
            "schema": {
              "default": "CUSTOM_METRIC_AGGREGATION_TYPE_UNSPECIFIED",
              "enum": [
                "CUSTOM_METRIC_AGGREGATION_TYPE_UNSPECIFIED",
                "AVERAGE",
                "MAX",
                "MIN",
                "PERCENTILE"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only used when type is PERCENTILE (e.g. 95 for p95).",
            "in": "query",
            "name": "aggregation.percentile",
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "When true, missing data points in the time range are backfilled with null values at each step interval.",
            "in": "query",
            "name": "backfillDataPoints",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.GetAggregatedWorkloadCustomMetricsV1BetaResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetAggregatedWorkloadCustomMetrics returns aggregated custom metrics time-series data.\nPods are aggregated across the workload, grouped by metric name and container.",
        "tags": [
          "WorkloadOptimizationAPI"
        ]
      }
    },
    "/v2/audit/events": {
      "get": {
        "operationId": "AuditV2API_ListAuditEvents",
        "parameters": [
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The date and time to query from.",
            "in": "query",
            "name": "fromDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The maximum date and time to query to. Defaults to now if from_date is set.",
            "in": "query",
            "name": "toDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Plain-text search over audit event fields.",
            "in": "query",
            "name": "filter.search",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of audit event cluster IDs.",
            "explode": true,
            "in": "query",
            "name": "filter.clusters",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "List of audit event domains, e.g. \"platform\", \"autoscaler\".",
            "explode": true,
            "in": "query",
            "name": "filter.domains",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "List of audit event resources, e.g. \"cluster\", \"node\".",
            "explode": true,
            "in": "query",
            "name": "filter.resources",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "List of audit event actions, e.g. \"created\", \"deleted\".",
            "explode": true,
            "in": "query",
            "name": "filter.actions",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "List of audit event source services, e.g. \"provisioner\", \"woop\".",
            "explode": true,
            "in": "query",
            "name": "filter.sources",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "List of severity levels for audit events, e.g. \"info\", \"error\".",
            "explode": true,
            "in": "query",
            "name": "filter.severity",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Name of the field you want to sort",
            "in": "query",
            "name": "sort.field",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The sort order, possible values ASC or DESC, if not provided asc is the default\n\n - ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
            "in": "query",
            "name": "sort.order",
            "schema": {
              "default": "ASC",
              "enum": [
                "ASC",
                "asc",
                "DESC",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.audit.v2.ListAuditEventsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "ListAuditEvents returns a list of audit events.",
        "tags": [
          "AuditV2API"
        ]
      }
    },
    "/v2/audit/events/{id}": {
      "get": {
        "operationId": "AuditV2API_GetAuditEvent",
        "parameters": [
          {
            "description": "The audit event record ID.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "When the event was recorded.",
            "in": "query",
            "name": "recordedAt",
            "required": true,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.audit.v2.AuditEvent"
                }
              }
            },
            "description": "Audit event information."
          }
        },
        "summary": "GetAuditEvent returns a specific audit event.",
        "tags": [
          "AuditV2API"
        ]
      }
    },
    "/v2/audit/events/{id}/correlated": {
      "get": {
        "operationId": "AuditV2API_GetRelatedAuditEvents",
        "parameters": [
          {
            "description": "The audit event record ID.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page.limit",
            "schema": {
              "format": "uint64",
              "type": "string"
            }
          },
          {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "in": "query",
            "name": "page.cursor",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.audit.v2.GetRelatedAuditEventsResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetRelatedAuditEvents returns events related to the specified event.",
        "tags": [
          "AuditV2API"
        ]
      }
    },
    "/v2/audit/histogram": {
      "get": {
        "operationId": "AuditV2API_GetAuditHistogram",
        "parameters": [
          {
            "description": "The date and time to query from.",
            "in": "query",
            "name": "fromDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "The date and time to query to. Defaults to now if not set.",
            "in": "query",
            "name": "toDate",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Plain-text search over audit event fields.",
            "in": "query",
            "name": "filter.search",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "List of audit event cluster IDs.",
            "explode": true,
            "in": "query",
            "name": "filter.clusters",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "List of audit event domains, e.g. \"platform\", \"autoscaler\".",
            "explode": true,
            "in": "query",
            "name": "filter.domains",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "List of audit event resources, e.g. \"cluster\", \"node\".",
            "explode": true,
            "in": "query",
            "name": "filter.resources",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "List of audit event actions, e.g. \"created\", \"deleted\".",
            "explode": true,
            "in": "query",
            "name": "filter.actions",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "List of audit event source services, e.g. \"provisioner\", \"woop\".",
            "explode": true,
            "in": "query",
            "name": "filter.sources",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "List of severity levels for audit events, e.g. \"info\", \"error\".",
            "explode": true,
            "in": "query",
            "name": "filter.severity",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Number of histogram buckets to return. Defaults to 100, capped at 1000.",
            "in": "query",
            "name": "numBuckets",
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/castai.audit.v2.GetAuditHistogramResponse"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "GetAuditHistogram returns a histogram of audit events bucketed by time and grouped by severity.",
        "tags": [
          "AuditV2API"
        ]
      }
    },
    "/v2/workload-autoscaling/clusters/{clusterId}/workloads/{workloadId}": {
      "patch": {
        "operationId": "WorkloadOptimizationAPI_PatchWorkloadV2",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkloadOptimizationAPI_PatchWorkloadV2_request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.UpdateWorkloadResponseV2"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Updates a CAST AI managed workload V2 partially using field mask.",
        "tags": [
          "WorkloadOptimizationAPI"
        ],
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "operationId": "WorkloadOptimizationAPI_UpdateWorkloadV2",
        "parameters": [
          {
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "workloadId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/workloadoptimization.v1.UpdateWorkloadV2"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/workloadoptimization.v1.UpdateWorkloadResponseV2"
                }
              }
            },
            "description": "A successful response."
          }
        },
        "summary": "Updates a CAST AI managed workload V2.",
        "tags": [
          "WorkloadOptimizationAPI"
        ],
        "x-codegen-request-body-name": "workload"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      }
    },
    "parameters": {
      "clusterId": {
        "in": "path",
        "name": "clusterId",
        "schema": {
          "type": "string"
        },
        "required": true,
        "description": "The id of the cluster."
      },
      "credentialsId": {
        "in": "path",
        "name": "credentialsId",
        "schema": {
          "type": "string"
        },
        "required": true,
        "description": "Credentials ID."
      },
      "authTokenId": {
        "in": "path",
        "name": "authTokenId",
        "schema": {
          "type": "string"
        },
        "required": true,
        "description": "Auth token ID."
      },
      "returnTo": {
        "name": "returnTo",
        "in": "query",
        "schema": {
          "type": "string"
        },
        "description": "URL to redirect browser to after operation completes"
      },
      "limit": {
        "name": "limit",
        "in": "query",
        "description": "A limit on the number of objects to be returned, between 1 and 500. Default is 10.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 500,
          "default": 30
        }
      },
      "cursor": {
        "name": "cursor",
        "in": "query",
        "description": "A cursor for use in pagination. This is a token that defines your place in the list. For instance, if you make a list request - you will receive nextCursor field in response metadata. Given that nextCursor field is not empty, it can be used as a cursor query parameter to get subsequent items. If nextCursor is empty - there are no more items to retrieve.\n",
        "example": "MTYwNDQwMzg4NzMxMTMzNzAwMA=====",
        "schema": {
          "type": "string"
        }
      },
      "filterFromDate": {
        "name": "fromDate",
        "in": "query",
        "description": "Request filter parameter declaring point of time after which the results should be returned. Moment in time must be declared in RFC3339 format. https://tools.ietf.org/html/rfc3339\n",
        "example": "1985-04-12T23:20:50.52Z",
        "schema": {
          "type": "string"
        }
      },
      "filterToDate": {
        "name": "toDate",
        "in": "query",
        "description": "Request filter parameter declaring point of time until which the results should be returned. Moment in time must be declared in RFC3339 format. https://tools.ietf.org/html/rfc3339\n",
        "example": "1985-04-12T23:20:50.52Z",
        "schema": {
          "type": "string"
        }
      },
      "filterStepSeconds": {
        "name": "stepSeconds",
        "in": "query",
        "schema": {
          "type": "string"
        },
        "required": false,
        "description": "Data points steps in seconds, e.g., stepSeconds=3600"
      },
      "filterClusterId": {
        "name": "clusterId",
        "in": "query",
        "description": "Request filter parameter representing unique cluster ID. For instance, if you make a list request with clusterId filter parameter - returned results will represent the respective cluster. Cluster ID must be a valid UUID.\n",
        "example": "e90523cc-1788-4363-8e07-7773c3174d4b",
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "FieldViolation": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "field",
          "description"
        ]
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "fieldViolations": {
            "type": "array",
            "description": "in case the error is related to specific field, this list will contain",
            "items": {
              "$ref": "#/components/schemas/FieldViolation"
            }
          }
        },
        "required": [
          "message",
          "fieldViolations"
        ]
      },
      "AuthToken": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Auth token ID, generated at the time of creation",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "Name of the token. Must be unique among other active tokens for the current user."
          },
          "active": {
            "type": "boolean",
            "description": "Indicates whether this auth token is active.",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Auth token creation UTC time in RFC3339 format.",
            "example": "2022-10-02T15:00:00Z",
            "readOnly": true
          },
          "deletedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Auth token deletion UTC time in RFC3339 format.",
            "example": "2022-11-02T15:00:00Z",
            "readOnly": true
          },
          "lastUsedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Auth token last used UTC time in RFC3339 format.",
            "example": "2022-10-02T15:00:00Z",
            "readOnly": true
          },
          "readonly": {
            "type": "boolean",
            "description": "Indicates whether auth token has readonly permissions.",
            "example": false
          }
        },
        "required": [
          "id",
          "name",
          "active",
          "createdAt",
          "readonly"
        ]
      },
      "AuthTokenList": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuthToken"
            }
          }
        },
        "required": [
          "items"
        ]
      },
      "AuthTokenUpdateRequest": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean",
            "description": "Indicates whether this auth token is active."
          }
        },
        "required": [
          "active"
        ]
      },
      "AuthTokenCreateResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Auth token ID, generated at the time of creation",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "Name of the token. Must be unique among other active tokens for the current user."
          },
          "active": {
            "type": "boolean",
            "description": "Indicates whether this auth token is active.",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Auth token creation UTC time in RFC3339 format.",
            "example": "2022-10-02T15:00:00Z",
            "readOnly": true
          },
          "readonly": {
            "type": "boolean",
            "description": "Indicates whether auth token has readonly permissions.",
            "example": true
          },
          "token": {
            "type": "string",
            "description": "Generated secret for this auth token (only shown once on creation)",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "name",
          "active",
          "createdAt",
          "token",
          "readonly"
        ]
      },
      "UserSession": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "user id of logged in user.",
            "example": "github|123456"
          },
          "userHash": {
            "type": "string",
            "description": "user identity verification - salted SHA256 hash of user ID. For use with Intercom identity verification (see https://www.intercom.com/help/en/articles/183-enable-identity-verification-for-web-and-mobile)",
            "example": "85711c2dfd6c1b32b6c10bd49f452368197a2478b7a7b86c061356ebe0b65b38"
          },
          "name": {
            "type": "string",
            "description": "full name of logged-in user, e.g. \"John Doe\". Managed by Auth0 and directly taken from login JWT claim \"name\".",
            "example": "John Doe"
          },
          "email": {
            "type": "string",
            "description": "corresponds to Auth0 JWT claim",
            "example": "john@doe.eml"
          },
          "nickname": {
            "type": "string",
            "description": "corresponds to Auth0 JWT claim",
            "example": "heresjohnny"
          },
          "picture": {
            "type": "string",
            "description": "corresponds to Auth0 JWT claim",
            "example": "https://path-to-image/1.png"
          }
        },
        "required": [
          "userId",
          "userHash",
          "name",
          "email",
          "nickname",
          "picture"
        ]
      },
      "Subscription": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Subscription id.",
            "example": "AzZltkSPw1tgCe5C"
          },
          "status": {
            "type": "string",
            "enum": [
              "future",
              "in_trial",
              "active",
              "non_renewing",
              "paused",
              "cancelled"
            ],
            "description": "Current state of the subscription."
          },
          "plan": {
            "$ref": "#/components/schemas/Plan"
          },
          "trialEnd": {
            "type": "string",
            "format": "date-time",
            "description": "End of the trial period for the subscription. UTC time in RFC3339 format.",
            "example": "2022-10-02T15:00:00Z"
          },
          "paymentSourceAvailable": {
            "type": "boolean",
            "description": "is payment source setup for the subscription."
          },
          "currentTermStart": {
            "type": "string",
            "format": "date-time",
            "description": "Start of the current billing period of the subscription. UTC time in RFC3339 format.",
            "example": "2022-10-02T15:00:00Z"
          },
          "currentTermEnd": {
            "type": "string",
            "format": "date-time",
            "description": "End of the current billing period of the subscription. Subscription is renewed immediately after this. UTC time in RFC3339 format.",
            "example": "2022-10-02T15:00:00Z"
          },
          "billingPeriod": {
            "type": "string",
            "enum": [
              "month",
              "year"
            ],
            "description": "Defines billing frequency."
          }
        },
        "required": [
          "id",
          "status",
          "plan",
          "paymentSourceAvailable"
        ]
      },
      "Plan": {
        "type": "object",
        "description": "Specifies details of a subscription plan.",
        "properties": {
          "id": {
            "type": "string",
            "description": "plan id.",
            "example": "super_plan_1"
          },
          "name": {
            "type": "string",
            "description": "plan name.",
            "example": "Super Plan 1"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "HostedPage": {
        "type": "object",
        "description": "chargeBee hosted page object.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier generated for each hosted page requested."
          },
          "type": {
            "type": "string",
            "description": "Type of the requested hosted page.",
            "example": "checkout_new"
          },
          "url": {
            "type": "string",
            "description": "Unique URL for the hosted page that will be included in your website."
          },
          "state": {
            "type": "string",
            "description": "Indicating the current state of the hosted page resource."
          },
          "embed": {
            "type": "boolean",
            "description": "If true then hosted page formatted to be shown in iframe. If false, it is formatted to be shown as a separate page."
          },
          "created_at": {
            "type": "integer",
            "description": "Indicates when this hosted page url is generated."
          },
          "expires_at": {
            "type": "integer",
            "description": "Indicates when this hosted page url will expire. After this, the hosted page cannot be accessed."
          }
        },
        "required": [
          "id",
          "type",
          "url",
          "state",
          "embed",
          "created_at",
          "expires_at"
        ]
      },
      "PortalSession": {
        "type": "object",
        "description": "chargeBee portal session object.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the portal session."
          },
          "token": {
            "type": "string",
            "description": "Unique pre-authenticated portal session token to access customer portal directly.",
            "example": "checkout_new"
          },
          "access_url": {
            "type": "string",
            "description": "Unique URL for accessing the customer portal. Once accessed, this cannot be reused."
          },
          "status": {
            "type": "string",
            "description": "Indicates the current status of the portal session."
          },
          "created_at": {
            "type": "integer",
            "description": "Timestamp indicating when this portal session was generated."
          },
          "expires_at": {
            "type": "integer",
            "description": "Timestamp indicating when the access URL will expire. Once expired, the URL cannot be used to login into the portal."
          },
          "object": {
            "type": "string",
            "description": "Response object type."
          },
          "customer_id": {
            "type": "string",
            "description": "Identifier of the customer."
          }
        },
        "required": [
          "id",
          "token",
          "access_url",
          "status",
          "created_at",
          "expires_at",
          "object",
          "customer_id"
        ]
      },
      "A2AJsonRpcRequest": {
        "type": "object",
        "description": "A2A JSON-RPC 2.0 request",
        "required": [
          "jsonrpc",
          "method",
          "id"
        ],
        "properties": {
          "jsonrpc": {
            "type": "string",
            "description": "JSON-RPC version",
            "example": "2.0"
          },
          "method": {
            "type": "string",
            "description": "A2A method name",
            "enum": [
              "message/send"
            ],
            "example": "message/send"
          },
          "id": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "Request identifier",
            "example": 1
          },
          "message": {
            "$ref": "#/components/schemas/A2AMessage"
          }
        }
      },
      "A2AMessage": {
        "type": "object",
        "description": "One unit of communication between client and server. Contains parts (text, files, or data).",
        "required": [
          "messageId",
          "role",
          "parts"
        ],
        "properties": {
          "contextId": {
            "type": "string",
            "description": "Optional. The context id of the message."
          },
          "messageId": {
            "type": "string",
            "description": "The unique identifier (e.g. UUID) of the message."
          },
          "role": {
            "type": "string",
            "description": "Identifies the sender of the message.",
            "enum": [
              "user",
              "agent"
            ]
          },
          "parts": {
            "type": "array",
            "description": "Parts is the container of the message content.",
            "items": {
              "$ref": "#/components/schemas/A2APart"
            }
          },
          "metadata": {
            "type": "object",
            "description": "Optional. Any metadata to provide along with the message.",
            "additionalProperties": true
          },
          "taskId": {
            "type": "string",
            "description": "Optional. The task id of the message."
          },
          "referenceTaskIds": {
            "type": "array",
            "description": "A list of task IDs that this message references.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "A2APart": {
        "type": "object",
        "description": "Represents a container for a section of communication content. Can be text, file, or structured data.",
        "properties": {
          "text": {
            "type": "string",
            "description": "The string content of the text part."
          },
          "data": {
            "description": "Arbitrary structured data as a JSON value (object, array, string, number, boolean, or null)."
          },
          "filename": {
            "type": "string",
            "description": "An optional filename for the file (e.g., \"document.pdf\")."
          },
          "mediaType": {
            "type": "string",
            "description": "The MIME type of the part content (e.g., \"text/plain\", \"application/json\", \"image/png\")."
          },
          "url": {
            "type": "string",
            "description": "A URL pointing to the file's content."
          },
          "metadata": {
            "type": "object",
            "description": "Optional metadata associated with this part.",
            "additionalProperties": true
          }
        }
      },
      "A2AJsonRpcResponse": {
        "type": "object",
        "description": "A2A JSON-RPC 2.0 response",
        "required": [
          "jsonrpc",
          "id"
        ],
        "properties": {
          "jsonrpc": {
            "type": "string",
            "example": "2.0"
          },
          "id": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "example": 1
          },
          "result": {
            "$ref": "#/components/schemas/A2AMessage"
          }
        }
      },
      "JsonRpcErrorResponse": {
        "type": "object",
        "description": "JSON-RPC 2.0 error response",
        "required": [
          "jsonrpc",
          "id",
          "error"
        ],
        "properties": {
          "jsonrpc": {
            "type": "string",
            "example": "2.0"
          },
          "id": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "nullable": true,
            "example": 1
          },
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "integer",
                "description": "Error code",
                "example": -32601
              },
              "message": {
                "type": "string",
                "description": "Error message",
                "example": "Method not found"
              }
            }
          }
        }
      },
      "ContextStatusResponse": {
        "type": "object",
        "description": "Context status and state information",
        "properties": {
          "context_id": {
            "type": "string",
            "description": "The context identifier"
          },
          "switches": {
            "type": "array",
            "description": "List of agent switches in the context",
            "items": {
              "type": "string"
            }
          },
          "switches_count": {
            "type": "integer",
            "description": "Number of switches"
          },
          "summary": {
            "type": "object",
            "description": "Context summary information"
          }
        }
      },
      "ContextTimelineResponse": {
        "type": "object",
        "description": "Context timeline with events and messages",
        "properties": {
          "context_id": {
            "type": "string",
            "description": "The context identifier"
          },
          "timeline": {
            "type": "array",
            "description": "List of timeline events",
            "items": {
              "type": "object",
              "properties": {
                "timestamp": {
                  "type": "string",
                  "format": "date-time"
                },
                "event_type": {
                  "type": "string"
                },
                "message": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "aioptimizer.v1.APIKeyUsageItem": {
        "properties": {
          "timestamp": {
            "type": "string"
          },
          "dailyCost": {
            "type": "string"
          },
          "dailyCostPerMilTokens": {
            "type": "string"
          },
          "requestCount": {
            "format": "int32",
            "type": "integer"
          },
          "tokenCount": {
            "$ref": "#/components/schemas/aioptimizer.v1.TokenCount"
          }
        },
        "required": [
          "dailyCost",
          "dailyCostPerMilTokens",
          "requestCount",
          "timestamp",
          "tokenCount"
        ],
        "type": "object"
      },
      "aioptimizer.v1.APIKeysSavingsItem": {
        "properties": {
          "id": {
            "type": "string"
          },
          "alias": {
            "type": "string"
          },
          "requestCount": {
            "format": "int32",
            "type": "integer"
          },
          "tokenCount": {
            "$ref": "#/components/schemas/aioptimizer.v1.TokenCount"
          },
          "costs": {
            "$ref": "#/components/schemas/aioptimizer.v1.Costs"
          },
          "recommendedModelCosts": {
            "$ref": "#/components/schemas/aioptimizer.v1.Costs"
          },
          "provider": {
            "type": "string"
          },
          "originalCost": {
            "type": "string"
          },
          "achievedSavings": {
            "type": "string"
          },
          "achievedSavingsPercentage": {
            "type": "string"
          },
          "routed": {
            "type": "boolean"
          }
        },
        "required": [
          "achievedSavings",
          "achievedSavingsPercentage",
          "alias",
          "costs",
          "id",
          "originalCost",
          "provider",
          "recommendedModelCosts",
          "requestCount",
          "routed",
          "tokenCount"
        ],
        "type": "object"
      },
      "aioptimizer.v1.AWSBedrockConfig": {
        "properties": {
          "roleArn": {
            "type": "string"
          },
          "awsAccessKey": {
            "type": "string"
          },
          "awsSecretKey": {
            "type": "string"
          },
          "region": {
            "type": "string"
          }
        },
        "required": [
          "region"
        ],
        "type": "object"
      },
      "aioptimizer.v1.AWSProviderModelMeta": {
        "properties": {
          "regions": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.CategorizedPrompt": {
        "properties": {
          "prompt": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "reasoning": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "feedbackScore": {
            "$ref": "#/components/schemas/aioptimizer.v1.FeedbackScore"
          },
          "feedback": {
            "type": "string"
          }
        },
        "required": [
          "category",
          "feedback",
          "feedbackScore",
          "id",
          "model",
          "prompt",
          "provider",
          "reasoning"
        ],
        "type": "object"
      },
      "aioptimizer.v1.CategoryUsageItem": {
        "properties": {
          "timestamp": {
            "type": "string"
          },
          "dailyCost": {
            "type": "string"
          },
          "dailyCostPerMilTokens": {
            "type": "string"
          },
          "costPerApiKey": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "requestCount": {
            "format": "int32",
            "type": "integer"
          },
          "tokenCount": {
            "$ref": "#/components/schemas/aioptimizer.v1.TokenCount"
          }
        },
        "required": [
          "costPerApiKey",
          "dailyCost",
          "dailyCostPerMilTokens",
          "requestCount",
          "timestamp",
          "tokenCount"
        ],
        "type": "object"
      },
      "aioptimizer.v1.ChatCompletionRequest": {
        "description": "Defines the request for chat completion. It supports a subset of OpenAI API (https://platform.openai.com/docs/api-reference/chat/create) spec.",
        "properties": {
          "model": {
            "type": "string"
          },
          "messages": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.ChatCompletionRequest.Message"
            },
            "type": "array"
          },
          "maxTokens": {
            "format": "int32",
            "type": "integer"
          },
          "temperature": {
            "format": "float",
            "type": "number"
          },
          "presencePenalty": {
            "format": "float",
            "type": "number"
          },
          "frequencyPenalty": {
            "format": "float",
            "type": "number"
          },
          "topP": {
            "format": "float",
            "type": "number"
          },
          "stop": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "messages",
          "model"
        ],
        "type": "object"
      },
      "aioptimizer.v1.ChatCompletionRequest.Message": {
        "properties": {
          "role": {
            "type": "string"
          },
          "content": {
            "type": "string"
          }
        },
        "required": [
          "content",
          "role"
        ],
        "type": "object"
      },
      "aioptimizer.v1.ChatCompletionResponse": {
        "description": "Defines the response for chat completion. It supports a subset of OpenAI API (https://platform.openai.com/docs/api-reference/chat/create) spec.",
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "type": "string"
          },
          "created": {
            "format": "int64",
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "choices": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.ChatCompletionResponse.Choice"
            },
            "type": "array"
          },
          "usage": {
            "$ref": "#/components/schemas/aioptimizer.v1.ChatCompletionResponse.Usage"
          }
        },
        "required": [
          "choices",
          "created",
          "id",
          "model",
          "object",
          "usage"
        ],
        "type": "object"
      },
      "aioptimizer.v1.ChatCompletionResponse.Choice": {
        "properties": {
          "index": {
            "format": "int32",
            "type": "integer"
          },
          "message": {
            "$ref": "#/components/schemas/aioptimizer.v1.ChatCompletionResponse.Choice.Message"
          },
          "finishReason": {
            "type": "string"
          }
        },
        "required": [
          "finishReason",
          "index",
          "message"
        ],
        "type": "object"
      },
      "aioptimizer.v1.ChatCompletionResponse.Choice.Message": {
        "properties": {
          "role": {
            "type": "string"
          },
          "content": {
            "type": "string"
          }
        },
        "required": [
          "content",
          "role"
        ],
        "type": "object"
      },
      "aioptimizer.v1.ChatCompletionResponse.Usage": {
        "properties": {
          "promptTokens": {
            "format": "int32",
            "type": "integer"
          },
          "completionTokens": {
            "format": "int32",
            "type": "integer"
          },
          "totalTokens": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "completionTokens",
          "promptTokens",
          "totalTokens"
        ],
        "type": "object"
      },
      "aioptimizer.v1.Costs": {
        "properties": {
          "daily": {
            "type": "string"
          },
          "total": {
            "type": "string"
          },
          "totalPerTokensIn": {
            "type": "string"
          },
          "totalPerTokensOut": {
            "type": "string"
          },
          "perMilTokens": {
            "type": "string"
          },
          "perMilTokensIn": {
            "type": "string"
          },
          "perMilTokensOut": {
            "type": "string"
          }
        },
        "required": [
          "daily",
          "perMilTokens",
          "perMilTokensIn",
          "perMilTokensOut",
          "total",
          "totalPerTokensIn",
          "totalPerTokensOut"
        ],
        "type": "object"
      },
      "aioptimizer.v1.CreatePlaygroundChatCompletionsRequest": {
        "description": "Defines the request for creating chat completions in playground.",
        "properties": {
          "selectedPlaygroundProviders": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.SelectedPlaygroundProvider"
            },
            "type": "array"
          },
          "selectedRegisteredProviders": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.SelectedRegisteredProvider"
            },
            "type": "array"
          },
          "routerChatCompletion": {
            "$ref": "#/components/schemas/aioptimizer.v1.ChatCompletionRequest"
          },
          "proxyChatCompletion": {
            "$ref": "#/components/schemas/aioptimizer.v1.ChatCompletionRequest"
          },
          "routerQualityWeight": {
            "description": "This weight determines the importance of the quality over cost when comparing models. Default is 0.5.\nE.g.:\n0.5 means that the quality of the model is as important as the cost.\n1 means that only the quality will be considered.\n0 means that only the cost will be considered.",
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "required": [
          "proxyChatCompletion",
          "routerChatCompletion",
          "selectedPlaygroundProviders",
          "selectedRegisteredProviders"
        ],
        "type": "object"
      },
      "aioptimizer.v1.CreatePlaygroundChatCompletionsResponse": {
        "description": "Defines chat completions response in playground.",
        "properties": {
          "routedResponse": {
            "$ref": "#/components/schemas/aioptimizer.v1.PromptResponse"
          },
          "proxiedResponse": {
            "$ref": "#/components/schemas/aioptimizer.v1.PromptResponse"
          }
        },
        "required": [
          "proxiedResponse",
          "routedResponse"
        ],
        "type": "object"
      },
      "aioptimizer.v1.CreatedByEntity": {
        "default": "CREATED_BY_ENTITY_UNKNOWN",
        "description": "The CreatedByEntity enum is used to specify the entity that created the provider.",
        "enum": [
          "CREATED_BY_ENTITY_UNKNOWN",
          "USER",
          "DEPLOYER"
        ],
        "type": "string"
      },
      "aioptimizer.v1.DeleteProviderResponse": {
        "type": "object"
      },
      "aioptimizer.v1.Event": {
        "properties": {
          "promptReceived": {
            "$ref": "#/components/schemas/aioptimizer.v1.PromptReceivedEvent"
          },
          "promptCategorized": {
            "$ref": "#/components/schemas/aioptimizer.v1.PromptCategorizedEvent"
          },
          "lookupProvidersAndModels": {
            "$ref": "#/components/schemas/aioptimizer.v1.LookupProvidersAndModelsEvent"
          },
          "orderProvidersAndModels": {
            "$ref": "#/components/schemas/aioptimizer.v1.OrderProvidersAndModelsEvent"
          },
          "pickProviderAndModel": {
            "$ref": "#/components/schemas/aioptimizer.v1.PickProviderAndModelEvent"
          },
          "routeRequest": {
            "$ref": "#/components/schemas/aioptimizer.v1.RouteRequestEvent"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.EventType": {
        "default": "EVENT_TYPE_INVALID",
        "description": "EventType defines possible types for prompt routing events.",
        "enum": [
          "EVENT_TYPE_INVALID",
          "EVENT_TYPE_PROMPT_RECEIVED",
          "EVENT_TYPE_PROMPT_CATEGORIZED",
          "EVENT_TYPE_LOOKUP_PROVIDERS_AND_MODELS",
          "EVENT_TYPE_ORDER_PROVIDERS_AND_MODELS",
          "EVENT_TYPE_PICK_PROVIDER_AND_MODEL",
          "EVENT_TYPE_ROUTE_REQUEST"
        ],
        "type": "string"
      },
      "aioptimizer.v1.Fallback": {
        "properties": {
          "providerId": {
            "description": "The provider that will be used as a fallback if the primary provider is not available.",
            "type": "string"
          },
          "model": {
            "description": "The model that will be used as a fallback if the primary model is not available.",
            "type": "string"
          },
          "enabled": {
            "description": "Indicates if the fallback model is enabled.",
            "type": "boolean"
          }
        },
        "required": [
          "model",
          "providerId"
        ],
        "type": "object"
      },
      "aioptimizer.v1.FeedbackScore": {
        "default": "FEEDBACK_SCORE_UNSPECIFIED",
        "description": "Feedback score for the prompt.",
        "enum": [
          "FEEDBACK_SCORE_UNSPECIFIED",
          "BAD",
          "GOOD"
        ],
        "type": "string"
      },
      "aioptimizer.v1.GetCategorizedPromptsResponse": {
        "properties": {
          "categorizedPrompts": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.CategorizedPrompt"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.GetChatCompletionsAPIKeyUsageReportResponse": {
        "properties": {
          "stepSeconds": {
            "format": "int32",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.APIKeyUsageItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.GetChatCompletionsAPIKeysSavingsReportResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.APIKeysSavingsItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.GetChatCompletionsCategoryRecommendationsReportResponse": {
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/aioptimizer.v1.RecommendationsSummary"
          },
          "recommendation": {
            "$ref": "#/components/schemas/aioptimizer.v1.RecommendationsItem"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.GetChatCompletionsCategoryUsageReportResponse": {
        "properties": {
          "stepSeconds": {
            "format": "int32",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.CategoryUsageItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.GetChatCompletionsRecommendationsReportResponse": {
        "properties": {
          "isOnboarded": {
            "type": "boolean"
          },
          "summary": {
            "$ref": "#/components/schemas/aioptimizer.v1.RecommendationsSummary"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.RecommendationsItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.GetChatCompletionsUsageReportResponse": {
        "properties": {
          "stepSeconds": {
            "format": "int32",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.UsageItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.GetModelsResponse": {
        "properties": {
          "models": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.GetProvidersResponse": {
        "properties": {
          "providers": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.RegisteredProvider"
            },
            "type": "array"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "required": [
          "organizationId",
          "providers"
        ],
        "type": "object"
      },
      "aioptimizer.v1.GetRoutingEventsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.RoutingEvent"
            },
            "type": "array"
          },
          "nextCursor": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "aioptimizer.v1.GetSettingsResponse": {
        "properties": {
          "promptSharingEnabled": {
            "type": "boolean"
          },
          "routingEnabled": {
            "type": "boolean"
          },
          "routerQualityWeight": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "promptSharingEnabled",
          "routerQualityWeight",
          "routingEnabled"
        ],
        "type": "object"
      },
      "aioptimizer.v1.GetSupportedProvidersResponse": {
        "properties": {
          "supportedProviders": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.SupportedProvider"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.LookupProvidersAndModelsEvent": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.ProviderModelItem"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "aioptimizer.v1.ModelAlternative": {
        "description": "ModelAlternative is a human-facing migration hint (CLI, error messages)\nand the operator-controlled fallback list managed by the deprecation admin API.\nInformational for routing purposes; ordering is consumed by the admin UI and tooling.",
        "properties": {
          "slug": {
            "type": "string"
          },
          "reason": {
            "nullable": true,
            "type": "string"
          },
          "priority": {
            "description": "Ordering hint — lower values are preferred. Read paths return alternatives sorted ASC.\nDefaults to 0 when not set by the writer.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.ModelRateLimit": {
        "properties": {
          "name": {
            "type": "string"
          },
          "rateLimitedUntil": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.OrderProvidersAndModelsEvent": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.ProviderModelItem"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "aioptimizer.v1.PickProviderAndModelEvent": {
        "properties": {
          "providerId": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "providerName": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "promptPricePerMil": {
            "type": "string"
          },
          "completionPricePerMil": {
            "type": "string"
          }
        },
        "required": [
          "completionPricePerMil",
          "model",
          "promptPricePerMil",
          "provider",
          "providerName"
        ],
        "type": "object"
      },
      "aioptimizer.v1.PrioritizeProvidersRequest": {
        "properties": {
          "providerIds": {
            "items": {
              "type": "string"
            },
            "title": "Provider ids in ascending order based on desired priority",
            "type": "array"
          }
        },
        "required": [
          "providerIds"
        ],
        "type": "object"
      },
      "aioptimizer.v1.PrioritizeProvidersResponse": {
        "properties": {
          "providers": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.RegisteredProvider"
            },
            "title": "Updated providers with their new priorities",
            "type": "array"
          }
        },
        "required": [
          "providers"
        ],
        "type": "object"
      },
      "aioptimizer.v1.PromptCategorizedEvent": {
        "properties": {
          "category": {
            "type": "string"
          }
        },
        "required": [
          "category"
        ],
        "type": "object"
      },
      "aioptimizer.v1.PromptReceivedEvent": {
        "properties": {
          "promptId": {
            "type": "string"
          },
          "routerQualityWeight": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "promptId"
        ],
        "type": "object"
      },
      "aioptimizer.v1.PromptResponse": {
        "properties": {
          "promptId": {
            "type": "string"
          },
          "cost": {
            "type": "string"
          },
          "chatCompletion": {
            "$ref": "#/components/schemas/aioptimizer.v1.ChatCompletionResponse"
          },
          "provider": {
            "type": "string"
          },
          "freeCreditsApplied": {
            "type": "boolean"
          }
        },
        "required": [
          "chatCompletion",
          "cost",
          "freeCreditsApplied",
          "promptId",
          "provider"
        ],
        "type": "object"
      },
      "aioptimizer.v1.Provider": {
        "description": "Used when registering the providers.",
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "description": "The URL of the Provider's API. Has to be a valid URI as per RFC 3986 and begin with http:// or https://.",
            "nullable": true,
            "type": "string"
          },
          "models": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "apiKey": {
            "description": "The provided api_key will be used to authenticate the requests to the Provider.",
            "nullable": true,
            "type": "string"
          },
          "supportedProvider": {
            "$ref": "#/components/schemas/aioptimizer.v1.SupportedProviderName"
          },
          "apiVersion": {
            "nullable": true,
            "type": "string"
          },
          "clusterId": {
            "nullable": true,
            "type": "string"
          },
          "workloadLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "workloadLabelsOperator": {
            "$ref": "#/components/schemas/aioptimizer.v1.WorkloadLabelsOperator"
          },
          "freeCredits": {
            "nullable": true,
            "type": "string"
          },
          "vertexConfig": {
            "$ref": "#/components/schemas/aioptimizer.v1.VertexConfig"
          },
          "awsBedrockConfig": {
            "$ref": "#/components/schemas/aioptimizer.v1.AWSBedrockConfig"
          },
          "includeInCli": {
            "description": "Whether this provider should be included in the CLI provider list.\nDefaults to false; only the serverless AI Enabler is true by default.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "supportedProvider"
        ],
        "type": "object"
      },
      "aioptimizer.v1.ProviderCreditStatus": {
        "description": "ProviderCreditStatus represents the credit status for ai-enabler providers.\nOnly populated for providers where provider == \"ai-enabler\".",
        "properties": {
          "hasCredits": {
            "description": "HasCredits indicates if the organization has remaining credits for kimchi harness (included or additional).",
            "type": "boolean"
          },
          "remaining": {
            "description": "Remaining is the total spendable balance: (included - included_used) + additional_credits.",
            "type": "string"
          },
          "included": {
            "description": "Included is the total included credits allocated for the billing period.",
            "type": "string"
          },
          "additionalCredits": {
            "description": "AdditionalCredits is the total available credits from purchased/awarded additional buckets.",
            "type": "string"
          },
          "includedUsed": {
            "description": "IncludedUsed is the spend attributed to the included tier allocation this period.",
            "type": "string"
          },
          "additionalUsed": {
            "description": "AdditionalUsed is the spend attributed to additional credit buckets this period.",
            "type": "string"
          },
          "hasInferenceCredits": {
            "description": "HasInferenceCredits indicates if the organization is on a paid tier and has inference access.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.ProviderModelItem": {
        "properties": {
          "providerId": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "providerName": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "promptPricePerMil": {
            "type": "string"
          },
          "completionPricePerMil": {
            "type": "string"
          },
          "score": {
            "format": "double",
            "type": "number"
          },
          "rank": {
            "format": "double",
            "type": "number"
          },
          "freeCredits": {
            "type": "string"
          },
          "priority": {
            "format": "int32",
            "type": "integer"
          },
          "isRateLimited": {
            "type": "boolean"
          }
        },
        "required": [
          "completionPricePerMil",
          "freeCredits",
          "isRateLimited",
          "model",
          "priority",
          "promptPricePerMil",
          "provider",
          "providerName",
          "rank",
          "score"
        ],
        "type": "object"
      },
      "aioptimizer.v1.ProviderModelMetadata": {
        "description": "ProviderModelMetadata holds the full catalog metadata for a model configured on a provider.\nPopulated on RegisteredProvider.models_metadata when the request includes include_in_cli=true.",
        "properties": {
          "slug": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "maxInputTokens": {
            "format": "int32",
            "type": "integer"
          },
          "maxOutputTokens": {
            "format": "int32",
            "type": "integer"
          },
          "modalities": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "type": "string"
          },
          "isRoutable": {
            "type": "boolean"
          },
          "isServerless": {
            "type": "boolean"
          },
          "deprecatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "sunsetAt": {
            "format": "date-time",
            "type": "string"
          },
          "toolCall": {
            "type": "boolean"
          },
          "reasoning": {
            "type": "boolean"
          },
          "replacementModel": {
            "description": "Drop-in replacement on the same provider. Used by the proxy for transparent routing.",
            "type": "string"
          },
          "alternatives": {
            "description": "Human-facing migration hints. Independent of replacement_model; not used for routing.",
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.ModelAlternative"
            },
            "type": "array"
          },
          "deprecationNote": {
            "title": "URL to a website containing deprecation notes",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "aioptimizer.v1.RateLimitConfig": {
        "description": "Rate limit configuration for a model.",
        "properties": {
          "requestsPerMinute": {
            "format": "int32",
            "type": "integer"
          },
          "requestsPerDay": {
            "format": "int32",
            "type": "integer"
          },
          "tokensPerMinute": {
            "format": "int32",
            "type": "integer"
          },
          "tokensPerDay": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.RecommendationsItem": {
        "properties": {
          "id": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "requestCount": {
            "format": "int32",
            "type": "integer"
          },
          "routing": {
            "$ref": "#/components/schemas/aioptimizer.v1.Routing"
          },
          "tokenCount": {
            "$ref": "#/components/schemas/aioptimizer.v1.TokenCount"
          },
          "costs": {
            "$ref": "#/components/schemas/aioptimizer.v1.Costs"
          },
          "recommendedModelCosts": {
            "$ref": "#/components/schemas/aioptimizer.v1.Costs"
          },
          "originalCost": {
            "type": "string"
          },
          "achievedSavings": {
            "type": "string"
          },
          "achievedSavingsPercentage": {
            "type": "string"
          },
          "routed": {
            "type": "boolean"
          },
          "originalModel": {
            "type": "string"
          }
        },
        "required": [
          "achievedSavings",
          "achievedSavingsPercentage",
          "category",
          "costs",
          "id",
          "originalCost",
          "originalModel",
          "recommendedModelCosts",
          "requestCount",
          "routed",
          "routing",
          "tokenCount"
        ],
        "type": "object"
      },
      "aioptimizer.v1.RecommendationsSummary": {
        "properties": {
          "costs": {
            "$ref": "#/components/schemas/aioptimizer.v1.Costs"
          },
          "recommendedModelCosts": {
            "$ref": "#/components/schemas/aioptimizer.v1.Costs"
          },
          "originalCost": {
            "type": "string"
          },
          "achievedSavings": {
            "type": "string"
          },
          "achievedSavingsPercentage": {
            "type": "string"
          }
        },
        "required": [
          "achievedSavings",
          "achievedSavingsPercentage",
          "costs",
          "originalCost",
          "recommendedModelCosts"
        ],
        "type": "object"
      },
      "aioptimizer.v1.RegisterProvidersRequest": {
        "properties": {
          "providers": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.Provider"
            },
            "type": "array"
          }
        },
        "required": [
          "providers"
        ],
        "type": "object"
      },
      "aioptimizer.v1.RegisterProvidersResponse": {
        "type": "object"
      },
      "aioptimizer.v1.RegisteredProvider": {
        "description": "Used when getting registered providers.",
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "models": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "apiKey": {
            "description": "The provided api_key will be used to authenticate the requests to the Provider.",
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "apiVersion": {
            "nullable": true,
            "type": "string"
          },
          "modelsMapping": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A mapping between the provider's models and the base, routable models.",
            "type": "object"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "clusterId": {
            "nullable": true,
            "type": "string"
          },
          "workloadLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "workloadLabelsOperator": {
            "$ref": "#/components/schemas/aioptimizer.v1.WorkloadLabelsOperator"
          },
          "freeCredits": {
            "nullable": true,
            "type": "string"
          },
          "priority": {
            "format": "int32",
            "type": "integer"
          },
          "isRateLimited": {
            "type": "boolean"
          },
          "rateLimitedModels": {
            "items": {
              "type": "string"
            },
            "title": "Deprecated. Use model_rate_limits instead",
            "type": "array"
          },
          "createdBy": {
            "$ref": "#/components/schemas/aioptimizer.v1.CreatedByEntity"
          },
          "rateLimitedUntil": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "fallback": {
            "$ref": "#/components/schemas/aioptimizer.v1.Fallback"
          },
          "vertexConfig": {
            "$ref": "#/components/schemas/aioptimizer.v1.VertexConfig"
          },
          "awsBedrockConfig": {
            "$ref": "#/components/schemas/aioptimizer.v1.AWSBedrockConfig"
          },
          "modelRateLimits": {
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.ModelRateLimit"
            },
            "type": "array"
          },
          "creditStatus": {
            "$ref": "#/components/schemas/aioptimizer.v1.ProviderCreditStatus"
          },
          "includeInCli": {
            "description": "Whether this provider should be included in the CLI provider list.\nDefaults to false for all providers except the serverless AI Enabler.",
            "nullable": true,
            "type": "boolean"
          },
          "modelsMetadata": {
            "description": "Full metadata for each configured model.",
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.ProviderModelMetadata"
            },
            "type": "array"
          },
          "providerBudgetExhausted": {
            "description": "Whether the configured budget for this provider has been exhausted.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "required": [
          "modelsMapping",
          "name",
          "provider",
          "updatedAt"
        ],
        "type": "object"
      },
      "aioptimizer.v1.RouteRequestEvent": {
        "properties": {
          "providerId": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "providerName": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "responseStatus": {
            "format": "int32",
            "type": "integer"
          },
          "responseDurationMs": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "model",
          "provider",
          "providerName",
          "responseDurationMs",
          "responseStatus"
        ],
        "type": "object"
      },
      "aioptimizer.v1.Routing": {
        "properties": {
          "from": {
            "$ref": "#/components/schemas/aioptimizer.v1.RoutingModel"
          },
          "to": {
            "$ref": "#/components/schemas/aioptimizer.v1.RoutingModel"
          }
        },
        "required": [
          "from",
          "to"
        ],
        "type": "object"
      },
      "aioptimizer.v1.RoutingEvent": {
        "properties": {
          "id": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "promptId": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/aioptimizer.v1.EventType"
          },
          "event": {
            "$ref": "#/components/schemas/aioptimizer.v1.Event"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "event",
          "id",
          "organizationId",
          "promptId",
          "type"
        ],
        "type": "object"
      },
      "aioptimizer.v1.RoutingModel": {
        "properties": {
          "model": {
            "type": "string"
          },
          "fineTuned": {
            "type": "boolean"
          },
          "provider": {
            "type": "string"
          }
        },
        "required": [
          "fineTuned",
          "model",
          "provider"
        ],
        "type": "object"
      },
      "aioptimizer.v1.SelectedPlaygroundProvider": {
        "description": "Defines the selected playground provider.",
        "properties": {
          "name": {
            "type": "string"
          },
          "models": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "freeCredits": {
            "nullable": true,
            "type": "string"
          },
          "isRateLimited": {
            "nullable": true,
            "type": "boolean"
          },
          "rateLimitedModels": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "models",
          "name"
        ],
        "type": "object"
      },
      "aioptimizer.v1.SelectedRegisteredProvider": {
        "description": "Defines the selected registered provider.",
        "properties": {
          "id": {
            "type": "string"
          },
          "models": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "freeCredits": {
            "nullable": true,
            "type": "string"
          },
          "isRateLimited": {
            "nullable": true,
            "type": "boolean"
          },
          "rateLimitedModels": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "models"
        ],
        "type": "object"
      },
      "aioptimizer.v1.SupportedProvider": {
        "properties": {
          "provider": {
            "type": "string"
          },
          "models": {
            "description": "Represents the routable models supported by the provider.",
            "items": {
              "$ref": "#/components/schemas/aioptimizer.v1.SupportedProviderModel"
            },
            "type": "array"
          },
          "pricingUrl": {
            "type": "string"
          },
          "websiteUrl": {
            "type": "string"
          },
          "rateLimitsPerModel": {
            "type": "boolean"
          }
        },
        "required": [
          "models",
          "pricingUrl",
          "provider",
          "rateLimitsPerModel",
          "websiteUrl"
        ],
        "type": "object"
      },
      "aioptimizer.v1.SupportedProviderModel": {
        "properties": {
          "name": {
            "type": "string"
          },
          "maxInputTokens": {
            "format": "int32",
            "type": "integer"
          },
          "promptPricePerMilTokens": {
            "type": "string"
          },
          "completionPricePerMilTokens": {
            "type": "string"
          },
          "isRoutable": {
            "type": "boolean"
          },
          "modalities": {
            "description": "The list of modalities the model supports. Can be a list of \"text\", \"image\", \"audio\", etc.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "description": "The type of the hosted model. Can be \"chat\", \"embeddings\", \"completion\", \"audio_transcription\", etc.",
            "type": "string"
          },
          "aws": {
            "$ref": "#/components/schemas/aioptimizer.v1.AWSProviderModelMeta"
          },
          "rateLimits": {
            "$ref": "#/components/schemas/aioptimizer.v1.RateLimitConfig"
          }
        },
        "required": [
          "completionPricePerMilTokens",
          "isRoutable",
          "maxInputTokens",
          "modalities",
          "name",
          "promptPricePerMilTokens",
          "type"
        ],
        "type": "object"
      },
      "aioptimizer.v1.SupportedProviderName": {
        "default": "UNKNOWN",
        "description": "The SupportedProviderName enum is used to specify the providers that can be manually registered.",
        "enum": [
          "UNKNOWN",
          "OPENAI",
          "GROQ",
          "AZURE",
          "GEMINI",
          "ANTHROPIC",
          "VERTEXAIGEMINI",
          "ANYSCALE",
          "OPENROUTER",
          "MISTRAL",
          "DATABRICKS",
          "COHERE",
          "CODESTRAL",
          "VERTEXAIANTHROPIC",
          "AZUREAI",
          "PERPLEXITY",
          "AWSBEDROCK",
          "AIENABLER",
          "KIMCHI"
        ],
        "type": "string"
      },
      "aioptimizer.v1.TokenCount": {
        "properties": {
          "in": {
            "format": "int32",
            "type": "integer"
          },
          "out": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "in",
          "out"
        ],
        "type": "object"
      },
      "aioptimizer.v1.UpdateCategorizedPromptResponse": {
        "type": "object"
      },
      "aioptimizer.v1.UpdateProviderResponse": {
        "type": "object"
      },
      "aioptimizer.v1.UpsertSettingsRequest": {
        "properties": {
          "apiKey": {
            "description": "The API key for which the settings are being updated. If not provided, the settings are updated for the current organization.",
            "nullable": true,
            "type": "string"
          },
          "promptSharingEnabled": {
            "nullable": true,
            "type": "boolean"
          },
          "routingEnabled": {
            "nullable": true,
            "type": "boolean"
          },
          "routerQualityWeight": {
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "teamId": {
            "description": "Optional team ID to update team-scoped settings. When provided, the API key is ignored and team settings are updated.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "aioptimizer.v1.UpsertSettingsResponse": {
        "properties": {
          "apiKey": {
            "description": "The API key for which the settings were updated. If not provided, the settings were updated for the current organization.",
            "nullable": true,
            "type": "string"
          },
          "promptSharingEnabled": {
            "type": "boolean"
          },
          "routingEnabled": {
            "type": "boolean"
          },
          "routerQualityWeight": {
            "format": "double",
            "type": "number"
          },
          "teamId": {
            "description": "The team ID for which the settings were updated, if applicable.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "promptSharingEnabled",
          "routerQualityWeight",
          "routingEnabled"
        ],
        "type": "object"
      },
      "aioptimizer.v1.UsageItem": {
        "properties": {
          "timestamp": {
            "type": "string"
          },
          "dailyCost": {
            "type": "string"
          },
          "dailyCostPerMilTokens": {
            "type": "string"
          },
          "costPerApiKey": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "costPerCategory": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "costPerApiKey",
          "costPerCategory",
          "dailyCost",
          "dailyCostPerMilTokens",
          "timestamp"
        ],
        "type": "object"
      },
      "aioptimizer.v1.VertexConfig": {
        "properties": {
          "projectId": {
            "type": "string"
          },
          "location": {
            "type": "string"
          }
        },
        "required": [
          "location",
          "projectId"
        ],
        "type": "object"
      },
      "aioptimizer.v1.WorkloadLabelsOperator": {
        "default": "WORKLOAD_LABELS_OPERATOR_UNKNOWN",
        "description": "WorkloadLabelsOperator is used to specify the operator that will be used when filtering the workloads based on the workload labels.",
        "enum": [
          "WORKLOAD_LABELS_OPERATOR_UNKNOWN",
          "WORKLOAD_LABELS_OPERATOR_AND",
          "WORKLOAD_LABELS_OPERATOR_OR"
        ],
        "type": "string"
      },
      "billing.v1.ClusterMetadata": {
        "properties": {
          "id": {
            "description": "The cluster id.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "The cluster name.",
            "readOnly": true,
            "type": "string"
          },
          "providerType": {
            "description": "The cloud provider.",
            "readOnly": true,
            "type": "string"
          },
          "providerNamespaceId": {
            "description": "The project the cluster belongs to.",
            "readOnly": true,
            "type": "string"
          }
        },
        "title": "Cluster information",
        "type": "object"
      },
      "billing.v1.ClusterUsage": {
        "description": "ClusterUsage represents the usage of a cluster.",
        "properties": {
          "cluster": {
            "$ref": "#/components/schemas/billing.v1.ClusterMetadata"
          },
          "dailyUsages": {
            "description": "The usage of the cluster.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.DailyUsage"
            },
            "readOnly": true,
            "type": "array"
          },
          "cumulativeCpuHours": {
            "description": "Cumulative cpu hours usage.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "cumulativeBillableCpus": {
            "description": "Cumulative billable cpu usage.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "billing.v1.DailyUsage": {
        "description": "DailyUsage defines resources usage for a given day.",
        "properties": {
          "day": {
            "description": "The day of usage.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "cpuHours": {
            "description": "Average hour usage in the given day.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "billableCpus": {
            "description": "Average count of CPU used in the given day.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "billing.v1.DateRange": {
        "description": "DateRange represents date range using YYYY-MM-DD strings.",
        "properties": {
          "from": {
            "description": "Start date (inclusive), format: YYYY-MM-DD.",
            "type": "string"
          },
          "to": {
            "description": "End date (inclusive), format: YYYY-MM-DD.",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to"
        ],
        "type": "object"
      },
      "billing.v1.FeatureCreditPeriod": {
        "description": "FeatureCreditPeriod represents a single credit/discount allocation period for a feature and provider.",
        "properties": {
          "total": {
            "description": "Total credits/discount available for this period.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "used": {
            "description": "Credits consumed so far in this period.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "remaining": {
            "description": "Credits remaining in this period (total - used).",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "periodStart": {
            "description": "Start of this credit period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "periodEnd": {
            "description": "End of this credit period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "resetFrequency": {
            "description": "How often credits reset (e.g., \"monthly\", \"custom\").",
            "readOnly": true,
            "type": "string"
          },
          "provider": {
            "description": "Cloud provider name (e.g., \"gcp\", \"aws\", \"azure\").",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "billing.v1.FeatureCredits": {
        "description": "FeatureCredits represents credit/discount allocation for a feature and provider.",
        "properties": {
          "total": {
            "description": "Total credits/discount available (e.g., 10,000 CPU).",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "used": {
            "description": "Credits consumed so far.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "remaining": {
            "description": "Credits remaining (total - used).",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "resetFrequency": {
            "description": "How often credits reset (e.g., \"monthly\", \"custom\").",
            "readOnly": true,
            "type": "string"
          },
          "startDate": {
            "description": "Start of the current credit period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "endDate": {
            "description": "End of the current credit period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "provider": {
            "description": "Cloud provider name (e.g., \"gcp\", \"aws\", \"azure\").",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "billing.v1.FeatureDailyUsage": {
        "description": "FeatureDailyUsage represents usage for a single day within a feature.",
        "properties": {
          "day": {
            "description": "The day of usage, format: YYYY-MM-DD.",
            "readOnly": true,
            "type": "string"
          },
          "value": {
            "description": "Usage value for that day.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "billing.v1.FeatureEntityUsage": {
        "description": "FeatureEntityUsage represents usage for a single entity (cluster or organization).",
        "properties": {
          "entityId": {
            "description": "Entity identifier.",
            "readOnly": true,
            "type": "string"
          },
          "entityName": {
            "description": "Entity name (cluster name or organization name).",
            "readOnly": true,
            "type": "string"
          },
          "entityType": {
            "description": "Entity type (\"cluster\" or \"organization\").",
            "readOnly": true,
            "type": "string"
          },
          "usage": {
            "description": "Total usage for this entity.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "dailyUsages": {
            "description": "Daily usage breakdown for this entity.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.FeatureDailyUsage"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "billing.v1.FeatureUsageDetail": {
        "description": "FeatureUsageDetail provides detailed usage breakdown for a single feature.",
        "properties": {
          "feature": {
            "description": "Feature identifier.",
            "readOnly": true,
            "type": "string"
          },
          "displayName": {
            "description": "Human-readable feature name.",
            "readOnly": true,
            "type": "string"
          },
          "totalUsage": {
            "description": "Total usage for the period.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "unit": {
            "description": "Unit of usage measurement.",
            "readOnly": true,
            "type": "string"
          },
          "credits": {
            "$ref": "#/components/schemas/billing.v1.FeatureCredits"
          },
          "freeOfCharge": {
            "$ref": "#/components/schemas/billing.v1.FreeOfChargeInfo"
          },
          "creditsApplied": {
            "description": "Amount of credits applied.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "dailyUsages": {
            "description": "Aggregate daily usage across all entities.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.FeatureDailyUsage"
            },
            "readOnly": true,
            "type": "array"
          },
          "entities": {
            "description": "Per-entity (cluster or organization) usage breakdown.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.FeatureEntityUsage"
            },
            "readOnly": true,
            "type": "array"
          },
          "freeOfChargePeriods": {
            "description": "All free-of-charge periods overlapping the queried date range.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.FreeOfChargePeriod"
            },
            "readOnly": true,
            "type": "array"
          },
          "creditPeriods": {
            "description": "All credit/discount periods overlapping the queried date range.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.FeatureCreditPeriod"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "billing.v1.FeatureUsageSummary": {
        "description": "FeatureUsageSummary represents usage summary for a single feature.",
        "properties": {
          "feature": {
            "description": "Feature identifier (e.g., \"phase2\", \"woop\", \"live_migrations\").",
            "readOnly": true,
            "type": "string"
          },
          "displayName": {
            "description": "Human-readable feature name (e.g., \"Node Autoscaler\").",
            "readOnly": true,
            "type": "string"
          },
          "usage": {
            "description": "Total billable usage for the period.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "unit": {
            "description": "Unit of usage measurement (e.g., \"CPU\").",
            "readOnly": true,
            "type": "string"
          },
          "credits": {
            "$ref": "#/components/schemas/billing.v1.FeatureCredits"
          },
          "freeOfCharge": {
            "$ref": "#/components/schemas/billing.v1.FreeOfChargeInfo"
          },
          "creditsApplied": {
            "description": "Amount of credits applied.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "freeOfChargePeriods": {
            "description": "All free-of-charge periods overlapping the queried date range.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.FreeOfChargePeriod"
            },
            "readOnly": true,
            "type": "array"
          },
          "creditPeriods": {
            "description": "All credit/discount periods overlapping the queried date range.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.FeatureCreditPeriod"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "billing.v1.FreeOfChargeInfo": {
        "description": "FreeOfChargeInfo indicates whether a feature is free of charge.",
        "properties": {
          "isFreeOfCharge": {
            "description": "Whether the feature is currently free of charge.",
            "readOnly": true,
            "type": "boolean"
          },
          "startDate": {
            "description": "Start date of the current free-of-charge period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "endDate": {
            "description": "End date of the current free-of-charge period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "provider": {
            "description": "Cloud provider name (e.g., \"gcp\", \"aws\", \"azure\").",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "billing.v1.FreeOfChargePeriod": {
        "description": "FreeOfChargePeriod represents a single free-of-charge period for a feature and provider.",
        "properties": {
          "startDate": {
            "description": "Start date of the free-of-charge period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "endDate": {
            "description": "End date of the free-of-charge period.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "isEnabled": {
            "description": "Whether the free-of-charge period is enabled.",
            "readOnly": true,
            "type": "boolean"
          },
          "provider": {
            "description": "Cloud provider name (e.g., \"gcp\", \"aws\", \"azure\").",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "billing.v1.GetEnterprisePlatformUsageDetailResponse": {
        "description": "GetEnterprisePlatformUsageDetailResponse is the response for GetEnterprisePlatformUsageDetail.",
        "properties": {
          "detail": {
            "$ref": "#/components/schemas/billing.v1.FeatureUsageDetail"
          }
        },
        "type": "object"
      },
      "billing.v1.GetEnterprisePlatformUsageReportResponse": {
        "description": "GetEnterprisePlatformUsageReportResponse is the response for GetEnterprisePlatformUsageReport.",
        "properties": {
          "subscriptions": {
            "description": "Active subscriptions per cloud provider.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.SubscriptionInfo"
            },
            "readOnly": true,
            "type": "array"
          },
          "features": {
            "description": "Usage summary per feature.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.FeatureUsageSummary"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "billing.v1.GetEnterpriseUsageReportResponse": {
        "description": "GetEnterpriseUsageReportResponse is the response for GetEnterpriseUsageReport.",
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/billing.v1.UsageSummary"
          },
          "organizations": {
            "description": "Organizations represents the details of the usage for the period aggregated per child organization.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.OrganizationUsage"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "billing.v1.GetPlatformUsageDetailResponse": {
        "description": "GetPlatformUsageDetailResponse is the response for GetPlatformUsageDetail.",
        "properties": {
          "detail": {
            "$ref": "#/components/schemas/billing.v1.FeatureUsageDetail"
          }
        },
        "type": "object"
      },
      "billing.v1.GetPlatformUsageReportResponse": {
        "description": "GetPlatformUsageReportResponse is the response for GetPlatformUsageReport.",
        "properties": {
          "subscriptions": {
            "description": "Active subscriptions per cloud provider.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.SubscriptionInfo"
            },
            "readOnly": true,
            "type": "array"
          },
          "features": {
            "description": "Usage summary per feature.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.FeatureUsageSummary"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "billing.v1.GetSubscriptionDetailsResponse": {
        "description": "GetSubscriptionDetailsResponse is the response for GetSubscriptionDetails.",
        "properties": {
          "subscriptions": {
            "description": "Subscription details.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.SubscriptionDetails"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "billing.v1.GetUsageReportResponse": {
        "description": "GetUsageReportResponse is the response for GetUsageReport.",
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/billing.v1.UsageSummary"
          },
          "clusters": {
            "description": "UsageDetails is the details of the usage for the period aggregated per cluster.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.ClusterUsage"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "billing.v1.Marketplace": {
        "default": "AWS",
        "description": "Marketplace defines in which marketplace the subscription is registered.",
        "enum": [
          "AWS",
          "GCP",
          "AZURE"
        ],
        "type": "string"
      },
      "billing.v1.OrganizationUsage": {
        "properties": {
          "organizationId": {
            "description": "The organization id.",
            "readOnly": true,
            "type": "string"
          },
          "organizationName": {
            "description": "Organization name.",
            "readOnly": true,
            "type": "string"
          },
          "dailyUsages": {
            "description": "Daily usage of the organization.",
            "items": {
              "$ref": "#/components/schemas/billing.v1.DailyUsage"
            },
            "readOnly": true,
            "type": "array"
          },
          "cumulativeCpuHours": {
            "description": "Cumulative cpu hours usage.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          },
          "cumulativeBillableCpus": {
            "description": "Cumulative billable cpu usage.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "billing.v1.Period": {
        "description": "Period of time of resource usage.",
        "properties": {
          "from": {
            "description": "Start time of resource usage period.",
            "format": "date-time",
            "type": "string"
          },
          "to": {
            "description": "End time of resource usage period.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "from",
          "to"
        ],
        "type": "object"
      },
      "billing.v1.SubscriptionDetails": {
        "description": "SubscriptionDetails contains information about the subscription.",
        "properties": {
          "marketplace": {
            "$ref": "#/components/schemas/billing.v1.Marketplace"
          },
          "createdTime": {
            "description": "The subscription start date.",
            "format": "date-time",
            "type": "string"
          },
          "expirationTime": {
            "description": "The subscription end date.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "billing.v1.SubscriptionInfo": {
        "description": "SubscriptionInfo provides subscription information per cloud provider for usage report views.",
        "properties": {
          "provider": {
            "description": "Cloud provider name (e.g., \"gcp\", \"aws\", \"azure\").",
            "readOnly": true,
            "type": "string"
          },
          "startDate": {
            "description": "Date the subscription was signed/created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "endDate": {
            "description": "Subscription expiration/active-until date.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "billing.v1.UsageSummary": {
        "description": "UsageSummary represents the summary of the usage for the given period.",
        "properties": {
          "billableCpus": {
            "description": "billable CPU usage.",
            "format": "double",
            "readOnly": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "castai.audit.v1beta1.AuditEntry": {
        "description": "AuditEntry is audit entry.",
        "properties": {
          "id": {
            "type": "string"
          },
          "eventType": {
            "type": "string"
          },
          "initiatedBy": {
            "$ref": "#/components/schemas/castai.audit.v1beta1.InitiatedBy"
          },
          "time": {
            "format": "date-time",
            "type": "string"
          },
          "event": {
            "properties": {},
            "type": "object"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "operation": {
            "$ref": "#/components/schemas/castai.audit.v1beta1.AuditOperation"
          }
        },
        "type": "object"
      },
      "castai.audit.v1beta1.AuditListEntry": {
        "description": "AuditListEntry is an audit event record.",
        "properties": {
          "id": {
            "description": "Unique record identifier.",
            "type": "string"
          },
          "eventType": {
            "description": "Type of event this audit record is referring to.",
            "type": "string"
          },
          "operation": {
            "$ref": "#/components/schemas/castai.audit.v1beta1.AuditOperation"
          },
          "initiatedBy": {
            "$ref": "#/components/schemas/castai.audit.v1beta1.InitiatedBy"
          },
          "time": {
            "description": "Exact date and time the event was recorded.",
            "format": "date-time",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Event labels.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "castai.audit.v1beta1.AuditOperation": {
        "description": "AuditOperation is an operation causing an audit event.",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/castai.audit.v1beta1.AuditOperationType"
          },
          "text": {
            "description": "A human-readable description of the operation.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.audit.v1beta1.AuditOperationType": {
        "default": "AUDIT_OPERATION_TYPE_GENERIC",
        "description": "AuditOperationType is different types of operations.",
        "enum": [
          "AUDIT_OPERATION_TYPE_GENERIC",
          "AUDIT_OPERATION_TYPE_ERROR",
          "AUDIT_OPERATION_TYPE_ADD"
        ],
        "type": "string"
      },
      "castai.audit.v1beta1.GetAuditEventResponse": {
        "description": "GetAuditEventResponse is the response to a request for a specific audit event.",
        "properties": {
          "entry": {
            "$ref": "#/components/schemas/castai.audit.v1beta1.AuditEntry"
          }
        },
        "type": "object"
      },
      "castai.audit.v1beta1.InitiatedBy": {
        "description": "InitiatedBy describes change initiator.",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.audit.v1beta1.ListAuditEntriesResponse": {
        "description": "ListAuditEntriesResponse defines audit entries response.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.audit.v1beta1.AuditEntry"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "previousCursor": {
            "description": "previous_cursor is a token that may be used to retrieve items from the previous logical page. If empty - there were no previous page provided.",
            "type": "string"
          },
          "count": {
            "format": "int32",
            "title": "count of audits restricted by the filters",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.audit.v1beta1.ListAuditEventsResponse": {
        "description": "ListAuditEventsResponse is the response to a request for listing audit events.",
        "properties": {
          "items": {
            "description": "List of audit entries.",
            "items": {
              "$ref": "#/components/schemas/castai.audit.v1beta1.AuditListEntry"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "A token to be used to retrieve the next logical page of records.",
            "type": "string"
          },
          "previousCursor": {
            "description": "A token to be used to retrieve items from the previous logical page of records.",
            "type": "string"
          },
          "count": {
            "description": "How many audit records matched the request criteria.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.audit.v2.Actor": {
        "description": "Actor represents the entity that initiated the action.",
        "properties": {
          "type": {
            "description": "Type of actor (e.g. \"user\", \"system\").",
            "type": "string"
          },
          "id": {
            "description": "Actor identifier (optional for system actors).",
            "type": "string"
          },
          "displayName": {
            "description": "Actor display name.",
            "type": "string"
          },
          "email": {
            "description": "Actor e-mail address.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.audit.v2.AuditEvent": {
        "description": "AuditEvent is the core audit event message for the v2 schema.\nEvent types follow a three-segment hierarchy: domain.resource.action\n(e.g. \"autoscaler.rebalancing.initiated\").",
        "properties": {
          "eventId": {
            "description": "Unique identifier, generated at source for idempotency.",
            "type": "string"
          },
          "requestId": {
            "description": "Identifier for the request that triggered this event.",
            "type": "string"
          },
          "correlationId": {
            "description": "Links related events together.",
            "type": "string"
          },
          "tenantId": {
            "description": "Customer identifier (organization or enterprise).",
            "type": "string"
          },
          "occurredAt": {
            "description": "When the action happened (source timestamp).",
            "format": "date-time",
            "type": "string"
          },
          "ingestedAt": {
            "description": "When the event was recorded (set by ingestion).",
            "format": "date-time",
            "type": "string"
          },
          "sourceService": {
            "description": "Service that emitted the event.",
            "type": "string"
          },
          "sourceVersion": {
            "description": "Service version.",
            "type": "string"
          },
          "eventDomain": {
            "description": "Top-level category, team or product name (e.g. \"autoscaler\", \"woop\", \"dbo\").",
            "type": "string"
          },
          "eventResource": {
            "description": "Entity within domain (e.g. \"cluster\", \"spot\", \"policy\").",
            "type": "string"
          },
          "eventAction": {
            "description": "Specific action (e.g. \"interrupted\", \"paused\", \"executed\").",
            "type": "string"
          },
          "eventSeverity": {
            "description": "Numerical severity level, defaults to 0.",
            "format": "int64",
            "type": "integer"
          },
          "eventSeverityText": {
            "description": "Severity level as a string, e.g. \"info\", or \"error\".",
            "type": "string"
          },
          "body": {
            "description": "Event-specific details, or freeform key-value pairs.",
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "description": {
            "description": "Human-readable summary for display.",
            "type": "string"
          },
          "actor": {
            "$ref": "#/components/schemas/castai.audit.v2.Actor"
          },
          "resource": {
            "$ref": "#/components/schemas/castai.audit.v2.Resource"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Key-value pairs, indexed and searchable.",
            "type": "object"
          },
          "clusterId": {
            "description": "Cluster identifier, if the event is associated with a cluster.",
            "type": "string"
          },
          "correlatedEventCount": {
            "description": "Total number of events sharing this event's correlation_id.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.audit.v2.AuditEventFilter": {
        "description": "AuditEventFilter can be used to filter audit event records.",
        "properties": {
          "search": {
            "description": "Plain-text search over audit event fields.",
            "nullable": true,
            "type": "string"
          },
          "clusters": {
            "description": "List of audit event cluster IDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "domains": {
            "description": "List of audit event domains, e.g. \"platform\", \"autoscaler\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resources": {
            "description": "List of audit event resources, e.g. \"cluster\", \"node\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "actions": {
            "description": "List of audit event actions, e.g. \"created\", \"deleted\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sources": {
            "description": "List of audit event source services, e.g. \"provisioner\", \"woop\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "severity": {
            "description": "List of severity levels for audit events, e.g. \"info\", \"error\".",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.audit.v2.GetAuditEventResponse": {
        "description": "GetAuditEventResponse is the response to a request for a specific audit event.",
        "properties": {
          "event": {
            "$ref": "#/components/schemas/castai.audit.v2.AuditEvent"
          }
        },
        "type": "object"
      },
      "castai.audit.v2.GetAuditHistogramResponse": {
        "description": "GetAuditHistogramResponse is the response to a request for an audit event histogram.",
        "properties": {
          "interval": {
            "description": "The bucket interval used for the histogram, e.g. \"1m\", \"10m\", \"1h\", \"6h\", \"1d\".",
            "type": "string"
          },
          "buckets": {
            "description": "Histogram buckets containing event counts per time slice.",
            "items": {
              "$ref": "#/components/schemas/castai.audit.v2.HistogramBucket"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.audit.v2.GetRelatedAuditEventsResponse": {
        "description": "GetRelatedAuditEventsResponse is the response to a request for correlated events.",
        "properties": {
          "eventId": {
            "description": "The original audit event record ID.",
            "type": "string"
          },
          "correlationId": {
            "description": "The audit event correlation identifier.",
            "type": "string"
          },
          "events": {
            "description": "List of related audit events.",
            "items": {
              "$ref": "#/components/schemas/castai.audit.v2.AuditEvent"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "A token to be used to retrieve the next logical page of records, if there is one.",
            "type": "string"
          },
          "previousCursor": {
            "description": "A token to be used to retrieve items from the previous logical page of records.",
            "type": "string"
          },
          "count": {
            "description": "How many total related audit records.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.audit.v2.HistogramBucket": {
        "description": "HistogramBucket represents a single time bucket in the histogram.",
        "properties": {
          "time": {
            "description": "The start time of this bucket.",
            "format": "date-time",
            "type": "string"
          },
          "total": {
            "description": "Total number of events in this bucket.",
            "format": "int64",
            "type": "string"
          },
          "severity": {
            "additionalProperties": {
              "format": "int64",
              "type": "string"
            },
            "description": "Event count grouped by severity level.\nKeys are severity strings: \"info\", \"warning\", \"error\", \"critical\".",
            "type": "object"
          }
        },
        "type": "object"
      },
      "castai.audit.v2.ListAuditEventsResponse": {
        "description": "ListAuditEventsResponse is the response to a request for listing audit events.",
        "properties": {
          "events": {
            "description": "List of audit events matching the criteria.",
            "items": {
              "$ref": "#/components/schemas/castai.audit.v2.AuditEvent"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "A token to be used to retrieve the next logical page of records.",
            "type": "string"
          },
          "previousCursor": {
            "description": "A token to be used to retrieve items from the previous logical page of records.",
            "type": "string"
          },
          "count": {
            "description": "How many audit records matched the request criteria.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.audit.v2.Resource": {
        "description": "Resource represents the entity affected by the action.",
        "properties": {
          "type": {
            "description": "Type of affected resource (e.g. \"node\").",
            "type": "string"
          },
          "id": {
            "description": "Resource identifier.",
            "type": "string"
          },
          "displayName": {
            "description": "Resource display name.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.authtoken.v1beta1.AuthToken": {
        "description": "Auth token used to authenticate via api.",
        "properties": {
          "id": {
            "description": "(read only) ID of the token.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "(required) User provided name of the token.",
            "type": "string"
          },
          "createdAt": {
            "description": "(read only) Time when the token was created (unix timestamp in nanoseconds).",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "token": {
            "description": "(read only, visible once on creation) actual token used to authenticate via api.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "lastUsedAt": {
            "description": "(read only) Time when this token was last used (unix timestamp in nanoseconds).",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "active": {
            "description": "(read only) Indicates whether the token is active.",
            "readOnly": true,
            "type": "boolean"
          },
          "readonly": {
            "description": "TODO: we need to think how to migrate away from this flag.\nwhether token has readonly permissions.",
            "type": "boolean"
          },
          "createdBy": {
            "description": "created_by is used to link this token to a user who created it.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "tokenPrefix": {
            "description": "token_prefix contains the first 3 characters of the generated token.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "expiresAt": {
            "description": "Time when the token will expire (unix timestamp in nanoseconds).\nA null value means that the key will never expire.",
            "format": "date-time",
            "type": "string"
          },
          "organizationId": {
            "description": "organization_id is the id of the organization this token belongs to.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "readonly"
        ],
        "type": "object"
      },
      "castai.authtoken.v1beta1.AuthTokenType": {
        "default": "AUTH_TOKEN_TYPE_UNSPECIFIED",
        "description": "AuthTokenType represents the type of auth token.\n\n - AUTH_TOKEN_TYPE_UNSPECIFIED: AUTH_TOKEN_TYPE_UNSPECIFIED is the default value and should not be used.\n - AUTH_TOKEN_TYPE_PAT: AUTH_TOKEN_TYPE_PAT is a Personal Access Token.",
        "enum": [
          "AUTH_TOKEN_TYPE_UNSPECIFIED",
          "AUTH_TOKEN_TYPE_PAT"
        ],
        "type": "string"
      },
      "castai.authtoken.v1beta1.AuthTokenUpdate": {
        "description": "AuthTokenUpdate is used to update an existing auth token.",
        "properties": {
          "active": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.authtoken.v1beta1.CreateAuthTokenResponse": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
          }
        },
        "type": "object"
      },
      "castai.authtoken.v1beta1.DeleteAuthTokenResponse": {
        "type": "object"
      },
      "castai.authtoken.v1beta1.GetAuthTokenResponse": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
          }
        },
        "type": "object"
      },
      "castai.authtoken.v1beta1.Identity": {
        "default": "USER",
        "description": "Identity indicates the token owner's identity.",
        "enum": [
          "USER",
          "SERVICE_ACCOUNT",
          "INTERNAL"
        ],
        "type": "string"
      },
      "castai.authtoken.v1beta1.ListAuthTokensRequest.Organizations": {
        "default": "ORGANIZATIONS_UNSPECIFIED",
        "description": "Organizations controls wheter to return tokens for all organizations the user belongs to or only the current one.\n\n - ORGANIZATIONS_UNSPECIFIED: ORGANIZATIONS_UNSPECIFIED is the default value and means only current organization.\n - ALL: ALL means all organizations the user belongs to.",
        "enum": [
          "ORGANIZATIONS_UNSPECIFIED",
          "ALL"
        ],
        "type": "string"
      },
      "castai.authtoken.v1beta1.ListAuthTokensResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.authtoken.v1beta1.UpdateAuthTokenResponse": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
          }
        },
        "type": "object"
      },
      "castai.authtoken.v1beta1.VerifyAuthTokenResponse": {
        "properties": {
          "tenantId": {
            "type": "string"
          },
          "defaultOrganizationId": {
            "type": "string"
          },
          "tokenId": {
            "type": "string"
          },
          "expireAt": {
            "format": "date-time",
            "type": "string"
          },
          "identityId": {
            "type": "string"
          },
          "identity": {
            "$ref": "#/components/schemas/castai.authtoken.v1beta1.Identity"
          },
          "identityUuid": {
            "description": "IdentityUUID represents an actual UUID of the identity. This field allows keeping backward compatibility with the old identity id.",
            "type": "string"
          },
          "policies": {
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.AccessPolicy"
            },
            "title": "Policies is a list of policies that are associated with the internal token",
            "type": "array"
          },
          "isMasterKey": {
            "description": "IsMasterKey indicates the token is a master key (read-only, cross-org access)\nas marked by metadata[\"master_key\"] = true.",
            "type": "boolean"
          },
          "tokenType": {
            "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthTokenType"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.AKSAgentScriptParams": {
        "description": "AKS specific properties.",
        "properties": {
          "location": {
            "description": "Azure location of your AKS cluster.",
            "example": "westeurope",
            "type": "string"
          },
          "nodeResourceGroup": {
            "description": "Azure resource group where AKS nodes are deployed.",
            "example": "MC_resource_group_name_cluster_name_location",
            "type": "string"
          },
          "subscriptionId": {
            "description": "Azure account subscription id.",
            "example": "00000000-0000-0000-0000-000000000000",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.AWSNodeTemplateMigrationIntent": {
        "properties": {
          "name": {
            "description": "Karpenter AWSNodeTemplate name.",
            "type": "string"
          },
          "castaiNodeConfigurationName": {
            "description": "The name given to the CAST AI Node Configuration after migration.",
            "type": "string"
          },
          "error": {
            "description": "Error describing why AWSNodeTemplate migration cannot be performed.\nDeprecated: Use errors instead.",
            "nullable": true,
            "type": "string",
            "deprecated": true
          },
          "valid": {
            "description": "Indicates whether AWSNodeTemplate migration intent can be executed.\nDeprecated: Use can_migrate instead.",
            "type": "boolean",
            "deprecated": true
          },
          "errorMessages": {
            "description": "Error messages describing why AWSNodeTemplate migration cannot be performed or won't be performed fully.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "canMigrate": {
            "description": "Indicates whether the AWSNodeTemplate can be migrated.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.AWSNodeTemplateMigrationResult": {
        "properties": {
          "name": {
            "description": "Karpenter AWSNodeTemplate name.",
            "type": "string"
          },
          "castaiNodeConfigurationName": {
            "description": "The name of the CAST AI Node Configuration.",
            "type": "string"
          },
          "castaiNodeConfigurationId": {
            "description": "The id of the CAST AI Node Configuration.",
            "type": "string"
          },
          "error": {
            "description": "Error describing why AWSNodeTemplate migration failed.\nDeprecated: Use errors instead.",
            "nullable": true,
            "type": "string",
            "deprecated": true
          },
          "success": {
            "description": "Indicates whether AWSNodeTemplate migration was successful.",
            "type": "boolean"
          },
          "errorMessages": {
            "description": "Error messages describing why AWSNodeTemplate migration failed or couldn't complete fully.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.AggressiveModeConfig": {
        "properties": {
          "ignoreLocalPersistentVolumes": {
            "description": "Rebalance workloads that use local-path Persistent Volumes.\nWARNING: THIS WILL RESULT IN DATA LOSS.",
            "type": "boolean"
          },
          "ignoreProblemJobPods": {
            "description": "Pods spawned by Jobs or CronJobs will not prevent the Rebalancer from deleting a node on which they run.\nWARNING: When true, pods spawned by Jobs or CronJobs will be terminated if the Rebalancer picks a node that runs them.\nAs such, they are likely to lose their progress.",
            "type": "boolean"
          },
          "ignoreProblemRemovalDisabledPods": {
            "description": "Pods that are marked with \"removal disabled\" will not prevent the Rebalancer from deleting a node on which they run.\nWARNING: When true, such pods will be evicted and disrupted.",
            "type": "boolean"
          },
          "ignoreProblemPodsWithoutController": {
            "description": "Pods that don't have a controller (bare pods) will not prevent the Rebalancer from deleting a node on which they run.\nWARNING: When true, such pods might not restart, since they have no controller to do it.",
            "type": "boolean"
          },
          "ignoreProblemPreventedDrainPods": {
            "description": "Pods annotated with rebalancing.cast.ai/prevented-drain=true will not prevent the Rebalancer from deleting a node on which they run.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.AnywhereAgentScriptParams": {
        "description": "AnywhereAgentScriptParams specific properties.",
        "properties": {
          "clusterName": {
            "description": "The name of your cluster.",
            "example": "cluster-name-vgl6t",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.CAArgument": {
        "description": "A single CLI argument injected into the cluster autoscaler.",
        "properties": {
          "value": {
            "description": "The injected value.",
            "type": "string"
          },
          "originalValue": {
            "description": "The original value before injection, if the flag already existed.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.CAPatchInfo": {
        "description": "Information about cluster autoscaler CLI arguments patched by CAST AI.",
        "properties": {
          "caArguments": {
            "additionalProperties": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.CAArgument"
            },
            "description": "Map of CLI flag names to their argument details.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.DrainFailureConfig": {
        "description": "Defines configuration for drain failure recovery behavior.",
        "properties": {
          "disableUncordon": {
            "description": "When true, drain-failed nodes will NOT be automatically uncordoned.",
            "nullable": true,
            "type": "boolean"
          },
          "uncordonAfterSeconds": {
            "description": "Time in seconds after which a drain-failed node should be automatically uncordoned.\nClamped to [3600, 259200] (1h–72h). Defaults to 10800 (3h).",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.EC2NodeClassMigrationIntent": {
        "properties": {
          "name": {
            "description": "Karpenter EC2NodeClass name.",
            "type": "string"
          },
          "castaiNodeConfigurationName": {
            "description": "The name given to the CAST AI Node Configuration after migration.",
            "type": "string"
          },
          "error": {
            "description": "Error describing why EC2NodeClass migration cannot be performed.\nDeprecated: Use errors instead.",
            "nullable": true,
            "type": "string",
            "deprecated": true
          },
          "valid": {
            "description": "Indicates whether EC2NodeClass migration intent can be executed.\nDeprecated: Use can_migrate instead.",
            "type": "boolean",
            "deprecated": true
          },
          "errorMessages": {
            "description": "Error messages describing why EC2NodeClass migration cannot be performed or won't be performed fully.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "canMigrate": {
            "description": "Indicates whether the EC2NodeClass can be migrated.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.EC2NodeClassMigrationResult": {
        "properties": {
          "name": {
            "description": "Karpenter EC2NodeClass name.",
            "type": "string"
          },
          "castaiNodeConfigurationName": {
            "description": "The name of the CAST AI Node Configuration.",
            "type": "string"
          },
          "castaiNodeConfigurationId": {
            "description": "The id of the CAST AI Node Configuration.",
            "type": "string"
          },
          "error": {
            "description": "Error describing why EC2NodeClass migration failed.\nDeprecated: Use errors instead.",
            "nullable": true,
            "type": "string",
            "deprecated": true
          },
          "success": {
            "description": "Indicates whether EC2NodeClass migration was successful.",
            "type": "boolean"
          },
          "errorMessages": {
            "description": "Error messages describing why EC2NodeClass migration failed or couldn't complete fully.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.EKSAgentScriptParams": {
        "description": "EKS specific properties.",
        "properties": {
          "region": {
            "description": "AWS region of your EKS cluster.",
            "example": "us-east-1",
            "type": "string"
          },
          "accountId": {
            "description": "Your AWS account id. Can be retrieved by executing `aws sts get-caller-identity`.",
            "example": "012345678901",
            "type": "string"
          },
          "clusterName": {
            "description": "The name of your EKS cluster.",
            "example": "cluster-name",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.ExecutionConditions": {
        "description": "Defines the conditions which must be met in order to fully execute the plan.",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "achievedSavingsPercentage": {
            "description": "Identifies the minimum percentage of cost savings relative to the original (blue) cost that should be achieved.\nThe rebalancing plan will not proceed after creating the nodes if the achieved savings percentage\nis not achieved. This field's value will not be considered if the initially predicted savings are negative.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GKEAgentScriptParams": {
        "description": "GKE specific properties.",
        "properties": {
          "region": {
            "description": "GCP region of your GKE cluster.",
            "example": "us-east4",
            "type": "string"
          },
          "projectId": {
            "description": "GCP project id in which your GKE cluster is created.",
            "example": "project-id-xxxxx",
            "type": "string"
          },
          "clusterName": {
            "description": "The name of your GKE cluster.",
            "example": "cluster-name",
            "type": "string"
          },
          "location": {
            "description": "Location of your GKE cluster.",
            "example": "us-east4-a",
            "type": "string"
          },
          "psc": {
            "title": "Cluster to be connected via GCP Private Service Connect",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GenerateRebalancingPlanResponse": {
        "description": "Defines the cluster rebalance response.",
        "properties": {
          "rebalancingPlanId": {
            "description": "ID of the rebalancing plan.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetClusterSettingsResponse": {
        "description": "Defines the cluster settings response.",
        "properties": {
          "evictorVersion": {
            "description": "Desired cluster evictor version.",
            "type": "string"
          },
          "evictorMaxTargetNodes": {
            "description": "Evictor maximum target nodes.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "arm64Supported": {
            "description": "Is ARM64 supported.",
            "type": "boolean"
          },
          "reservationsEnabled": {
            "description": "Is reservations support enabled.",
            "type": "boolean"
          },
          "priceThresholdZoneSpread": {
            "description": "Price threshold zone spread.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "ipThresholdSubnetSpread": {
            "description": "The threshold for minimal number of available IPs in a subnet to be considered for subnet spread.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "enableDefaultNodeTemplate": {
            "description": "Is default node template enabled.",
            "type": "boolean"
          },
          "agentVersion": {
            "description": "Return cluster agent version.",
            "type": "string"
          },
          "karpenterInstalled": {
            "description": "Indicates whether Karpenter is installed in the cluster.",
            "type": "boolean"
          },
          "karpenterVersion": {
            "description": "The version of Karpenter installed in the cluster. May be empty if Karpenter is not installed.",
            "nullable": true,
            "type": "string"
          },
          "windowsAutoscalingEnabled": {
            "description": "Is autoscaling of Windows nodes enabled.",
            "type": "boolean"
          },
          "caPatchInfo": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.CAPatchInfo"
          }
        },
        "required": [
          "arm64Supported",
          "enableDefaultNodeTemplate",
          "evictorVersion",
          "karpenterInstalled",
          "reservationsEnabled"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetClusterWorkloadsResponse": {
        "description": "Defines the cluster workloads response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster that is being rebalanced.",
            "type": "string"
          },
          "workloads": {
            "description": "A list of workloads.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload"
            },
            "type": "array"
          }
        },
        "required": [
          "clusterId",
          "workloads"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload": {
        "description": "Defines a cluster workload.",
        "properties": {
          "name": {
            "description": "Workload name.",
            "type": "string"
          },
          "resource": {
            "description": "Kubernetes resource name.",
            "type": "string"
          },
          "namespace": {
            "description": "Workload namespace.",
            "type": "string"
          },
          "costImpact": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.CostImpact"
          },
          "replicas": {
            "description": "Replicas count.",
            "format": "int32",
            "type": "integer"
          },
          "milliCpu": {
            "description": "Total milli CPU capacity of this workload.",
            "format": "int32",
            "type": "integer"
          },
          "memoryMib": {
            "description": "Total memory capacity of this workload in MiBs.",
            "format": "int32",
            "type": "integer"
          },
          "nodes": {
            "description": "Nodes used by this workload.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.Node"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.WorkloadStatus"
          },
          "issues": {
            "description": "A list of workload issues.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.Issue"
            },
            "type": "array"
          }
        },
        "required": [
          "costImpact",
          "issues",
          "memoryMib",
          "milliCpu",
          "name",
          "namespace",
          "nodes",
          "replicas",
          "resource",
          "status"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.CostImpact": {
        "description": "Defines the cost impact of rebalancing a workload.",
        "properties": {
          "level": {
            "description": "Cost impact level.\n\n* `low` - low cost impact.\n* `medium` - medium cost impact.\n* `high` - high cost impact.",
            "type": "string"
          },
          "value": {
            "description": "Numeric cost impact value.",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "level",
          "value"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.Issue": {
        "description": "Defines the workload rebalancing issue.",
        "properties": {
          "kind": {
            "description": "Issue kind.",
            "type": "string"
          },
          "description": {
            "title": "Issue description",
            "type": "string"
          }
        },
        "required": [
          "description",
          "kind"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.Node": {
        "description": "Defines a workload node.",
        "properties": {
          "id": {
            "description": "Node id.",
            "type": "string"
          },
          "name": {
            "description": "Node name.",
            "type": "string"
          },
          "specs": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.Node.Specifications"
          },
          "status": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.Node.NodeStatus"
          },
          "totalPods": {
            "description": "Pods count in node.",
            "format": "int32",
            "type": "integer"
          },
          "totalProblematicPods": {
            "description": "Problematic pods count in node.",
            "format": "int32",
            "type": "integer"
          },
          "workloadReplicas": {
            "description": "How many of this workload replicas exist on this particular node.",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "specs",
          "status",
          "totalPods",
          "totalProblematicPods",
          "workloadReplicas"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.Node.NodeStatus": {
        "description": "Defines the migration status.",
        "properties": {
          "migrationStatus": {
            "description": "Migration status.\n\n* `ready` - node is ready to be rebalanced.\n* `not-ready` - node is not ready to be rebalanced.",
            "type": "string"
          },
          "reason": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.Node.NotReadyStatusReason"
          }
        },
        "required": [
          "migrationStatus",
          "reason"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.Node.NotReadyStatusReason": {
        "default": "Invalid",
        "description": "Defines the reason for the node to be considered as not ready.",
        "enum": [
          "Invalid",
          "ProblematicWorkloads",
          "AlreadyRebalancing",
          "RebalancingNodeDrainFailed"
        ],
        "type": "string"
      },
      "castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.Node.Specifications": {
        "description": "Defines node specifications.",
        "properties": {
          "milliCpu": {
            "description": "Total milli CPU capacity of this node.",
            "format": "int32",
            "type": "integer"
          },
          "memoryMib": {
            "description": "Total memory capacity of this node in MiBs.",
            "format": "int32",
            "type": "integer"
          },
          "instanceType": {
            "description": "Instance type of this node.",
            "type": "string"
          }
        },
        "required": [
          "instanceType",
          "memoryMib",
          "milliCpu"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetClusterWorkloadsResponse.Workload.WorkloadStatus": {
        "properties": {
          "migrationStatus": {
            "description": "* `ready` - the workload can be rebalanced.\n* `not-ready` - the workload cannot be rebalanced.",
            "title": "Migration status",
            "type": "string"
          }
        },
        "required": [
          "migrationStatus"
        ],
        "title": "Defines migration status",
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetKarpenterMigrationIntentResponse": {
        "properties": {
          "awsNodeTemplates": {
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.AWSNodeTemplateMigrationIntent"
            },
            "type": "array"
          },
          "provisioners": {
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.ProvisionerMigrationIntent"
            },
            "type": "array"
          },
          "ec2NodeClasses": {
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.EC2NodeClassMigrationIntent"
            },
            "type": "array"
          },
          "nodePools": {
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.NodePoolMigrationIntent"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetProblematicNodesResponse": {
        "description": "Defines the requests for getting problematic nodes for a specific cluster.",
        "properties": {
          "clusterId": {
            "description": "The id of the cluster.",
            "type": "string"
          },
          "nodes": {
            "description": "Problematic nodes.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetProblematicNodesResponse.Node"
            },
            "type": "array"
          },
          "hasProblems": {
            "description": "Identifies whether cluster contains any problems.",
            "type": "boolean"
          }
        },
        "required": [
          "clusterId",
          "hasProblems",
          "nodes"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetProblematicNodesResponse.Node": {
        "description": "Defines a problematic node.",
        "properties": {
          "nodeId": {
            "description": "ID of the node.",
            "type": "string"
          },
          "name": {
            "description": "Name of the node.",
            "type": "string"
          },
          "problems": {
            "description": "List of controller problems.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "nodeId",
          "problems"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetProblematicWorkloadsResponse": {
        "description": "Defines the requests for getting problematic workloads for a specific cluster.",
        "properties": {
          "clusterId": {
            "description": "The id of the cluster.",
            "type": "string"
          },
          "controllers": {
            "description": "Problematic workload controllers.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetProblematicWorkloadsResponse.Controller"
            },
            "type": "array"
          },
          "standalonePods": {
            "description": "Problematic standalone pods.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetProblematicWorkloadsResponse.StandalonePod"
            },
            "type": "array"
          },
          "hasProblems": {
            "description": "Identifies whether cluster contains any problems.",
            "type": "boolean"
          }
        },
        "required": [
          "clusterId",
          "controllers",
          "hasProblems",
          "standalonePods"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetProblematicWorkloadsResponse.Controller": {
        "description": "Defines a problematic workloads controller.",
        "properties": {
          "name": {
            "description": "Name of the controller.",
            "type": "string"
          },
          "kind": {
            "description": "Kind of the controller.",
            "type": "string"
          },
          "problems": {
            "description": "List of controller problems.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "kind",
          "name",
          "problems"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetProblematicWorkloadsResponse.StandalonePod": {
        "description": "Defines a problematic standalone pod.",
        "properties": {
          "name": {
            "description": "Name of the pod.",
            "type": "string"
          },
          "problems": {
            "description": "List of pod problems.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "problems"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetRebalancedWorkloadsResponse": {
        "description": "Defines the rebalanced workloads response.",
        "properties": {
          "isActive": {
            "description": "Whether rebalancing is active or not.",
            "type": "boolean"
          },
          "selectors": {
            "description": "Label selectors matching workloads which are being rebalanced.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetRebalancedWorkloadsResponse.LabelSelector"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetRebalancedWorkloadsResponse.LabelSelector": {
        "description": "Selector is a proto mirror of the metav1.LabelSelector K8s API object. Properties `match_labels` and\n`match_expressions` are ANDed.",
        "properties": {
          "matchLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Used to query resource labels.",
            "type": "object"
          },
          "matchExpressions": {
            "description": "A more advanced label query with operators. Multiple expressions are ANDed.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetRebalancedWorkloadsResponse.LabelSelector.Expression"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetRebalancedWorkloadsResponse.LabelSelector.Expression": {
        "description": "Expression is a proto mirror of the metav1.LabelSelectorRequirement K8s API object.",
        "properties": {
          "key": {
            "description": "Key is a label.",
            "type": "string"
          },
          "operator": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.GetRebalancedWorkloadsResponse.LabelSelector.Expression.Operator"
          },
          "values": {
            "description": "Values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the\noperator is Exists or DoesNotExist, the values array must be empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.GetRebalancedWorkloadsResponse.LabelSelector.Expression.Operator": {
        "default": "Invalid",
        "description": "A set of operators which can be used in the label selector expressions.",
        "enum": [
          "Invalid",
          "In",
          "NotIn",
          "Exists",
          "DoesNotExist"
        ],
        "type": "string"
      },
      "castai.autoscaler.v1beta1.KOPSAgentScriptParams": {
        "description": "KOPS specific properties.",
        "properties": {
          "csp": {
            "$ref": "#/components/schemas/castai.v1.Cloud"
          },
          "region": {
            "description": "The region of your kOps cluster. Region is CSP specific.",
            "example": "us-east-1",
            "type": "string"
          },
          "clusterName": {
            "description": "The name of your kOps cluster.",
            "example": "cluster-name.kops.local",
            "type": "string"
          },
          "stateStore": {
            "description": "The kOps cluster state store. Only remote S3 state is supported at the moment.",
            "example": "s3://bucket",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.ListRebalancingPlansFilter": {
        "properties": {
          "statuses": {
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.Status"
            },
            "title": "Status list filter",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.ListRebalancingPlansResponse": {
        "description": "Defines list cluster rebalancing plans response.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.MigrateKarpenterDefinitionsResponse": {
        "properties": {
          "awsNodeTemplates": {
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.AWSNodeTemplateMigrationResult"
            },
            "type": "array"
          },
          "provisioners": {
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.ProvisionerMigrationResult"
            },
            "type": "array"
          },
          "ec2NodeClasses": {
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.EC2NodeClassMigrationResult"
            },
            "type": "array"
          },
          "nodePools": {
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.NodePoolMigrationResult"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.NodePoolMigrationIntent": {
        "properties": {
          "name": {
            "description": "Karpenter NodePool name.",
            "type": "string"
          },
          "ec2NodeClassName": {
            "description": "Karpenter's EC2NodeClass name that this NodePool is referencing.",
            "type": "string"
          },
          "castaiNodeTemplateName": {
            "description": "The name given to the CAST AI Node Template after migration.",
            "type": "string"
          },
          "error": {
            "description": "Error describing why NodePool migration cannot be performed.\nDeprecated: Use errors instead.",
            "nullable": true,
            "type": "string",
            "deprecated": true
          },
          "valid": {
            "description": "Indicates whether NodePool migration intent can be executed.\nDeprecated: Use can_migrate instead.",
            "type": "boolean",
            "deprecated": true
          },
          "errorMessages": {
            "description": "Error messages describing why NodePool migration cannot be performed or won't be performed fully.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "canMigrate": {
            "description": "Indicates whether the NodePool can be migrated.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.NodePoolMigrationResult": {
        "properties": {
          "name": {
            "description": "Karpenter NodePool name.",
            "type": "string"
          },
          "castaiNodeTemplateName": {
            "description": "The name of the CAST AI Node Template.",
            "type": "string"
          },
          "castaiNodeTemplateId": {
            "description": "The id of the CAST AI Node Template.",
            "type": "string"
          },
          "ec2NodeClassName": {
            "description": "Karpenter's EC2NodeClass name that this NodePool is referencing.",
            "type": "string"
          },
          "error": {
            "description": "Error describing why NodePool migration failed.\nDeprecated: Use errors instead.",
            "nullable": true,
            "type": "string",
            "deprecated": true
          },
          "success": {
            "description": "Indicates whether NodePool migration was successful.",
            "type": "boolean"
          },
          "errorMessages": {
            "description": "Error messages describing why NodePool migration failed or couldn't complete fully.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.OpenshiftAgentScriptParams": {
        "description": "Openshift specific properties.",
        "properties": {
          "csp": {
            "$ref": "#/components/schemas/castai.v1.Cloud"
          },
          "region": {
            "description": "The region of your OpenShift cluster. Region is CSP specific.",
            "example": "us-east-1",
            "type": "string"
          },
          "clusterName": {
            "description": "The name of your OpenShift cluster.",
            "example": "cluster-name-vgl6t",
            "type": "string"
          },
          "internalId": {
            "description": "The OpenShift cluster ID. It can be found in the ClusterVersion object.\n\n[Link to docs](https://docs.openshift.com/container-platform/4.8/support/gathering-cluster-data.html#support-get-cluster-id_gathering-cluster-data).",
            "example": "00000000-0000-0000-0000-000000000000",
            "type": "string"
          },
          "runAsUser": {
            "description": "The uid of the user that runs the agent pod.",
            "example": "1002000",
            "type": "string"
          },
          "runAsGroup": {
            "description": "The gid of the user that runs the agent pod.",
            "example": "1002000",
            "type": "string"
          },
          "fsGroup": {
            "description": "The gid of the user that owns the agent pod's volumes.",
            "example": "1002000",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.Os": {
        "default": "unknown",
        "enum": [
          "unknown",
          "linux",
          "windows"
        ],
        "title": "A set of operating system",
        "type": "string"
      },
      "castai.autoscaler.v1beta1.PausedDrainConfig": {
        "description": "Defines configuration of a paused draining feature. Requires feature flag to be enabled.",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "timeoutSeconds": {
            "description": "Maximum time in seconds for which nodes will stay cordoned during paused draining phase.\nAfter that time, nodes will be automatically uncordoned by the Autoscaler's node deletion policy (if enabled).",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.ProvisionerMigrationIntent": {
        "properties": {
          "name": {
            "description": "Karpenter Provisioner name.",
            "type": "string"
          },
          "awsNodeTemplateName": {
            "description": "Karpenter's AWSNodeTemplate name that this Provisioner is referencing.",
            "type": "string"
          },
          "castaiNodeTemplateName": {
            "description": "The name given to the CAST AI Node Template after migration.",
            "type": "string"
          },
          "error": {
            "description": "Error describing why Provisioner migration cannot be performed.\nDeprecated: Use errors instead.",
            "nullable": true,
            "type": "string",
            "deprecated": true
          },
          "valid": {
            "description": "Indicates whether Provisioner migration intent can be executed.\nDeprecated: Use can_migrate instead.",
            "type": "boolean",
            "deprecated": true
          },
          "errorMessages": {
            "description": "Error messages describing why Provisioner migration cannot be performed or won't be performed fully.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "canMigrate": {
            "description": "Indicates whether the Provisioner can be migrated.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.ProvisionerMigrationResult": {
        "properties": {
          "name": {
            "description": "Karpenter Provisioner name.",
            "type": "string"
          },
          "castaiNodeTemplateName": {
            "description": "The name of the CAST AI Node Template.",
            "type": "string"
          },
          "castaiNodeTemplateId": {
            "description": "The id of the CAST AI Node Template.",
            "type": "string"
          },
          "awsNodeTemplateName": {
            "description": "Karpenter's AWSNodeTemplate name that this Provisioner is referencing.",
            "type": "string"
          },
          "error": {
            "description": "Error describing why Provisioner migration failed.\nDeprecated: Use errors instead.",
            "nullable": true,
            "type": "string",
            "deprecated": true
          },
          "success": {
            "description": "Indicates whether Provisioner migration was successful.",
            "type": "boolean"
          },
          "errorMessages": {
            "description": "Error messages describing why Provisioner migration failed or couldn't complete fully.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingNode": {
        "properties": {
          "nodeId": {
            "title": "Node ID to rebalance",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse": {
        "description": "Defines the cluster rebalancing plan response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster that is being rebalanced.\n\nID of the rebalancing plan.",
            "type": "string"
          },
          "rebalancingPlanId": {
            "type": "string"
          },
          "createdAt": {
            "description": "Timestamp of the rebalancing plan creation.",
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "description": "Timestamp of the rebalancing plan last update.",
            "format": "date-time",
            "type": "string"
          },
          "minNodes": {
            "description": "Minimum count of worker nodes to be had in the rebalancing plan. Default is 3.",
            "format": "int32",
            "type": "integer"
          },
          "status": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.Status"
          },
          "configurations": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations"
          },
          "operations": {
            "description": "List of operations needed to execute this rebalancing plan. Documents the factual actions needed to be taken and/or\nactions already done.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation"
            },
            "type": "array"
          },
          "generatedAt": {
            "description": "Timestamp of the rebalancing plan generation.",
            "format": "date-time",
            "type": "string"
          },
          "triggeredAt": {
            "description": "Timestamp of the rebalancing plan triggering.",
            "format": "date-time",
            "type": "string"
          },
          "createdNodesAt": {
            "description": "Timestamp of the rebalancing plan green node creation.",
            "format": "date-time",
            "type": "string"
          },
          "drainedNodesAt": {
            "description": "Timestamp of the rebalancing plan blue node draining.",
            "format": "date-time",
            "type": "string"
          },
          "deletedNodesAt": {
            "description": "Timestamp of the rebalancing plan blue node deletion.",
            "format": "date-time",
            "type": "string"
          },
          "finishedAt": {
            "description": "Timestamp of the rebalancing plan finishing.",
            "format": "date-time",
            "type": "string"
          },
          "errors": {
            "description": "Detailed error of rebalancing plan.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.PlanError"
            },
            "type": "array"
          },
          "rebalancingNodeIds": {
            "description": "Subset of the node IDs which were selected to rebalance. In case of full cluster rebalancing, this list\nwill be empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "executionConditions": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.ExecutionConditions"
          },
          "keepDrainTimeoutNodes": {
            "title": "Deprecated: use evict_gracefully instead",
            "type": "boolean"
          },
          "evictGracefully": {
            "description": "During the drain & delete plan execution phase, if node eviction reaches a timeout, it will be deleted forcefully, terminating all workloads that failed to gracefully close on time.\nWhen this option is enabled, such nodes will be kept for manual inspection and/or eventual automatic cleanup when node becomes empty.\nSpecial annotation \"rebalancing.cast.ai/status=drain-failed\" will be added to these nodes.",
            "type": "boolean"
          },
          "scheduleId": {
            "description": "Defines the schedule ID that triggered the creation of this rebalancing plan. Can be null if the rebalancing\nplan didn't originate from a rebalancing schedule.",
            "nullable": true,
            "type": "string"
          },
          "aggressiveMode": {
            "description": "When enabled will also consider rebalancing problematic pods (pods without controller, job pods, pods with removal-disabled annotation).\n\nDeprecated: use AggressiveModeConfig instead.",
            "nullable": true,
            "type": "boolean",
            "deprecated": true
          },
          "pausedDrainConfig": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.PausedDrainConfig"
          },
          "aggressiveModeConfig": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.AggressiveModeConfig"
          },
          "drainFailureConfig": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.DrainFailureConfig"
          }
        },
        "required": [
          "clusterId",
          "configurations",
          "createdAt",
          "evictGracefully",
          "executionConditions",
          "minNodes",
          "operations",
          "rebalancingNodeIds",
          "status",
          "updatedAt"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations": {
        "description": "Defines the cluster rebalancing plan configurations.",
        "properties": {
          "blue": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Configuration"
          },
          "green": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Configuration"
          },
          "diff": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Diff"
          },
          "achievedDiff": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Diff"
          },
          "achieved": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.ConfigurationTotals"
          },
          "recommendations": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Recommendations"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Configuration": {
        "description": "Defines a single rebalancing plan configuration.",
        "properties": {
          "nodes": {
            "description": "A list of node in this configuration.",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Configuration.Node"
            },
            "type": "array"
          },
          "totals": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Totals"
          },
          "clusterTotals": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Totals"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Configuration.Node": {
        "description": "Defines a single node in the configuration.",
        "properties": {
          "isControlPlane": {
            "description": "Whether this node is control plan node.",
            "type": "boolean"
          },
          "instanceType": {
            "description": "The instance type of this node.",
            "type": "string"
          },
          "milliCpu": {
            "description": "Milli CPU capacity of this node.",
            "format": "int32",
            "type": "integer"
          },
          "memoryMib": {
            "description": "Memory capacity of this node in MiBs.",
            "format": "int32",
            "type": "integer"
          },
          "isSpot": {
            "description": "Whether this node is a spot instance.",
            "type": "boolean"
          },
          "priceHourly": {
            "description": "The hourly price of this node in $ currency.",
            "type": "string"
          },
          "isLegacy": {
            "description": "Whether the node is legacy.",
            "type": "boolean"
          },
          "totalPods": {
            "description": "Total number of pods in this node.",
            "format": "int32",
            "type": "integer"
          },
          "name": {
            "description": "Name of the node.",
            "type": "string"
          },
          "managedBy": {
            "description": "The provider name which managed this node.\n\nPossible types:\n* `CASTAI` - the node is managed by CAST AI.\n* `EKS` - the node is managed by the AWS EKS service.\n* `GKE` - the node is managed by the GCP GKE service.\n* `AKS` - the node is managed by the Azure AKS service.\n* `KOPS` - the node is managed by the cluster manager tool kOps.",
            "type": "string"
          },
          "totalProblematicPods": {
            "description": "Total number of problematic pods in this node.",
            "format": "int32",
            "type": "integer"
          },
          "createdAt": {
            "description": "Timestamp of the node creation date.",
            "format": "date-time",
            "type": "string"
          },
          "isSpotFallback": {
            "description": "Whether this node is a spot fallback.",
            "type": "boolean"
          },
          "id": {
            "description": "Node ID, if the node already exists.\nGreen nodes, to be created, won't have node_id.",
            "nullable": true,
            "type": "string"
          },
          "provisionedNode": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Configuration.ProvisionedNode"
          },
          "os": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.Os"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Configuration.ProvisionedNode": {
        "description": "Defines a provisioned version of the node in the configuration.",
        "properties": {
          "instanceType": {
            "description": "The instance type of this node.",
            "type": "string"
          },
          "milliCpu": {
            "description": "Milli CPU capacity of this node.",
            "format": "int32",
            "type": "integer"
          },
          "memoryMib": {
            "description": "Memory capacity of this node in MiBs.",
            "format": "int32",
            "type": "integer"
          },
          "isSpot": {
            "description": "Whether this node is a spot instance.",
            "type": "boolean"
          },
          "priceHourly": {
            "description": "The hourly price of this node in $ currency.",
            "type": "string"
          },
          "createdAt": {
            "description": "Timestamp of the node creation date.",
            "format": "date-time",
            "type": "string"
          },
          "isSpotFallback": {
            "description": "Whether this node is a spot fallback.",
            "type": "boolean"
          },
          "os": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.Os"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.ConfigurationTotals": {
        "description": "Contains affected and cluster node aggregated calculations.",
        "properties": {
          "affectedNodeTotals": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Totals"
          },
          "clusterTotals": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Totals"
          }
        },
        "required": [
          "affectedNodeTotals",
          "clusterTotals"
        ],
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Diff": {
        "description": "Defines the difference between blue and green node configurations.",
        "properties": {
          "priceHourly": {
            "description": "Hourly price difference between blue and green node configurations in $ currency.",
            "type": "string"
          },
          "priceMonthly": {
            "description": "Monthly price difference between blue and green node configurations in $ currency.",
            "type": "string"
          },
          "savingsPercentage": {
            "description": "Savings percentage achieved by rebalancing the selected nodes.",
            "type": "string"
          },
          "clusterSavingsPercentage": {
            "description": "Saving percentage achieved by rebalancing the selected nodes for the whole cluster.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Recommendations": {
        "properties": {
          "applied": {
            "title": "Applied indicates whether recommendations (e.g. WOOP) impacts rebalancing",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Configurations.Totals": {
        "description": "Defines the totals of a single configuration.",
        "properties": {
          "nodes": {
            "description": "Count of nodes in this configuration.",
            "format": "int32",
            "type": "integer"
          },
          "replaceableNodes": {
            "description": "Count of nodes which can be replaced in this configuration.",
            "format": "int32",
            "type": "integer"
          },
          "migratablePods": {
            "description": "Count of pods which can be migrated. They come from replaceable nodes.",
            "format": "int32",
            "type": "integer"
          },
          "milliCpu": {
            "description": "Total milli CPU capacity of this configuration.",
            "format": "int32",
            "type": "integer"
          },
          "memoryMib": {
            "description": "Total memory capacity of this configuration in MiBs.",
            "format": "int32",
            "type": "integer"
          },
          "priceHourly": {
            "description": "Total hourly price of this configuration in $ currency.",
            "type": "string"
          },
          "priceMonthly": {
            "description": "Total monthly price of this configuration in $ currency.",
            "type": "string"
          },
          "pods": {
            "description": "Total number of pods in this configuration.",
            "format": "int32",
            "type": "integer"
          },
          "problematicPods": {
            "description": "Total number of problematic pods in this configuration.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation": {
        "description": "Defines an actual action needed to be taken and/or already done.",
        "properties": {
          "id": {
            "description": "The id of the operation.",
            "type": "string"
          },
          "nodeId": {
            "description": "The id of the node this operation will be executed on.",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation.Type"
          },
          "createdAt": {
            "description": "Timestamp of the operation creation.",
            "format": "date-time",
            "type": "string"
          },
          "error": {
            "description": "Error value if the operation has finished with an error.",
            "nullable": true,
            "type": "string"
          },
          "finishedAt": {
            "description": "Timestamp of the operation finish date. Only present when the operation has finished, either with an error or not.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "createParams": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation.CreateParams"
          },
          "prepareParams": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation.PrepareParams"
          },
          "drainParams": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation.DrainParams"
          },
          "deleteParams": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation.DeleteParams"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation.CreateParams": {
        "description": "Defines the parameters used for the `create_node` operation type.",
        "properties": {
          "csp": {
            "description": "The cloud service provider name.",
            "type": "string"
          },
          "instanceType": {
            "description": "The instance type of the created node.",
            "type": "string"
          },
          "volumeSizeGib": {
            "description": "The volume size in GiB of the created node.",
            "format": "int32",
            "type": "integer"
          },
          "isSpot": {
            "description": "Whether the created node is a spot instance.",
            "type": "boolean"
          },
          "azName": {
            "description": "The availability zone name of the created node. If empty - the AZ name will be random.",
            "nullable": true,
            "type": "string"
          },
          "subnetId": {
            "description": "The subnet id of the created node. if empty - the subnet id will be random based on the availability zone.",
            "nullable": true,
            "type": "string"
          },
          "isSpotFallback": {
            "description": "Whether the node is a spot fallback.",
            "type": "boolean"
          },
          "nodeConfigurationId": {
            "description": "Node configuration ID to be used for the new node.",
            "type": "string"
          },
          "spotReliabilityScore": {
            "format": "float",
            "nullable": true,
            "title": "Spot reliability score",
            "type": "number"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation.DeleteParams": {
        "description": "Defines the parameters for the `delete_node` operation type.",
        "properties": {
          "csp": {
            "description": "The cloud service provider name.",
            "type": "string"
          },
          "instanceType": {
            "description": "The instance type of the node.",
            "type": "string"
          },
          "isSpot": {
            "description": "Whether the node is a spot instance.",
            "type": "boolean"
          },
          "isSpotFallback": {
            "description": "Whether the node is a spot fallback.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation.DrainParams": {
        "description": "Defines the parameters for the `drain_node` operation type.",
        "properties": {
          "csp": {
            "description": "The cloud service provider name.",
            "type": "string"
          },
          "instanceType": {
            "description": "The instance type of the node.",
            "type": "string"
          },
          "isSpot": {
            "description": "Whether the node is a spot instance.",
            "type": "boolean"
          },
          "isSpotFallback": {
            "description": "Whether the node is a spot fallback.",
            "type": "boolean"
          },
          "drainTimeout": {
            "description": "The drain timeout (default is 20m if not present).",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation.PrepareParams": {
        "description": "Defines the parameters for the `prepare_node` operation type.",
        "properties": {
          "csp": {
            "description": "The cloud service provider name.",
            "type": "string"
          },
          "instanceType": {
            "description": "The instance type of the node.",
            "type": "string"
          },
          "isSpot": {
            "description": "Whether the node is a spot instance.",
            "type": "boolean"
          },
          "isSpotFallback": {
            "description": "Whether the node is a spot fallback.",
            "type": "boolean"
          },
          "spotReliabilityScore": {
            "format": "float",
            "nullable": true,
            "title": "Spot reliability score",
            "type": "number"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.Operation.Type": {
        "default": "invalid",
        "description": "Type of the operation.\n\nPossible types:\n* `create_node` - a node will be created with specific `create` `params`.\n* `prepare_node` - a node will be prepared with specific `prepared` `params`.\n* `drain_node` - a node will be drained with specific `drain` `params`.\n* `delete_node` - a node will be deleted with specific `delete` `params`.",
        "enum": [
          "invalid",
          "create_node",
          "prepare_node",
          "drain_node",
          "delete_node"
        ],
        "type": "string"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.PlanError": {
        "description": "Detailed error.",
        "properties": {
          "pod": {
            "description": "Pod name.",
            "nullable": true,
            "type": "string"
          },
          "node": {
            "description": "Node id.",
            "nullable": true,
            "type": "string"
          },
          "reason": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingPlanResponse.PlanError.Reason"
          },
          "message": {
            "description": "Detailed error message.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.autoscaler.v1beta1.RebalancingPlanResponse.PlanError.Reason": {
        "default": "invalid",
        "description": "Defines the reason why the rebalancing plan failed.\n\n* `rebalancing_plan_generation_failed` - the rebalancing plan generation failed.\n* `upscaling_failed` - the upscaling of the cluster failed.\n* `node_drain_failed` - the drain of a node failed.\n* `node_create_failed` - the creation of a node failed.\n* `node_prepare_failed` - the preparation of a node failed.\n* `node_delete_failed` - the deletion of a node failed.\n* `rebalancing_plan_timeout` - the rebalancing plan timed out.\n* `achieved_savings_below_threshold` - the achieved savings are below the threshold.\n* `unknown` - the reason is unknown.",
        "enum": [
          "invalid",
          "rebalancingPlanGenerationFailed",
          "upscalingFailed",
          "nodeDrainFailed",
          "nodeCreateFailed",
          "nodePrepareFailed",
          "nodeDeleteFailed",
          "rebalancingPlanTimeout",
          "achievedSavingsBelowThreshold",
          "unknown"
        ],
        "type": "string"
      },
      "castai.autoscaler.v1beta1.Status": {
        "default": "invalid",
        "description": "Status of the rebalancing plan.\n\n* `generating` - the rebalancing plan is new and currently is being generated.\n* `generated` - the rebalancing plan has been generated and can be previewed.\n* `creating_nodes` - the rebalancing plan is being executed, green nodes are being created.\n* `preparing_nodes` - the rebalancing plan is being executed, green nodes are being prepared.\n* `draining_nodes` - the rebalancing plan is being executed, blue nodes are being drained.\n* `deleting_nodes` - the rebalancing plan is being executed, blue nodes are being deleted.\n* `finished` - the rebalancing plan has finished successfully.\n* `partially_finished` - the rebalancing plan has partially finished. Used when graceful rebalancing is enabled.\n* `error` - the rebalancing plan has failed.",
        "enum": [
          "invalid",
          "generating",
          "generated",
          "creating_nodes",
          "preparing_nodes",
          "draining_nodes",
          "deleting_nodes",
          "finished",
          "error",
          "partially_finished"
        ],
        "type": "string"
      },
      "castai.evictor.v1.AdvancedConfig": {
        "description": "AdvancedConfig the evictor advanced configuration.",
        "properties": {
          "evictionConfig": {
            "items": {
              "$ref": "#/components/schemas/castai.evictor.v1.EvictionConfig"
            },
            "title": "EvictionConfig specific settings targeting pods and nodes",
            "type": "array"
          }
        },
        "required": [
          "evictionConfig"
        ],
        "type": "object"
      },
      "castai.evictor.v1.EvictionConfig": {
        "description": "EvictionConfig used to specify more granular settings per node/pod filters.",
        "properties": {
          "nodeSelector": {
            "$ref": "#/components/schemas/castai.evictor.v1.NodeSelector"
          },
          "podSelector": {
            "$ref": "#/components/schemas/castai.evictor.v1.PodSelector"
          },
          "settings": {
            "$ref": "#/components/schemas/castai.evictor.v1.EvictionSettings"
          }
        },
        "required": [
          "settings"
        ],
        "type": "object"
      },
      "castai.evictor.v1.EvictionSettings": {
        "properties": {
          "removalDisabled": {
            "$ref": "#/components/schemas/castai.evictor.v1.EvictionSettings.SettingEnabled"
          },
          "aggressive": {
            "$ref": "#/components/schemas/castai.evictor.v1.EvictionSettings.SettingEnabled"
          },
          "disposable": {
            "$ref": "#/components/schemas/castai.evictor.v1.EvictionSettings.SettingEnabled"
          }
        },
        "title": "EvictionSettings defines eviction settings",
        "type": "object"
      },
      "castai.evictor.v1.EvictionSettings.SettingEnabled": {
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "title": "SettingEnabled specify if the current setting is enabled/disabled",
        "type": "object"
      },
      "castai.evictor.v1.GetAdvancedConfigResponse": {
        "description": "Defines response object of fetched cluster evictor advanced config changes.",
        "properties": {
          "advancedConfig": {
            "$ref": "#/components/schemas/castai.evictor.v1.AdvancedConfig"
          }
        },
        "type": "object"
      },
      "castai.evictor.v1.LabelSelector": {
        "description": "LabelSelector is a proto mirror of the metav1.LabelSelector K8s API object. Properties `match_labels` and\n`match_expressions` are ANDed.",
        "properties": {
          "matchLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Used to query resource labels.",
            "type": "object"
          },
          "matchExpressions": {
            "description": "A more advanced label query with operators. Multiple expressions are ANDed.",
            "items": {
              "$ref": "#/components/schemas/castai.evictor.v1.LabelSelector.Expression"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.evictor.v1.LabelSelector.Expression": {
        "description": "Expression is a proto mirror of the metav1.LabelSelectorRequirement K8s API object.",
        "properties": {
          "key": {
            "description": "Key is a label.",
            "type": "string"
          },
          "operator": {
            "$ref": "#/components/schemas/castai.evictor.v1.LabelSelector.Expression.Operator"
          },
          "values": {
            "description": "Values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the\noperator is Exists or DoesNotExist, the values array must be empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "key",
          "operator"
        ],
        "type": "object"
      },
      "castai.evictor.v1.LabelSelector.Expression.Operator": {
        "default": "Invalid",
        "description": "Operator set of operators which can be used in the label selector expressions.",
        "enum": [
          "Invalid",
          "In",
          "NotIn",
          "Exists",
          "DoesNotExist"
        ],
        "type": "string"
      },
      "castai.evictor.v1.NodeSelector": {
        "properties": {
          "labelSelector": {
            "$ref": "#/components/schemas/castai.evictor.v1.LabelSelector"
          }
        },
        "required": [
          "labelSelector"
        ],
        "title": "NodeSelector a set of constrains for targeting Nodes",
        "type": "object"
      },
      "castai.evictor.v1.PodSelector": {
        "properties": {
          "namespace": {
            "title": "namespace for the pod",
            "type": "string"
          },
          "kind": {
            "title": "kind can be Pod, Job, CronJob",
            "type": "string"
          },
          "labelSelector": {
            "$ref": "#/components/schemas/castai.evictor.v1.LabelSelector"
          },
          "replicasMin": {
            "format": "int32",
            "nullable": true,
            "title": "targets only workloads that have at least replicas_min replicas",
            "type": "integer"
          }
        },
        "title": "PodSelector a set of constrains for targeting pods",
        "type": "object"
      },
      "castai.evictor.v1.UpsertAdvancedConfigResponse": {
        "description": "Defines response object for cluster evictor advanced config changes.",
        "properties": {
          "advancedConfig": {
            "$ref": "#/components/schemas/castai.evictor.v1.AdvancedConfig"
          }
        },
        "type": "object"
      },
      "castai.features.v1.Comparison": {
        "description": "Comparison represents a entity to entity ID comparison.",
        "properties": {
          "entityType": {
            "$ref": "#/components/schemas/castai.features.v1.EntityType"
          },
          "operator": {
            "$ref": "#/components/schemas/castai.features.v1.Operator"
          },
          "entityId": {
            "description": "The entity ID to compare against (e.g., \"da7a9f8d-ed18-40c3-89a7-93a81283af62\").",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.features.v1.Condition": {
        "description": "Represents a condition, which can be a comparison or a nested query.",
        "properties": {
          "comparison": {
            "$ref": "#/components/schemas/castai.features.v1.Comparison"
          },
          "nestedQuery": {
            "$ref": "#/components/schemas/castai.features.v1.QueryExpression"
          }
        },
        "type": "object"
      },
      "castai.features.v1.DefaultRule": {
        "description": "DefaultRule is a rule which gets triggered when no targeting rule matches.",
        "properties": {
          "variationName": {
            "description": "Variation name that this targeting rule will be used for.",
            "type": "string"
          },
          "name": {
            "description": "Name of a targeting rule.",
            "nullable": true,
            "type": "string"
          },
          "query": {
            "description": "Query of a targeting rule which allows to specify certain matching logic.",
            "nullable": true,
            "type": "string"
          },
          "percentage": {
            "$ref": "#/components/schemas/castai.features.v1.Percentage"
          },
          "managedBy": {
            "description": "Managed by showing if this rule can be managed through api or yaml.",
            "type": "string"
          }
        },
        "required": [
          "managedBy",
          "variationName"
        ],
        "type": "object"
      },
      "castai.features.v1.DeleteFeatureResponse": {
        "type": "object"
      },
      "castai.features.v1.DeleteTargetingRuleResponse": {
        "type": "object"
      },
      "castai.features.v1.DisableByNameResponse": {
        "description": "DisableByNameResponse response body used to respond with the current flag details.",
        "properties": {
          "feature": {
            "$ref": "#/components/schemas/castai.features.v1.Feature"
          }
        },
        "type": "object"
      },
      "castai.features.v1.DisableMessage": {
        "description": "DisableMessage message used in DisableFeature rpc.",
        "properties": {
          "entityType": {
            "$ref": "#/components/schemas/castai.features.v1.EntityType"
          },
          "entityIds": {
            "description": "Entity IDs represents an array of ids for a specified entity.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "variationName": {
            "description": "Variation name indicating that we should disable rule for given variation only - if not provided removes all variation targets.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "entityIds",
          "entityType"
        ],
        "type": "object"
      },
      "castai.features.v1.DisableResponse": {
        "description": "DisableResponse response body used to respond with the current flag details.",
        "properties": {
          "feature": {
            "$ref": "#/components/schemas/castai.features.v1.Feature"
          }
        },
        "type": "object"
      },
      "castai.features.v1.EnableByExpressionResponse": {
        "description": "EnableByExpressionResponse response body used to respond with the current flag details.",
        "properties": {
          "feature": {
            "$ref": "#/components/schemas/castai.features.v1.Feature"
          }
        },
        "type": "object"
      },
      "castai.features.v1.EnableByNameResponse": {
        "description": "EnableByNameResponse response body used to respond with the current flag details.",
        "properties": {
          "feature": {
            "$ref": "#/components/schemas/castai.features.v1.Feature"
          }
        },
        "type": "object"
      },
      "castai.features.v1.EnableMessage": {
        "description": "EnableMessage is the message used to enable a flag for organization or cluster.",
        "properties": {
          "variationName": {
            "description": "Variation_name is a variation name of a given flag.",
            "type": "string"
          },
          "entityType": {
            "$ref": "#/components/schemas/castai.features.v1.EntityType"
          },
          "entityIds": {
            "description": "Entity IDs represents an array of ids for a specified entity.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "entityIds",
          "entityType",
          "variationName"
        ],
        "type": "object"
      },
      "castai.features.v1.EnableResponse": {
        "description": "EnableResponse response body used to respond with the current flag details.",
        "properties": {
          "feature": {
            "$ref": "#/components/schemas/castai.features.v1.Feature"
          }
        },
        "type": "object"
      },
      "castai.features.v1.EntityType": {
        "default": "organizationId",
        "description": "EntityType defines available entity types for feature flag enablement.\n\n - organizationId: Represents the main identifier(organization_id) for organization in Cast AI.\n - clusterId: Represents the main identifier(cluster_id) for cluster in Cast AI.\n - userId: Represents the user identifier(username) which is used to identify a user in users service.\n - environment: Represents the identifier which is used to identify an environment in Cast AI.",
        "enum": [
          "organizationId",
          "clusterId",
          "userId",
          "environment"
        ],
        "type": "string"
      },
      "castai.features.v1.Feature": {
        "description": "Feature message showing all feature flag related details.",
        "properties": {
          "featureId": {
            "description": "Feature_id is the main identifier for a feature flag.",
            "type": "string"
          },
          "name": {
            "description": "Name of the flag used during evaluation.",
            "type": "string"
          },
          "origin": {
            "description": "Origin showing if this feature flag was created through yaml or api.",
            "type": "string"
          },
          "variations": {
            "description": "Variations of the flag.",
            "items": {
              "$ref": "#/components/schemas/castai.features.v1.Variation"
            },
            "type": "array"
          },
          "targeting": {
            "description": "Targeting rules for this flag.",
            "items": {
              "$ref": "#/components/schemas/castai.features.v1.TargetingRule"
            },
            "type": "array"
          },
          "defaultRule": {
            "$ref": "#/components/schemas/castai.features.v1.DefaultRule"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Metadata for this rule.",
            "type": "object"
          },
          "updatedBy": {
            "description": "UpdatedBy is the api user who last updated the flag.",
            "readOnly": true,
            "type": "string"
          },
          "missingInYaml": {
            "description": "MissingInYaml shows if the feature is missing in yaml and can be deleted.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "required": [
          "defaultRule",
          "featureId",
          "name",
          "origin",
          "variations"
        ],
        "type": "object"
      },
      "castai.features.v1.FeatureFlag": {
        "properties": {
          "key": {
            "description": "Flag key of the requested flag.",
            "type": "string"
          },
          "description": {
            "description": "Description of the flag.",
            "type": "string"
          },
          "variations": {
            "description": "Variations of the flag.",
            "items": {
              "$ref": "#/components/schemas/castai.features.v1.Variation"
            },
            "type": "array"
          },
          "defaultValue": {
            "title": "Default value for the flag evaluation if error or not found",
            "type": "string"
          }
        },
        "required": [
          "key"
        ],
        "title": "ResolveResListResponseponse body for flag listing",
        "type": "object"
      },
      "castai.features.v1.FeatureFlagResolved": {
        "description": "FeatureFlagResolved body for flag evaluation. used by the ResolveBoolean rpc.",
        "properties": {
          "flagName": {
            "description": "Key prefix is prefix of the requested flags. If not set will evaluate all flags.",
            "type": "string"
          },
          "reason": {
            "title": "The reason for the given return value, see https://openfeature.dev/docs/specification/types#resolution-details",
            "type": "string"
          },
          "variant": {
            "description": "The variant name of the returned flag value.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/castai.features.v1.Metadata"
          },
          "boolean": {
            "type": "boolean"
          },
          "string": {
            "type": "string"
          },
          "integer": {
            "format": "int64",
            "type": "string"
          }
        },
        "required": [
          "boolean",
          "flagName",
          "integer",
          "string"
        ],
        "type": "object"
      },
      "castai.features.v1.GetFeatureByEntityTypeTargetResponse": {
        "description": "GetFeatureByEntityTypeTargetResponse resopnse body used to return a feature with targeting rules filtered by entity type.",
        "properties": {
          "feature": {
            "$ref": "#/components/schemas/castai.features.v1.Feature"
          }
        },
        "type": "object"
      },
      "castai.features.v1.GetFeatureResponse": {
        "description": "GetFeatureResponse response body used to return full feature details.",
        "properties": {
          "feature": {
            "$ref": "#/components/schemas/castai.features.v1.Feature"
          }
        },
        "type": "object"
      },
      "castai.features.v1.ListExtendedMessage": {
        "description": "ListExtendedMessage is a message used to query a feature flags by entity_id or feature name.",
        "properties": {
          "entityId": {
            "description": "Entity ID represents main identifier for an entity - organizationId, clusterId, userId.",
            "type": "string"
          },
          "featureName": {
            "description": "Feature name represent the name of a given feature, can be partial match e.g prefix (ui__).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.features.v1.ListExtendedResponse": {
        "description": "ListExtendedResponse response body used to respond with the queried flag details.",
        "properties": {
          "features": {
            "description": "Feature flag messages showing all feature flag related details.",
            "items": {
              "$ref": "#/components/schemas/castai.features.v1.Feature"
            },
            "type": "array"
          },
          "nextPage": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Page"
          },
          "totalCount": {
            "description": "Total count of features.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.features.v1.ListResponse": {
        "description": "ListResponse body for feature flag listing, used by the List rpc.",
        "properties": {
          "items": {
            "description": "FeatureFlag is the feature flag.",
            "items": {
              "$ref": "#/components/schemas/castai.features.v1.FeatureFlag"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "castai.features.v1.LogicalOperator": {
        "default": "logical_unspecified",
        "description": "LogicalOperator defines available logical operators for targeting rules.",
        "enum": [
          "logical_unspecified",
          "and",
          "or"
        ],
        "type": "string"
      },
      "castai.features.v1.Metadata": {
        "properties": {
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "title": "Metadata for this evaluation is base64 encoded object structure describing the EvaluationMetadata used in the flag evaluation, see\nhttps://openfeature.dev/docs/reference/concepts/evaluation-metadata",
        "type": "object"
      },
      "castai.features.v1.Operator": {
        "default": "operator_unspecified",
        "description": "Operator defines available operators for targeting rules.\n\n - operator_unspecified: unspecified operator.\n - equals: Represents the equals operator, ==.\n - not_equals: Represents the not equals operator, !=.",
        "enum": [
          "operator_unspecified",
          "equals",
          "not_equals"
        ],
        "type": "string"
      },
      "castai.features.v1.Percentage": {
        "description": "Percentage allows to specify a percentage for each variation, total must amount to 100% to be valid.",
        "properties": {
          "percentage": {
            "additionalProperties": {
              "format": "double",
              "type": "number"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "castai.features.v1.QueryExpression": {
        "description": "QueryExpression represents a logical operation with conditions.",
        "properties": {
          "logicalOperator": {
            "$ref": "#/components/schemas/castai.features.v1.LogicalOperator"
          },
          "conditions": {
            "description": "Represents evaluation conditions.",
            "items": {
              "$ref": "#/components/schemas/castai.features.v1.Condition"
            },
            "type": "array"
          }
        },
        "required": [
          "conditions",
          "logicalOperator"
        ],
        "type": "object"
      },
      "castai.features.v1.ResolveMessage": {
        "properties": {
          "flagName": {
            "type": "string"
          },
          "flagNamePrefix": {
            "type": "string"
          },
          "targetingKey": {
            "description": "Targeting key of the requested flag. If not provided, random will be generated at runtime.\nThis identifier is used to identify the user.",
            "type": "string"
          },
          "payload": {
            "$ref": "#/components/schemas/castai.features.v1.ResolvePayload"
          }
        },
        "type": "object"
      },
      "castai.features.v1.ResolvePayload": {
        "properties": {
          "context": {
            "properties": {},
            "title": "Key value pair for EvaluationContext used in the flag evaluation, see https://openfeature.dev/docs/reference/concepts/evaluation-context",
            "type": "object"
          },
          "boolean": {
            "type": "boolean"
          },
          "string": {
            "type": "string"
          },
          "integer": {
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.features.v1.ResolveResponse": {
        "properties": {
          "items": {
            "description": "FeatureFlagResolved is the resolved feature flag.",
            "items": {
              "$ref": "#/components/schemas/castai.features.v1.FeatureFlagResolved"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "castai.features.v1.TargetingRule": {
        "description": "TargetingRule is a rule which defines what the flag can target based on the query.",
        "properties": {
          "name": {
            "description": "Name of a targeting rule.",
            "type": "string"
          },
          "query": {
            "description": "Query of a targeting rule which allows to specify certain matching logic.",
            "type": "string"
          },
          "variationName": {
            "description": "Variation name that this targeting rule will be used for.",
            "type": "string"
          },
          "percentage": {
            "$ref": "#/components/schemas/castai.features.v1.Percentage"
          },
          "managedBy": {
            "description": "Managed by showing if this rule can be managed through api or yaml.",
            "type": "string"
          },
          "createdBy": {
            "description": "Created by showing who created this targeting rule admin user ID or yaml.",
            "type": "string"
          },
          "createdAt": {
            "description": "Created at showing when targeting rule was created.",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "ID is the unique identifier for a targeting rule.",
            "type": "string"
          },
          "expiresAt": {
            "description": "Expires at some date and time after, which the rule should no longer have an effect.\nExpiration is enforced server-side and during a features service outage, expired rules may\nremain in effect until the service recovers and clients refresh their flag data.\nSub-minute precision is not guaranteed as clients only update their feature data every few\nseconds.",
            "format": "date-time",
            "type": "string"
          },
          "comment": {
            "description": "Comment is an optional operator annotation for this rule (max 500 characters).",
            "nullable": true,
            "type": "string"
          },
          "evaluationOrder": {
            "format": "int64",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "createdBy",
          "id",
          "managedBy",
          "name",
          "query",
          "variationName"
        ],
        "type": "object"
      },
      "castai.features.v1.UpdateTargetingRuleResponse": {
        "description": "UpdateTargetingRuleResponse response body used to return updated targeting rule details.",
        "properties": {
          "feature": {
            "$ref": "#/components/schemas/castai.features.v1.Feature"
          }
        },
        "type": "object"
      },
      "castai.features.v1.Variation": {
        "properties": {
          "key": {
            "description": "The variant name of the returned flag value.",
            "type": "string"
          },
          "boolean": {
            "type": "boolean"
          },
          "string": {
            "type": "string"
          },
          "integer": {
            "format": "int64",
            "type": "string"
          }
        },
        "required": [
          "boolean",
          "integer",
          "key",
          "string"
        ],
        "type": "object"
      },
      "castai.inventory.v1beta1.AWSAvailabilityZoneMapping": {
        "properties": {
          "ZoneId": {
            "type": "string"
          },
          "ZoneName": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AWSCapacityBlockContext": {
        "properties": {
          "id": {
            "title": "AWS capacity block reservation ID",
            "type": "string"
          },
          "availabilityZone": {
            "title": "AWS availability zone name",
            "type": "string"
          },
          "availabilityZoneId": {
            "title": "AWS availability zone ID",
            "type": "string"
          },
          "instanceType": {
            "title": "AWS EC2 instance type",
            "type": "string"
          },
          "instancePlatform": {
            "title": "Instance platform (e.g., Linux/UNIX)",
            "type": "string"
          },
          "totalInstanceCount": {
            "format": "int64",
            "title": "Total reserved instance count",
            "type": "string"
          },
          "availableInstanceCount": {
            "format": "int64",
            "title": "Available (unused) instance count",
            "type": "string"
          },
          "state": {
            "title": "Capacity block state",
            "type": "string"
          },
          "instanceTypesUsage": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeBasedUsage"
          },
          "instanceTypeMemoryMib": {
            "format": "int64",
            "title": "Instance type memory in MiB",
            "type": "string"
          },
          "instanceTypeCpu": {
            "format": "int64",
            "title": "Instance type CPU count",
            "type": "string"
          },
          "effectiveCount": {
            "description": "Effective instance count is the adjusted original commitment count based on the portion remaining after out-of-cluster usage.",
            "format": "int64",
            "type": "string"
          },
          "totalPrice": {
            "title": "Total price of the commitment in USD over its total duration period",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AWSODCRContext": {
        "properties": {
          "id": {
            "title": "AWS on-demand capacity reservation ID",
            "type": "string"
          },
          "availabilityZone": {
            "title": "AWS availability zone name",
            "type": "string"
          },
          "availabilityZoneId": {
            "title": "AWS availability zone ID",
            "type": "string"
          },
          "instanceType": {
            "title": "AWS EC2 instance type",
            "type": "string"
          },
          "instancePlatform": {
            "title": "Instance platform (e.g., Linux/UNIX)",
            "type": "string"
          },
          "tenancy": {
            "title": "Tenancy (default, dedicated)",
            "type": "string"
          },
          "totalInstanceCount": {
            "format": "int64",
            "title": "Total reserved instance count",
            "type": "string"
          },
          "availableInstanceCount": {
            "format": "int64",
            "title": "Available (unused) instance count",
            "type": "string"
          },
          "state": {
            "title": "Capacity reservation state",
            "type": "string"
          },
          "endDateType": {
            "title": "End date type (unlimited, limited)",
            "type": "string"
          },
          "instanceMatchCriteria": {
            "title": "Instance match criteria (open, targeted)",
            "type": "string"
          },
          "instanceTypesUsage": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeBasedUsage"
          },
          "instanceTypeMemoryMib": {
            "format": "int64",
            "title": "Instance type memory in MiB",
            "type": "string"
          },
          "instanceTypeCpu": {
            "format": "int64",
            "title": "Instance type CPU count",
            "type": "string"
          },
          "effectiveCount": {
            "description": "Effective instance count is the adjusted original commitment count based on the portion remaining after out-of-cluster usage.",
            "format": "int64",
            "type": "string"
          },
          "interruptible": {
            "description": "Indicates whether this Capacity Reservation is interruptible, meaning instances may be terminated when the owner reclaims capacity.",
            "type": "boolean"
          },
          "hourlyPrice": {
            "title": "Hourly price of the commitment in USD",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AWSRecurringCharges": {
        "properties": {
          "Amount": {
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "Frequency": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AWSRegionReservedInstances": {
        "properties": {
          "region": {
            "type": "string"
          },
          "availabilityZoneMappings": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.AWSAvailabilityZoneMapping"
            },
            "type": "array"
          },
          "reservedInstances": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.AWSReservedInstances"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AWSReservedInstances": {
        "properties": {
          "ReservedInstancesId": {
            "type": "string"
          },
          "Scope": {
            "type": "string"
          },
          "OfferingType": {
            "type": "string"
          },
          "AvailabilityZone": {
            "nullable": true,
            "type": "string"
          },
          "End": {
            "type": "string"
          },
          "ProductDescription": {
            "type": "string"
          },
          "UsagePrice": {
            "format": "double",
            "type": "number"
          },
          "RecurringCharges": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.AWSRecurringCharges"
            },
            "type": "array"
          },
          "Start": {
            "type": "string"
          },
          "State": {
            "type": "string"
          },
          "FixedPrice": {
            "format": "double",
            "type": "number"
          },
          "CurrencyCode": {
            "type": "string"
          },
          "Duration": {
            "format": "int64",
            "type": "string"
          },
          "InstanceTenancy": {
            "type": "string"
          },
          "InstanceType": {
            "type": "string"
          },
          "InstanceCount": {
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AWSReservedInstancesContext": {
        "properties": {
          "id": {
            "title": "AWS reserved instance ID",
            "type": "string"
          },
          "scope": {
            "title": "Scope of the reservation: \"Region\" or \"Availability Zone\"",
            "type": "string"
          },
          "availabilityZoneName": {
            "nullable": true,
            "title": "AWS availability zone name, non-empty only if scope if \"Availability zone\"",
            "type": "string"
          },
          "availabilityZoneId": {
            "nullable": true,
            "title": "AWS availability zone ID, non-empty only if scope if \"Availability zone\"",
            "type": "string"
          },
          "instanceType": {
            "title": "AWS EC2 instance type",
            "type": "string"
          },
          "instanceCount": {
            "format": "int64",
            "title": "Instance count",
            "type": "string"
          },
          "state": {
            "title": "Reserved instance state",
            "type": "string"
          },
          "instanceTypesUsage": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeBasedUsage"
          },
          "instanceTypeMemoryMib": {
            "format": "int64",
            "readOnly": true,
            "title": "Instance type memory in MiB",
            "type": "string"
          },
          "instanceTypeCpu": {
            "format": "int64",
            "readOnly": true,
            "title": "Instance type CPU count",
            "type": "string"
          },
          "totalCost": {
            "description": "Total cost paid by the customer for the commitment. If the cost is empty\nit means commitment was inserted before the cost was tracked.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "effectiveCount": {
            "description": "Deprecated: use effective_cpu and effective_memory_mib instead.\nEffective instance count is the adjusted original commitment count based only the portion remaining after out-of-cluster usage.",
            "format": "int64",
            "readOnly": true,
            "type": "string",
            "deprecated": true
          },
          "effectiveCpu": {
            "description": "Effective CPU is the remaining CPU capacity after out-of-cluster usage (committed CPU - external usage CPU).",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "effectiveMemoryMib": {
            "description": "Effective memory in MiB is the remaining memory capacity after out-of-cluster usage (committed memory - external usage memory).",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AWSSavingsPlan": {
        "properties": {
          "id": {
            "title": "AWS savings plan ID",
            "type": "string"
          },
          "offeringId": {
            "title": "AWS savings plan offering ID",
            "type": "string"
          },
          "type": {
            "title": "AWS savings plan type",
            "type": "string"
          },
          "state": {
            "title": "AWS savings plan state",
            "type": "string"
          },
          "region": {
            "title": "AWS savings plan region",
            "type": "string"
          },
          "instanceTypeFamily": {
            "title": "AWS instance type family",
            "type": "string"
          },
          "commitmentAmount": {
            "format": "float",
            "title": "AWS savings plan commitment amount",
            "type": "number"
          },
          "commitmentTerm": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AWSSavingsPlan.CommitmentTermUnit"
          },
          "instanceTypesUsage": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeBasedUsage"
          },
          "effectiveCommitmentAmount": {
            "format": "double",
            "readOnly": true,
            "title": "Effective commitment amount is the adjusted original commitment amount based only the portion remaining after out-of-cluster usage",
            "type": "number"
          },
          "paymentOption": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AWSSavingsPlan.PaymentOption"
          }
        },
        "title": "AWSSavingsPlan represents AWS savings plan data",
        "type": "object"
      },
      "castai.inventory.v1beta1.AWSSavingsPlan.CommitmentTermUnit": {
        "default": "COMMITMENT_TERM_UNIT_UNSPECIFIED",
        "enum": [
          "COMMITMENT_TERM_UNIT_UNSPECIFIED",
          "COMMITMENT_TERM_UNIT_ONE_YEAR",
          "COMMITMENT_TERM_UNIT_THREE_YEARS"
        ],
        "title": "AWS savings plan commitment term unit",
        "type": "string"
      },
      "castai.inventory.v1beta1.AWSSavingsPlan.PaymentOption": {
        "default": "PAYMENT_OPTION_UNSPECIFIED",
        "enum": [
          "PAYMENT_OPTION_UNSPECIFIED",
          "ALL_UPFRONT",
          "PARTIAL_UPFRONT",
          "NO_UPFRONT"
        ],
        "title": "AWS savings plan payment option",
        "type": "string"
      },
      "castai.inventory.v1beta1.AddReservationResponse": {
        "properties": {
          "reservation": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.ReservationDetails"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AppliedDiscount": {
        "description": "AppliedDiscount represents a discount applied to the instance type.",
        "properties": {
          "id": {
            "type": "string"
          },
          "pricing": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.DiscountPricing"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AttachableDisk": {
        "properties": {
          "name": {
            "description": "For Azure, currently \"premium\" is supported which indicates that Premium SSD and Premium SSD v2 are available. Standard storage is supported for all Azure instance types.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AttachableGPUDevice": {
        "properties": {
          "manufacturer": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AttachableGPUDevice.Manufacturer"
          },
          "name": {
            "description": "Name of the GPU. For example nvidia-tesla-k80.",
            "type": "string"
          },
          "count": {
            "description": "Count of GPU to be attached.",
            "format": "int32",
            "type": "integer"
          },
          "memoryMib": {
            "description": "Total amount of memory of the GPUs to be attached MiB.",
            "format": "int32",
            "type": "integer"
          },
          "priceHourly": {
            "description": "Total price of GPUs per hour.",
            "type": "string"
          },
          "blacklistedAt": {
            "format": "date-time",
            "title": "BlacklistedAt time when last ICE error was received",
            "type": "string"
          },
          "id": {
            "description": "ID of the attachable GPU device.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AttachableGPUDevice.Manufacturer": {
        "default": "UNKNOWN",
        "description": "GPU manufacturer.",
        "enum": [
          "UNKNOWN",
          "NVIDIA",
          "AMD"
        ],
        "type": "string"
      },
      "castai.inventory.v1beta1.AzureReservation": {
        "properties": {
          "instanceType": {
            "title": "Reserved instance type",
            "type": "string"
          },
          "count": {
            "format": "int32",
            "title": "Count of reserved instances",
            "type": "integer"
          },
          "id": {
            "title": "ID the reservation id",
            "type": "string"
          },
          "plan": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AzureReservation.ReservationPlan"
          },
          "status": {
            "title": "Commitment status",
            "type": "string"
          },
          "scope": {
            "title": "Scope",
            "type": "string"
          },
          "scopeSubscription": {
            "title": "Scope subscription",
            "type": "string"
          },
          "scopeResourceGroup": {
            "title": "Scope resource group",
            "type": "string"
          },
          "instanceTypesUsage": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeBasedUsage"
          },
          "instanceTypeMemoryMib": {
            "format": "int64",
            "readOnly": true,
            "title": "Instance type memory in MiB",
            "type": "string"
          },
          "instanceTypeCpu": {
            "format": "int64",
            "readOnly": true,
            "title": "Instance type CPU count",
            "type": "string"
          },
          "instanceFlexibility": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AzureReservation.InstanceFlexibility"
          },
          "instanceFlexibilityGroup": {
            "nullable": true,
            "title": "Instance flexibility group",
            "type": "string"
          },
          "instanceFlexibilityRatio": {
            "format": "float",
            "nullable": true,
            "title": "Instance flexibility ratio",
            "type": "number"
          },
          "totalCost": {
            "description": "Total cost paid by the customer for the commitment.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "purchaseTime": {
            "format": "date-time",
            "nullable": true,
            "title": "Purchase time of the reservation",
            "type": "string"
          },
          "effectiveCpu": {
            "description": "Effective CPU is the remaining CPU capacity after out-of-cluster usage (committed CPU - external usage CPU).",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "effectiveMemoryMib": {
            "description": "Effective memory in MiB is the remaining memory capacity after out-of-cluster usage (committed memory - external usage memory).",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "title": "AzureReservation represents Azure reservation data",
        "type": "object"
      },
      "castai.inventory.v1beta1.AzureReservation.InstanceFlexibility": {
        "default": "ON",
        "enum": [
          "ON",
          "OFF"
        ],
        "title": "Instance flexibility enum",
        "type": "string"
      },
      "castai.inventory.v1beta1.AzureReservation.ReservationPlan": {
        "default": "ONE_YEAR",
        "description": "- ONE_YEAR: 1 year commitment plan\n - THREE_YEAR: 3 year commitment plan",
        "enum": [
          "ONE_YEAR",
          "THREE_YEAR"
        ],
        "title": "Reservation plan enum",
        "type": "string"
      },
      "castai.inventory.v1beta1.AzureReservationImport": {
        "properties": {
          "name": {
            "title": "Name unique reservation name in region for specific instance type",
            "type": "string"
          },
          "reservationId": {
            "title": "Reservation id unique reservation id",
            "type": "string"
          },
          "status": {
            "title": "Status reservation status (e.g. Succeeded)",
            "type": "string"
          },
          "expirationDate": {
            "title": "ExpirationDate end date of reservation",
            "type": "string"
          },
          "purchaseDate": {
            "title": "PurchaseDate start date of reservation",
            "type": "string"
          },
          "term": {
            "title": "Term the reservation term plan (e.g. P1Y, P3Y)",
            "type": "string"
          },
          "scope": {
            "title": "Scope the reservation scope",
            "type": "string"
          },
          "scopeSubscription": {
            "title": "Scope subscription the reservation scope subscription",
            "type": "string"
          },
          "scopeResourceGroup": {
            "title": "Scope resource group the reservation resource group",
            "type": "string"
          },
          "type": {
            "title": "Type of reservation (VirtualMachines means instance type)",
            "type": "string"
          },
          "productName": {
            "title": "Product name contains the reserved instance type",
            "type": "string"
          },
          "region": {
            "title": "Region reservation region",
            "type": "string"
          },
          "quantity": {
            "format": "int32",
            "title": "Quantity amount of reserved instances",
            "type": "integer"
          },
          "instanceFlexibility": {
            "title": "Instance flexibility",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.AzureSavingsPlanContext": {
        "properties": {
          "id": {
            "title": "Savings plan ID (last segment of Azure resource path)",
            "type": "string"
          },
          "term": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AzureSavingsPlanContext.AzureSavingsPlanTerm"
          },
          "provisioningState": {
            "title": "Provisioning state (e.g., \"Succeeded\", \"Expired\", \"Cancelled\")",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AzureSavingsPlanContext.AzureSavingsPlanScope"
          },
          "scopeSubscription": {
            "title": "Scope subscription ID",
            "type": "string"
          },
          "scopeResourceGroup": {
            "title": "Scope resource group",
            "type": "string"
          },
          "scopeManagementGroup": {
            "title": "Scope management group",
            "type": "string"
          },
          "scopeTenant": {
            "title": "Scope tenant ID",
            "type": "string"
          },
          "commitmentAmount": {
            "format": "double",
            "title": "Hourly commitment amount in USD",
            "type": "number"
          },
          "instanceTypesUsage": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeBasedUsage"
          },
          "effectiveCommitmentAmount": {
            "format": "double",
            "readOnly": true,
            "title": "Effective commitment amount is the adjusted original commitment amount based only the portion remaining after out-of-cluster usage",
            "type": "number"
          }
        },
        "title": "AzureSavingsPlanContext represents Azure savings plan data",
        "type": "object"
      },
      "castai.inventory.v1beta1.AzureSavingsPlanContext.AzureSavingsPlanScope": {
        "default": "AZURE_SAVINGS_PLAN_SCOPE_UNSPECIFIED",
        "enum": [
          "AZURE_SAVINGS_PLAN_SCOPE_UNSPECIFIED",
          "SINGLE",
          "SHARED",
          "MANAGEMENT_GROUP"
        ],
        "title": "Applied scope type",
        "type": "string"
      },
      "castai.inventory.v1beta1.AzureSavingsPlanContext.AzureSavingsPlanTerm": {
        "default": "AZURE_SAVINGS_PLAN_TERM_UNSPECIFIED",
        "enum": [
          "AZURE_SAVINGS_PLAN_TERM_UNSPECIFIED",
          "ONE_YEAR",
          "THREE_YEARS",
          "FIVE_YEARS"
        ],
        "title": "Savings plan term",
        "type": "string"
      },
      "castai.inventory.v1beta1.BatchUpdateCommitmentsResponse": {
        "properties": {
          "commitments": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.Commitment"
            },
            "title": "Updated commitments",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.BlockStorageInfo": {
        "description": "BlockStorageInfo contains details about block storage capabilities of the instance type.",
        "properties": {
          "maxBandwidthMbps": {
            "description": "Specifies the maximum bandwidth for block storage. Currently only supported for AWS EBS-optimized instances.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "baselineBandwidthMbps": {
            "description": "Specifies the baseline bandwidth for block storage in Mbps.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "baselineIops": {
            "description": "Specifies the baseline IOPS for block storage.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "maxIops": {
            "description": "Specifies the maximum IOPS for block storage.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "baselineThroughputMbytesPerS": {
            "description": "Specifies the baseline throughput for block storage in MB/s.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "maxThroughputMbytesPerS": {
            "description": "Specifies the maximum throughput for block storage in MB/s.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "ebsOptimizedSupport": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.BlockStorageInfo.EbsOptimizedSupport"
          },
          "maxEbsAttachments": {
            "description": "Specifies maximum number of EBS volume attachments.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "attachmentLimitType": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.BlockStorageInfo.AttachmentLimitType"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.BlockStorageInfo.AttachmentLimitType": {
        "default": "ATTACHMENT_LIMIT_TYPE_UNKNOWN",
        "description": "Type of EBS attachment limit.\n\n - ATTACHMENT_LIMIT_TYPE_UNKNOWN: Unknown is invalid.\n - ATTACHMENT_LIMIT_TYPE_SHARED: Shared with other device attachments.\n - ATTACHMENT_LIMIT_TYPE_DEDICATED: Dedicated only for EBS volumes.",
        "enum": [
          "ATTACHMENT_LIMIT_TYPE_UNKNOWN",
          "ATTACHMENT_LIMIT_TYPE_SHARED",
          "ATTACHMENT_LIMIT_TYPE_DEDICATED"
        ],
        "type": "string"
      },
      "castai.inventory.v1beta1.BlockStorageInfo.EbsOptimizedSupport": {
        "default": "EBS_OPTIMIZED_SUPPORT_UNKNOWN",
        "description": "EbsOptimizedSupport specifies whether instance type supports EBS optimization.\n\n - EBS_OPTIMIZED_SUPPORT_UNKNOWN: Unknown is invalid.\n - EBS_OPTIMIZED_SUPPORT_DEFAULT: Supported and enabled by default.\n - EBS_OPTIMIZED_SUPPORT_SUPPORTED: Supported, has to be enabled additionally.\n - EBS_OPTIMIZED_SUPPORT_UNSUPPORTED: Unsupported.",
        "enum": [
          "EBS_OPTIMIZED_SUPPORT_UNKNOWN",
          "EBS_OPTIMIZED_SUPPORT_DEFAULT",
          "EBS_OPTIMIZED_SUPPORT_SUPPORTED",
          "EBS_OPTIMIZED_SUPPORT_UNSUPPORTED"
        ],
        "type": "string"
      },
      "castai.inventory.v1beta1.CPUInfo": {
        "properties": {
          "validThreadsPerCore": {
            "description": "Specifies the valid threads per core for the instance type. Only for AWS.",
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "type": "array"
          },
          "defaultCores": {
            "description": "Specifies the default number of physical cores for the instance type. Only for AWS.",
            "format": "int32",
            "type": "integer"
          },
          "sustainedClockSpeedMhz": {
            "description": "Specifies the sustained CPU clock speed. Only supported for AWS.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.CPUPlatform": {
        "description": "CPUPlatform describes the CPU platforms the instance type can be equipped with.",
        "properties": {
          "platform": {
            "description": "Platform name. Only available for GCP.",
            "type": "string"
          },
          "processorName": {
            "description": "Processor name.",
            "type": "string"
          },
          "generation": {
            "description": "Generation of the platform. Only available for GCP.",
            "type": "string"
          },
          "baseFrequency": {
            "description": "Base Frequency of the platform (GHz).",
            "format": "double",
            "type": "number"
          },
          "allCoreTurboFrequency": {
            "description": "All Core Turbo Frequency (GHz). Only available for GCP.",
            "format": "double",
            "type": "number"
          },
          "singleCoreTurboFrequency": {
            "description": "Single Core Turbo Frequency (GHz). Only available for GCP.",
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ClusterAggregatedUsage": {
        "properties": {
          "clusterId": {
            "title": "Cluster ID",
            "type": "string"
          },
          "nodeIds": {
            "items": {
              "type": "string"
            },
            "title": "Node IDs",
            "type": "array"
          },
          "usage": {
            "format": "double",
            "nullable": true,
            "title": "Percentage usage of commitment 0.0 - 1.0",
            "type": "number"
          },
          "usageDistribution": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.UsageDistribution"
          },
          "nodes": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeUsage"
            },
            "title": "Nodes covered by this commitment",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ClusterPrice": {
        "properties": {
          "id": {
            "description": "Cluster price id.",
            "readOnly": true,
            "type": "string"
          },
          "organizationId": {
            "description": "Organization id.",
            "readOnly": true,
            "type": "string"
          },
          "clusterId": {
            "description": "Cluster id.",
            "readOnly": true,
            "type": "string"
          },
          "memoryGibHourlyPrice": {
            "description": "Hourly memory price per GiB.",
            "type": "string"
          },
          "cpuHourlyPrice": {
            "description": "Hourly cpu price per unit.",
            "type": "string"
          },
          "createTime": {
            "description": "Creation time of cluster price.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "updateTime": {
            "description": "Update time of cluster price.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "default": {
            "description": "Default indicates if the default cluster price is used. The field is set to false if the cluster price is updated.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "required": [
          "cpuHourlyPrice",
          "memoryGibHourlyPrice"
        ],
        "type": "object"
      },
      "castai.inventory.v1beta1.Commitment": {
        "properties": {
          "id": {
            "readOnly": true,
            "title": "Commitment ID",
            "type": "string"
          },
          "name": {
            "title": "Commitment name",
            "type": "string"
          },
          "region": {
            "title": "Region where commitment is applicable",
            "type": "string"
          },
          "startDate": {
            "format": "date-time",
            "title": "Start date of commitment",
            "type": "string"
          },
          "endDate": {
            "format": "date-time",
            "nullable": true,
            "title": "End date of commitment",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Commitment.Status"
          },
          "state": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Commitment.State"
          },
          "awsReservedInstancesContext": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AWSReservedInstancesContext"
          },
          "azureReservationContext": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AzureReservation"
          },
          "gcpResourceCudContext": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GCPResourceCUD"
          },
          "awsSavingsPlanContext": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AWSSavingsPlan"
          },
          "awsCapacityBlockContext": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AWSCapacityBlockContext"
          },
          "awsOdcrContext": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AWSODCRContext"
          },
          "gcpFlexCudContext": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GCPFlexCUD"
          },
          "azureSavingsPlanContext": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.AzureSavingsPlanContext"
          },
          "allowedUsage": {
            "description": "Allowed usage specifies the part of the commitment that is allowed to be used. 1.0 means 100% of the commitment. Currently it's only supported for GCP CUDs.",
            "format": "float",
            "type": "number"
          },
          "prioritization": {
            "title": "Prioritization specifies if resources used by lower priority clusters should be ignored when trying to cover an instance with a commitment",
            "type": "boolean"
          },
          "updatedAt": {
            "format": "date-time",
            "title": "Timestamp of the last update of the commitment",
            "type": "string"
          },
          "scalingStrategy": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Commitment.ScalingStrategy"
          },
          "autoAssignment": {
            "description": "Assign commitment to all existing and future clusters that fall within the region of this commitment.",
            "type": "boolean"
          }
        },
        "title": "Reservation represents reservation data that are used for creating reservation entity",
        "type": "object"
      },
      "castai.inventory.v1beta1.Commitment.ScalingStrategy": {
        "default": "Default",
        "description": "Scaling strategy specifies how to use commitment by autoscaler.\n\n - Default: If some commitment resource is utilised fully, only part of instance type can be covered by this commitment.\nIn some cases not using commitment will be cheaper and cheaper option will be chosen by autoscaler.\n - CPUBased: Aim to use as much CPU from commitment as possible. Even if instance is partially covered and cheaper option is available.\n - RamBased: Aim to use as much RAM from commitment as possible. Even if instance is partially covered and cheaper option is available.",
        "enum": [
          "Default",
          "CPUBased",
          "RamBased"
        ],
        "type": "string"
      },
      "castai.inventory.v1beta1.Commitment.State": {
        "default": "STATE_ACTIVE",
        "description": "- STATE_ACTIVE: Commitment is currently active and usable\n - STATE_PENDING: Commitment hasn't reached its start date yet\n - STATE_EXPIRED: Commitment has passed its end date\n - STATE_DELETED: Commitment has been deleted or cancelled\n - STATE_INACTIVE: Commitment is inactive (other unhandled states)",
        "enum": [
          "STATE_ACTIVE",
          "STATE_PENDING",
          "STATE_EXPIRED",
          "STATE_DELETED",
          "STATE_INACTIVE"
        ],
        "title": "Commitment lifecycle state",
        "type": "string"
      },
      "castai.inventory.v1beta1.Commitment.Status": {
        "default": "Inactive",
        "description": "- Inactive: Inactive commitment\n - Active: Active commitment",
        "enum": [
          "Inactive",
          "Active"
        ],
        "title": "Enable/disable toggle for this commitment",
        "type": "string"
      },
      "castai.inventory.v1beta1.CommitmentAssignment": {
        "properties": {
          "id": {
            "readOnly": true,
            "title": "Assigned commitmentID",
            "type": "string"
          },
          "clusterId": {
            "title": "ClusterID",
            "type": "string"
          },
          "commitmentId": {
            "title": "CommitmentID",
            "type": "string"
          },
          "priority": {
            "format": "int32",
            "readOnly": true,
            "title": "Priority",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.CountableInstanceType": {
        "properties": {
          "instanceType": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceType"
          },
          "clusterId": {
            "title": "ClusterId to which instance type is associated",
            "type": "string"
          },
          "count": {
            "format": "int32",
            "title": "Count defines how many same instance types in same zone and region are used",
            "type": "integer"
          }
        },
        "title": "CountableInstanceType describes how many instance types of same type are used",
        "type": "object"
      },
      "castai.inventory.v1beta1.CreateDiscountResponse": {
        "properties": {
          "discount": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Discount"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.CustomInstanceType": {
        "description": "CustomInstanceType contains details about customizable VM type.",
        "properties": {
          "id": {
            "description": "ID of the instance type.",
            "type": "string"
          },
          "createdAt": {
            "description": "CreatedAt is the timestamp of the creation of this instance type object.",
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "description": "UpdatedAt is the timestamp of the last update operation on this instance type object.",
            "format": "date-time",
            "type": "string"
          },
          "provider": {
            "description": "Provider name of the instance type.",
            "type": "string"
          },
          "region": {
            "description": "Region of the instance type. This value is provider specific.",
            "type": "string"
          },
          "instanceFamily": {
            "description": "InstanceFamily name. This value is provider specific.",
            "type": "string"
          },
          "cpuPriceHourly": {
            "description": "Price per CPU per hour.",
            "type": "string"
          },
          "ramPriceHourly": {
            "description": "Price per GiB of RAM per hour.",
            "type": "string"
          },
          "extendedRamPriceHourly": {
            "description": "Price per GiB of extended RAM per hour.",
            "nullable": true,
            "type": "string"
          },
          "architecture": {
            "description": "Architecture specifies VP processor architecture.",
            "type": "string"
          },
          "zones": {
            "description": "Zones contains specific zone-wide information.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.CustomInstanceZone"
            },
            "type": "array"
          },
          "burstable": {
            "description": "Burstable indicates that the instance type is burstable, usually this means that it's a shared-core instance type.",
            "type": "boolean"
          },
          "computeOptimized": {
            "description": "Compute optimized indicates that the CSP considers this family compute optimized, which usually means the CPU is\noverclocked.",
            "type": "boolean"
          },
          "bareMetal": {
            "description": "Bare metal indicates that the instance type is bare metal. Might not make sense for custom instances but this is\nhere for consistency.",
            "type": "boolean"
          },
          "obsolete": {
            "description": "Obsolete indicates that the CSP has in one way or another deprecated the usage of this family and is no longer\nallowing to create new instances.",
            "type": "boolean"
          },
          "storageInfo": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.StorageInfo"
          },
          "appliedDiscounts": {
            "description": "Specifies the applied discounts on the custom instance type.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.AppliedDiscount"
            },
            "type": "array"
          },
          "pendingDiscounts": {
            "description": "Specifies the pending discounts on the custom instance type. Some discounts cannot be applied to a custom instance type right away.\nFor example, an instance-target discount which affects the total price, can only be applied by the caller when the exact size of the instance is known.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.PendingDiscount"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.CustomInstanceZone": {
        "description": "CustomInstanceZone contains customizable VM details for specific availability zone.",
        "properties": {
          "azId": {
            "type": "string"
          },
          "spot": {
            "type": "boolean"
          },
          "cpuPriceHourly": {
            "type": "string"
          },
          "ramPriceHourly": {
            "type": "string"
          },
          "extendedRamPriceHourly": {
            "description": "Price per GiB of extended RAM per hour.",
            "nullable": true,
            "type": "string"
          },
          "lastUnavailableAt": {
            "format": "date-time",
            "type": "string"
          },
          "unavailable": {
            "type": "boolean"
          },
          "attachableGpuDevices": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.AttachableGPUDevice"
            },
            "title": "Attachable GPU devices",
            "type": "array"
          },
          "attachedGpuDevices": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.GPUDevice"
            },
            "title": "Attached GPU devices",
            "type": "array"
          },
          "appliedDiscounts": {
            "description": "Specifies the applied discounts on the custom instance type zone.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.AppliedDiscount"
            },
            "type": "array"
          },
          "pendingDiscounts": {
            "description": "Specifies the pending discounts on the custom instance type zone. Some discounts cannot be applied to a custom instance type zone right away.\nFor example, an instance-target discount which affects the total price, can only be applied by the caller when the exact size of the instance is known.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.PendingDiscount"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.DataTransferPricing": {
        "properties": {
          "provider": {
            "type": "string"
          },
          "service": {
            "type": "string"
          },
          "fromRegion": {
            "type": "string"
          },
          "toRegion": {
            "type": "string"
          },
          "trafficDirection": {
            "title": "egress/ingress",
            "type": "string"
          },
          "prices": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.DataTransferPricingItem"
            },
            "type": "array"
          },
          "effectiveDate": {
            "description": "Timestamp of the effective date of the prices.",
            "format": "date-time",
            "type": "string"
          }
        },
        "title": "DataTransferPricing describes data transfer pricing details",
        "type": "object"
      },
      "castai.inventory.v1beta1.DataTransferPricingItem": {
        "properties": {
          "price": {
            "type": "string"
          },
          "beginRange": {
            "type": "string"
          },
          "endRange": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.Discount": {
        "properties": {
          "id": {
            "readOnly": true,
            "title": "Discount ID",
            "type": "string"
          },
          "organizationId": {
            "readOnly": true,
            "title": "The ID of the organization to which the discount belongs",
            "type": "string"
          },
          "name": {
            "example": "My discount",
            "nullable": true,
            "title": "Discount name",
            "type": "string"
          },
          "csp": {
            "description": "The available CSP values are: [aws, azure, gcp, oracle]",
            "example": "gcp",
            "title": "The cloud provider for the discount",
            "type": "string"
          },
          "enabled": {
            "example": true,
            "title": "Specifies whether the discount is enabled or not",
            "type": "boolean"
          },
          "source": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Discount.Source"
          },
          "createdAt": {
            "format": "date-time",
            "readOnly": true,
            "title": "The timestamp when the discount was created",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "readOnly": true,
            "title": "The timestamp when the discount was last updated",
            "type": "string"
          },
          "startDate": {
            "example": "2020-01-01T00:00:00Z",
            "format": "date-time",
            "nullable": true,
            "title": "The starting date for the discount",
            "type": "string"
          },
          "endDate": {
            "example": "2030-12-31T23:59:59Z",
            "format": "date-time",
            "nullable": true,
            "title": "The end date for the discount",
            "type": "string"
          },
          "target": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Discount.Target"
          },
          "clusters": {
            "description": "Array of cluster IDs for which the discount should be applied. Empty array means no constraint.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "lifeCycles": {
            "description": "Array of instance type lifecycles for which the discount should be applied. Empty array means no constraint.",
            "example": [
              "LIFECYCLE_ON_DEMAND"
            ],
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.Discount.LifeCycle"
            },
            "type": "array"
          },
          "families": {
            "description": "Array of instance families for which the discount should be applied. Empty array means no constraint.",
            "example": [
              "n1"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "instanceTypes": {
            "description": "Array of instance types for which the discount should be applied. If families are provided, types must match the families. Empty array means no constraint.",
            "example": [
              "n1-standard-1"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "regions": {
            "description": "Array of regions for which the discount should be applied. Empty array means no constraint.",
            "example": [
              "us-central1"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "zones": {
            "description": "Array of zones in which the discount should be applied. If regions are provided, zones must match the regions. Empty array means no constraint.",
            "example": [
              "us-central1-a",
              "us-central1-b"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "os": {
            "description": "The available OS values are: [linux, windows]",
            "example": [
              "linux"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "pricing": {
            "description": "Array of pricing tiers for the discount. Currently only single-tiered discounts are supported.",
            "example": [
              {
                "value": "0.1",
                "type": "TYPE_PERCENTAGE"
              }
            ],
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.DiscountPricing"
            },
            "type": "array"
          }
        },
        "required": [
          "csp",
          "enabled",
          "pricing",
          "target"
        ],
        "type": "object"
      },
      "castai.inventory.v1beta1.Discount.LifeCycle": {
        "default": "LIFECYCLE_UNKNOWN",
        "description": "- LIFECYCLE_SPOT: Specifies that the discount is applicable to spot instances\n - LIFECYCLE_ON_DEMAND: Specifies that the discount is applicable to on-demand instances",
        "enum": [
          "LIFECYCLE_UNKNOWN",
          "LIFECYCLE_SPOT",
          "LIFECYCLE_ON_DEMAND"
        ],
        "title": "Enum with possible values for LifeCycle",
        "type": "string"
      },
      "castai.inventory.v1beta1.Discount.Source": {
        "default": "SOURCE_UNKNOWN",
        "description": "- SOURCE_USER: Specifies that the discount was manually created by a user\n - SOURCE_TIERED_PRICING_SYNC: Specifies that the discount was automatically synced by CAST AI",
        "enum": [
          "SOURCE_UNKNOWN",
          "SOURCE_USER",
          "SOURCE_TIERED_PRICING_SYNC"
        ],
        "title": "Enum with the possible values for source",
        "type": "string"
      },
      "castai.inventory.v1beta1.Discount.Target": {
        "default": "TARGET_UNKNOWN",
        "description": "- TARGET_CPU: Specifies that the discount is applicable to CPU\n - TARGET_MEMORY: Specifies that the discount is applicable to memory\n - TARGET_INSTANCE: Specifies that the discount is applicable to the whole instance\n - TARGET_COMMITMENT: Specifies that the discount is applicable to the commitment\n - TARGET_CUSTOM_CPU: Specifies that the discount is applicable to GCP's custom instance CPU\n - TARGET_CUSTOM_MEMORY: Specifies that the discount is applicable to GCP's custom instance memory\n - TARGET_CUSTOM_EXTENDED_MEMORY: Specifies that the discount is applicable to GCP's custom instance extended RAM\n - TARGET_CUSTOM_INSTANCE: Specifies that the discount is applicable to the whole custom instance",
        "enum": [
          "TARGET_UNKNOWN",
          "TARGET_CPU",
          "TARGET_MEMORY",
          "TARGET_INSTANCE",
          "TARGET_COMMITMENT",
          "TARGET_CUSTOM_CPU",
          "TARGET_CUSTOM_MEMORY",
          "TARGET_CUSTOM_EXTENDED_MEMORY",
          "TARGET_CUSTOM_INSTANCE"
        ],
        "title": "Enum with the possible values for target",
        "type": "string"
      },
      "castai.inventory.v1beta1.DiscountPricing": {
        "properties": {
          "value": {
            "title": "String-encoded decimal value of the discount",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.DiscountPricing.Type"
          },
          "from": {
            "description": "Resource usage lower bound for multi-tiered discounts. Currently unsupported as only single-tiered discounts are supported.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "to": {
            "description": "Resource usage upper bound for multi-tiered discounts. Currently unsupported as only single-tiered discounts are supported.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "title": "Defines a discount pricing tier",
        "type": "object"
      },
      "castai.inventory.v1beta1.DiscountPricing.Type": {
        "default": "TYPE_UNKNOWN",
        "description": "- TYPE_FIXED: Specifies a fixed price discount. If set, the price will be overridden with the value of the discount. For example if the public price is $3 and the discount is \"1\" ($1), the final price will\nbe $1.\n - TYPE_PERCENTAGE: Specifies a percentage discount. If set, the price will be reduced by the percentage value. For example if the public price is $5 and the discount value is \"0.1\" (10%), the final price will be\n$4.\n - TYPE_FLAT: Specifies a flat discount. If set, the price will be reduced by the specified value. For example if the public price is $5 and the discount value is \"1\", the final price will be\n$4. Same if discount value is \"-1\", the final price will be $6.",
        "enum": [
          "TYPE_UNKNOWN",
          "TYPE_FIXED",
          "TYPE_PERCENTAGE",
          "TYPE_FLAT"
        ],
        "title": "Defines the type of the pricing. Could be \"fixed\" or \"percentage\"",
        "type": "string"
      },
      "castai.inventory.v1beta1.DiskIOPSPricing": {
        "properties": {
          "unit": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.DiskIOPSPricing.Unit"
          },
          "price": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.TieredPrice"
          }
        },
        "title": "Represents disk IOPS pricing",
        "type": "object"
      },
      "castai.inventory.v1beta1.DiskIOPSPricing.Unit": {
        "default": "UNIT_UNSPECIFIED",
        "description": "- IOPS_MONTH: IOPS-month\n - IO: Count of IO operations",
        "enum": [
          "UNIT_UNSPECIFIED",
          "IOPS_MONTH",
          "IO"
        ],
        "title": "Unit of the pricing",
        "type": "string"
      },
      "castai.inventory.v1beta1.DiskThroughputPricing": {
        "properties": {
          "unit": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.DiskThroughputPricing.Unit"
          },
          "price": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.TieredPrice"
          }
        },
        "title": "Represents disk throughput pricing",
        "type": "object"
      },
      "castai.inventory.v1beta1.DiskThroughputPricing.Unit": {
        "default": "UNIT_UNSPECIFIED",
        "description": "- GIBPS_MONTH: GiB/s-month",
        "enum": [
          "UNIT_UNSPECIFIED",
          "GIBPS_MONTH"
        ],
        "title": "Unit of the pricing",
        "type": "string"
      },
      "castai.inventory.v1beta1.ExtensionType": {
        "default": "UNKNOWN_EXTENSION",
        "enum": [
          "UNKNOWN_EXTENSION",
          "LOCAL_SSD",
          "GPU"
        ],
        "title": "Define an enum for extension types",
        "type": "string"
      },
      "castai.inventory.v1beta1.GCPCommitmentImport": {
        "properties": {
          "autoRenew": {
            "type": "boolean"
          },
          "category": {
            "type": "string"
          },
          "creationTimestamp": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "endTimestamp": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "plan": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "resources": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.GCPResource"
            },
            "type": "array"
          },
          "selfLink": {
            "type": "string"
          },
          "startTimestamp": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "statusMessage": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GCPFlexCUD": {
        "properties": {
          "orderName": {
            "title": "OrderName is the resource name of the order (e.g., \"billingAccounts/{billing_account}/orders/{order}\")",
            "type": "string"
          },
          "displayName": {
            "title": "DisplayName is the user-specified display name of the order",
            "type": "string"
          },
          "lineItemId": {
            "title": "LineItemID is the unique identifier for the line item within the order",
            "type": "string"
          },
          "offer": {
            "title": "Offer is the offer identifier for the commitment",
            "type": "string"
          },
          "region": {
            "title": "Region where the Flex CUD is applicable (can be empty for global Flex CUDs)",
            "type": "string"
          },
          "commitmentAmount": {
            "format": "double",
            "title": "CommitmentAmount is the hourly commitment in USD",
            "type": "number"
          },
          "state": {
            "title": "State indicates whether the line item is ACTIVE or CANCELED",
            "type": "string"
          },
          "instanceTypesUsage": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeBasedUsage"
          },
          "plan": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GCPFlexCUD.CUDPlan"
          },
          "effectiveCommitmentAmount": {
            "format": "double",
            "readOnly": true,
            "title": "Effective commitment amount is the adjusted original commitment amount based only the portion remaining after out-of-cluster usage",
            "type": "number"
          }
        },
        "title": "GCPFlexCUD represents GCP Flexible Committed Use Discount data",
        "type": "object"
      },
      "castai.inventory.v1beta1.GCPFlexCUD.CUDPlan": {
        "default": "TWELVE_MONTH",
        "description": "- TWELVE_MONTH: 1 year commitment plan\n - THIRTY_SIX_MONTH: 3 year commitment plan",
        "enum": [
          "TWELVE_MONTH",
          "THIRTY_SIX_MONTH"
        ],
        "title": "Commitment plan",
        "type": "string"
      },
      "castai.inventory.v1beta1.GCPResource": {
        "properties": {
          "amount": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GCPResourceCUD": {
        "properties": {
          "cudId": {
            "title": "CUD id from a cloud",
            "type": "string"
          },
          "plan": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GCPResourceCUD.CUDPlan"
          },
          "type": {
            "title": "Commitment type like 'COMPUTE_OPTIMIZED_C2D' or 'MEMORY_OPTIMIZED_M2D' https://cloud.google.com/compute/docs/instances/signing-up-committed-use-discounts#gcloud",
            "type": "string"
          },
          "memoryMb": {
            "format": "int64",
            "title": "Memory in MB",
            "type": "string"
          },
          "cpu": {
            "format": "int64",
            "title": "CPU count",
            "type": "string"
          },
          "status": {
            "title": "Commitment status",
            "type": "string"
          },
          "price": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GCPResourceCUDPrice"
          },
          "instanceTypesUsage": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeBasedUsage"
          },
          "effectiveCpu": {
            "description": "Effective CPU is the remaining CPU capacity after out-of-cluster usage (committed CPU - external usage CPU).",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          },
          "effectiveMemoryMib": {
            "description": "Effective memory in MiB is the remaining memory capacity after out-of-cluster usage (committed memory - external usage memory).",
            "format": "int64",
            "readOnly": true,
            "type": "string"
          }
        },
        "title": "GCPResourceCUD represents GCP committed use discount data",
        "type": "object"
      },
      "castai.inventory.v1beta1.GCPResourceCUD.CUDPlan": {
        "default": "TWELVE_MONTH",
        "description": "- TWELVE_MONTH: 1 year commitment plan\n - THIRTY_SIX_MONTH: 3 year commitment plan",
        "enum": [
          "TWELVE_MONTH",
          "THIRTY_SIX_MONTH"
        ],
        "title": "Context savings agreement status",
        "type": "string"
      },
      "castai.inventory.v1beta1.GCPResourceCUDPrice": {
        "properties": {
          "cpu": {
            "title": "Price of one core virtual CPU per hour",
            "type": "string"
          },
          "memoryGb": {
            "title": "Price of one GB ram memory per hour",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GPUCountUnit": {
        "default": "GPU_COUNT_UNIT_UNSPECIFIED",
        "description": "GPU count unit.\n\n - GPU_COUNT_UNIT_UNSPECIFIED: Unspecified unit.\n - COUNT: 1 unit = 1 GPU (for whole GPUs).\n - MILLI_COUNT: 1000 units = 1 GPU (for fractional GPUs like 0.25, 0.5).",
        "enum": [
          "GPU_COUNT_UNIT_UNSPECIFIED",
          "COUNT",
          "MILLI_COUNT"
        ],
        "type": "string"
      },
      "castai.inventory.v1beta1.GPUDevice": {
        "properties": {
          "manufacturer": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GPUDevice.Manufacturer"
          },
          "name": {
            "title": "Name the name of GPU like k80",
            "type": "string"
          },
          "count": {
            "format": "int32",
            "title": "Count amount of graphic cards",
            "type": "integer"
          },
          "memoryMib": {
            "format": "int32",
            "title": "MemoryMiB single GPU memory in MiB",
            "type": "integer"
          },
          "priceHourly": {
            "description": "Price per GPU per hour.",
            "type": "string"
          },
          "blacklistedAt": {
            "format": "date-time",
            "title": "BlacklistedAt time when last ICE error was received",
            "type": "string"
          },
          "id": {
            "description": "ID of the GPU device.",
            "type": "string"
          },
          "countUnit": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GPUCountUnit"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GPUDevice.Manufacturer": {
        "default": "UNKNOWN",
        "description": "- UNKNOWN: UNKNOWN is invalid.\n - NVIDIA: NVIDIA.\n - AMD: AMD.",
        "enum": [
          "UNKNOWN",
          "NVIDIA",
          "AMD"
        ],
        "title": "GPU manufacturer",
        "type": "string"
      },
      "castai.inventory.v1beta1.GPUExtension": {
        "properties": {
          "manufacturer": {
            "title": "The GPU extension manufacturer",
            "type": "string"
          },
          "name": {
            "title": "The GPU extension name",
            "type": "string"
          },
          "count": {
            "format": "int32",
            "title": "The GPU count",
            "type": "integer"
          },
          "countUnit": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GPUCountUnit"
          }
        },
        "title": "Define the GPUExtension message",
        "type": "object"
      },
      "castai.inventory.v1beta1.GPUInfo": {
        "properties": {
          "gpuDevices": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.GPUDevice"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GenericReservation": {
        "properties": {
          "name": {
            "title": "Name unique reservation name in region for specific instance type",
            "type": "string"
          },
          "provider": {
            "nullable": true,
            "title": "Provider cloud provider (gcp, aws, azure)",
            "type": "string"
          },
          "region": {
            "title": "Region reservation region",
            "type": "string"
          },
          "zoneId": {
            "nullable": true,
            "title": "ZoneId reservation zone id",
            "type": "string"
          },
          "zoneName": {
            "nullable": true,
            "title": "ZoneId reservation zone name",
            "type": "string"
          },
          "instanceType": {
            "nullable": true,
            "title": "InstanceType reserved instance type",
            "type": "string"
          },
          "count": {
            "format": "int32",
            "nullable": true,
            "title": "Count amount of reserved instances",
            "type": "integer"
          },
          "price": {
            "nullable": true,
            "title": "Price reservation price",
            "type": "string"
          },
          "startDate": {
            "format": "date-time",
            "nullable": true,
            "title": "StartDate start date of reservation",
            "type": "string"
          },
          "endDate": {
            "format": "date-time",
            "nullable": true,
            "title": "EndDate end date of reservation",
            "type": "string"
          },
          "productName": {
            "nullable": true,
            "title": "ProductName reserved instance type (Azure specific)",
            "type": "string"
          },
          "quantity": {
            "format": "int32",
            "nullable": true,
            "title": "Quantity amount of reserved instances (Azure specific)",
            "type": "integer"
          },
          "purchaseDate": {
            "format": "date-time",
            "nullable": true,
            "title": "PurchaseDate start date of reservation (Azure specific)",
            "type": "string"
          },
          "expirationDate": {
            "format": "date-time",
            "nullable": true,
            "title": "ExpirationDate end date of reservation (Azure specific)",
            "type": "string"
          },
          "type": {
            "nullable": true,
            "title": "Type resource type (Azure specific)",
            "type": "string"
          },
          "deepLinkToReservation": {
            "nullable": true,
            "title": "DeepLinkToReservation deep link to reservation (Azure specific)",
            "type": "string"
          }
        },
        "title": "Reservation represents reservation data that are used for creating reservation entity",
        "type": "object"
      },
      "castai.inventory.v1beta1.GenericReservationsList": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.GenericReservation"
            },
            "title": "Reservations",
            "type": "array"
          }
        },
        "title": "Generic reservations List",
        "type": "object"
      },
      "castai.inventory.v1beta1.GetAWSReservedInstancesImportCMDResponse": {
        "properties": {
          "cmd": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetAWSReservedInstancesImportScriptResponse": {
        "properties": {
          "script": {
            "$ref": "#/components/schemas/google.api.HttpBody"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetCommitmentAssignmentsResponse": {
        "properties": {
          "assignments": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.CommitmentAssignment"
            },
            "title": "Commitment assignments",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetCommitmentResponse": {
        "properties": {
          "commitment": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Commitment"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetCommitmentUsageHistoryRequest.AggregationInterval": {
        "default": "AGGREGATION_INTERVAL_UNSPECIFIED",
        "enum": [
          "AGGREGATION_INTERVAL_UNSPECIFIED",
          "HOUR",
          "DAY"
        ],
        "title": "History report data point time interval",
        "type": "string"
      },
      "castai.inventory.v1beta1.GetCommitmentUsageHistoryRequest.CommitmentType": {
        "default": "COMMITMENT_TYPE_UNSPECIFIED",
        "enum": [
          "COMMITMENT_TYPE_UNSPECIFIED",
          "RESERVED_INSTANCE",
          "RESOURCE_CUD",
          "SAVINGS_PLAN",
          "CAPACITY_BLOCK",
          "ON_DEMAND_CAPACITY_RESERVATION",
          "FLEX_CUD"
        ],
        "title": "Commitment type",
        "type": "string"
      },
      "castai.inventory.v1beta1.GetCommitmentUsageHistoryResponse": {
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Usage"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.UsageAtTime"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetCommitmentsAssignmentsResponse": {
        "properties": {
          "commitmentsAssignments": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.CommitmentAssignment"
            },
            "title": "Commitment assignments",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetCommitmentsResponse": {
        "properties": {
          "commitments": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.Commitment"
            },
            "title": "List of commitments",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetGCPCommitmentsImportScriptResponse": {
        "properties": {
          "script": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetGCPCommitmentsScriptTemplateResponse": {
        "properties": {
          "script": {
            "$ref": "#/components/schemas/google.api.HttpBody"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetOrganizationReservationsBalanceResponse": {
        "properties": {
          "reservations": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.ReservationBalanceV2"
            },
            "title": "Reservations all active reservations in organization",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetOrganizationResourceUsageResponse": {
        "properties": {
          "instanceTypes": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeAggregate"
            },
            "title": "InstanceTypes all instance types used in organization",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetPricingForClusterNodeResponse": {
        "properties": {
          "node": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodePricing"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetPricingForClusterNodesResponse": {
        "properties": {
          "nodes": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.NodePricing"
            },
            "title": "The pricing per node",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetPricingForOrganizationNodesResponse": {
        "properties": {
          "nodes": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.NodePricing"
            },
            "title": "The pricing per node",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetReservationsBalanceResponse": {
        "properties": {
          "reservations": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.ReservationBalance"
            },
            "title": "Reservations all active reservations in organization",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.GetReservationsResponse": {
        "properties": {
          "reservations": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.ReservationDetails"
            },
            "title": "Reservations all active reservations in organization",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ImportAWSReservedInstancesRequest.SetBehaviour": {
        "default": "BEHAVIOUR_UNSPECIFIED",
        "description": "- OVERWRITE: Overwrite all existing commitments",
        "enum": [
          "BEHAVIOUR_UNSPECIFIED",
          "OVERWRITE"
        ],
        "title": "defines import behaviour",
        "type": "string"
      },
      "castai.inventory.v1beta1.ImportAzureReservationsRequest.SetBehaviour": {
        "default": "OVERWRITE",
        "description": "- OVERWRITE: Overwrite all existing commitments\n - APPEND: Append commitments without deleting existing ones",
        "enum": [
          "OVERWRITE",
          "APPEND"
        ],
        "title": "defines import behaviour",
        "type": "string"
      },
      "castai.inventory.v1beta1.ImportGCPCommitmentsRequest.SetBehaviour": {
        "default": "OVERWRITE",
        "description": "- OVERWRITE: Overwrite all existing commitments",
        "enum": [
          "OVERWRITE"
        ],
        "title": "defines import behaviour",
        "type": "string"
      },
      "castai.inventory.v1beta1.InstanceFlexibilityInfo": {
        "properties": {
          "flexibilityGroup": {
            "description": "The instance flexibility group.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.InstanceReliability": {
        "properties": {
          "spotReclaimRateLow": {
            "format": "int64",
            "title": "Frequency of interruption represents the rate at which Spot has reclaimed capacity during the trailing month",
            "type": "string"
          },
          "spotReclaimRateHigh": {
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.InstanceType": {
        "description": "InstanceType is a cloud service provider specific VM type with basic data.",
        "properties": {
          "id": {
            "description": "ID of the instance type.",
            "type": "string"
          },
          "provider": {
            "description": "Provider name of the instance type.",
            "type": "string"
          },
          "region": {
            "description": "Region of the instance type. This value is provider specific.",
            "type": "string"
          },
          "instanceType": {
            "description": "InstanceType name. This value is provider specific.",
            "type": "string"
          },
          "vcpu": {
            "description": "Vcpu available on the instance type.",
            "format": "int64",
            "type": "string"
          },
          "ram": {
            "description": "Ram (in MiB) available on the instance type.",
            "format": "int64",
            "type": "string"
          },
          "price": {
            "description": "Price of the instance type. $/hour.",
            "type": "string"
          },
          "cpuPrice": {
            "description": "CPU base price of the instance type. $/CPU hour.",
            "type": "string"
          },
          "ramPrice": {
            "description": "RAM base price of the instance type. $/GiB hour.",
            "type": "string"
          },
          "createdAt": {
            "description": "CreatedAt is the timestamp of the creation of this instance type object.",
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "description": "UpdatedAt is the timestamp of the last update operation on this instance type object.",
            "format": "date-time",
            "type": "string"
          },
          "castChoice": {
            "type": "boolean"
          },
          "burstable": {
            "type": "boolean"
          },
          "computeOptimized": {
            "type": "boolean"
          },
          "bareMetal": {
            "type": "boolean"
          },
          "customInstance": {
            "type": "boolean"
          },
          "architecture": {
            "type": "string"
          },
          "os": {
            "type": "string"
          },
          "obsolete": {
            "type": "boolean"
          },
          "spotReliability": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceReliability"
          },
          "zones": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceZone"
            },
            "title": "zones may contain specific zone-wide information",
            "type": "array"
          },
          "storageInfo": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.StorageInfo"
          },
          "networkInfo": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NetworkInfo"
          },
          "gpuInfo": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GPUInfo"
          },
          "cpuManufacturers": {
            "description": "Describes the manufacturers of the CPUs the instance type can be equipped with.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceType.CPUManufacturer"
            },
            "type": "array"
          },
          "attachableDisks": {
            "description": "Contains a list of possible attachable disk types for the given instance types. Currently supported for GCP and Azure.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.AttachableDisk"
            },
            "type": "array"
          },
          "availability": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeAvailability"
          },
          "appliedDiscounts": {
            "description": "Specifies the applied discounts on the instance type.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.AppliedDiscount"
            },
            "type": "array"
          },
          "flexibilityInfo": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceFlexibilityInfo"
          },
          "cpuInfo": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.CPUInfo"
          },
          "hypervisor": {
            "description": "Specifies the hypervisor used for the instance type. Currently supported only for AWS.",
            "nullable": true,
            "type": "string"
          },
          "blockStorageInfo": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.BlockStorageInfo"
          },
          "neuronInfo": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NeuronInfo"
          },
          "tpuInfo": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.TPUInfo"
          },
          "hypervGenerations": {
            "description": "Specifies supported hypervisor generations (e.g. \"v1\", \"v2\"). Azure specific.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "diskControllerTypes": {
            "description": "Specifies the supported disk controller types (e.g. \"NVMe\", \"SCSI\"). Azure specific.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "skuTier": {
            "description": "Specifies the VM SKU tier (e.g. \"Standard\", \"Basic\"). Azure specific.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.InstanceType.CPUManufacturer": {
        "default": "UNKNOWN",
        "enum": [
          "UNKNOWN",
          "INTEL",
          "AMD",
          "AWS",
          "APPLE",
          "AMPERE",
          "GOOGLE"
        ],
        "title": "CPU Manufacturer",
        "type": "string"
      },
      "castai.inventory.v1beta1.InstanceTypeAggregate": {
        "properties": {
          "clusterId": {
            "title": "ClusterId to which instance type is associated",
            "type": "string"
          },
          "count": {
            "format": "int32",
            "title": "Count defines how many same instance types in same zone and region are used",
            "type": "integer"
          },
          "provider": {
            "description": "Provider name of the instance type.",
            "type": "string"
          },
          "region": {
            "description": "Region of the instance type. This value is provider specific.",
            "type": "string"
          },
          "instanceType": {
            "description": "InstanceType name. This value is provider specific.",
            "type": "string"
          },
          "vcpu": {
            "description": "Vcpu available on the instance type.",
            "format": "int64",
            "type": "string"
          },
          "ram": {
            "description": "Ram (in MiB) available on the instance type.",
            "format": "int64",
            "type": "string"
          },
          "price": {
            "description": "Price of the instance type. $/hour.",
            "type": "string"
          },
          "azId": {
            "description": "Availability zone ID of the instance type.",
            "type": "string"
          },
          "spot": {
            "description": "Spot defines if the instance type is a spot instance.",
            "type": "boolean"
          },
          "nodeIds": {
            "description": "NodeIds of nodes that are using this instance type\nDeprecated: Use nodes instead.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "deprecated": true
          },
          "nodes": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeUsage"
            },
            "title": "Nodes covered by this commitment",
            "type": "array"
          },
          "usageDistribution": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.UsageDistribution"
          }
        },
        "title": "InstanceTypeAggregate describes how many instance types of same type are used",
        "type": "object"
      },
      "castai.inventory.v1beta1.InstanceTypeAvailability": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeAvailability.Type"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.InstanceTypeAvailability.Type": {
        "default": "UNKNOWN",
        "description": "Type of the instance type availability.",
        "enum": [
          "UNKNOWN",
          "PUBLIC",
          "PRIVATE"
        ],
        "type": "string"
      },
      "castai.inventory.v1beta1.InstanceTypeBasedUsage": {
        "properties": {
          "usage": {
            "format": "double",
            "nullable": true,
            "title": "Percentage usage of commitment 0.0 - 1.0",
            "type": "number"
          },
          "instanceTypes": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeAggregate"
            },
            "title": "Aggregated instance types",
            "type": "array"
          },
          "usageDistribution": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.UsageDistribution"
          },
          "clusters": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.ClusterAggregatedUsage"
            },
            "title": "Usage aggregated by clusters",
            "type": "array"
          }
        },
        "title": "usage of instance types when commitment is instance type based",
        "type": "object"
      },
      "castai.inventory.v1beta1.InstanceTypeWithFamily": {
        "properties": {
          "instanceType": {
            "type": "string"
          },
          "family": {
            "type": "string"
          },
          "cloudServiceProvider": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.InstanceZone": {
        "properties": {
          "azId": {
            "type": "string"
          },
          "spot": {
            "type": "boolean"
          },
          "price": {
            "title": "Price represents $/hour",
            "type": "string"
          },
          "cpuPrice": {
            "title": "CpuPrice represents $/CPU hour",
            "type": "string"
          },
          "ramPrice": {
            "title": "RamPrice represents $/GiB hour",
            "type": "string"
          },
          "lastUnavailableAt": {
            "format": "date-time",
            "type": "string"
          },
          "unavailable": {
            "type": "boolean"
          },
          "attachableGpuDevices": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.AttachableGPUDevice"
            },
            "title": "Attachable GPU devices",
            "type": "array"
          },
          "attachedGpuDevices": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.GPUDevice"
            },
            "title": "Attached GPU devices",
            "type": "array"
          },
          "cpuPlatforms": {
            "description": "Describes the CPU platforms the instance type can be equipped with.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.CPUPlatform"
            },
            "type": "array"
          },
          "appliedDiscounts": {
            "description": "Specifies the applied discounts on the instance zone.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.AppliedDiscount"
            },
            "type": "array"
          },
          "spotReliability": {
            "format": "float",
            "nullable": true,
            "title": "indicates how long related instance in the given zone is expected to run without interruption in minutes (0-1440)\nhigher = less likely to be interrupted",
            "type": "number"
          },
          "attachableDisks": {
            "description": "Contains a list of possible attachable disk types for the given instance type zone. Currently only supported for Azure.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceZone.AttachableDisk"
            },
            "type": "array"
          },
          "id": {
            "description": "ID of the instance zone.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.InstanceZone.AttachableDisk": {
        "properties": {
          "name": {
            "description": "For Azure, currently only \"ultra\" is supported which indicates that Ultra Disk is available. See InstanceType.AttachableDisk for standard/premium disks support info.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListCustomInstanceTypesResponse": {
        "properties": {
          "instanceTypes": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.CustomInstanceType"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListDataTransferPricingResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.DataTransferPricing"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListDiscountsResponse": {
        "properties": {
          "discounts": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.Discount"
            },
            "type": "array"
          },
          "nextPageToken": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListDisksResponse": {
        "properties": {
          "disks": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.ListDisksResponse.Disk"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListDisksResponse.Disk": {
        "properties": {
          "id": {
            "description": "ID of the disk.",
            "type": "string"
          },
          "provider": {
            "description": "Provider name of disk.",
            "type": "string"
          },
          "region": {
            "description": "Region of the disk.",
            "type": "string"
          },
          "zone": {
            "description": "Zone of the disk.",
            "type": "string"
          },
          "name": {
            "description": "Name of the disk.",
            "type": "string"
          },
          "price": {
            "description": "Price of the disk.",
            "type": "string"
          },
          "pricingUnitType": {
            "description": "Pricing unit type of the disk.",
            "type": "string"
          },
          "throughputPricing": {
            "description": "Disk throughput pricing. Currently only supported for AWS.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.DiskThroughputPricing"
            },
            "type": "array"
          },
          "iopsPricing": {
            "description": "Disk IOPS pricing. Currently only supported for AWS.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.DiskIOPSPricing"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListInstanceTypeNamesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeWithFamily"
            },
            "type": "array"
          },
          "nextPageCursor": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListInstanceTypesRequest.GPU": {
        "properties": {
          "names": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "minCount": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "minCountUnit": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GPUCountUnit"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListInstanceTypesResponse": {
        "properties": {
          "instanceTypes": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceType"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListOrganizationClusterPricesResponse": {
        "properties": {
          "items": {
            "description": "Cluster pricing.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.ClusterPrice"
            },
            "type": "array"
          },
          "nextPageCursor": {
            "description": "A page cursor to retrieve the next page of results.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListRegionsResponse": {
        "properties": {
          "regions": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.Region"
            },
            "type": "array"
          },
          "nextPageToken": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ListZonesResponse": {
        "properties": {
          "zones": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.Zone"
            },
            "type": "array"
          },
          "nextPageToken": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.LocalSSDExtension": {
        "properties": {
          "sizeGib": {
            "format": "int32",
            "title": "The size in GB",
            "type": "integer"
          }
        },
        "title": "Define the LocalSSDExtension message",
        "type": "object"
      },
      "castai.inventory.v1beta1.NetworkInfo": {
        "description": "Describes the network settings for the instance type.",
        "properties": {
          "maximumNetworkInterfaces": {
            "description": "The maximum number of network interfaces for the instance type.",
            "format": "int32",
            "type": "integer"
          },
          "ipv4AddressesPerInterface": {
            "description": "The maximum number of IPv4 addresses per network interface.",
            "format": "int32",
            "type": "integer"
          },
          "baseBandwidthMbps": {
            "description": "Base bandwidth in Mbps.",
            "format": "int32",
            "type": "integer"
          },
          "burstBandwidthMbps": {
            "description": "Burst bandwidth in Mbps. It's equal to base bandwidth if not specified.",
            "format": "int32",
            "type": "integer"
          },
          "efaSupported": {
            "description": "Indicates if the AWS instance type supports EFA (Elastic Fabric Adapter).",
            "type": "boolean"
          },
          "encryptionInTransitSupported": {
            "description": "Indicates whether the instance type automatically encrypts in-transit traffic between instances. AWS only.",
            "nullable": true,
            "type": "boolean"
          },
          "acceleratedNetworkingSupported": {
            "description": "Indicates whether the Azure instance type supports Accelerated Networking. Azure only.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.NeuronInfo": {
        "properties": {
          "totalCores": {
            "description": "Total number of AWS Neuron cores (AI accelerator cores) available on the instance type.",
            "format": "int64",
            "type": "integer"
          },
          "deviceCount": {
            "description": "Total number of AWS Neuron devices (accelerator chips) available on the instance type.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeComponent": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeComponent.Type"
          },
          "amount": {
            "format": "int32",
            "title": "Amount of component units e.g. 1 CPU, 2 GPUs, 4GB memory",
            "type": "integer"
          },
          "unit": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeComponent.Unit"
          },
          "price": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeComponent.Price"
          },
          "gpu": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeComponent.GPUMetadata"
          },
          "tpu": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeComponent.TPUMetadata"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeComponent.GPUMetadata": {
        "properties": {
          "name": {
            "title": "Name of the GPU",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeComponent.Price": {
        "properties": {
          "unit": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeComponent.Unit"
          },
          "basePricePerUnit": {
            "title": "Public price for one unit",
            "type": "string"
          },
          "totalPricePerUnit": {
            "title": "Price for one unit after discounts if any",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeComponent.TPUMetadata": {
        "properties": {
          "name": {
            "title": "Name of the TPU",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeComponent.Type": {
        "default": "TYPE_UNSPECIFIED",
        "enum": [
          "TYPE_UNSPECIFIED",
          "CPU",
          "MEMORY",
          "GPU",
          "EXTENDED_MEMORY",
          "TPU"
        ],
        "title": "The type of the component",
        "type": "string"
      },
      "castai.inventory.v1beta1.NodeComponent.Unit": {
        "default": "UNIT_UNSPECIFIED",
        "enum": [
          "UNIT_UNSPECIFIED",
          "COUNT",
          "MIB",
          "GIB",
          "MILLI_COUNT"
        ],
        "title": "Component's amount unit",
        "type": "string"
      },
      "castai.inventory.v1beta1.NodeDiscount": {
        "properties": {
          "type": {
            "description": "Possible values are: `commitment`, `discount`.",
            "title": "The type of discount",
            "type": "string"
          },
          "amount": {
            "title": "The amount of the discount",
            "type": "string"
          },
          "commitment": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeDiscount.CommitmentDetails"
          },
          "discount": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeDiscount.DiscountDetails"
          }
        },
        "title": "Define the Discount message to represent different types of discounts",
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeDiscount.CommitmentDetails": {
        "properties": {
          "id": {
            "title": "The commitment id",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeDiscount.DiscountDetails": {
        "properties": {
          "id": {
            "title": "The discount id",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeExtension": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.ExtensionType"
          },
          "price": {
            "title": "The price of extension type",
            "type": "string"
          },
          "localSsd": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.LocalSSDExtension"
          },
          "gpu": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.GPUExtension"
          }
        },
        "title": "Define the NodeExtension message for individual extensions",
        "type": "object"
      },
      "castai.inventory.v1beta1.NodePricing": {
        "properties": {
          "id": {
            "description": "Node ID. Can be temporarily empty for nodes which haven't yet been registered by external provisioner.",
            "type": "string"
          },
          "basePrice": {
            "description": "Base node price is instance's public price without any discounts and extra attached components. Integral components like attached GPUs are already included in the base price.",
            "type": "string"
          },
          "extensions": {
            "description": "Node extensions like GPUs, local SSDs, etc.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeExtension"
            },
            "type": "array"
          },
          "totalRegularPrice": {
            "description": "Total price of the node without any discounts but including extra attached components.",
            "type": "string"
          },
          "discounts": {
            "description": "Discounts applied to the node.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeDiscount"
            },
            "type": "array"
          },
          "totalPrice": {
            "description": "Total price of the node after all discounts and including all extra attached components.",
            "type": "string"
          },
          "name": {
            "description": "Name of the node. Can be empty for nodes with non-empty id. Used as a fallback identifier if id is empty.",
            "type": "string"
          },
          "components": {
            "description": "Node components contain information about integral (not detachable) parts of the instance type like CPU, memory, GPU, disks, etc.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeComponent"
            },
            "type": "array"
          },
          "pricingPeriod": {
            "$ref": "#/components/schemas/castai.type.v1.Interval"
          },
          "provider": {
            "description": "Cloud provider of the node. For Anywhere clusters, this is the detected provider.",
            "type": "string"
          },
          "region": {
            "description": "Region of the node.",
            "type": "string"
          }
        },
        "title": "Define the NodePricing message",
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeUsage": {
        "properties": {
          "nodeId": {
            "title": "NodeId of the node",
            "type": "string"
          },
          "usageDistribution": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.UsageDistribution"
          },
          "aws": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeUsage.AWS"
          }
        },
        "title": "Node describes a node covered by a commitment",
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeUsage.AWS": {
        "properties": {
          "capacityReservationId": {
            "title": "Capacity reservation ID if the node is using a capacity reservation",
            "type": "string"
          },
          "capacityReservationType": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.NodeUsage.AWS.CapacityReservationType"
          }
        },
        "title": "AWS specific node usage information",
        "type": "object"
      },
      "castai.inventory.v1beta1.NodeUsage.AWS.CapacityReservationType": {
        "default": "CAPACITY_RESERVATION_TYPE_UNSPECIFIED",
        "description": "- CAPACITY_RESERVATION_TYPE_UNSPECIFIED: Capacity reservation type not specified\n - ON_DEMAND_CAPACITY_RESERVATION: On-demand capacity reservation\n - CAPACITY_BLOCK: Capacity block",
        "enum": [
          "CAPACITY_RESERVATION_TYPE_UNSPECIFIED",
          "ON_DEMAND_CAPACITY_RESERVATION",
          "CAPACITY_BLOCK"
        ],
        "title": "Capacity reservation type",
        "type": "string"
      },
      "castai.inventory.v1beta1.OrganizationUsageSummary": {
        "description": "Per-organization usage breakdown for enterprise commitments.",
        "properties": {
          "organizationId": {
            "title": "Child organization ID",
            "type": "string"
          },
          "cpuUsed": {
            "format": "double",
            "title": "CPU used by this organization (cores)",
            "type": "number"
          },
          "cpuUsedPercent": {
            "format": "double",
            "title": "CPU used as percentage of committed",
            "type": "number"
          },
          "memoryUsedMib": {
            "format": "double",
            "title": "Memory used by this organization (MiB)",
            "type": "number"
          },
          "memoryUsedMibPercent": {
            "format": "double",
            "title": "Memory used as percentage of committed",
            "type": "number"
          },
          "monetaryAmountUsedPerHour": {
            "format": "double",
            "title": "Monetary amount used by this organization (USD per hour)",
            "type": "number"
          },
          "monetaryAmountUsedPerHourPercent": {
            "format": "double",
            "title": "Monetary amount used as percentage of committed",
            "type": "number"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.OtherOrganizationsUsage": {
        "description": "Aggregated usage from other organizations within the enterprise.",
        "properties": {
          "cpuUsed": {
            "format": "double",
            "title": "CPU used by other organizations (cores)",
            "type": "number"
          },
          "cpuUsedPercent": {
            "format": "double",
            "title": "CPU used by other organizations as percentage of committed",
            "type": "number"
          },
          "memoryUsedMib": {
            "format": "double",
            "title": "Memory used by other organizations (MiB)",
            "type": "number"
          },
          "memoryUsedMibPercent": {
            "format": "double",
            "title": "Memory used by other organizations as percentage of committed",
            "type": "number"
          },
          "monetaryAmountUsedPerHour": {
            "format": "double",
            "title": "Monetary amount used by other organizations (USD per hour)",
            "type": "number"
          },
          "monetaryAmountUsedPerHourPercent": {
            "format": "double",
            "title": "Monetary amount used by other organizations as percentage of committed",
            "type": "number"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.OverwriteReservationsResponse": {
        "properties": {
          "reservations": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.ReservationDetails"
            },
            "title": "Reservation created or changed reservation",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.PendingDiscount": {
        "description": "PendingDiscount represents a discount that is pending to be applied to the instance type. Some discounts cannot be applied to an instance right away.\nFor example, an instance-target discount targetting a custom instance can only be applied by the caller when the exact size of the instance is known.",
        "properties": {
          "id": {
            "type": "string"
          },
          "target": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Discount.Target"
          },
          "pricing": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.DiscountPricing"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.Region": {
        "properties": {
          "id": {
            "type": "string"
          },
          "csp": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "createTime": {
            "format": "date-time",
            "type": "string"
          },
          "updateTime": {
            "format": "date-time",
            "type": "string"
          },
          "unavailabilityTime": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "zones": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.Region.Zone"
            },
            "type": "array"
          }
        },
        "title": "Region describes a region in a cloud provider",
        "type": "object"
      },
      "castai.inventory.v1beta1.Region.Zone": {
        "properties": {
          "id": {
            "type": "string"
          },
          "zoneId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "createTime": {
            "format": "date-time",
            "type": "string"
          },
          "updateTime": {
            "format": "date-time",
            "type": "string"
          },
          "unavailabilityTime": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          }
        },
        "title": "Zone describes a zone in a region",
        "type": "object"
      },
      "castai.inventory.v1beta1.ReplaceCommitmentAssignmentsResponse": {
        "properties": {
          "assignments": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.CommitmentAssignment"
            },
            "title": "Commitment assignments",
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.ReservationBalance": {
        "properties": {
          "reservation": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.ReservationDetails"
          },
          "usage": {
            "format": "double",
            "title": "Usage - percentage usage of reservation 0.0 - 1.0",
            "type": "number"
          },
          "instanceTypes": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.CountableInstanceType"
            },
            "title": "InstanceTypes - instance types counted against this reservation",
            "type": "array"
          }
        },
        "title": "ReservationBalance describes reservation, its balance and instance types that are covered by reservation",
        "type": "object"
      },
      "castai.inventory.v1beta1.ReservationBalanceV2": {
        "properties": {
          "reservation": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.ReservationDetails"
          },
          "usage": {
            "format": "double",
            "title": "Usage - percentage usage of reservation 0.0 - 1.0",
            "type": "number"
          },
          "instanceTypes": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.InstanceTypeAggregate"
            },
            "title": "InstanceTypes - instance types counted against this reservation",
            "type": "array"
          }
        },
        "title": "ReservationBalanceV2 describes reservation, its balance and instance types that are covered by reservation",
        "type": "object"
      },
      "castai.inventory.v1beta1.ReservationDetails": {
        "properties": {
          "reservationId": {
            "title": "ReservationId unique reservation id",
            "type": "string"
          },
          "name": {
            "title": "Name unique reservation name in region for specific instance type",
            "type": "string"
          },
          "provider": {
            "title": "Provider cloud provider (gcp, aws, azure)",
            "type": "string"
          },
          "region": {
            "title": "Region reservation region",
            "type": "string"
          },
          "zoneId": {
            "nullable": true,
            "title": "ZoneId reservation zone id",
            "type": "string"
          },
          "zoneName": {
            "nullable": true,
            "title": "ZoneId reservation zone name",
            "type": "string"
          },
          "instanceType": {
            "title": "InstanceType reserved instance type",
            "type": "string"
          },
          "count": {
            "format": "int32",
            "title": "Count amount of reserved instances",
            "type": "integer"
          },
          "price": {
            "title": "Price reservation price",
            "type": "string"
          },
          "startDate": {
            "format": "date-time",
            "title": "StartDate start date of reservation",
            "type": "string"
          },
          "endDate": {
            "format": "date-time",
            "nullable": true,
            "title": "EndDate end date of reservation",
            "type": "string"
          },
          "cpu": {
            "format": "int64",
            "title": "Cpu reserved instance cpu count",
            "type": "string"
          },
          "ramMib": {
            "format": "int64",
            "title": "RamMib reserved instance amount of rams in Mb",
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "title": "CreatedAt reservation creation time",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "title": "UpdatedAt last reservation update time",
            "type": "string"
          }
        },
        "title": "ReservationDetails represents extended reservation with valid data",
        "type": "object"
      },
      "castai.inventory.v1beta1.StorageDriver": {
        "default": "invalid",
        "description": "StorageDriver is the type of driver used for the local storage volume interface and CPU communication.\n\n - invalid: Invalid is invalid.\n - nvme: NVMe driver is designed specifically for SSD drives and could be considered \"optimized\" for SSD usage.\n - sata: SATA driver is designed for HDD drives with spinning technology but also supports SSD drives.",
        "enum": [
          "invalid",
          "nvme",
          "sata"
        ],
        "type": "string"
      },
      "castai.inventory.v1beta1.StorageInfo": {
        "description": "StorageInfo describes the available local volumes for an instance type.",
        "properties": {
          "driver": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.StorageDriver"
          },
          "totalSizeGib": {
            "description": "TotalSizeGiB is a sum of all storage devices' size.",
            "format": "int32",
            "type": "integer"
          },
          "devices": {
            "description": "List of local storage devices available on the instance type.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.StorageInfo.Device"
            },
            "type": "array"
          },
          "ephemeralOsDisksInfo": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.StorageInfo.EphemeralOSDisksInfo"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.StorageInfo.Device": {
        "description": "Device is a local storage block device available on the instance type.",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.StorageInfo.Device.Type"
          },
          "sizeGib": {
            "description": "The size in GiB.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.StorageInfo.Device.Type": {
        "default": "invalid",
        "description": "Type is the technology used for the local storage device.\n\n - invalid: Invalid is invalid.\n - ssd: SSD.\n - hdd: HDD.",
        "enum": [
          "invalid",
          "ssd",
          "hdd"
        ],
        "type": "string"
      },
      "castai.inventory.v1beta1.StorageInfo.EphemeralOSDisksInfo": {
        "description": "EphemeralOSDisksInfo holds information about ephemeral OS disks. Currently only supported for Azure.",
        "properties": {
          "placements": {
            "description": "Deprecated: Use placement_options instead.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.StorageInfo.EphemeralOSDisksInfo.Placement"
            },
            "type": "array",
            "deprecated": true
          },
          "maxSizeGib": {
            "description": "Deprecated: Use placement_options instead. This field contains the minimum max_size_gib across all placements.",
            "format": "int32",
            "type": "integer",
            "deprecated": true
          },
          "placementOptions": {
            "description": "Placement options describe available ephemeral OS disk placements with their respective max sizes.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.StorageInfo.EphemeralOSDisksInfo.PlacementInfo"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.StorageInfo.EphemeralOSDisksInfo.Placement": {
        "default": "PLACEMENT_UNSPECIFIED",
        "description": "Placement specifies where the ephemeral OS disk is stored.\n\n - PLACEMENT_UNSPECIFIED: Unspecified placement.\n - RESOURCE_DISK: Resource (temp) disk placement.\n - CACHE_DISK: Cache disk placement.\n - NVME_DISK: NVMe disk placement.",
        "enum": [
          "PLACEMENT_UNSPECIFIED",
          "RESOURCE_DISK",
          "CACHE_DISK",
          "NVME_DISK"
        ],
        "type": "string"
      },
      "castai.inventory.v1beta1.StorageInfo.EphemeralOSDisksInfo.PlacementInfo": {
        "description": "PlacementInfo holds information about a specific ephemeral OS disk placement option.",
        "properties": {
          "placement": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.StorageInfo.EphemeralOSDisksInfo.Placement"
          },
          "maxSizeGib": {
            "description": "Max size GiB specifies the maximum size of the disk for this placement.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.SyncGCPBillingAPIDataResponse": {
        "properties": {
          "taskId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.SyncInstanceTypesForAzureSubscriptionResponse": {
        "properties": {
          "taskId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.TPUDevice": {
        "properties": {
          "name": {
            "title": "Name of the TPU accelerator (e.g., \"tpu-v4\", \"tpu-v5e\", \"tpu-v5p\")",
            "type": "string"
          },
          "generation": {
            "title": "Generation of the TPU (e.g., \"v2\", \"v3\", \"v4\", \"v5e\", \"v5p\", \"v6e\")",
            "type": "string"
          },
          "chipCount": {
            "format": "int32",
            "title": "ChipCount is the number of TPU chips in this machine type",
            "type": "integer"
          },
          "coreCount": {
            "format": "int32",
            "title": "CoreCount is the total number of TPU cores (chips * cores per chip)",
            "type": "integer"
          },
          "memoryMib": {
            "format": "int32",
            "title": "MemoryMiB is the total HBM memory across all chips in MiB",
            "type": "integer"
          },
          "priceHourly": {
            "title": "Price for all TPU chips per hour",
            "type": "string"
          },
          "id": {
            "title": "ID of the TPU device",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.TPUInfo": {
        "properties": {
          "tpuDevices": {
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.TPUDevice"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.TieredPrice": {
        "properties": {
          "startRange": {
            "title": "Start range of the tier - empty string means no start range",
            "type": "string"
          },
          "endRange": {
            "title": "End range of the tier - empty string means no end range",
            "type": "string"
          },
          "price": {
            "title": "Price of the tier",
            "type": "string"
          }
        },
        "title": "Represents tiered price",
        "type": "object"
      },
      "castai.inventory.v1beta1.UpdateCommitmentInput": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Commitment.Status"
          },
          "allowedUsage": {
            "description": "Allowed usage specifies the part of the commitment that is allowed to be used. 1.0 means 100% of the commitment. Currently it's only supported for GCP CUDs.",
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "prioritization": {
            "nullable": true,
            "title": "Prioritization specifies if resources used by lower priority clusters should be ignored when trying to cover an instance with a commitment",
            "type": "boolean"
          },
          "scalingStrategy": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Commitment.ScalingStrategy"
          },
          "autoAssignment": {
            "description": "Assign commitment to all existing and future clusters that fall within the region of this commitment.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "title": "The field numbers in message UpdateCommitmentInput are skewed, because we used the Commitment object for updates initially",
        "type": "object"
      },
      "castai.inventory.v1beta1.UpdateCommitmentRequest": {
        "properties": {
          "commitmentId": {
            "type": "string"
          },
          "commitment": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.UpdateCommitmentInput"
          }
        },
        "required": [
          "commitmentId"
        ],
        "type": "object"
      },
      "castai.inventory.v1beta1.UpdateCommitmentResponse": {
        "properties": {
          "commitments": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Commitment"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.UpdateDiscountResponse": {
        "properties": {
          "discount": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Discount"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.Usage": {
        "properties": {
          "cpuUsed": {
            "format": "double",
            "type": "number"
          },
          "cpuUsedPercent": {
            "format": "double",
            "type": "number"
          },
          "cpuCommitted": {
            "format": "double",
            "type": "number"
          },
          "memoryUsedMib": {
            "format": "double",
            "type": "number"
          },
          "memoryUsedPercent": {
            "format": "double",
            "type": "number"
          },
          "memoryCommittedMib": {
            "format": "double",
            "type": "number"
          },
          "monetaryAmountUsed": {
            "format": "double",
            "title": "Monetary amount used (in USD per hour) - for flexible commitments e.g. AWS Savings Plans",
            "type": "number"
          },
          "monetaryAmountUsedPercent": {
            "format": "double",
            "title": "Monetary amount used as percentage of commitment - for flexible commitments e.g. AWS Savings Plans",
            "type": "number"
          },
          "monetaryAmountCommitted": {
            "format": "double",
            "title": "Monetary amount committed (in USD per hour) - for flexible commitments e.g. AWS Savings Plans",
            "type": "number"
          },
          "cpuUsedCast": {
            "format": "double",
            "title": "CPU used by Cast-managed clusters (cores)",
            "type": "number"
          },
          "cpuUsedCastPercent": {
            "format": "double",
            "title": "CPU used by Cast-managed clusters as percentage of committed",
            "type": "number"
          },
          "cpuUsedOthers": {
            "format": "double",
            "title": "CPU used by other (external) clusters (cores)",
            "type": "number"
          },
          "cpuUsedOthersPercent": {
            "format": "double",
            "title": "CPU used by other (external) clusters as percentage of committed",
            "type": "number"
          },
          "memoryUsedMibCast": {
            "format": "double",
            "title": "Memory used by Cast-managed clusters (MiB)",
            "type": "number"
          },
          "memoryUsedMibCastPercent": {
            "format": "double",
            "title": "Memory used by Cast-managed clusters as percentage of committed",
            "type": "number"
          },
          "memoryUsedMibOthers": {
            "format": "double",
            "title": "Memory used by other (external) clusters (MiB)",
            "type": "number"
          },
          "memoryUsedMibOthersPercent": {
            "format": "double",
            "title": "Memory used by other (external) clusters as percentage of committed",
            "type": "number"
          },
          "monetaryAmountUsedPerHourCast": {
            "format": "double",
            "title": "Monetary amount used by Cast-managed clusters (USD per hour)",
            "type": "number"
          },
          "monetaryAmountUsedPerHourCastPercent": {
            "format": "double",
            "title": "Monetary amount used by Cast-managed clusters as percentage of committed",
            "type": "number"
          },
          "monetaryAmountUsedPerHourOthers": {
            "format": "double",
            "title": "Monetary amount used by other (external) clusters (USD per hour)",
            "type": "number"
          },
          "monetaryAmountUsedPerHourOthersPercent": {
            "format": "double",
            "title": "Monetary amount used by other (external) clusters as percentage of committed",
            "type": "number"
          },
          "organizationUsages": {
            "description": "Per-organization usage breakdown. Only populated for enterprise organizations.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.OrganizationUsageSummary"
            },
            "type": "array"
          },
          "otherOrgsUsage": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.OtherOrganizationsUsage"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.UsageAtTime": {
        "properties": {
          "usageTime": {
            "format": "date-time",
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/castai.inventory.v1beta1.Usage"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.UsageDistribution": {
        "properties": {
          "cpu": {
            "format": "double",
            "title": "CPU usage percentage",
            "type": "number"
          },
          "memory": {
            "format": "double",
            "title": "Memory usage percentage",
            "type": "number"
          },
          "monetaryAmount": {
            "format": "double",
            "title": "Monetary usage percentage",
            "type": "number"
          }
        },
        "type": "object"
      },
      "castai.inventory.v1beta1.Zone": {
        "properties": {
          "id": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "zoneId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "createTime": {
            "format": "date-time",
            "type": "string"
          },
          "updateTime": {
            "format": "date-time",
            "type": "string"
          },
          "unavailabilityTime": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          }
        },
        "title": "Zone describes a zone in cloud provider's region",
        "type": "object"
      },
      "castai.notifications.v1beta1.AckNotificationsRequest": {
        "properties": {
          "ids": {
            "items": {
              "type": "string"
            },
            "title": "The UUIDs of Notifications to acknowledge",
            "type": "array"
          }
        },
        "title": "Request to ack multiple Notifications for an organization",
        "type": "object"
      },
      "castai.notifications.v1beta1.AckNotificationsResponse": {
        "properties": {
          "total": {
            "format": "int64",
            "title": "The Total of records updated",
            "type": "string"
          }
        },
        "title": "Response after ack multiple Notifications for an organization",
        "type": "object"
      },
      "castai.notifications.v1beta1.AddSlackConfig": {
        "description": "The information required to create a new Slack configuration.",
        "properties": {
          "workspaceId": {
            "description": "The Slack workspace ID.",
            "type": "string"
          },
          "channels": {
            "description": "The Slack channels to deliver notifications to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the Slack notification configuration.",
            "type": "string"
          },
          "severityTriggers": {
            "description": "The severity levels that would trigger notifications.",
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.Severity"
            },
            "type": "array"
          },
          "clusterTriggers": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.ClusterTriggers"
          },
          "includeClusterless": {
            "nullable": true,
            "title": "Controls whether or not to trigger on clusterless notification (general notifications)\nTODO: WIRE-2076 - this should be made required after the frontend is updated",
            "type": "boolean"
          },
          "category": {
            "description": "Slack notification category.",
            "type": "string"
          },
          "subcategory": {
            "description": "Slack notification subcategory.",
            "type": "string"
          },
          "requestTemplate": {
            "description": "The template defining the Slack notification message.",
            "type": "string"
          }
        },
        "required": [
          "channels",
          "name",
          "requestTemplate",
          "severityTriggers",
          "workspaceId"
        ],
        "type": "object"
      },
      "castai.notifications.v1beta1.AddWebhookConfig": {
        "properties": {
          "name": {
            "title": "The name of the Webhook configuration",
            "type": "string"
          },
          "severityTriggers": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.Severity"
            },
            "title": "The severity levels that will trigger that notification",
            "type": "array"
          },
          "clusterTriggers": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.ClusterTriggers"
          },
          "includeClusterless": {
            "nullable": true,
            "title": "Controls whether or not to trigger on clusterless notification (general notifications)\nTODO: WIRE-2076 - this should be made required after the frontend is updated",
            "type": "boolean"
          },
          "callbackUrl": {
            "title": "The callback URL to send the requests to",
            "type": "string"
          },
          "authKeys": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "The key pair value HTTP header and keys for the request",
            "type": "object"
          },
          "requestTemplate": {
            "title": "The template of the request that will be sent to the callback URL",
            "type": "string"
          },
          "category": {
            "title": "Notifications category for the webhook subscription",
            "type": "string"
          },
          "subcategory": {
            "title": "Notifications subcategory for the webhook subscription",
            "type": "string"
          },
          "dryRun": {
            "nullable": true,
            "title": "Setting dry run will not save the webhook config. Validation of all the fields\nand test call towards the passed callback URL will still be performed",
            "type": "boolean"
          }
        },
        "required": [
          "callbackUrl",
          "name",
          "requestTemplate",
          "severityTriggers"
        ],
        "title": "Payload to create a new webhook config",
        "type": "object"
      },
      "castai.notifications.v1beta1.ClusterMetadata": {
        "properties": {
          "id": {
            "title": "The cluster id",
            "type": "string"
          },
          "name": {
            "title": "The cluster name",
            "type": "string"
          },
          "providerType": {
            "title": "The cloud provider",
            "type": "string"
          },
          "project": {
            "title": "The project the cluster belongs to",
            "type": "string"
          }
        },
        "title": "Cluster information",
        "type": "object"
      },
      "castai.notifications.v1beta1.ClusterTriggers": {
        "properties": {
          "clusterIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "title": "ClusterTriggers holds the cluster IDs which trigger notifications",
        "type": "object"
      },
      "castai.notifications.v1beta1.CompleteSlackWorkspaceInstallResponse": {
        "description": "CompleteSlackWorkspaceInstallRequest is the response to completing a Slack workspace installation.",
        "properties": {
          "workspace": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackWorkspace"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.CreateSlackConfigResponse": {
        "description": "Response to creating a new Slack configuration.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackConfig"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.CreateSlackWorkspaceInstallResponse": {
        "description": "CreateSlackWorkspaceInstallResponse is the response to a new Slack workspace installation.",
        "properties": {
          "id": {
            "description": "The unique identifier for the Slack workspace being installed.",
            "type": "string"
          },
          "installUrl": {
            "description": "The URL to visit to finalize the Slack workspace installation.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.CreateWebhookConfigResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.WebhookConfig"
          }
        },
        "title": "Response after creating a new Webhook configuration for an organization",
        "type": "object"
      },
      "castai.notifications.v1beta1.DeleteSlackConfigResponse": {
        "description": "Response to deleting a Slack configuration.",
        "type": "object"
      },
      "castai.notifications.v1beta1.DeleteSlackWorkspaceResponse": {
        "description": "DeleteSlackWorkspaceResponse is the response to deleting a Slack workspace.",
        "type": "object"
      },
      "castai.notifications.v1beta1.DeleteWebhookConfigResponse": {
        "title": "Response after deleting Webhook configuration for an organization",
        "type": "object"
      },
      "castai.notifications.v1beta1.Filter": {
        "properties": {
          "severities": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.Severity"
            },
            "title": "The severities you want to filter",
            "type": "array"
          },
          "isAcked": {
            "description": "Filters to return acknowledged or not acknowledged notifications.",
            "nullable": true,
            "type": "boolean"
          },
          "notificationId": {
            "nullable": true,
            "title": "The id of the Notification",
            "type": "string"
          },
          "notificationName": {
            "nullable": true,
            "title": "The name of the Notification",
            "type": "string"
          },
          "clusterId": {
            "nullable": true,
            "title": "The id of the Cluster included in the ClusterMetadata",
            "type": "string"
          },
          "clusterName": {
            "nullable": true,
            "title": "The name of the Cluster included in the ClusterMetadata",
            "type": "string"
          },
          "operationId": {
            "nullable": true,
            "title": "The id of the Operation included in the OperationMetadata",
            "type": "string"
          },
          "operationType": {
            "nullable": true,
            "title": "The type of the Operation included in the OperationMetadata",
            "type": "string"
          },
          "project": {
            "nullable": true,
            "title": "The project the cluster belongs in the ClusterMetadata",
            "type": "string"
          },
          "isExpired": {
            "description": "Filters to return expired or not expired notifications.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.GetNotificationResponse": {
        "description": "GetNotificationResponse defines get notification response.",
        "properties": {
          "notification": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.Notification"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.GetSlackConfigResponse": {
        "description": "Response for retrieving a Slack configuration.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackConfig"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.GetSlackWorkspaceResponse": {
        "description": "GetSlackWorkspaceResponse is a response with information about a specific Slack workspace.",
        "properties": {
          "workspace": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackWorkspace"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.GetWebhookConfigResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.WebhookConfig"
          }
        },
        "title": "Response after getting a existing Webhook configuration for an organization",
        "type": "object"
      },
      "castai.notifications.v1beta1.ListNotificationsResponse": {
        "description": "ListNotificationsResponse defines notification entries response.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.Notification"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "int32",
            "title": "count of notifications restricted by the filters",
            "type": "integer"
          },
          "countUnacked": {
            "format": "int32",
            "title": "count of total of unacknowledged notifications",
            "type": "integer"
          },
          "previousCursor": {
            "description": "previous_cursor is a token that may be used to retrieve items from the previous logical page. If empty - there were no previous page provided.",
            "type": "string"
          },
          "hasAny": {
            "description": "has_any is true if there are any notifications, regardless of filters.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.ListSlackChannelsResponse": {
        "description": "ListSlackChannelsResponse is a Slack channels response.",
        "properties": {
          "channels": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackChannel"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "previousCursor": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.ListSlackConfigsResponse": {
        "description": "Response to getting a list of Slack configurations.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackConfig"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "Token to be used to retrieve subsequent items. If empty, no more items present.",
            "type": "string"
          },
          "previousCursor": {
            "description": "Token to be used to retrieve items from the previous logical page. If empty, no previous page.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.ListSlackWorkspacesResponse": {
        "description": "ListSlackWorkspacesResponse is a response with information about Slack workspaces.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackWorkspace"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.ListWebhookCategoriesResponse": {
        "description": "Response after getting list of available categories and subcategories for webhook configuration.",
        "properties": {
          "categories": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.ListWebhookCategoriesResponse.Item"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.ListWebhookCategoriesResponse.Item": {
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "subcategories": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.ListWebhookConfigsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.WebhookConfig"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "previousCursor": {
            "description": "previous_cursor is a token that may be used to retrieve items from the previous logical page. If empty - there were no previous page provided.",
            "type": "string"
          }
        },
        "title": "Response of list Webhook configurations for an organization",
        "type": "object"
      },
      "castai.notifications.v1beta1.Notification": {
        "properties": {
          "id": {
            "title": "The UUID of the notification",
            "type": "string"
          },
          "name": {
            "title": "Name of the notification",
            "type": "string"
          },
          "organizationId": {
            "title": "Organization that owns the notification",
            "type": "string"
          },
          "severity": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.Severity"
          },
          "details": {
            "description": "Free-form details from the event.",
            "type": "string"
          },
          "timestamp": {
            "description": "When the upstream system detected / created the event.",
            "format": "date-time",
            "type": "string"
          },
          "message": {
            "description": "A high-level, text summary message of the event. Will be used to construct an alert's summary.",
            "type": "string"
          },
          "clusterMetadata": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.ClusterMetadata"
          },
          "operationMetadata": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.OperationMetadata"
          },
          "createdAt": {
            "format": "date-time",
            "title": "When the Notification was created in the system",
            "type": "string"
          },
          "ackAt": {
            "format": "date-time",
            "title": "When the Notification was acknowledged",
            "type": "string"
          },
          "ackedBy": {
            "nullable": true,
            "title": "The user that acknowledged the Notification",
            "type": "string"
          },
          "isExpired": {
            "title": "Indicates if the Notification is expired",
            "type": "boolean"
          }
        },
        "title": "Represent a Notification",
        "type": "object"
      },
      "castai.notifications.v1beta1.OperationMetadata": {
        "properties": {
          "id": {
            "title": "The cluster id",
            "type": "string"
          },
          "type": {
            "title": "The operation type",
            "type": "string"
          },
          "category": {
            "title": "Category of the operation",
            "type": "string"
          }
        },
        "title": "Cluster Operation information",
        "type": "object"
      },
      "castai.notifications.v1beta1.SendSlackWorkspaceTestNotificationResponse": {
        "properties": {
          "failureReasons": {
            "description": "If any message can't be delivered this would have some information as to why.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "title": "SendSlackWorkspaceTestNotificationRequest",
        "type": "object"
      },
      "castai.notifications.v1beta1.SendTestSlackConfigNotificationResponse": {
        "description": "Response for sending a test notification for a Slack configuration.",
        "type": "object"
      },
      "castai.notifications.v1beta1.Severity": {
        "default": "UNSPECIFIED",
        "enum": [
          "UNSPECIFIED",
          "CRITICAL",
          "ERROR",
          "WARNING",
          "INFO",
          "SUCCESS"
        ],
        "title": "Describes the level of the Notification",
        "type": "string"
      },
      "castai.notifications.v1beta1.SlackChannel": {
        "description": "SlackChannel represents a Slack workspace channel.",
        "properties": {
          "id": {
            "description": "The unique ID of the channel.",
            "type": "string"
          },
          "name": {
            "description": "The channel name.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.SlackConfig": {
        "description": "SlackConfig represents Slack notification configuration.",
        "properties": {
          "id": {
            "description": "The unique ID of this Slack notification configuration.",
            "type": "string"
          },
          "organizationId": {
            "description": "The organization associated with this Slack workspace.",
            "type": "string"
          },
          "workspaceId": {
            "description": "The Slack workspace ID.",
            "type": "string"
          },
          "channels": {
            "description": "The Slack channels to deliver notifications to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the Slack notification configuration.",
            "type": "string"
          },
          "severityTriggers": {
            "description": "The severity levels that would trigger notifications.",
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.Severity"
            },
            "type": "array"
          },
          "clusterTriggers": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.ClusterTriggers"
          },
          "includeClusterless": {
            "title": "Controls whether or not to trigger on clusterless notification (general notifications)",
            "type": "boolean"
          },
          "category": {
            "description": "Slack notification category.",
            "type": "string"
          },
          "subcategory": {
            "description": "Slack notification subcategory.",
            "type": "string"
          },
          "requestTemplate": {
            "description": "The template defining the Slack notification message.",
            "type": "string"
          },
          "status": {
            "description": "Status of the notification configuration. One of \"OK\", \"Degraded\", \"NotOK\", or \"Unknown\".",
            "type": "string"
          },
          "error": {
            "title": "The last error received while sending notifications for this configuration, if any.\nDeprecated",
            "type": "string"
          },
          "failureReasons": {
            "description": "Errors received while sending notifications for each channel in this configuration, if any.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "Date and time when the Slack configuration record was created.",
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "description": "Date and time when the Slack configuration record was last updated.",
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "description": "Date and time when the Slack configuration was deleted.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.SlackConfigFilter": {
        "description": "Slack configuration filtering options.",
        "properties": {
          "severities": {
            "description": "The severities to be applied for filtering.",
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.Severity"
            },
            "type": "array"
          },
          "status": {
            "description": "The status to be applied for filtering.",
            "nullable": true,
            "type": "string"
          },
          "categories": {
            "description": "The categories to be applied for filtering. Empty means all categories (and subcategories).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subcategories": {
            "description": "The subcategories to be applied for filtering.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.SlackWorkspace": {
        "description": "SlackWorkspace represents a Slack workspace integration.",
        "properties": {
          "id": {
            "description": "The unique ID of the slack workspace.",
            "type": "string"
          },
          "organizationId": {
            "description": "The organization associated with this Slack workspace.",
            "type": "string"
          },
          "name": {
            "description": "The Slack workspace (aka Team) name.",
            "type": "string"
          },
          "domain": {
            "description": "The Slack workspace domain.",
            "type": "string"
          },
          "iconUrl": {
            "description": "URL to the Slack workspace profile picture.",
            "type": "string"
          },
          "accessType": {
            "description": "The type of access used in this integration.",
            "type": "string"
          },
          "accessScope": {
            "description": "The Slack application scopes used in this integration.",
            "type": "string"
          },
          "installCompletedAt": {
            "description": "Date and time when the CAST.AI installation in the Slack workspace was confirmed to be completed.",
            "format": "date-time",
            "type": "string"
          },
          "installExpiresAt": {
            "description": "Date and time when the CAST.AI installation in the Slack workspace expires, and can no longer be completed.",
            "format": "date-time",
            "type": "string"
          },
          "createdAt": {
            "description": "Date and time when the Slack workspace record was created.",
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "description": "Date and time when the Slack workspace record was last updated.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.TestSlackConfig": {
        "description": "The information required to create a new Slack configuration.",
        "properties": {
          "name": {
            "description": "The name of the Slack notification configuration.",
            "type": "string"
          },
          "channels": {
            "description": "The Slack channels to deliver notifications to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "channels"
        ],
        "type": "object"
      },
      "castai.notifications.v1beta1.UpdateSlackConfig": {
        "description": "The information required to update an existing Slack configuration.",
        "properties": {
          "channels": {
            "description": "The Slack channels to deliver notifications to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The name of the Slack notification configuration.",
            "type": "string"
          },
          "severityTriggers": {
            "description": "The severity levels that would trigger notifications.",
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.Severity"
            },
            "type": "array"
          },
          "clusterTriggers": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.ClusterTriggers"
          },
          "includeClusterless": {
            "nullable": true,
            "title": "Controls whether or not to trigger on clusterless notification (general notifications)\nTODO: WIRE-2076 - this should be made required after the frontend is updated",
            "type": "boolean"
          },
          "category": {
            "description": "Slack notification category.",
            "type": "string"
          },
          "subcategory": {
            "description": "Slack notification subcategory.",
            "type": "string"
          },
          "requestTemplate": {
            "description": "The template defining the Slack notification message.",
            "type": "string"
          }
        },
        "required": [
          "channels",
          "name",
          "requestTemplate",
          "severityTriggers"
        ],
        "type": "object"
      },
      "castai.notifications.v1beta1.UpdateSlackConfigResponse": {
        "description": "Response for updating an existing Slack configuration.",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.SlackConfig"
          }
        },
        "type": "object"
      },
      "castai.notifications.v1beta1.UpdateWebhookConfig": {
        "properties": {
          "name": {
            "title": "The name of the Webhook configuration",
            "type": "string"
          },
          "severityTriggers": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.Severity"
            },
            "title": "The severity levels that will trigger that notification",
            "type": "array"
          },
          "clusterTriggers": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.ClusterTriggers"
          },
          "includeClusterless": {
            "nullable": true,
            "title": "Controls whether or not to trigger on clusterless notification (general notifications)\nTODO: WIRE-2076 - this should be made required after the frontend is updated",
            "type": "boolean"
          },
          "callbackUrl": {
            "title": "The callback URL to send the requests to",
            "type": "string"
          },
          "authKeys": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "The key pair value HTTP header and keys for the request",
            "type": "object"
          },
          "requestTemplate": {
            "title": "The template of the request that will be sent to the callback URL",
            "type": "string"
          },
          "category": {
            "title": "Notifications category for the webhook subscription",
            "type": "string"
          },
          "subcategory": {
            "title": "Notifications subcategory for the webhook subscription",
            "type": "string"
          }
        },
        "required": [
          "callbackUrl",
          "name",
          "requestTemplate",
          "severityTriggers"
        ],
        "title": "Payload to update an existing webhook configuration",
        "type": "object"
      },
      "castai.notifications.v1beta1.UpdateWebhookConfigResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.WebhookConfig"
          }
        },
        "title": "Response after updating a existing Webhook configuration for an organization",
        "type": "object"
      },
      "castai.notifications.v1beta1.WebhookConfig": {
        "properties": {
          "id": {
            "title": "UUID of the Webhook configuration",
            "type": "string"
          },
          "organizationId": {
            "title": "UUID of organization_id that owns the Webhook configuration",
            "type": "string"
          },
          "name": {
            "title": "The name of the Webhook configuration",
            "type": "string"
          },
          "severityTriggers": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.Severity"
            },
            "title": "The severity levels that will trigger that notification",
            "type": "array"
          },
          "clusterTriggers": {
            "$ref": "#/components/schemas/castai.notifications.v1beta1.ClusterTriggers"
          },
          "includeClusterless": {
            "title": "Controls whether or not to trigger on clusterless notification (general notifications)",
            "type": "boolean"
          },
          "callbackUrl": {
            "title": "The callback URL to send the requests to",
            "type": "string"
          },
          "authKeys": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "The key pair value HTTP header and keys for the request",
            "type": "object"
          },
          "requestTemplate": {
            "title": "The template of the request that will be sent to the callback URL",
            "type": "string"
          },
          "status": {
            "title": "The status indicating how is the state of the Webhook configuration, CanConnect or FailedToConnect",
            "type": "string"
          },
          "error": {
            "title": "The error message returned from the callback URL if we failed to make a request",
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "title": "The date in which the Webhook config was created",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "title": "The date in which the Webhook config was updated",
            "type": "string"
          },
          "deletedAt": {
            "format": "date-time",
            "title": "The date in which the Webhook config was deleted",
            "type": "string"
          },
          "category": {
            "title": "Notifications category for the webhook",
            "type": "string"
          },
          "subcategory": {
            "title": "Notifications subcategory for the webhook",
            "type": "string"
          }
        },
        "title": "The Webhook configuration data",
        "type": "object"
      },
      "castai.notifications.v1beta1.WebhookConfigsFilter": {
        "properties": {
          "severities": {
            "items": {
              "$ref": "#/components/schemas/castai.notifications.v1beta1.Severity"
            },
            "title": "The severities to be applied for filtering",
            "type": "array"
          },
          "status": {
            "nullable": true,
            "title": "The status to be applied for filtering",
            "type": "string"
          },
          "categories": {
            "description": "The categories to be applied for filtering. For all leave it (as well as subcategories) empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subcategories": {
            "description": "The subcategories to be applied for filtering.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.operations.v1beta1.GetOperationResponse": {
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/castai.operations.v1beta1.Operation"
          }
        },
        "type": "object"
      },
      "castai.operations.v1beta1.Operation": {
        "description": "Operation object.",
        "properties": {
          "id": {
            "description": "ID of the operation.",
            "type": "string"
          },
          "done": {
            "description": "Indicates whether the operation has finished or not. If 'false', the operation is still in progress. If 'true',\nthe has finished.",
            "type": "boolean"
          },
          "createdAt": {
            "description": "Operation creation timestamp in RFC3339Nano format.",
            "format": "date-time",
            "type": "string"
          },
          "finishedAt": {
            "description": "Operation finish timestamp in RFC3339Nano format.",
            "format": "date-time",
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/castai.operations.v1beta1.OperationError"
          }
        },
        "type": "object"
      },
      "castai.operations.v1beta1.OperationError": {
        "description": "OperationError object.",
        "properties": {
          "reason": {
            "description": "Reason is an operation specific failure code. Refer to documentation about possible outcomes.",
            "type": "string"
          },
          "details": {
            "description": "Details is a concise human readable explanation for the error.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.pagination.v1beta1.Page": {
        "description": "Page defines how many and which fields should be returned.",
        "properties": {
          "limit": {
            "format": "uint64",
            "type": "string"
          },
          "cursor": {
            "description": "Cursor that defines token indicating where to start the next page.\nEmpty value indicates to start from beginning of the dataset.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.pagination.v1beta1.Sort": {
        "properties": {
          "field": {
            "title": "Name of the field you want to sort",
            "type": "string"
          },
          "order": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Sort.Order"
          }
        },
        "title": "Sort parameter",
        "type": "object"
      },
      "castai.pagination.v1beta1.Sort.Order": {
        "default": "ASC",
        "description": "- ASC: ASC\n - asc: desc\n - DESC: ASC\n - desc: desc",
        "enum": [
          "ASC",
          "asc",
          "DESC",
          "desc"
        ],
        "title": "The order of the items, asc or desc",
        "type": "string"
      },
      "castai.partners.v1beta1.CreateOrganization": {
        "description": "CreateOrganization represents a partner child organization creation request.",
        "properties": {
          "partnerTenantId": {
            "description": "Partner_tenant_id is a partner child organization tenant id in the partner platform.",
            "type": "string"
          },
          "organizationName": {
            "description": "Organization name is partner child organization name which will be visible in CAST AI UI.",
            "type": "string"
          }
        },
        "required": [
          "partnerTenantId"
        ],
        "type": "object"
      },
      "castai.partners.v1beta1.CreateOrganizationResponse": {
        "description": "Defines a container for partner child organization creation response.",
        "properties": {
          "organization": {
            "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
          }
        },
        "type": "object"
      },
      "castai.partners.v1beta1.CreateToken": {
        "description": "CreateToken represents a partner child organization creation request.",
        "properties": {
          "role": {
            "description": "Role is the definition of what role the token would have.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.partners.v1beta1.CreateTokenResponse": {
        "description": "Defines a container for partner child organization token creation response.",
        "properties": {
          "token": {
            "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
          }
        },
        "type": "object"
      },
      "castai.partners.v1beta1.DeleteTokenResponse": {
        "description": "Defines a container for partner child organization token deletion response.",
        "type": "object"
      },
      "castai.partners.v1beta1.ListOrganizationsResponse": {
        "description": "Defines a container for partner child organizations list request.",
        "properties": {
          "organizations": {
            "description": "Organizations is an array of partner child organizations.",
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.AccessPolicy": {
        "description": "AccessPolicy is internal representation of policies our rbac\nsystem is acting on.",
        "properties": {
          "id": {
            "description": "ID of the policy.",
            "readOnly": true,
            "type": "string"
          },
          "organizationId": {
            "description": "OrganizationID of policy.",
            "type": "string"
          },
          "hash": {
            "description": "Hash is consistency hash for subset of policies.",
            "type": "string"
          },
          "createdAt": {
            "description": "Creation timestamp.",
            "format": "date-time",
            "type": "string"
          },
          "name": {
            "description": "Name of the policy.",
            "type": "string"
          },
          "description": {
            "description": "Description of the policy.",
            "type": "string"
          },
          "definition": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.AccessPolicyDefinition"
          },
          "version": {
            "title": "Version of the policy",
            "type": "string"
          },
          "internal": {
            "title": "Internal flag to indicate if the policy is internal",
            "type": "boolean"
          }
        },
        "required": [
          "organizationId"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.AccessPolicyDefinition": {
        "properties": {
          "endpoints": {
            "description": "List of endpoints for the policy.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "subjects": {
            "description": "Subjects is a list of subjects.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.ResourceID"
            },
            "type": "array"
          },
          "effect": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.Effects"
          },
          "scopes": {
            "description": "Scopes are the scopes of the role binfing.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.Scope"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.Author": {
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the author.",
            "readOnly": true,
            "type": "string"
          },
          "email": {
            "description": "Email is the email of the author.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "id"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.CheckAccessLegacyResponse": {
        "description": "CheckAccessLegacyResponse is the response for access validation for old clients.",
        "type": "object"
      },
      "castai.rbac.v1beta1.ClusterScope": {
        "description": "ClusterScope represents the resource scope of the cluster.\nResource can be any resources inside the organization.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the resource.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.CreateGroupRequest.Group": {
        "properties": {
          "name": {
            "description": "Name is the name of the group.",
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the group.",
            "type": "string"
          },
          "definition": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.CreateGroupRequest.GroupDefinition"
          }
        },
        "required": [
          "definition",
          "name"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.CreateGroupRequest.GroupDefinition": {
        "properties": {
          "members": {
            "description": "Members is a list of members.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.Member"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.CreateGroupResponse": {
        "properties": {
          "group": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.Group"
          }
        },
        "required": [
          "group"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.CreateRoleBindingsRequest.RoleBinding": {
        "properties": {
          "name": {
            "description": "Name is the name of the role binding.",
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the role binding.",
            "type": "string"
          },
          "definition": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBindingDefinition"
          }
        },
        "required": [
          "definition",
          "name"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.CreateRoleBindingsResponse": {
        "properties": {
          "roleBindings": {
            "description": "RoleBindings is the array of created role bindings.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBinding"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "required": [
          "roleBindings"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.Decision": {
        "default": "NONE",
        "description": "Decision is the status of the request. It can be allowed or denied or no decision is set.\n\n - NONE: Decision is not set.\n - ALLOWED: Decision is allowed.\n - DENIED: Decision is denied.",
        "enum": [
          "NONE",
          "ALLOWED",
          "DENIED"
        ],
        "type": "string"
      },
      "castai.rbac.v1beta1.DeleteGroupResponse": {
        "type": "object"
      },
      "castai.rbac.v1beta1.DeleteRoleBindingResponse": {
        "type": "object"
      },
      "castai.rbac.v1beta1.Effects": {
        "default": "ALLOW",
        "description": "Effects represent the effect of a permission.",
        "enum": [
          "ALLOW",
          "DENY"
        ],
        "type": "string"
      },
      "castai.rbac.v1beta1.EvaluateOptions": {
        "properties": {
          "scope": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.ScopeType"
          },
          "organizationId": {
            "description": "OrganizationID is the organization id of an authenticated caller.",
            "type": "string"
          },
          "evaluateResources": {
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.EvaluateResource"
            },
            "title": "EvaluateResources is the list of resources that policies are evaluated for.\nscope: ORGANIZATION - EvaluateResources: [{scope: ORGANIZATION, ID: OrganizationID}]\nscope: CLUSTER - EvaluateResources: [{scope: ORGANIZATION, ID: OrganizationID}, {Layer: CLUSTER, ID: ClusterID}, {Layer: CLUSTER, ID: ClusterID2}]\nscope: WORKLOAD - EvaluateResources: [{scope: ORGANIZATION, ID: OrganizationID}, {Layer: CLUSTER, ID: ClusterID}, {Layer: WORKLOAD, ID: WorkloadID}, {Layer: WORKLOAD, ID: WorkloadID2}]\nCONSTRAINT: Only the lowest layer can be batch evaluated",
            "type": "array"
          },
          "endpoint": {
            "title": "Endpoint is the endpoint of the method. Example iam.GetOrganization, iam.GetUser",
            "type": "string"
          },
          "noAuthz": {
            "description": "no_authz is a flag to disable authorization for the method. Just check authentication.",
            "type": "boolean"
          },
          "serviceSideAuthz": {
            "description": "service_side_authz is a flag indicates that the authorization is implemented on the service side.",
            "type": "boolean"
          },
          "identity": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.EvaluateOptions.Identity"
          },
          "tokenType": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.TokenType"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.EvaluateOptions.Identity": {
        "description": "Identity is the identity structure to evaluate access for.",
        "properties": {
          "organizationId": {
            "description": "OrganizationID is the organization ID to evaluate access for.",
            "type": "string"
          },
          "identityId": {
            "description": "IdentityID is the identity ID to evaluate access for.",
            "type": "string"
          },
          "tokenId": {
            "description": "TokenID is the token ID of authenticated entity. If JWT is used this will be empty.",
            "nullable": true,
            "type": "string"
          },
          "identity": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.EvaluateOptions.Identity.Identity"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.EvaluateOptions.Identity.Identity": {
        "default": "USER",
        "description": "Identity is the identity type to evaluate access for.",
        "enum": [
          "USER",
          "SERVICE_ACCOUNT",
          "INTERNAL"
        ],
        "type": "string"
      },
      "castai.rbac.v1beta1.EvaluateResource": {
        "properties": {
          "id": {
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.ScopeType"
          }
        },
        "required": [
          "id",
          "scope"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.EvaluateResponse": {
        "description": "EvaluateResponse is the respon  se of the evaluation.",
        "properties": {
          "allowed": {
            "type": "boolean"
          },
          "denyReason": {
            "description": "Deny reason is the optional reason for denying the request, will be present when allowed = false.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "allowed"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.GetGroupResponse": {
        "properties": {
          "group": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.Group"
          }
        },
        "required": [
          "group"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.GetRoleBindingResponse": {
        "properties": {
          "roleBinding": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBinding"
          }
        },
        "required": [
          "roleBinding"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.Group": {
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the group.",
            "readOnly": true,
            "type": "string"
          },
          "organizationId": {
            "description": "OrganizationID is the unique identifier of the organization.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the group.",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the group.",
            "readOnly": true,
            "type": "string"
          },
          "createdAt": {
            "description": "CreatedAt is the timestamp when the group was created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "updatedAt": {
            "description": "UpdatedAt is the timestamp when the group was last updated.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "definition": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.GroupDefinition"
          },
          "managedBy": {
            "description": "Method used to create group, eg.: console, terraform.",
            "readOnly": true,
            "type": "string"
          },
          "ssoProvider": {
            "readOnly": true,
            "title": "SSO provider information if the group is managed by SSO",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "definition",
          "description",
          "id",
          "managedBy",
          "name",
          "organizationId",
          "updatedAt"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.GroupDefinition": {
        "properties": {
          "members": {
            "description": "Members is a list of members.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.Member"
            },
            "readOnly": true,
            "type": "array"
          },
          "author": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.Author"
          }
        },
        "required": [
          "author",
          "members"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.GroupSubject": {
        "description": "GroupSubject represents the group subject.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the group.",
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the group.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.Kind": {
        "default": "USER",
        "description": "Kind represents the type of the member.",
        "enum": [
          "USER",
          "SERVICE_ACCOUNT"
        ],
        "type": "string"
      },
      "castai.rbac.v1beta1.ListAccessPoliciesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.AccessPolicy"
            },
            "readOnly": true,
            "type": "array"
          },
          "nextPage": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Page"
          },
          "totalCount": {
            "format": "uint64",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "items",
          "nextPage",
          "totalCount"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.ListPermissionGroupsResponse": {
        "description": "ListPermissionGroupsResponse is the response message for listing available permission groups.",
        "properties": {
          "permissionGroups": {
            "description": "List of available permission groups for the calling user in the organization.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.PermissionGroup"
            },
            "type": "array"
          },
          "nextPage": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Page"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.ListRoleBindingsResponse": {
        "properties": {
          "roleBindings": {
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBinding"
            },
            "readOnly": true,
            "type": "array"
          },
          "nextPage": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Page"
          },
          "totalCount": {
            "format": "uint64",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "nextPage",
          "roleBindings",
          "totalCount"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.ListRolesRequest.RolesType": {
        "default": "ALL",
        "description": "RolesType defines the type of roles to be returned.\n\n - ALL: Return all roles regardless of type\n - ENTERPRISE: Return only enterprise roles\n - DEFAULT: Return only default roles",
        "enum": [
          "ALL",
          "ENTERPRISE",
          "DEFAULT"
        ],
        "type": "string"
      },
      "castai.rbac.v1beta1.ListRolesResponse": {
        "properties": {
          "roles": {
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.Role"
            },
            "type": "array"
          },
          "nextPage": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Page"
          },
          "totalCount": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.Member": {
        "properties": {
          "id": {
            "description": "ID is the internal unique identifier of the member.",
            "type": "string"
          },
          "email": {
            "description": "Email is the email of the member.",
            "type": "string"
          },
          "addedAt": {
            "description": "AddedAt is the timestamp when the user has been added to the group.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "lastLoginAt": {
            "description": "LastLoginAt is the timestamp of the time when the user last time logged in.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.Kind"
          }
        },
        "required": [
          "email",
          "id",
          "kind"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.OrganizationScope": {
        "description": "OrganizationScope represents the organization scope.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the organization.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.PermissionGroup": {
        "description": "PermissionGroup represents a named group of permissions.",
        "properties": {
          "name": {
            "description": "Name of the permission group.",
            "type": "string"
          },
          "permissions": {
            "description": "List of permissions in this group.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.Permissions"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.Permissions": {
        "properties": {
          "endpoints": {
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "groups": {
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "effect": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.Effects"
          }
        },
        "required": [
          "effect",
          "endpoints",
          "groups"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.PoliciesState": {
        "default": "UNKNOWN",
        "description": "PoliciesState represents the state of the policies generation.\n\n - ACCEPTED: ACCEPTED is the state when the policies async generation is ongoing.\n - CREATED: CREATED is the state when the policies have been generated.\n - FAILED: FAILED is the state when the policies generation failed.",
        "enum": [
          "UNKNOWN",
          "ACCEPTED",
          "CREATED",
          "FAILED"
        ],
        "type": "string"
      },
      "castai.rbac.v1beta1.PolicyID": {
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.RebuildAsyncResponse": {
        "properties": {
          "eventCount": {
            "description": "event_count is the number of organizations for which the global rebuild event has been dispatched.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.RebuildSyncResponse": {
        "type": "object"
      },
      "castai.rbac.v1beta1.ResourceID": {
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.ResourceScope": {
        "description": "ResourceScope represents the resource scope.\nResource can be any resources inside the organization.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the resource.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.Role": {
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "organizationId": {
            "description": "OrganizationID is the unique identifier of the organization.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the role.",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the role.",
            "readOnly": true,
            "type": "string"
          },
          "createdAt": {
            "description": "CreatedAt is the timestamp when the role was created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "updatedAt": {
            "description": "UpdatedAt is the timestamp when the role was last updated.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "default": {
            "description": "Default is a flag that indicates if the role is a default role.",
            "readOnly": true,
            "type": "boolean"
          },
          "deprecated": {
            "description": "Deprecated is a flag that indicates if the role is deprecated.",
            "readOnly": true,
            "type": "boolean"
          },
          "definition": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleDefinition"
          },
          "level": {
            "description": "Priority level of the role (higher is more important).",
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          }
        },
        "required": [
          "createdAt",
          "default",
          "definition",
          "deprecated",
          "description",
          "id",
          "name",
          "organizationId",
          "updatedAt"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.RoleBinding": {
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the role binding.",
            "readOnly": true,
            "type": "string"
          },
          "organizationId": {
            "readOnly": true,
            "title": "OrganizationID is the unique identifier of the organization",
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the role binding.",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the role binding.",
            "readOnly": true,
            "type": "string"
          },
          "createdAt": {
            "description": "CreatedAt is the timestamp when the role binding was created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "updatedAt": {
            "description": "UpdatedAt is the timestamp when the role binding was last updated.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "definition": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBindingDefinition"
          },
          "status": {
            "description": "Status is the status of the role binding, reflecting the state of the related policies generation.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBindingStatus"
            },
            "readOnly": true,
            "type": "array"
          },
          "managedBy": {
            "description": "Method used to create role binding, eg.: console, terraform.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "definition",
          "description",
          "id",
          "managedBy",
          "name",
          "organizationId",
          "status",
          "updatedAt"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.RoleBindingDefinition": {
        "description": "Definition represents the role binding definition.",
        "properties": {
          "roleId": {
            "description": "RoleID is the unique identifier of the role.",
            "type": "string"
          },
          "subjects": {
            "description": "Subjects is a list of subjects.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.Subject"
            },
            "type": "array"
          },
          "scopes": {
            "description": "Scopes is a list of multiple scopes of the role binding.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.Scope"
            },
            "type": "array"
          },
          "childOrganizationId": {
            "description": "Reference the child org the role binding is for. If the RoleBinding is not for a child org, this will be empty.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "roleId"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.RoleBindingStatus": {
        "description": "RoleBindingStatus is the status of the role binding, reflecting the state of the related policies generation.",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.PoliciesState"
          },
          "policies": {
            "description": "Policies are the unique identifiers of the related policies.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.PolicyID"
            },
            "type": "array"
          },
          "message": {
            "description": "Message is providing more information about the state.",
            "type": "string"
          },
          "updatedAt": {
            "description": "UpdatedAt is the timestamp when the status was last updated.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "state"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.RoleDefinition": {
        "properties": {
          "permissions": {
            "description": "Permissions is a list of permissions.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.Permissions"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "required": [
          "permissions"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.Scope": {
        "description": "Scope represents the scope of the role binding.",
        "properties": {
          "organization": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.OrganizationScope"
          },
          "cluster": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.ClusterScope"
          },
          "resource": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.ResourceScope"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.ScopeType": {
        "default": "ORGANIZATION",
        "description": "Scope represents the authentication tree for the system. Based on that we can build the\nauthentication and authorization tree.\n\n - ORGANIZATION: Organization scope represents the organization level authentication (Organization -> ResourceID)\n - CLUSTER: Cluster scope represents the cluster level authentication (Organization -> Cluster -> ResourceID)",
        "enum": [
          "ORGANIZATION",
          "CLUSTER"
        ],
        "type": "string"
      },
      "castai.rbac.v1beta1.ServiceAccountSubject": {
        "description": "ServiceAccountSubject represents the service account subject.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the service account.",
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the service account.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.Subject": {
        "description": "Subject represents the subject of the role binding.",
        "properties": {
          "user": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.UserSubject"
          },
          "serviceAccount": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.ServiceAccountSubject"
          },
          "group": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.GroupSubject"
          }
        },
        "type": "object"
      },
      "castai.rbac.v1beta1.SubjectType": {
        "default": "SUBJECT_USER",
        "description": "SubjectType is the role binding subject type.",
        "enum": [
          "SUBJECT_USER",
          "SUBJECT_GROUP",
          "SUBJECT_SERVICE_ACCOUNT"
        ],
        "type": "string"
      },
      "castai.rbac.v1beta1.TokenType": {
        "default": "TOKEN_TYPE_UNSPECIFIED",
        "description": "TokenType identifies the kind of auth token used for the request.\nMirrors castai.authtoken.v1beta1.AuthTokenType; defined here to avoid a cyclic proto import.",
        "enum": [
          "TOKEN_TYPE_UNSPECIFIED",
          "TOKEN_TYPE_GENERAL",
          "TOKEN_TYPE_PAT"
        ],
        "type": "string"
      },
      "castai.rbac.v1beta1.UpdateGroupRequest.Group": {
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the group.",
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the group.",
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the group.",
            "type": "string"
          },
          "definition": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.UpdateGroupRequest.GroupDefinition"
          }
        },
        "required": [
          "definition",
          "id",
          "name"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.UpdateGroupRequest.GroupDefinition": {
        "properties": {
          "members": {
            "description": "Members is a list of members.",
            "items": {
              "$ref": "#/components/schemas/castai.rbac.v1beta1.Member"
            },
            "type": "array"
          }
        },
        "required": [
          "members"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.UpdateGroupResponse": {
        "properties": {
          "group": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.Group"
          }
        },
        "required": [
          "group"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.UpdateRoleBindingRequest.RoleBinding": {
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the role binding.",
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the role binding.",
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the role binding.",
            "type": "string"
          },
          "definition": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBindingDefinition"
          }
        },
        "required": [
          "definition",
          "id",
          "name"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.UpdateRoleBindingResponse": {
        "properties": {
          "roleBinding": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBinding"
          }
        },
        "required": [
          "roleBinding"
        ],
        "type": "object"
      },
      "castai.rbac.v1beta1.UserSubject": {
        "description": "UserSubject represents the user subject.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the user.",
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the user.",
            "type": "string"
          },
          "email": {
            "description": "Email is the email of the user.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.CreateServiceAccountKeyRequest.Key": {
        "description": "Key is the key to create.",
        "properties": {
          "name": {
            "description": "Name is the name of the service account key.",
            "type": "string"
          },
          "expiresAt": {
            "description": "ExpiresAt is the expiration time of the key.\nA null value means that the key will never expire.",
            "format": "date-time",
            "type": "string"
          },
          "active": {
            "description": "Active is the active state of the key. If not provided, the default is true.",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.CreateServiceAccountKeyResponse": {
        "description": "CreateServiceAccountKeyResponse is the response for creating a service account key.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the key.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the key.",
            "readOnly": true,
            "type": "string"
          },
          "token": {
            "description": "Token is the full secret key.",
            "readOnly": true,
            "type": "string"
          },
          "createdAt": {
            "description": "CreatedAt is the creation time of the key.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "expiresAt": {
            "description": "ExpiresAt is the expiration time of the key.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "active": {
            "description": "Active determines if the key is active.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.CreateServiceAccountRequest.ServiceAccount": {
        "description": "ServiceAccounts is the service account to be created.",
        "properties": {
          "name": {
            "description": "Name is the name of the service account.",
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the role binding.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.CreateServiceAccountResponse": {
        "description": "CreateServiceAccountResponse is the response for creating a service account.",
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "readOnly": true,
            "type": "string"
          },
          "email": {
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "readOnly": true,
            "type": "string"
          },
          "author": {
            "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.CreateServiceAccountResponse.Author"
          },
          "createdAt": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.CreateServiceAccountResponse.Author": {
        "description": "Author is the author of the service account.",
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "email": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.DeleteServiceAccountKeyResponse": {
        "description": "DeleteServiceAccountKeyResponse is the response for deleting a service account key.",
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.DeleteServiceAccountResponse": {
        "description": "DeleteServiceAccountResponse is the response for deleting a service account.",
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.DeleteServiceAccountsResponse": {
        "description": "DeleteServiceAccountsResponse is the response for batch deleting service accounts.",
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.GetServiceAccountKeyResponse": {
        "description": "GetServiceAccountKeyResponse is the response for getting a service account key.",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.ServiceAccount.Key"
          }
        },
        "required": [
          "key"
        ],
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.GetServiceAccountResponse": {
        "description": "GetServiceAccountResponse is the response for getting a service account.",
        "properties": {
          "serviceAccount": {
            "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.ServiceAccount"
          }
        },
        "required": [
          "serviceAccount"
        ],
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.ListServiceAccountsResponse": {
        "description": "ListServiceAccountsResponse is the response for listing service accounts.",
        "properties": {
          "serviceAccounts": {
            "description": "ServiceAccounts is the list of service accounts.",
            "items": {
              "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.ServiceAccount"
            },
            "readOnly": true,
            "type": "array"
          },
          "nextPage": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Page"
          },
          "totalCount": {
            "description": "TotalCount is the total number of service accounts in the dataset.",
            "format": "uint64",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "nextPage",
          "serviceAccounts",
          "totalCount"
        ],
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.ServiceAccount": {
        "description": "ServiceAccounts is the readable version of the service accounts.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the service account.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the service account.",
            "readOnly": true,
            "type": "string"
          },
          "email": {
            "description": "Email is the email of the service account.",
            "readOnly": true,
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the role binding.",
            "readOnly": true,
            "type": "string"
          },
          "createdAt": {
            "description": "CreatedAt is the timestamp when the service account was created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "author": {
            "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.ServiceAccount.Author"
          },
          "keys": {
            "description": "Keys is the list of keys associated with the service account.",
            "items": {
              "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.ServiceAccount.Key"
            },
            "readOnly": true,
            "type": "array"
          },
          "managedBy": {
            "description": "Method used to create role binding, eg.: console, terraform.",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "managedBy",
          "name"
        ],
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.ServiceAccount.Author": {
        "description": "Author is the author of the service account.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the author.",
            "readOnly": true,
            "type": "string"
          },
          "kind": {
            "description": "Kind is the kind of the author.",
            "readOnly": true,
            "type": "string"
          },
          "email": {
            "description": "Email is the email of the author.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.ServiceAccount.Key": {
        "description": "Key is the key for the service account.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the key.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the key.",
            "readOnly": true,
            "type": "string"
          },
          "prefix": {
            "description": "Prefix is the prefix of the key.",
            "readOnly": true,
            "type": "string"
          },
          "lastUsedAt": {
            "description": "LastUsedAt is the last time the key was used.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "expiresAt": {
            "description": "ExpiresAt is the expiration time of the key.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "active": {
            "description": "Active determines if the key is active.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.UpdateServiceAccountKeyRequest.Key": {
        "description": "Key is the key to update.",
        "properties": {
          "id": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          }
        },
        "required": [
          "active",
          "id"
        ],
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.UpdateServiceAccountKeyResponse": {
        "description": "UpdateServiceAccountKeyResponse is the response for updating a service account key.",
        "properties": {
          "id": {
            "description": "ID is the unique identifier of the key.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the key.",
            "readOnly": true,
            "type": "string"
          },
          "prefix": {
            "description": "Prefix is the prefix of the key.",
            "readOnly": true,
            "type": "string"
          },
          "lastUsedAt": {
            "description": "LastUsedAt is the last time the key was used.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "expiresAt": {
            "description": "ExpiresAt is the expiration time of the key.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "active": {
            "description": "Active determines if the key is active.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.UpdateServiceAccountRequest.ServiceAccount": {
        "description": "ServiceAccount is the service account to be updated.",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "castai.serviceaccounts.v1beta1.UpdateServiceAccountResponse": {
        "description": "UpdateServiceAccountResponse is the response for updating a service account.",
        "properties": {
          "serviceAccount": {
            "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.ServiceAccount"
          }
        },
        "required": [
          "serviceAccount"
        ],
        "type": "object"
      },
      "castai.sso.v1beta1.AzureAAD": {
        "description": "AzureAAD represents a Azure AAD connector.",
        "properties": {
          "adDomain": {
            "description": "ADDomain is the domain of the Azure AD.",
            "type": "string"
          },
          "clientId": {
            "description": "ClientId is the client id of the Azure AD.",
            "type": "string"
          },
          "clientSecret": {
            "description": "ClientSecret is the client secret of the Azure AD.",
            "type": "string"
          }
        },
        "required": [
          "adDomain",
          "clientId"
        ],
        "type": "object"
      },
      "castai.sso.v1beta1.CreateSSOConnection": {
        "description": "CreateSSOConnection represents a sso connection creation request.",
        "properties": {
          "name": {
            "description": "Name is the name of the connection.",
            "type": "string"
          },
          "emailDomain": {
            "description": "EmailDomain is the email domain of the connection.",
            "type": "string"
          },
          "aad": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.AzureAAD"
          },
          "okta": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.Okta"
          },
          "oidc": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.OIDC"
          },
          "saml": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.SAML"
          },
          "additionalEmailDomains": {
            "description": "Additional list of email domains assigned to SSO connection.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "defaultRoleId": {
            "description": "ID of default role for new users signing up with SSO.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "emailDomain",
          "name"
        ],
        "type": "object"
      },
      "castai.sso.v1beta1.CreateSSOConnectionResponse": {
        "description": "Defines the container for the sso creation response.",
        "properties": {
          "connection": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.SSOConnection"
          }
        },
        "type": "object"
      },
      "castai.sso.v1beta1.DeleteSSOConnectionResponse": {
        "description": "Defines the container for the sso delete response.",
        "type": "object"
      },
      "castai.sso.v1beta1.GetSSOConnectionResponse": {
        "description": "Defines the container for the sso get response.",
        "properties": {
          "connection": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.SSOConnection"
          },
          "ssoServiceAccountId": {
            "description": "SSO syncer Service account will be returned only for synced connections or formerly synced connections.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.sso.v1beta1.ListSSOConnectionsResponse": {
        "description": "Defines the container for the sso list response.",
        "properties": {
          "connections": {
            "items": {
              "$ref": "#/components/schemas/castai.sso.v1beta1.SSOConnection"
            },
            "type": "array"
          }
        },
        "required": [
          "connections"
        ],
        "type": "object"
      },
      "castai.sso.v1beta1.OIDC": {
        "description": "OIDC represents a OIDC connector.",
        "properties": {
          "issuerUrl": {
            "description": "IssuerUrl is the URL of the discovery document of the OpenID Connect provider you want to connect with.",
            "type": "string"
          },
          "clientId": {
            "description": "ClientId is the client id of the OIDC.",
            "type": "string"
          },
          "clientSecret": {
            "description": "ClientSecret is the client secret when using back_channel type of connection.",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.OIDC.Type"
          }
        },
        "required": [
          "clientId",
          "issuerUrl",
          "type"
        ],
        "type": "object"
      },
      "castai.sso.v1beta1.OIDC.Type": {
        "default": "TYPE_UNKNOWN",
        "description": "Type is the type of the OIDC connection.\n\n - TYPE_UNKNOWN: TypeUknown is the default status.\n - TYPE_BACK_CHANNEL: TypeBackChannel is the back channel type of OIDC connection.\n - TYPE_FRONT_CHANNEL: TypeFrontChannel is the front channel type of OIDC connection.",
        "enum": [
          "TYPE_UNKNOWN",
          "TYPE_BACK_CHANNEL",
          "TYPE_FRONT_CHANNEL"
        ],
        "type": "string"
      },
      "castai.sso.v1beta1.Okta": {
        "description": "Okta represents a Okta connector.",
        "properties": {
          "oktaDomain": {
            "description": "OktaDomain is the domain of the Okta.",
            "type": "string"
          },
          "clientId": {
            "description": "ClientId is the client id of the Okta.",
            "type": "string"
          },
          "clientSecret": {
            "description": "ClientSecret is the client secret of the Okta.",
            "type": "string"
          }
        },
        "required": [
          "clientId",
          "oktaDomain"
        ],
        "type": "object"
      },
      "castai.sso.v1beta1.SAML": {
        "description": "SAML represents a SAML connector.",
        "properties": {
          "signInUrl": {
            "description": "SignInUrl is the URL where the SAML authentication request is sent.",
            "type": "string"
          },
          "x509Certificate": {
            "description": "X509Certificate is the x509 certificate used to sign the SAML authentication request.",
            "type": "string"
          },
          "entityId": {
            "description": "EntityId is the entity id of the SAML service provider (Auth0).",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "callbackUrl": {
            "description": "CallbackUrl is the callback url (Assertion Consumer Service URL) of the SAML service provider (Auth0).",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "metadataUrl": {
            "description": "MetadataUrl is the URL to the SAML metadata document of the SAML service provider (Auth0).",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "signInUrl",
          "x509Certificate"
        ],
        "type": "object"
      },
      "castai.sso.v1beta1.SSOConnection": {
        "description": "SSOConnection represents a sso connection.",
        "properties": {
          "id": {
            "description": "Id is the unique identifier of the connection.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "Name is the name of the connection.",
            "type": "string"
          },
          "createdAt": {
            "description": "CreatedAt is the time when the connection was created.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "updatedAt": {
            "description": "UpdatedAt is the time when the connection was last updated.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "emailDomain": {
            "description": "EmailDomain is the email domain of the connection.",
            "type": "string"
          },
          "aad": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.AzureAAD"
          },
          "okta": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.Okta"
          },
          "oidc": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.OIDC"
          },
          "saml": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.SAML"
          },
          "status": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.SSOConnection.Status"
          },
          "error": {
            "description": "Error is the error message of the connection.",
            "readOnly": true,
            "type": "string"
          },
          "additionalEmailDomains": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "defaultRoleId": {
            "description": "ID of default role for new users signing up with SSO.",
            "type": "string"
          },
          "isSynced": {
            "description": "Indicates if the connection is SSO synced or not.",
            "type": "boolean"
          }
        },
        "required": [
          "emailDomain",
          "name"
        ],
        "type": "object"
      },
      "castai.sso.v1beta1.SSOConnection.Status": {
        "default": "STATUS_UNKNOWN",
        "description": "Status is the status of the connection.\n\n - STATUS_UNKNOWN: StatusUnknown is the default status.\n - STATUS_ACTIVE: StatusActive is the active status.\n - STATUS_INACTIVE: StatusInactive is the inactive status.\n - STATUS_FAILED: StatusFailed is the failed status.",
        "enum": [
          "STATUS_UNKNOWN",
          "STATUS_ACTIVE",
          "STATUS_INACTIVE",
          "STATUS_FAILED"
        ],
        "type": "string"
      },
      "castai.sso.v1beta1.SetSyncForSSOConnectionResponse": {
        "properties": {
          "emptyResponse": {
            "properties": {},
            "title": "when sync = false",
            "type": "object"
          },
          "token": {
            "$ref": "#/components/schemas/castai.authtoken.v1beta1.AuthToken"
          }
        },
        "type": "object"
      },
      "castai.sso.v1beta1.UpdateSSOConnection": {
        "description": "SSOConnection represents a sso connection.",
        "properties": {
          "name": {
            "description": "Name is the name of the connection.",
            "type": "string"
          },
          "emailDomain": {
            "description": "EmailDomain is the email domain of the connection.",
            "type": "string"
          },
          "aad": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.AzureAAD"
          },
          "okta": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.Okta"
          },
          "oidc": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.OIDC"
          },
          "saml": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.SAML"
          },
          "additionalEmailDomains": {
            "description": "Additional list of email domains assigned to SSO connection.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "defaultRoleId": {
            "description": "ID of default role for new users signing up with SSO.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.sso.v1beta1.UpdateSSOConnectionResponse": {
        "description": "Defines the container for the sso update response.",
        "properties": {
          "connection": {
            "$ref": "#/components/schemas/castai.sso.v1beta1.SSOConnection"
          }
        },
        "type": "object"
      },
      "castai.type.v1.Interval": {
        "description": "Represents a time interval, encoded as a Timestamp start (inclusive) and a\nTimestamp end (exclusive).\n\nThe start must be less than or equal to the end.\nWhen the start equals the end, the interval is empty (matches no time).\nWhen both start and end are unspecified, the interval matches any time.",
        "properties": {
          "startTime": {
            "description": "Optional. Inclusive start of the interval.\n\nIf specified, a Timestamp matching this interval will have to be the same\nor after the start.",
            "format": "date-time",
            "type": "string"
          },
          "endTime": {
            "description": "Optional. Exclusive end of the interval.\n\nIf specified, a Timestamp matching this interval will have to be before the\nend.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.usage.v1beta1.ClusterMetadata": {
        "properties": {
          "id": {
            "description": "The cluster id.",
            "type": "string"
          },
          "name": {
            "description": "The cluster name.",
            "type": "string"
          },
          "providerType": {
            "description": "The cloud provider.",
            "type": "string"
          },
          "providerNamespaceId": {
            "description": "The project the cluster belongs to.",
            "type": "string"
          },
          "region": {
            "$ref": "#/components/schemas/castai.usage.v1beta1.Region"
          }
        },
        "required": [
          "id",
          "name",
          "providerNamespaceId",
          "providerType"
        ],
        "title": "Cluster information",
        "type": "object"
      },
      "castai.usage.v1beta1.ClusterUsage": {
        "properties": {
          "cluster": {
            "$ref": "#/components/schemas/castai.usage.v1beta1.ClusterMetadata"
          },
          "entries": {
            "items": {
              "$ref": "#/components/schemas/castai.usage.v1beta1.ResourceUsage"
            },
            "type": "array"
          }
        },
        "required": [
          "cluster",
          "entries"
        ],
        "type": "object"
      },
      "castai.usage.v1beta1.Filter": {
        "description": "Filter defines various parameters with which requests could be filtered.",
        "properties": {
          "period": {
            "$ref": "#/components/schemas/castai.usage.v1beta1.Period"
          },
          "clusterId": {
            "title": "Optional cluster id for usage filtering",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.usage.v1beta1.GetUsageReportResponse": {
        "properties": {
          "period": {
            "$ref": "#/components/schemas/castai.usage.v1beta1.Period"
          },
          "clusters": {
            "items": {
              "$ref": "#/components/schemas/castai.usage.v1beta1.ClusterUsage"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.usage.v1beta1.GetUsageSummaryResponse": {
        "properties": {
          "cpuHours": {
            "description": "Sum of CPU hours used in the given period.",
            "format": "float",
            "type": "number"
          },
          "avgBillableCpus": {
            "description": "Average billable cpus for requested period (if 'to' is future date - up to current day).",
            "format": "float",
            "type": "number"
          }
        },
        "required": [
          "avgBillableCpus",
          "cpuHours"
        ],
        "type": "object"
      },
      "castai.usage.v1beta1.Period": {
        "description": "Period of time of resource usage.",
        "properties": {
          "from": {
            "description": "Start time of resource usage period.",
            "format": "date-time",
            "type": "string"
          },
          "to": {
            "description": "End time of resource usage period.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.usage.v1beta1.Region": {
        "description": "Region represents cluster region.",
        "properties": {
          "name": {
            "description": "Name of the region.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name of the region.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.usage.v1beta1.ResourceUsage": {
        "description": "ResourceUsage defines resources usage for given period.",
        "properties": {
          "cpuHours": {
            "description": "Average hour usage in the given day.",
            "format": "float",
            "type": "number"
          },
          "billableCpus": {
            "description": "Average count of CPU used in the given day.",
            "format": "float",
            "type": "number"
          },
          "day": {
            "description": "The day of usage.",
            "type": "string"
          }
        },
        "required": [
          "billableCpus",
          "cpuHours",
          "day"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.AddUserToOrganizationResponse": {
        "description": "Defines the response for adding a user to an organization.",
        "type": "object"
      },
      "castai.users.v1beta1.ClaimInvitationResponse": {
        "properties": {
          "organizationId": {
            "description": "Organization ID.",
            "type": "string"
          },
          "membership": {
            "$ref": "#/components/schemas/castai.users.v1beta1.Membership"
          }
        },
        "required": [
          "organizationId"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.CreateInvitationsRequest": {
        "properties": {
          "members": {
            "description": "Memberships to create.",
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.NewMembershipByEmail"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.CreateInvitationsResponse": {
        "properties": {
          "invitationIds": {
            "description": "Invitation IDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.CreateOrganizationResponse": {
        "description": "Defines the container for the organization creation response.",
        "properties": {
          "organization": {
            "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.CreateUserResponse": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/castai.users.v1beta1.User"
          },
          "organizationId": {
            "description": "id of the organization in which the user was created or\nthe first organization in which the user belongs to,\nbeing his own organization or the organization that is\nconnected to the SSO connection.",
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.CurrentUserProfileResponse": {
        "properties": {
          "id": {
            "description": "User ID.",
            "type": "string"
          },
          "username": {
            "description": "User username.",
            "type": "string"
          },
          "name": {
            "description": "User name.",
            "type": "string"
          },
          "email": {
            "description": "User email.",
            "type": "string"
          },
          "firstLogin": {
            "description": "User first login.",
            "type": "boolean"
          },
          "hasHubspotContact": {
            "description": "HasHubspotContact is true if user has Hubspot contact form submitted.",
            "type": "boolean"
          },
          "readmeIoJwt": {
            "title": "JWT for authn to readme docs",
            "type": "string"
          },
          "emailHash": {
            "title": "Email hash used for Pylon identity verification. Uses the HMAC-SHA256",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.DeleteInvitationResponse": {
        "description": "Defines the empty response to invitation deletion.",
        "type": "object"
      },
      "castai.users.v1beta1.DeleteOrganizationResponse": {
        "description": "Defines the empty response to organization deletion.",
        "type": "object"
      },
      "castai.users.v1beta1.EditOrganizationResponse": {
        "description": "Defines the container for the organization search response.",
        "properties": {
          "organization": {
            "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.FindUserResponse": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/castai.users.v1beta1.User"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.GetOrganizationResponse": {
        "description": "Defines the container for the organization search response.",
        "properties": {
          "organization": {
            "$ref": "#/components/schemas/castai.users.v1beta1.Organization"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.GroupRef": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.InvitationRoleBinding": {
        "description": "Represents the binding between a user or group and a role.",
        "properties": {
          "roleId": {
            "description": "Reference to the role that is being bound.",
            "type": "string"
          },
          "scopes": {
            "description": "List of scopes to which this role binding applies.",
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.InvitationRoleBinding.Scope"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.InvitationRoleBinding.Scope": {
        "description": "Defines a scope for a role binding, specifying which resources the role\napplies to.",
        "properties": {
          "id": {
            "description": "Unique identifier for the scope.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.ScopeType"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.ListInvitationsResponse": {
        "description": "Defines container for the organization's pending invitations.",
        "properties": {
          "nextCursor": {
            "title": "The pagination parameters",
            "type": "string"
          },
          "invitations": {
            "description": "Array of organization's pending invitations.",
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.PendingInvitation"
            },
            "type": "array"
          }
        },
        "required": [
          "invitations",
          "nextCursor"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.ListOrganizationUsersResponse": {
        "description": "Defines the container for organization users.",
        "properties": {
          "users": {
            "description": "Array of organization users.",
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.Membership"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.ListOrganizationsResponse": {
        "description": "Defines container for the user's organizations.",
        "properties": {
          "organizations": {
            "description": "Array of user's organizations.",
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.UserOrganization"
            },
            "type": "array"
          }
        },
        "required": [
          "organizations"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.ListUserGroupsResponse": {
        "description": "ListUserGroupsResponse defines the response for listing user groups.",
        "properties": {
          "groups": {
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.GroupRef"
            },
            "type": "array"
          }
        },
        "required": [
          "groups"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.Membership": {
        "description": "Membership describes user-organization membership details.",
        "properties": {
          "user": {
            "$ref": "#/components/schemas/castai.users.v1beta1.User"
          },
          "createdAt": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "loginAt": {
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "groups": {
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.GroupRef"
            },
            "type": "array"
          },
          "role": {
            "deprecated": true
          }
        },
        "required": [
          "user"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.NewMembership": {
        "description": "NewMembership contains data needed to create new membership in organization.",
        "properties": {
          "userId": {
            "description": "id of the user.",
            "type": "string"
          },
          "role": {
            "deprecated": true
          }
        },
        "required": [
          "userId"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.NewMembershipByEmail": {
        "properties": {
          "userEmail": {
            "description": "email of the invited person.",
            "type": "string"
          },
          "roleId": {
            "description": "Deprecated: Use role bindings instead.\nstring roleID.",
            "type": "string",
            "deprecated": true
          },
          "groupIds": {
            "description": "list of the group IDs for which new user should be added.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "roleBindings": {
            "description": "The role bindings the user will be bound to after the invitation is claimed.",
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.InvitationRoleBinding"
            },
            "type": "array"
          },
          "role": {
            "deprecated": true
          }
        },
        "required": [
          "userEmail"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.Organization": {
        "description": "Organization which is the top level tenant in our system.",
        "properties": {
          "id": {
            "description": "id of the organization.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "name of the organization. Name of the organization must start with a\nletter or a number, followed by letters, numbers, underscores, hyphens,\nspaces and periods. The name must end with a letter or a number.",
            "type": "string"
          },
          "createdAt": {
            "description": "organization creation date.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "billingType": {
            "description": "billing type of the organization.",
            "type": "string"
          },
          "metadata": {
            "$ref": "#/components/schemas/castai.users.v1beta1.OrganizationMetadata"
          },
          "parentId": {
            "description": "ID of the parent organization. This is beta feature not available for all organizations.",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/castai.users.v1beta1.OrganizationType"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.OrganizationMetadata": {
        "description": "OrganizationMetadata describes organization metadata.",
        "properties": {
          "partnerTenantId": {
            "description": "partner tenant id on partner system.",
            "nullable": true,
            "type": "string"
          },
          "parentOrganizationId": {
            "description": "parent organization id.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.OrganizationType": {
        "default": "ORGANIZATION_TYPE_DEFAULT",
        "description": "OrganizationType defines possible types of organization.\n\n - ORGANIZATION_TYPE_DEFAULT: default organization type",
        "enum": [
          "ORGANIZATION_TYPE_DEFAULT",
          "ORGANIZATION_TYPE_ENTERPRISE",
          "ORGANIZATION_TYPE_CHILD"
        ],
        "type": "string"
      },
      "castai.users.v1beta1.PendingInvitation": {
        "properties": {
          "id": {
            "description": "id of the invitation.",
            "readOnly": true,
            "type": "string"
          },
          "inviteEmail": {
            "description": "email of the invited person.",
            "type": "string"
          },
          "roleId": {
            "description": "Deprecated: Use role bindings instead.\nrole_id is the role ID of the invited person.",
            "type": "string",
            "deprecated": true
          },
          "roleBindings": {
            "description": "The role bindings the user will be bound to after the invitation is claimed.",
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.InvitationRoleBinding"
            },
            "type": "array"
          },
          "validUntil": {
            "description": "invitation expiration date.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "role": {
            "deprecated": true
          }
        },
        "required": [
          "inviteEmail"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.RedirectContext": {
        "properties": {
          "product": {
            "description": "From which product page user signed up.",
            "nullable": true,
            "type": "string"
          },
          "redirectUrl": {
            "description": "From which URL user signed up.",
            "nullable": true,
            "type": "string"
          },
          "utmParameters": {
            "description": "UTM parameters from redirect context.",
            "items": {
              "$ref": "#/components/schemas/castai.users.v1beta1.UTMParameter"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.RemoveOrganizationUsersResponse": {
        "description": "Defines the response for removing users from an organization.",
        "type": "object"
      },
      "castai.users.v1beta1.RemoveUserFromOrganizationResponse": {
        "description": "Defines the response for removing a user from an organization.",
        "type": "object"
      },
      "castai.users.v1beta1.Request": {
        "type": "object"
      },
      "castai.users.v1beta1.UTMParameter": {
        "properties": {
          "name": {
            "description": "Name of the UTM parameter.",
            "type": "string"
          },
          "value": {
            "description": "value of the UTM parameter.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.UpdateCurrentUserProfileResponse": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/castai.users.v1beta1.User"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.User": {
        "description": "User represents a single system user.",
        "properties": {
          "id": {
            "description": "id of the user.",
            "readOnly": true,
            "type": "string"
          },
          "username": {
            "description": "(required) username, corresponds to auth0 user id.",
            "type": "string"
          },
          "name": {
            "description": "(required) readable user name, e.g. \"John Doe\".",
            "type": "string"
          },
          "email": {
            "description": "(required) user email.",
            "type": "string"
          },
          "authProvider": {
            "description": "(optional) whether SSO auth provider label was provided as a separate JWT claim; used when login handler calls users service.",
            "nullable": true,
            "type": "string"
          },
          "hasHubspotContact": {
            "description": "has_hubspot_contact indicates whether user has a hubspot contact.",
            "readOnly": true,
            "type": "boolean"
          },
          "referId": {
            "description": "(optional) refer_id is a unique identifier of the user in the referral partner system.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "referVisit": {
            "description": "(optional) refer_visit is unique identifier of the visit in the referral partner system.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "oid": {
            "nullable": true,
            "title": "oid is the unique object identifier used by Auth0 AAD SSO to identify the user regardless of mapped claim or connection",
            "type": "string"
          },
          "scimActive": {
            "nullable": true,
            "title": "scim_active indicates if the user is IDP managed and if it's active or not in the remote IDP",
            "type": "boolean"
          }
        },
        "required": [
          "email",
          "name",
          "username"
        ],
        "type": "object"
      },
      "castai.users.v1beta1.UserIdentity": {
        "description": "UserIdentity contains information retrieved from the identity provider with\nwhich the user originally authenticates. Users may link their profile to\nmultiple identity providers, and those identities will also appear in this array.",
        "properties": {
          "connection": {
            "description": "(optional) Name of the Auth0 connection used to authenticate the user.",
            "type": "string"
          },
          "isSocial": {
            "description": "(optional) Indicates whether the connection is a social one.",
            "type": "boolean"
          },
          "provider": {
            "description": "(optional) Name of the entity that is authenticating the user,\nsuch as Facebook, Google, SAML, or your own provider.",
            "type": "string"
          },
          "userId": {
            "description": "(optional) User's unique identifier for this connection/provider.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.UserOrganization": {
        "description": "UserOrganization describes organization user belongs to.",
        "properties": {
          "id": {
            "description": "id of the organization.",
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "description": "name of the organization.",
            "type": "string"
          },
          "createdAt": {
            "description": "organization creation date.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "parentId": {
            "description": "ID of the parent organization. This is beta feature not available for all organizations.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/castai.users.v1beta1.OrganizationType"
          },
          "childOrderId": {
            "description": "The order id of child org in enterprise by created_at - if the org is a child org.",
            "format": "int32",
            "nullable": true,
            "readOnly": true,
            "type": "integer"
          },
          "organizationMember": {
            "description": "Whether the user is member of the organization.",
            "readOnly": true,
            "type": "boolean"
          },
          "internal": {
            "description": "Whether the organization is internal.",
            "readOnly": true,
            "type": "boolean"
          },
          "blockEscalatedPrivilege": {
            "description": "Whether the organization blocks escalated privileges for Cast AI members.",
            "readOnly": true,
            "type": "boolean"
          },
          "role": {
            "deprecated": true
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "castai.v1.Cloud": {
        "default": "invalid",
        "description": "Types of cloud service providers CAST AI supports.\n\n - invalid: Invalid.\n - aws: Amazon web services.\n - gcp: Google cloud provider.\n - azure: Microsoft Azure.\n - unknown: Unknown.",
        "enum": [
          "invalid",
          "INVALID",
          "aws",
          "AWS",
          "gcp",
          "GCP",
          "azure",
          "AZURE",
          "unknown",
          "UNKNOWN"
        ],
        "type": "string"
      },
      "castai.v1.Provider": {
        "default": "invalid_provider",
        "description": "Types of Kubernetes providers CAST AI supports.",
        "enum": [
          "invalid_provider",
          "eks",
          "gke",
          "aks",
          "openshift",
          "kops",
          "anywhere"
        ],
        "type": "string"
      },
      "clusteractions.v1.AckClusterActionResponse": {
        "type": "object"
      },
      "clusteractions.v1.CancelClusterActionsResponse": {
        "properties": {
          "actionId": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ChartSource": {
        "properties": {
          "repoUrl": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterAction": {
        "properties": {
          "id": {
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "doneAt": {
            "format": "date-time",
            "type": "string"
          },
          "error": {
            "nullable": true,
            "type": "string"
          },
          "actionDrainNode": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionDrainNode"
          },
          "actionDeleteNode": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionDeleteNode"
          },
          "actionPatchNode": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionPatchNode"
          },
          "actionCreateEvent": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionCreateEvent"
          },
          "actionApproveCsr": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionApproveCSR"
          },
          "actionChartUpsert": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionChartUpsert"
          },
          "actionDisconnectCluster": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionDisconnectCluster"
          },
          "actionChartUninstall": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionChartUninstall"
          },
          "actionCheckNodeDeleted": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionCheckNodeDeleted"
          },
          "actionChartRollback": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionChartRollback"
          },
          "actionCheckNodeStatus": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionCheckNodeStatus"
          },
          "actionPatch": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionPatch"
          },
          "actionCreate": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionCreate"
          },
          "actionDelete": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionDelete"
          },
          "actionBulkCreateEvent": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionBulkCreateEvent"
          },
          "actionEvictPod": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterActionEvictPod"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionAck": {
        "properties": {
          "error": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionApproveCSR": {
        "properties": {
          "nodeName": {
            "type": "string"
          },
          "nodeId": {
            "type": "string"
          },
          "allowAutoApprove": {
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionBulkCreateEvent": {
        "properties": {
          "createEvents": {
            "items": {
              "$ref": "#/components/schemas/clusteractions.v1.ClusterActionCreateEvent"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionCancel": {
        "properties": {
          "actionId": {
            "type": "string"
          },
          "reason": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionChartRollback": {
        "properties": {
          "namespace": {
            "type": "string"
          },
          "releaseName": {
            "type": "string"
          },
          "version": {
            "description": "Version to rollback from.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionChartUninstall": {
        "properties": {
          "namespace": {
            "type": "string"
          },
          "releaseName": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionChartUpsert": {
        "properties": {
          "namespace": {
            "type": "string"
          },
          "releaseName": {
            "type": "string"
          },
          "valuesOverrides": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "chartSource": {
            "$ref": "#/components/schemas/clusteractions.v1.ChartSource"
          },
          "resetThenReuseValues": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionCheckNodeDeleted": {
        "properties": {
          "nodeName": {
            "type": "string"
          },
          "nodeId": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionCheckNodeStatus": {
        "properties": {
          "nodeName": {
            "type": "string"
          },
          "nodeStatus": {
            "$ref": "#/components/schemas/clusteractions.v1.NodeStatus"
          },
          "waitTimeoutSeconds": {
            "format": "int32",
            "type": "integer"
          },
          "nodeId": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionCreate": {
        "description": "Generic create action that allows to create any resource providing GVR and unstructured object to be created.",
        "properties": {
          "group": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "object": {
            "properties": {},
            "type": "object"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionCreateEvent": {
        "properties": {
          "reportingComponent": {
            "type": "string"
          },
          "objectReference": {
            "$ref": "#/components/schemas/clusteractions.v1.ObjectReference"
          },
          "eventTime": {
            "description": "Event time should not be set during action scheduling. It's added during actions poll.",
            "format": "date-time",
            "type": "string"
          },
          "eventType": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "actionId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionDelete": {
        "description": "Generic delete action that allows to delete any resource providing GVR and resource name.",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/clusteractions.v1.ObjectID"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionDeleteNode": {
        "properties": {
          "nodeName": {
            "type": "string"
          },
          "nodeId": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionDisconnectCluster": {
        "type": "object"
      },
      "clusteractions.v1.ClusterActionDrainNode": {
        "properties": {
          "nodeName": {
            "type": "string"
          },
          "drainTimeoutSeconds": {
            "format": "int32",
            "type": "integer"
          },
          "force": {
            "type": "boolean"
          },
          "nodeId": {
            "type": "string"
          },
          "providerId": {
            "type": "string"
          },
          "waitForVolumeDetach": {
            "description": "When true, wait for VolumeAttachments on the node to be deleted after draining.",
            "nullable": true,
            "type": "boolean"
          },
          "volumeDetachTimeoutSeconds": {
            "description": "Maximum seconds to wait for VolumeAttachments to be deleted.\nOnly applies when wait_for_volume_detach is true.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionEvictPod": {
        "properties": {
          "namespace": {
            "type": "string"
          },
          "podName": {
            "type": "string"
          },
          "timeoutSeconds": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionPatch": {
        "description": "Generic patch action that allows to patch any resource providing GVR, name and patch body.",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/clusteractions.v1.ObjectID"
          },
          "patchType": {
            "type": "string"
          },
          "patch": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterActionPatchNode": {
        "properties": {
          "nodeName": {
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "taints": {
            "items": {
              "$ref": "#/components/schemas/clusteractions.v1.NodeTaint"
            },
            "type": "array"
          },
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "nodeId": {
            "type": "string"
          },
          "unschedulable": {
            "nullable": true,
            "type": "boolean"
          },
          "capacity": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "providerId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ClusterController": {
        "properties": {
          "version": {
            "type": "string"
          },
          "lastHeartbeatAt": {
            "format": "date-time",
            "type": "string"
          },
          "active": {
            "description": "Indicates whether controller is running. False when there was no response in last 10min.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.GetClusterActionResponse": {
        "properties": {
          "action": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterAction"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.GetClusterControllerResponse": {
        "properties": {
          "controller": {
            "$ref": "#/components/schemas/clusteractions.v1.ClusterController"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.IngestLogsResponse": {
        "type": "object"
      },
      "clusteractions.v1.LogEvent": {
        "properties": {
          "level": {
            "type": "string"
          },
          "time": {
            "format": "date-time",
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "fields": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.NodeStatus": {
        "default": "NodeStatus_UNSPECIFIED",
        "description": "- NodeStatus_UNSPECIFIED: Not provided status\n - NodeStatus_READY: Node joined cluster\n - NodeStatus_DELETED: Node not exist in cluster",
        "enum": [
          "NodeStatus_UNSPECIFIED",
          "NodeStatus_READY",
          "NodeStatus_DELETED"
        ],
        "title": "Kubernetes node status",
        "type": "string"
      },
      "clusteractions.v1.NodeTaint": {
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "effect": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ObjectID": {
        "properties": {
          "group": {
            "description": "For the object that are in the core group (e.g. pods, nodes, namespaces etc.\nhttps://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#-strong-api-groups-strong-)\nuse `core` as a group name.",
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "namespace": {
            "nullable": true,
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ObjectReference": {
        "properties": {
          "kind": {
            "nullable": true,
            "title": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n+optional",
            "type": "string"
          },
          "namespace": {
            "nullable": true,
            "title": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\n+optional",
            "type": "string"
          },
          "name": {
            "nullable": true,
            "title": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n+optional",
            "type": "string"
          },
          "uid": {
            "nullable": true,
            "title": "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\n+optional",
            "type": "string"
          },
          "apiVersion": {
            "nullable": true,
            "title": "API version of the referent.\n+optional",
            "type": "string"
          },
          "resourceVersion": {
            "nullable": true,
            "title": "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\n+optional",
            "type": "string"
          },
          "fieldPath": {
            "nullable": true,
            "title": "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.\n+optional",
            "type": "string"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.PollClusterActionsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/clusteractions.v1.ClusterAction"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "clusteractions.v1.ScheduleClusterActionResponse": {
        "properties": {
          "actionId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "components.v1.AuditEntries": {
        "properties": {
          "entries": {
            "items": {
              "$ref": "#/components/schemas/components.v1.AuditEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "entries"
        ],
        "type": "object"
      },
      "components.v1.AuditEntry": {
        "properties": {
          "id": {
            "type": "string"
          },
          "eventType": {
            "type": "string"
          },
          "event": {
            "properties": {},
            "type": "object"
          },
          "tenantId": {
            "type": "string"
          },
          "initiatedBy": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "createdAt",
          "event",
          "eventType",
          "id",
          "initiatedBy",
          "labels",
          "tenantId"
        ],
        "title": "AuditEntry is general structure for publishing audit messages.\nCopypasta from mq/audit",
        "type": "object"
      },
      "components.v1.ComponentEvents": {
        "properties": {
          "entries": {
            "description": "The events to ingest.",
            "items": {
              "$ref": "#/components/schemas/components.v1.EventEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "entries"
        ],
        "type": "object"
      },
      "components.v1.ComponentLogs": {
        "properties": {
          "version": {
            "description": "The version of the source component.",
            "type": "string"
          },
          "entries": {
            "description": "The logs to ingest.",
            "items": {
              "$ref": "#/components/schemas/components.v1.LogEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "entries",
          "version"
        ],
        "type": "object"
      },
      "components.v1.EventEntry": {
        "description": "Represents a single event entry.",
        "properties": {
          "eventName": {
            "description": "The event name/type.",
            "type": "string"
          },
          "content": {
            "description": "The structured event content.",
            "properties": {},
            "type": "object"
          },
          "time": {
            "description": "The time the event occurred.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "content",
          "eventName",
          "time"
        ],
        "type": "object"
      },
      "components.v1.IngestAuditResponse": {
        "properties": {
          "succeededIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "failedIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "components.v1.IngestCacheGroupLogsResponse": {
        "type": "object"
      },
      "components.v1.IngestEventsResponse": {
        "type": "object"
      },
      "components.v1.IngestLogsResponse": {
        "type": "object"
      },
      "components.v1.IngestMetricsResponse": {
        "title": "IngestMetricsResponse Custom response message for IngestMetrics",
        "type": "object"
      },
      "components.v1.LogEntry": {
        "description": "Represents a single log entry.",
        "properties": {
          "level": {
            "$ref": "#/components/schemas/components.v1.LogLevel"
          },
          "time": {
            "description": "The time the log was emitted.",
            "format": "date-time",
            "type": "string"
          },
          "message": {
            "description": "The log message.",
            "type": "string"
          },
          "fields": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The fields of the log.",
            "type": "object"
          }
        },
        "required": [
          "level",
          "message",
          "time"
        ],
        "type": "object"
      },
      "components.v1.LogLevel": {
        "default": "LOG_LEVEL_UNKNOWN",
        "description": "Standard log levels.",
        "enum": [
          "LOG_LEVEL_UNKNOWN",
          "LOG_LEVEL_DEBUG",
          "LOG_LEVEL_INFO",
          "LOG_LEVEL_WARNING",
          "LOG_LEVEL_ERROR",
          "LOG_LEVEL_FATAL"
        ],
        "type": "string"
      },
      "costreport.v1beta1.AllocationGroup": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "filter": {
            "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupFilter"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.AllocationGroupDetails": {
        "properties": {
          "name": {
            "type": "string"
          },
          "filter": {
            "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupFilter"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.AllocationGroupFilter": {
        "properties": {
          "clusterIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupFilter.LabelValue"
            },
            "type": "array"
          },
          "namespaces": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labelsOperator": {
            "$ref": "#/components/schemas/costreport.v1beta1.FilterOperator"
          },
          "nodeLabels": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupFilter.LabelValue"
            },
            "type": "array"
          },
          "nodeLabelsOperator": {
            "$ref": "#/components/schemas/costreport.v1beta1.FilterOperator"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.AllocationGroupFilter.LabelValue": {
        "properties": {
          "label": {
            "description": "Label name.",
            "type": "string"
          },
          "value": {
            "description": "Label value. Not used with operators: Exists and DoesNotExist.",
            "type": "string"
          },
          "operator": {
            "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupFilter.LabelValue.Operator"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.AllocationGroupFilter.LabelValue.Operator": {
        "default": "Equal",
        "description": "A set of operators which can be used in the label filter.",
        "enum": [
          "Equal",
          "NotEqual",
          "Exists",
          "DoesNotExist"
        ],
        "type": "string"
      },
      "costreport.v1beta1.AllocationGroupVersionDetails": {
        "properties": {
          "createdAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.ClusterNamespaces": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "namespaces": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.ClusterSummary": {
        "description": "Defines summary of cluster.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "nodeCountOnDemand": {
            "description": "Total number of on-demand nodes.",
            "type": "string"
          },
          "nodeCountSpot": {
            "description": "Total number of spot nodes.",
            "type": "string"
          },
          "nodeCountOnDemandCastai": {
            "description": "Number of on-demand nodes managed by CAST.AI.",
            "type": "string"
          },
          "nodeCountSpotCastai": {
            "description": "Number of spot nodes managed by CAST.AI.",
            "type": "string"
          },
          "nodeCountSpotFallbackCastai": {
            "description": "Number of spot-fallback nodes managed by CAST.AI.",
            "type": "string"
          },
          "cpuProvisionedOnDemand": {
            "description": "Provisioned CPU cores on-demand.",
            "type": "string"
          },
          "cpuProvisionedSpot": {
            "description": "Provisioned CPU cores spot.",
            "type": "string"
          },
          "cpuProvisionedSpotFallback": {
            "description": "Provisioned CPU cores spot fallback.",
            "type": "string"
          },
          "cpuAllocatableOnDemand": {
            "description": "Allocatable CPU cores on-demand.",
            "type": "string"
          },
          "cpuAllocatableSpot": {
            "description": "Allocatable CPU cores spot.",
            "type": "string"
          },
          "cpuAllocatableSpotFallback": {
            "description": "Allocatable CPU cores spot fallback.",
            "type": "string"
          },
          "cpuRequestedOnDemand": {
            "description": "Requested CPU cores on-demand.",
            "type": "string"
          },
          "cpuRequestedSpot": {
            "description": "Requested CPU cores spot.",
            "type": "string"
          },
          "cpuRequestedSpotFallback": {
            "description": "Requested CPU cores spot fallback.",
            "type": "string"
          },
          "ramProvisionedOnDemand": {
            "description": "Provisioned RAM GiB on-demand.",
            "type": "string"
          },
          "ramProvisionedSpot": {
            "description": "Provisioned RAM GiB spot.",
            "type": "string"
          },
          "ramProvisionedSpotFallback": {
            "description": "Provisioned RAM GiB spot fallback.",
            "type": "string"
          },
          "ramAllocatableOnDemand": {
            "description": "Allocatable RAM GiB on-demand.",
            "type": "string"
          },
          "ramAllocatableSpot": {
            "description": "Allocatable RAM GiB spot.",
            "type": "string"
          },
          "ramAllocatableSpotFallback": {
            "description": "Allocatable RAM GiB spot fallback.",
            "type": "string"
          },
          "ramRequestedOnDemand": {
            "description": "Requested RAM GiB on-demand.",
            "type": "string"
          },
          "ramRequestedSpot": {
            "description": "Requested RAM GiB spot.",
            "type": "string"
          },
          "ramRequestedSpotFallback": {
            "description": "Requested RAM GiB spot fallback.",
            "type": "string"
          },
          "costHourlyOnDemand": {
            "description": "Cost per hour on-demand.",
            "type": "string"
          },
          "costHourlySpot": {
            "description": "Cost per hour spot.",
            "type": "string"
          },
          "costHourlySpotFallback": {
            "description": "Cost per hour spot fallback.",
            "type": "string"
          },
          "podCount": {
            "description": "Pod count.",
            "type": "string"
          },
          "unschedulablePodCount": {
            "description": "Unschedulable pod count.",
            "type": "string"
          },
          "cpuUsed": {
            "description": "Used CPU cores.",
            "type": "string"
          },
          "ramUsed": {
            "description": "Used RAM GiB.",
            "type": "string"
          },
          "unknownNodeCount": {
            "description": "Number of nodes with not supported instance type.",
            "type": "string"
          },
          "cpuCostHourlyOnDemand": {
            "description": "CPU cost per hour on-demand.",
            "type": "string"
          },
          "cpuCostHourlySpot": {
            "description": "CPU cost per hour spot.",
            "type": "string"
          },
          "cpuCostHourlySpotFallback": {
            "description": "CPU cost per hour spot fallback.",
            "type": "string"
          },
          "ramCostHourlyOnDemand": {
            "description": "RAM cost per hour on-demand.",
            "type": "string"
          },
          "ramCostHourlySpot": {
            "description": "RAM cost per hour spot.",
            "type": "string"
          },
          "ramCostHourlySpotFallback": {
            "description": "RAM cost per hour spot fallback.",
            "type": "string"
          },
          "gpuProvisionedOnDemand": {
            "description": "Provisioned GPUs on-demand.",
            "type": "string"
          },
          "gpuProvisionedSpot": {
            "description": "Provisioned GPUs spot.",
            "type": "string"
          },
          "gpuProvisionedSpotFallback": {
            "description": "Provisioned GPUs spot fallback.",
            "type": "string"
          },
          "gpuAllocatableOnDemand": {
            "description": "Allocatable GPUs on-demand.",
            "type": "string"
          },
          "gpuAllocatableSpot": {
            "description": "Allocatable GPUs spot.",
            "type": "string"
          },
          "gpuAllocatableSpotFallback": {
            "description": "Allocatable GPUs spot fallback.",
            "type": "string"
          },
          "gpuRequestedOnDemand": {
            "description": "Requested GPUs on-demand.",
            "type": "string"
          },
          "gpuRequestedSpot": {
            "description": "Requested GPUs spot.",
            "type": "string"
          },
          "gpuRequestedSpotFallback": {
            "description": "Requested GPUs spot fallback.",
            "type": "string"
          },
          "gpuCostHourlyOnDemand": {
            "description": "GPU cost per hour on-demand.",
            "type": "string"
          },
          "gpuCostHourlySpot": {
            "description": "GPU cost per hour spot.",
            "type": "string"
          },
          "gpuCostHourlySpotFallback": {
            "description": "GPU cost per hour spot fallback.",
            "type": "string"
          },
          "gpuUsedOnDemand": {
            "description": "GPU used (active) on-demand.",
            "type": "string"
          },
          "gpuUsedSpot": {
            "description": "GPU used (active) spot.",
            "type": "string"
          },
          "gpuUsedSpotFallback": {
            "description": "GPU used (active) spot fallback.",
            "type": "string"
          },
          "gpuIdleOnDemand": {
            "description": "Idle GPUs in on-demand nodes.",
            "type": "string"
          },
          "gpuIdleSpot": {
            "description": "Idle GPUs spot.",
            "type": "string"
          },
          "gpuIdleSpotFallback": {
            "description": "Idle GPUs spot fallback.",
            "type": "string"
          },
          "gpuNotUsedOnDemand": {
            "description": "GPUs reserved but not used by any workload in on-demand nodes.",
            "type": "string"
          },
          "gpuNotUsedSpot": {
            "description": "GPUs reserved but not used by any workload in spot nodes.",
            "type": "string"
          },
          "gpuNotUsedSpotFallback": {
            "description": "GPUs reserved but not used by any workload in spot-fallback nodes.",
            "type": "string"
          },
          "storageProvisioned": {
            "description": "Storage GiB provisioned.",
            "type": "string"
          },
          "storageRequested": {
            "description": "Storage GiB claimed in PVC accessed by any workload.",
            "type": "string"
          },
          "storageClaimed": {
            "description": "Storage GiB claimed in PVC.",
            "type": "string"
          },
          "storageCostHourly": {
            "description": "Storage cost per hour.",
            "type": "string"
          },
          "clusterScore": {
            "description": "Cluster score.",
            "type": "string"
          },
          "tpuProvisionedOnDemand": {
            "description": "Provisioned TPUs on-demand.",
            "type": "string"
          },
          "tpuProvisionedSpot": {
            "description": "Provisioned TPUs spot.",
            "type": "string"
          },
          "tpuProvisionedSpotFallback": {
            "description": "Provisioned TPUs spot fallback.",
            "type": "string"
          },
          "tpuAllocatableOnDemand": {
            "description": "Allocatable TPUs on-demand.",
            "type": "string"
          },
          "tpuAllocatableSpot": {
            "description": "Allocatable TPUs spot.",
            "type": "string"
          },
          "tpuAllocatableSpotFallback": {
            "description": "Allocatable TPUs spot fallback.",
            "type": "string"
          },
          "tpuRequestedOnDemand": {
            "description": "Requested TPUs on-demand.",
            "type": "string"
          },
          "tpuRequestedSpot": {
            "description": "Requested TPUs spot.",
            "type": "string"
          },
          "tpuRequestedSpotFallback": {
            "description": "Requested TPUs spot fallback.",
            "type": "string"
          },
          "tpuCostHourlyOnDemand": {
            "description": "TPU cost per hour on-demand.",
            "type": "string"
          },
          "tpuCostHourlySpot": {
            "description": "TPU cost per hour spot.",
            "type": "string"
          },
          "tpuCostHourlySpotFallback": {
            "description": "TPU cost per hour spot fallback.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.ConfigurationAfter": {
        "properties": {
          "nodes": {
            "description": "A single cluster node.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.Node"
            },
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.ConfigurationAfter.Summary"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.ConfigurationAfter.Summary": {
        "description": "Summary of suggested node configuration.",
        "properties": {
          "nodes": {
            "description": "Total number of nodes.",
            "format": "int32",
            "type": "integer"
          },
          "distinctNodeTypes": {
            "description": "Number of distinct node types.",
            "format": "int32",
            "type": "integer"
          },
          "cpuCores": {
            "description": "Total number of CPU cores.",
            "format": "int32",
            "type": "integer"
          },
          "ramBytes": {
            "description": "Total amount of RAM in bytes.",
            "format": "double",
            "type": "number"
          },
          "gpu": {
            "description": "Total number of GPU cores.",
            "format": "int32",
            "type": "integer"
          },
          "price": {
            "description": "Total hourly price of all nodes.",
            "type": "string"
          },
          "avgCpuPrice": {
            "description": "Average hourly price per CPU core.",
            "type": "string"
          },
          "avgRamPrice": {
            "description": "Average hourly price per RAM GiB.",
            "type": "string"
          },
          "gpuFractional": {
            "description": "Total number of GPU cores including fractional GPU cores.",
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.ContainerEfficiency": {
        "description": "Defines the workload efficiency details for a container.",
        "properties": {
          "name": {
            "description": "Defines the name of the container.",
            "type": "string"
          },
          "current": {
            "$ref": "#/components/schemas/costreport.v1beta1.ContainerEfficiency.CurrentEfficiency"
          },
          "items": {
            "description": "Defines the container efficiency for the container over time.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.ContainerEfficiency.EfficiencyItem"
            },
            "type": "array"
          }
        },
        "required": [
          "items",
          "name"
        ],
        "type": "object"
      },
      "costreport.v1beta1.ContainerEfficiency.CurrentEfficiency": {
        "description": "Defines the efficiency info.",
        "properties": {
          "requests": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "usage": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "recommendation": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "efficiency": {
            "description": "Defines the efficiency ratio for the container.",
            "type": "string"
          },
          "cpuEfficiency": {
            "description": "Defines cpu efficiency ratio for the container.",
            "type": "string"
          },
          "memoryEfficiency": {
            "description": "Defines memory efficiency ratio for the container.",
            "type": "string"
          }
        },
        "required": [
          "cpuEfficiency",
          "efficiency",
          "memoryEfficiency",
          "recommendation",
          "requests",
          "usage"
        ],
        "type": "object"
      },
      "costreport.v1beta1.ContainerEfficiency.EfficiencyInfo": {
        "description": "Defines the efficiency info.",
        "properties": {
          "requests": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "usage": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "recommendation": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "efficiency": {
            "description": "Defines the efficiency ratio for the container.",
            "type": "string"
          },
          "cpuEfficiency": {
            "description": "Defines cpu efficiency ratio for the container.",
            "type": "string"
          },
          "memoryEfficiency": {
            "description": "Defines memory efficiency ratio for the container.",
            "type": "string"
          },
          "costImpact": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostImpact"
          },
          "totalRequests": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "totalUsage": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "totalRecommendation": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          }
        },
        "required": [
          "costImpact",
          "cpuEfficiency",
          "efficiency",
          "memoryEfficiency",
          "recommendation",
          "requests",
          "totalRecommendation",
          "totalRequests",
          "totalUsage",
          "usage"
        ],
        "type": "object"
      },
      "costreport.v1beta1.ContainerEfficiency.EfficiencyItem": {
        "description": "Defines the efficiency entry.",
        "properties": {
          "timestamp": {
            "description": "Defines the time the efficiency information is for.",
            "format": "date-time",
            "type": "string"
          },
          "info": {
            "$ref": "#/components/schemas/costreport.v1beta1.ContainerEfficiency.EfficiencyInfo"
          }
        },
        "required": [
          "info",
          "timestamp"
        ],
        "type": "object"
      },
      "costreport.v1beta1.CostEfficiency": {
        "properties": {
          "cost": {
            "format": "double",
            "title": "Cost of some resource",
            "type": "number"
          },
          "perUnitProvisioned": {
            "format": "double",
            "title": "Cost per provisioned unit of the resource (e.g. cost / provisioned_cpu_cores or  cost / provisioned_ram_gib)",
            "type": "number"
          },
          "perUnitRequested": {
            "format": "double",
            "title": "Cost per requested unit of the resources",
            "type": "number"
          },
          "perUnitUsed": {
            "format": "double",
            "title": "Cost per used unit of the resources (cost / provisioned_cpu_cores or cost / provisioned_ram_gib)",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.CostImpact": {
        "description": "Defines cost impact of wasted resources per lifecycle.",
        "properties": {
          "onDemand": {
            "description": "Cost impact in $ for workload running on on-demand node.",
            "type": "string"
          },
          "spot": {
            "description": "Cost impact in $ for workload running on spot node.",
            "type": "string"
          },
          "spotFallback": {
            "description": "Cost impact in $ for workload running on spot-fallback node.",
            "type": "string"
          }
        },
        "required": [
          "onDemand",
          "spot",
          "spotFallback"
        ],
        "type": "object"
      },
      "costreport.v1beta1.CreateAllocationGroupResponse": {
        "properties": {
          "allocationGroup": {
            "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroup"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.DeleteAllocationGroupResponse": {
        "type": "object"
      },
      "costreport.v1beta1.DestinationAddresses": {
        "description": "Defines destination addresses for different traffic types.",
        "properties": {
          "internet": {
            "description": "Destination addresses for internet traffic.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "interRegion": {
            "description": "Destination addresses for inter-region traffic.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "interZone": {
            "description": "Destination addresses for inter-zone traffic.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "intraZone": {
            "description": "Destination addresses for intra-zone traffic.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "cloudApi": {
            "description": "Destination addresses for cloud API traffic.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.DiskStatus": {
        "default": "UNSPECIFIED_DISK_STATUS",
        "description": "This defines the state of the disk and the reason for it being idle.",
        "enum": [
          "UNSPECIFIED_DISK_STATUS",
          "UNATTACHED"
        ],
        "type": "string"
      },
      "costreport.v1beta1.EgressdStatus": {
        "default": "StatusUnknown",
        "description": "Defines a list of possible egressd agent statuses.\n\n - StatusUnknown: Egressd agent is unknown\n - NotInstalled: Egressd agent is not installed\n - Inactive: Egressd agent is not active (CAST AI didn't receive egressd metrics more than X amount of time)\n - Active: Egressd agent is active and working",
        "enum": [
          "StatusUnknown",
          "NotInstalled",
          "Inactive",
          "Active"
        ],
        "type": "string"
      },
      "costreport.v1beta1.FilterOperator": {
        "default": "OR",
        "enum": [
          "OR",
          "AND"
        ],
        "title": "Defines operator within filter: OR/AND",
        "type": "string"
      },
      "costreport.v1beta1.GPUMemory": {
        "properties": {
          "availableBytes": {
            "description": "Available memory in bytes.",
            "type": "string"
          },
          "usedBytes": {
            "description": "Used memory in bytes.",
            "type": "string"
          },
          "wastedBytes": {
            "description": "Wasted (free) memory in bytes.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GPUReportDataPoint": {
        "description": "Defines a GPU report data point.",
        "properties": {
          "timestamp": {
            "description": "Timestamp of the data point.",
            "format": "date-time",
            "type": "string"
          },
          "gpuCount": {
            "description": "Number of GPUs at this timestamp.",
            "format": "uint64",
            "type": "string"
          },
          "uptimeSeconds": {
            "description": "GPU uptime seconds.",
            "format": "double",
            "type": "number"
          },
          "idleSeconds": {
            "description": "GPU idle seconds.",
            "format": "double",
            "type": "number"
          },
          "utilizationSeconds": {
            "description": "GPU utilization seconds (uptime - idle).",
            "format": "double",
            "type": "number"
          },
          "gpuMemoryUtilizationPercent": {
            "description": "GPU memory utilization percent.",
            "format": "double",
            "type": "number"
          },
          "fiDevGpuUtilPercent": {
            "description": "GPU utilization percent (based on DCGM_FI_DEV_GPU_UTIL metric).",
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GPUReportSeries": {
        "description": "Defines GPU report time-series grouped by GPU model.",
        "properties": {
          "gpuModel": {
            "description": "GPU model name.",
            "type": "string"
          },
          "data": {
            "description": "Time-series data points.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GPUReportDataPoint"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GPUReportSummary": {
        "description": "Defines GPU report summary metrics.",
        "properties": {
          "avgGpuUtilizationPercent": {
            "description": "Average GPU utilization percent (based on graphic engine active).",
            "format": "double",
            "type": "number"
          },
          "avgFiDevGpuUtilPercent": {
            "description": "Average GPU utilization percent (based on DCGM_FI_DEV_GPU_UTIL metric).",
            "format": "double",
            "type": "number"
          },
          "avgGpuMemoryUtilizationPercent": {
            "description": "Average GPU memory utilization percent.",
            "format": "double",
            "type": "number"
          },
          "totalIdleSeconds": {
            "description": "Total GPU idle seconds.",
            "format": "double",
            "type": "number"
          },
          "totalUptimeSeconds": {
            "description": "Total GPU uptime seconds.",
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GPUUtilization": {
        "properties": {
          "gpuPercent": {
            "description": "GPU utilization percent (based on graphic engine active).",
            "type": "string"
          },
          "memoryPercent": {
            "description": "Memory utilization percent.",
            "type": "string"
          },
          "fiDevGpuUtil": {
            "description": "FI DEV GPU utilization percent (based on DCGM_FI_DEV_GPU_UTIL metric).",
            "type": "string"
          },
          "utilizationPercent": {
            "description": "Unified GPU utilization percent (uses fi_dev_gpu_util for fractional/time-sharing, otherwise gpu_graphic_engine_active).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupCostSummariesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupCostSummariesResponse.GroupItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupCostSummariesResponse.GroupItem": {
        "properties": {
          "groupName": {
            "description": "Allocation group name.",
            "type": "string"
          },
          "groupId": {
            "description": "Allocation group ID.",
            "type": "string"
          },
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupCostSummariesResponse.Summary"
          },
          "versions": {
            "description": "Allocation group version history.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupVersionDetails"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupCostSummariesResponse.Summary": {
        "description": "Defines cost details for a given time.",
        "properties": {
          "totalCostOnDemand": {
            "description": "Total cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "totalCostSpot": {
            "description": "Total cost of spot instances for the given time period.",
            "type": "string"
          },
          "totalCostSpotFallback": {
            "description": "Total cost of spot-fallback instances for the given time period.",
            "type": "string"
          },
          "cpuCount": {
            "description": "Average number of CPUs used for the given time period.",
            "type": "string"
          },
          "ramGib": {
            "description": "Average RAM GiB used for the given time period.",
            "type": "string"
          },
          "gpuCount": {
            "description": "Average number of GPUs for the given time period.",
            "type": "string"
          },
          "tpuCount": {
            "description": "Average number of TPU chips for the given time period.",
            "type": "string"
          },
          "cpuCost": {
            "description": "Total CPU cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "ramCost": {
            "description": "Total RAM cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "gpuCost": {
            "description": "Total GPU cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "tpuCost": {
            "description": "Total TPU cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "workloadCount": {
            "title": "Total workload count for the given period",
            "type": "string"
          },
          "requestedCpuHours": {
            "description": "Total requested CPU hours for the given time period.",
            "type": "string"
          },
          "requestedRamGibHours": {
            "description": "Total requested RAM GiB hours for the given time period.",
            "type": "string"
          },
          "requestedGpuHours": {
            "description": "Total requested GPU hours for the given time period.",
            "type": "string"
          },
          "requestedTpuHours": {
            "description": "Total requested TPU chip hours for the given time period.",
            "type": "string"
          },
          "requestedStorageGibHours": {
            "description": "Total requested storage GiB hours for the given time period.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupCostTimedSummariesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupCostTimedSummariesResponse.GroupItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupCostTimedSummariesResponse.GroupItem": {
        "properties": {
          "groupName": {
            "description": "Allocation group name.",
            "type": "string"
          },
          "groupId": {
            "description": "Allocation group ID.",
            "type": "string"
          },
          "items": {
            "description": "Allocation group cost entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupCostTimedSummariesResponse.Summary"
            },
            "type": "array"
          },
          "versions": {
            "description": "Allocation group version history.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupVersionDetails"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupCostTimedSummariesResponse.Summary": {
        "description": "Defines cost details for a given time.",
        "properties": {
          "totalCostOnDemand": {
            "description": "Total cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "totalCostSpot": {
            "description": "Total cost of spot instances for the given time period.",
            "type": "string"
          },
          "totalCostSpotFallback": {
            "description": "Total cost of spot-fallback instances for the given time period.",
            "type": "string"
          },
          "cpuCount": {
            "description": "Average number of CPUs used for the given time period.",
            "type": "string"
          },
          "ramGib": {
            "description": "Average RAM GiB used for the given time period.",
            "type": "string"
          },
          "gpuCount": {
            "description": "Average number of GPUs for the given time period.",
            "type": "string"
          },
          "tpuCount": {
            "description": "Average number of TPU chips for the given time period.",
            "type": "string"
          },
          "cpuCost": {
            "description": "Total CPU cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "ramCost": {
            "description": "Total RAM cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "gpuCost": {
            "description": "Total GPU cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "tpuCost": {
            "description": "Total TPU cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "workloadCount": {
            "title": "Total workload count for the given period",
            "type": "string"
          },
          "timestamp": {
            "description": "Timestamp of entry.",
            "format": "date-time",
            "type": "string"
          },
          "requestedCpuHours": {
            "description": "Total requested CPU hours for the given time period.",
            "type": "string"
          },
          "requestedRamGibHours": {
            "description": "Total requested RAM GiB hours for the given time period.",
            "type": "string"
          },
          "requestedGpuHours": {
            "description": "Total requested GPU hours for the given time period.",
            "type": "string"
          },
          "requestedTpuHours": {
            "description": "Total requested TPU chip hours for the given time period.",
            "type": "string"
          },
          "requestedStorageGibHours": {
            "description": "Total requested storage GiB hours for the given time period.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupEfficiencySummaryResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupEfficiencySummaryResponse.CostAllocationGroupItem"
            },
            "type": "array"
          },
          "topItems": {
            "description": "Top N allocation groups with highest cost impact.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupEfficiencySummaryResponse.TopItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupEfficiencySummaryResponse.CostAllocationGroupItem": {
        "properties": {
          "groupName": {
            "type": "string"
          },
          "groupId": {
            "type": "string"
          },
          "workloadCount": {
            "description": "Number of workloads for the given time period.",
            "format": "int32",
            "type": "integer"
          },
          "requests": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "usage": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "waste": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "costImpact": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostImpact"
          },
          "totalCostImpact": {
            "description": "Total cost impact of the group. Sum of cost impacts by lifecycle.",
            "type": "string"
          },
          "versions": {
            "description": "Allocation group version history.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupVersionDetails"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupEfficiencySummaryResponse.CostImpactHistoryItem": {
        "properties": {
          "timestamp": {
            "description": "Timestamp of the cost impact.",
            "format": "date-time",
            "type": "string"
          },
          "costImpact": {
            "title": "Cost impact for given timestamp",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupEfficiencySummaryResponse.TopItem": {
        "properties": {
          "groupName": {
            "description": "Allocation group name.",
            "type": "string"
          },
          "groupId": {
            "description": "Allocation group ID.",
            "type": "string"
          },
          "totalCostImpact": {
            "description": "Total cost impact of the group.",
            "type": "string"
          },
          "costImpactHistory": {
            "description": "Cost impact of the group with daily breakdown.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupEfficiencySummaryResponse.CostImpactHistoryItem"
            },
            "type": "array"
          },
          "versions": {
            "description": "Allocation group version history.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupVersionDetails"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupResponse": {
        "properties": {
          "allocationGroup": {
            "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroup"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupTotalCostTimedResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupTotalCostTimedResponse.GroupItem"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupTotalCostTimedResponse.CostItem": {
        "description": "Defines cost details for a given time.",
        "properties": {
          "totalCost": {
            "description": "Total cost for the given time period.",
            "type": "string"
          },
          "timestamp": {
            "description": "Timestamp of entry.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupTotalCostTimedResponse.GroupItem": {
        "properties": {
          "groupName": {
            "description": "Allocation group name.",
            "type": "string"
          },
          "groupId": {
            "description": "Allocation group ID.",
            "type": "string"
          },
          "items": {
            "description": "Allocation group cost entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupTotalCostTimedResponse.CostItem"
            },
            "type": "array"
          },
          "versions": {
            "description": "Allocation group version history.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroupVersionDetails"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupWorkloadCostsResponse": {
        "description": "Defines cluster workload cost response.",
        "properties": {
          "groupName": {
            "type": "string"
          },
          "groupId": {
            "type": "string"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          },
          "items": {
            "description": "Workload entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupWorkloadCostsResponse.WorkloadItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupWorkloadCostsResponse.WorkloadItem": {
        "description": "Defines a workload.",
        "properties": {
          "clusterId": {
            "title": "Cluster ID",
            "type": "string"
          },
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "totalCostOnDemand": {
            "description": "Total cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "totalCostSpot": {
            "description": "Total cost of spot instances for the given time period.",
            "type": "string"
          },
          "totalCostSpotFallback": {
            "description": "Total cost of spot-fallback instances for the given time period.",
            "type": "string"
          },
          "cpuCount": {
            "description": "Average number of CPUs used for the given time period.",
            "type": "string"
          },
          "ramGib": {
            "description": "Average RAM GiB used for the given time period.",
            "type": "string"
          },
          "gpuCount": {
            "description": "Average number of GPUs for the given time period.",
            "type": "string"
          },
          "tpuCount": {
            "description": "Average number of TPU chips for the given time period.",
            "type": "string"
          },
          "cpuCost": {
            "description": "Total CPU cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "ramCost": {
            "description": "Total RAM cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "gpuCost": {
            "description": "Total GPU cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "tpuCost": {
            "description": "Total TPU cost of on-demand instances for the given time period.",
            "type": "string"
          },
          "totalPodCount": {
            "title": "Total pod count per workload for the given period",
            "type": "string"
          },
          "podCount": {
            "description": "Average amount of pods included to allocation group based on filter criteria.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupWorkloadsEfficiencyResponse": {
        "description": "Defines cluster workload cost response.",
        "properties": {
          "groupName": {
            "type": "string"
          },
          "groupId": {
            "type": "string"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          },
          "workloads": {
            "description": "Workload entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetAllocationGroupWorkloadsEfficiencyResponse.WorkloadItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetAllocationGroupWorkloadsEfficiencyResponse.WorkloadItem": {
        "description": "Defines a workload.",
        "properties": {
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "requests": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "usage": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "waste": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "costImpact": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostImpact"
          },
          "totalCostImpact": {
            "description": "Total cost impact of the workload. Sum of cost impacts by lifecycle.",
            "type": "string"
          },
          "totalPodCount": {
            "title": "Total pod count per workload for the given period",
            "type": "string"
          },
          "podCount": {
            "description": "Average amount of pods included to allocation group based on filter criteria.",
            "type": "string"
          },
          "clusterId": {
            "title": "Cluster ID",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterAgentStatusResponse": {
        "properties": {
          "statuses": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterAgentStatusResponse.ComponentStatus"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterAgentStatusResponse.ComponentStatus": {
        "properties": {
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "totalPods": {
            "format": "int32",
            "type": "integer"
          },
          "runningPods": {
            "format": "int32",
            "type": "integer"
          },
          "totalRestarts": {
            "format": "int32",
            "type": "integer"
          },
          "lastRestartTime": {
            "format": "date-time",
            "type": "string"
          },
          "nonRunningPodNames": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterCostHistoryResponse": {
        "description": "Defines get cluster cost history request.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "description": "Cost entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterCostHistoryResponse.CostEntry"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterCostHistoryResponse.CostDetails": {
        "description": "Defines cluster cost details: cost and resources.",
        "properties": {
          "costPerHour": {
            "description": "Average hourly cost of the cluster.",
            "format": "double",
            "type": "number"
          },
          "totalNodeCount": {
            "description": "Average number of nodes in the cluster.",
            "format": "double",
            "type": "number"
          },
          "spotNodeCount": {
            "description": "Average number of nodes of type Spot in the cluster.",
            "format": "double",
            "type": "number"
          },
          "totalCpu": {
            "description": "Average number of CPUs in all nodes in the cluster.",
            "format": "double",
            "type": "number"
          },
          "spotCpu": {
            "description": "Average number of CPUs in all nodes of type Spot in the cluster.",
            "format": "double",
            "type": "number"
          },
          "totalRamGib": {
            "description": "Average RAM (GiB) memory of all nodes in the cluster.",
            "format": "double",
            "type": "number"
          },
          "spotRamGib": {
            "description": "Average RAM (GiB) memory of all nodes of type Spot in cluster.",
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterCostHistoryResponse.CostEntry": {
        "description": "Defines cost entry.",
        "properties": {
          "createdAt": {
            "description": "Timestamp of entry creation.",
            "format": "date-time",
            "type": "string"
          },
          "current": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetClusterCostHistoryResponse.CostDetails"
          },
          "optimizedSpotInstances": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetClusterCostHistoryResponse.CostDetails"
          },
          "optimizedLayman": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetClusterCostHistoryResponse.CostDetails"
          },
          "optimizedSpotOnly": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetClusterCostHistoryResponse.CostDetails"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterCostReportResponse": {
        "description": "Defines get cluster cost report response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "description": "Cost report entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterCostReportResponse.CostReportItem"
            },
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetClusterCostReportResponse.Summary"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterCostReportResponse.CostReportItem": {
        "description": "Defines cost report item.",
        "properties": {
          "timestamp": {
            "description": "Timestamp of entry creation.",
            "format": "date-time",
            "type": "string"
          },
          "costOnDemand": {
            "description": "Average hourly cost of on-demand instances.",
            "type": "string"
          },
          "costSpot": {
            "description": "Average hourly cost of spot instances.",
            "type": "string"
          },
          "costSpotFallback": {
            "description": "Average hourly cost of spot-fallback instances.",
            "type": "string"
          },
          "cpuCountOnDemand": {
            "description": "Average number of CPUs on on-demand instances.",
            "type": "string"
          },
          "cpuCountSpot": {
            "description": "Average number of CPUs on spot instances.",
            "type": "string"
          },
          "cpuCountSpotFallback": {
            "description": "Average number of CPUs on spot-fallback instances.",
            "type": "string"
          },
          "cpuCostOnDemand": {
            "description": "Average hourly CPU cost of on-demand instances.",
            "type": "string"
          },
          "ramCostOnDemand": {
            "description": "Average hourly RAM cost of on-demand instances.",
            "type": "string"
          },
          "cpuCostSpot": {
            "description": "Average hourly CPU cost of spot instances.",
            "type": "string"
          },
          "ramCostSpot": {
            "description": "Average hourly RAM cost of spot instances.",
            "type": "string"
          },
          "cpuCostSpotFallback": {
            "description": "Average hourly CPU cost of spot-fallback instances.",
            "type": "string"
          },
          "ramCostSpotFallback": {
            "description": "Average hourly RAM cost of spot-fallback instances.",
            "type": "string"
          },
          "ramGibOnDemand": {
            "description": "Average number of RAM GiB on on-demand instances.",
            "type": "string"
          },
          "ramGibSpot": {
            "description": "Average number of RAM GiB on spot instances.",
            "type": "string"
          },
          "ramGibSpotFallback": {
            "description": "Average number of RAM GiB on spot-fallback instances.",
            "type": "string"
          },
          "gpuCostOnDemand": {
            "description": "Average hourly GPU cost of on-demand instances.",
            "type": "string"
          },
          "gpuCostSpot": {
            "description": "Average hourly GPU cost of spot instances.",
            "type": "string"
          },
          "gpuCostSpotFallback": {
            "description": "Average hourly GPU cost of spot-fallback instances.",
            "type": "string"
          },
          "gpuCountOnDemand": {
            "description": "Average number of GPUs on on-demand instances.",
            "type": "string"
          },
          "gpuCountSpot": {
            "description": "Average number of GPUs on spot instances.",
            "type": "string"
          },
          "gpuCountSpotFallback": {
            "description": "Average number of GPUs on spot-fallback instances.",
            "type": "string"
          },
          "storageGib": {
            "description": "Average number of provisioned Storage GiB.",
            "type": "string"
          },
          "storageCost": {
            "description": "Average hourly Storage cost.",
            "type": "string"
          },
          "totalCpuCostOnDemand": {
            "description": "Total cost on demand.",
            "type": "string"
          },
          "totalCpuCostSpot": {
            "description": "Total cost spot.",
            "type": "string"
          },
          "totalCpuCostSpotFallback": {
            "description": "Total cost spot-fallback.",
            "type": "string"
          },
          "totalRamCostOnDemand": {
            "description": "Total cost on demand.",
            "type": "string"
          },
          "totalRamCostSpot": {
            "description": "Total cost spot.",
            "type": "string"
          },
          "totalRamCostSpotFallback": {
            "description": "Total cost spot-fallback.",
            "type": "string"
          },
          "totalGpuCostOnDemand": {
            "description": "Total cost on demand.",
            "type": "string"
          },
          "totalGpuCostSpot": {
            "description": "Total cost spot.",
            "type": "string"
          },
          "totalGpuCostSpotFallback": {
            "description": "Total cost spot-fallback.",
            "type": "string"
          },
          "totalStorageCost": {
            "title": "Total storage cost",
            "type": "string"
          },
          "tpuCostOnDemand": {
            "description": "Average hourly TPU cost of on-demand instances.",
            "type": "string"
          },
          "tpuCostSpot": {
            "description": "Average hourly TPU cost of spot instances.",
            "type": "string"
          },
          "tpuCostSpotFallback": {
            "description": "Average hourly TPU cost of spot-fallback instances.",
            "type": "string"
          },
          "tpuCountOnDemand": {
            "description": "Average number of TPUs on on-demand instances.",
            "type": "string"
          },
          "tpuCountSpot": {
            "description": "Average number of TPUs on spot instances.",
            "type": "string"
          },
          "tpuCountSpotFallback": {
            "description": "Average number of TPUs on spot-fallback instances.",
            "type": "string"
          },
          "totalTpuCostOnDemand": {
            "description": "Total TPU cost on demand.",
            "type": "string"
          },
          "totalTpuCostSpot": {
            "description": "Total TPU cost spot.",
            "type": "string"
          },
          "totalTpuCostSpotFallback": {
            "description": "Total TPU cost spot-fallback.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterCostReportResponse.Summary": {
        "properties": {
          "totalCost": {
            "description": "Total cost.",
            "type": "string"
          },
          "totalCpuCost": {
            "description": "Total CPU cost.",
            "type": "string"
          },
          "totalRamCost": {
            "description": "Total RAM cost.",
            "type": "string"
          },
          "totalGpuCost": {
            "description": "Total GPU cost.",
            "type": "string"
          },
          "totalStorageCost": {
            "description": "Total Storage cost.",
            "type": "string"
          },
          "avgCost": {
            "description": "Average hourly cost.",
            "type": "string"
          },
          "avgCpuCost": {
            "description": "Average hourly CPU cost.",
            "type": "string"
          },
          "avgRamCost": {
            "description": "Average hourly RAM cost.",
            "type": "string"
          },
          "avgGpuCost": {
            "description": "Average hourly GPU cost.",
            "type": "string"
          },
          "avgStorageCost": {
            "description": "Average hourly Storage cost.",
            "type": "string"
          },
          "avgCpuCount": {
            "description": "Average number of CPUs.",
            "type": "string"
          },
          "avgRamGib": {
            "description": "Average number of RAM GiB.",
            "type": "string"
          },
          "avgGpuCount": {
            "description": "Average number of GPUs.",
            "type": "string"
          },
          "avgStorageGib": {
            "description": "Average number of provisioned Storage GiB.",
            "type": "string"
          },
          "totalCostOnDemand": {
            "description": "Total cost on on-demand instances.",
            "type": "string"
          },
          "totalCostSpot": {
            "description": "Total cost on spot instances.",
            "type": "string"
          },
          "totalCostSpotFallback": {
            "description": "Total cost on spot-fallback instances.",
            "type": "string"
          },
          "avgCpuCountOnDemand": {
            "description": "Average number of CPUs on on-demand instances.",
            "type": "string"
          },
          "avgCpuCountSpot": {
            "description": "Average number of CPUs on spot instances.",
            "type": "string"
          },
          "avgCpuCountSpotFallback": {
            "description": "Average number of CPUs on spot-fallback instances.",
            "type": "string"
          },
          "avgRamGibOnDemand": {
            "description": "Average number of RAM GiB on on-demand instances.",
            "type": "string"
          },
          "avgRamGibSpot": {
            "description": "Average number of RAM GiB on spot instances.",
            "type": "string"
          },
          "avgRamGibSpotFallback": {
            "description": "Average number of RAM GiB on spot-fallback instances.",
            "type": "string"
          },
          "avgGpuCountOnDemand": {
            "description": "Average number of GPUs on on-demand instances.",
            "type": "string"
          },
          "avgGpuCountSpot": {
            "description": "Average number of GPUs on spot instances.",
            "type": "string"
          },
          "avgGpuCountSpotFallback": {
            "description": "Average number of GPUs on spot-fallback instances.",
            "type": "string"
          },
          "avgCpuCostOnDemand": {
            "description": "Average hourly CPU cost of on-demand instances.",
            "type": "string"
          },
          "avgCpuCostSpot": {
            "description": "Average hourly CPU cost of spot instances.",
            "type": "string"
          },
          "avgCpuCostSpotFallback": {
            "description": "Average hourly CPU cost of spot-fallback instances.",
            "type": "string"
          },
          "avgRamCostOnDemand": {
            "description": "Average hourly RAM cost of on-demand instances.",
            "type": "string"
          },
          "avgRamCostSpot": {
            "description": "Average hourly RAM cost of spot instances.",
            "type": "string"
          },
          "avgRamCostSpotFallback": {
            "description": "Average hourly RAM cost of spot-fallback instances.",
            "type": "string"
          },
          "avgGpuCostOnDemand": {
            "description": "Average hourly GPU cost of on-demand instances.",
            "type": "string"
          },
          "avgGpuCostSpot": {
            "description": "Average hourly GPU cost of spot instances.",
            "type": "string"
          },
          "avgGpuCostSpotFallback": {
            "description": "Average hourly GPU cost of spot-fallback instances.",
            "type": "string"
          },
          "totalTpuCost": {
            "description": "Total TPU cost.",
            "type": "string"
          },
          "avgTpuCost": {
            "description": "Average hourly TPU cost.",
            "type": "string"
          },
          "avgTpuCount": {
            "description": "Average number of TPUs.",
            "type": "string"
          },
          "avgTpuCountOnDemand": {
            "description": "Average number of TPUs on on-demand instances.",
            "type": "string"
          },
          "avgTpuCountSpot": {
            "description": "Average number of TPUs on spot instances.",
            "type": "string"
          },
          "avgTpuCountSpotFallback": {
            "description": "Average number of TPUs on spot-fallback instances.",
            "type": "string"
          },
          "avgTpuCostOnDemand": {
            "description": "Average hourly TPU cost of on-demand instances.",
            "type": "string"
          },
          "avgTpuCostSpot": {
            "description": "Average hourly TPU cost of spot instances.",
            "type": "string"
          },
          "avgTpuCostSpotFallback": {
            "description": "Average hourly TPU cost of spot-fallback instances.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterEfficiencyReportResponse": {
        "description": "Defines get cluster efficiency report response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "description": "Report entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterEfficiencyReportResponse.ReportItem"
            },
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetClusterEfficiencyReportResponse.Summary"
          },
          "current": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetClusterEfficiencyReportResponse.Current"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterEfficiencyReportResponse.Current": {
        "properties": {
          "cpuProvisioned": {
            "description": "CPU cores provisioned.",
            "type": "string"
          },
          "cpuRequested": {
            "description": "CPU cores requested.",
            "type": "string"
          },
          "ramGibProvisioned": {
            "description": "RAM GiB provisioned.",
            "type": "string"
          },
          "ramGibRequested": {
            "description": "RAM GiB requested.",
            "type": "string"
          },
          "cpuOverprovisioningPercent": {
            "description": "CPU overprovisioning (percent).",
            "type": "string"
          },
          "ramOverprovisioningPercent": {
            "description": "RAM overprovisioning (percent).",
            "type": "string"
          },
          "cpuUsed": {
            "description": "CPU cores actually used.",
            "type": "string"
          },
          "ramGibUsed": {
            "description": "RAM GiB actually used.",
            "type": "string"
          },
          "storageGibProvisioned": {
            "description": "Storage GiB provisioned.",
            "type": "string"
          },
          "storageGibRequested": {
            "description": "Storage GiB claimed in PVC accessed by any workload.",
            "type": "string"
          },
          "storageGibClaimed": {
            "description": "Storage GiB claimed in PVC.",
            "type": "string"
          },
          "storageOverprovisioningPercent": {
            "description": "Storage overprovisioning (percent).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterEfficiencyReportResponse.ReportItem": {
        "description": "Defines report item.",
        "properties": {
          "timestamp": {
            "description": "Timestamp of entry creation.",
            "format": "date-time",
            "type": "string"
          },
          "cpuCostOnDemand": {
            "description": "Average CPU cost of on-demand instances.",
            "type": "string"
          },
          "cpuCostSpot": {
            "description": "Average CPU cost of spot instances.",
            "type": "string"
          },
          "cpuCostSpotFallback": {
            "description": "Average CPU cost of spot-fallback instances.",
            "type": "string"
          },
          "ramCostOnDemand": {
            "description": "Average RAM cost of on-demand instances.",
            "type": "string"
          },
          "ramCostSpot": {
            "description": "Average RAM cost of spot instances.",
            "type": "string"
          },
          "ramCostSpotFallback": {
            "description": "Average RAM cost of spot-fallback instances.",
            "type": "string"
          },
          "cpuCountOnDemand": {
            "description": "Average number of CPUs on on-demand instances.",
            "type": "string"
          },
          "cpuCountSpot": {
            "description": "Average number of CPUs on spot instances.",
            "type": "string"
          },
          "cpuCountSpotFallback": {
            "description": "Average number of CPUs on spot-fallback instances.",
            "type": "string"
          },
          "ramGibOnDemand": {
            "description": "Average number of RAM GiB on on-demand instances.",
            "type": "string"
          },
          "ramGibSpot": {
            "description": "Average number of RAM GiB on spot instances.",
            "type": "string"
          },
          "ramGibSpotFallback": {
            "description": "Average number of RAM GiB on spot-fallback instances.",
            "type": "string"
          },
          "requestedCpuCountOnDemand": {
            "description": "Average number of requested CPUs on on-demand instances.",
            "type": "string"
          },
          "requestedCpuCountSpot": {
            "description": "Average number of requested CPUs on spot instances.",
            "type": "string"
          },
          "requestedCpuCountSpotFallback": {
            "description": "Average number of requested CPUs on spot-fallback instances.",
            "type": "string"
          },
          "requestedRamGibOnDemand": {
            "description": "Average number of requested RAM GiB on on-demand instances.",
            "type": "string"
          },
          "requestedRamGibSpot": {
            "description": "Average number of requested RAM GiB on spot instances.",
            "type": "string"
          },
          "requestedRamGibSpotFallback": {
            "description": "Average number of requested RAM GiB on spot-fallback instances.",
            "type": "string"
          },
          "cpuOverprovisioningOnDemand": {
            "description": "Average CPU overprovisioning on on-demand instances.",
            "type": "string"
          },
          "cpuOverprovisioningSpot": {
            "description": "Average CPU overprovisioning on spot instances.",
            "type": "string"
          },
          "cpuOverprovisioningSpotFallback": {
            "description": "Average CPU overprovisioning on spot-fallback instances.",
            "type": "string"
          },
          "cpuOverprovisioningOnDemandPercent": {
            "description": "Average CPU overprovisioning percentage on on-demand instances.",
            "type": "string"
          },
          "cpuOverprovisioningSpotPercent": {
            "description": "Average CPU overprovisioning percentage on spot instances.",
            "type": "string"
          },
          "cpuOverprovisioningSpotFallbackPercent": {
            "description": "Average CPU overprovisioning percentage on spot-fallback instances.",
            "type": "string"
          },
          "ramOverprovisioningOnDemand": {
            "description": "Average RAM overprovisioning on on-demand instances.",
            "type": "string"
          },
          "ramOverprovisioningSpot": {
            "description": "Average RAM overprovisioning on spot instances.",
            "type": "string"
          },
          "ramOverprovisioningSpotFallback": {
            "description": "Average RAM overprovisioning on spot-fallback instances.",
            "type": "string"
          },
          "ramOverprovisioningOnDemandPercent": {
            "description": "Average RAM overprovisioning percentage on on-demand instances.",
            "type": "string"
          },
          "ramOverprovisioningSpotPercent": {
            "description": "Average RAM overprovisioning percentage on spot instances.",
            "type": "string"
          },
          "ramOverprovisioningSpotFallbackPercent": {
            "description": "Average RAM overprovisioning percentage on spot-fallback instances.",
            "type": "string"
          },
          "cpuUsedOnDemand": {
            "description": "Average number of used CPUs on on-demand instances.",
            "type": "string"
          },
          "cpuUsedSpot": {
            "description": "Average number of used CPUs on spot instances.",
            "type": "string"
          },
          "cpuUsedSpotFallback": {
            "description": "Average number of used CPUs on spot-fallback instances.",
            "type": "string"
          },
          "ramUsedGibOnDemand": {
            "description": "Average number of used RAM GiB on on-demand instances.",
            "type": "string"
          },
          "ramUsedGibSpot": {
            "description": "Average number of used RAM GiB on spot instances.",
            "type": "string"
          },
          "ramUsedGibSpotFallback": {
            "description": "Average number of used RAM GiB on spot-fallback instances.",
            "type": "string"
          },
          "storageProvisionedGib": {
            "description": "Average number of Storage GiB provisioned.",
            "type": "string"
          },
          "storageClaimedGib": {
            "description": "Average number of Storage GiB claimed in PVC.",
            "type": "string"
          },
          "requestedStorageGib": {
            "description": "Average number of Storage GiB claimed in PVC accessed by any workload.",
            "type": "string"
          },
          "storageCost": {
            "description": "Average Storage cost.",
            "type": "string"
          },
          "storageOverprovisioning": {
            "description": "Average Storage overprovisioning.",
            "type": "string"
          },
          "storageOverprovisioningPercent": {
            "description": "Average Storage overprovisioning percentage.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterEfficiencyReportResponse.Summary": {
        "properties": {
          "cpuOverprovisioningPercent": {
            "type": "string"
          },
          "ramOverprovisioningPercent": {
            "type": "string"
          },
          "costPerCpuProvisioned": {
            "description": "Average cost per CPU provisioned.",
            "type": "string"
          },
          "costPerCpuRequested": {
            "description": "Average cost per CPU requested.",
            "type": "string"
          },
          "costPerRamGibProvisioned": {
            "description": "Average cost per RAM GiB provisioned.",
            "type": "string"
          },
          "costPerRamGibRequested": {
            "description": "Average cost per RAM GiB requested.",
            "type": "string"
          },
          "costPerCpuUsed": {
            "description": "Average cost per CPU used.",
            "type": "string"
          },
          "costPerRamGibUsed": {
            "description": "Average cost per RAM GiB used.",
            "type": "string"
          },
          "storageOverprovisioningPercent": {
            "description": "Average Storage overprovisioning (percent).",
            "type": "string"
          },
          "costPerStorageGibProvisioned": {
            "description": "Average cost per Storage GiB provisioned.",
            "type": "string"
          },
          "costPerStorageGibRequested": {
            "description": "Average cost per Storage GiB claimed in PVC accessed by any workload.",
            "type": "string"
          },
          "costPerStorageGibClaimed": {
            "description": "Average cost per Storage GiB claimed in PVC.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNamespaceCostReportResponse": {
        "description": "Defines the get cluster namespace cost report response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "description": "Namespace cost entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNamespaceCostReportResponse.NamespaceReportItem"
            },
            "type": "array"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNamespaceCostReportResponse.NamespaceReportItem": {
        "properties": {
          "namespace": {
            "description": "Name of the namespace.",
            "type": "string"
          },
          "costMetrics": {
            "description": "Cost metrics of the namespace.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNamespaceCostReportResponse.NamespaceReportItem.NamespaceCost"
            },
            "type": "array"
          },
          "totalCost": {
            "title": "Total cost for the selected time period",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNamespaceCostReportResponse.NamespaceReportItem.NamespaceCost": {
        "properties": {
          "timestamp": {
            "description": "Timestamp of entry creation.",
            "format": "date-time",
            "type": "string"
          },
          "totalCost": {
            "description": "Total cost of the namespace for the given time period.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNamespaceCostReportSummariesResponse": {
        "description": "Defines the get cluster namespace cost report summaries response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "description": "Namespace cost entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNamespaceCostReportSummariesResponse.NamespaceItem"
            },
            "type": "array"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "description": "Total count of items matching request filters.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNamespaceCostReportSummariesResponse.CostSummary": {
        "properties": {
          "workloadCount": {
            "description": "Average amount of workloads for the given time period.",
            "type": "string"
          },
          "cpuCount": {
            "description": "Average number of CPUs for the given time period.",
            "type": "string"
          },
          "ramGib": {
            "description": "Average amount of RAM GiB for the given time period.",
            "type": "string"
          },
          "gpuCount": {
            "description": "Average number of requested GPUs for the given time period.",
            "type": "string"
          },
          "tpuCount": {
            "description": "Average number of requested TPU chips for the given time period.",
            "type": "string"
          },
          "cpuCost": {
            "description": "CPU cost for the given time period.",
            "type": "string"
          },
          "ramCost": {
            "description": "RAM cost for the given time period.",
            "type": "string"
          },
          "gpuCost": {
            "description": "GPU cost for the given time period.",
            "type": "string"
          },
          "tpuCost": {
            "description": "TPU cost for the given time period.",
            "type": "string"
          },
          "costOnDemand": {
            "description": "Cost of the namespace on on-demand instances for the given time period.",
            "type": "string"
          },
          "costSpot": {
            "description": "Cost of the namespace on spot instances for the given time period.",
            "type": "string"
          },
          "costSpotFallback": {
            "description": "Cost of the namespace on spot fallback instances for the given time period.",
            "type": "string"
          },
          "totalCost": {
            "description": "Total cost of the namespace for the given time period.",
            "type": "string"
          },
          "storageGib": {
            "description": "Average number of requested storage GiB for the given time period.",
            "type": "string"
          },
          "storageCost": {
            "description": "Storage cost for the given time period.",
            "type": "string"
          },
          "requestedCpuHours": {
            "description": "Total requested CPU hours for the given time period.",
            "type": "string"
          },
          "requestedRamGibHours": {
            "description": "Total requested RAM GiB hours for the given time period.",
            "type": "string"
          },
          "requestedGpuHours": {
            "description": "Total requested GPU hours for the given time period.",
            "type": "string"
          },
          "requestedTpuHours": {
            "description": "Total requested TPU chip hours for the given time period.",
            "type": "string"
          },
          "requestedStorageGibHours": {
            "description": "Total requested storage GiB hours for the given time period.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNamespaceCostReportSummariesResponse.NamespaceItem": {
        "description": "Defines a namespace.",
        "properties": {
          "namespace": {
            "description": "Name of the namespace.",
            "type": "string"
          },
          "cost": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNamespaceCostReportSummariesResponse.CostSummary"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNamespaceDataTransferCostResponse": {
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.NamespaceDataTransferItem"
            },
            "title": "Namespace data transfer cost items",
            "type": "array"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of elements in 'items' array",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNamespaceDataTransferTimedTotalCostResponse": {
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNamespaceDataTransferTimedTotalCostResponse.NamespaceCostItem"
            },
            "title": "Namespace data transfer cost items",
            "type": "array"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of elements in 'items' array",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNamespaceDataTransferTimedTotalCostResponse.NamespaceCostItem": {
        "properties": {
          "namespace": {
            "description": "Name of the namespace.",
            "type": "string"
          },
          "items": {
            "description": "Timed data transfer costs for the namespace.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterNamespaceDataTransferTimedTotalCostResponse.NamespaceCostItem.TimedCostItem"
            },
            "type": "array"
          },
          "totalCost": {
            "title": "Total cost",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNamespaceDataTransferTimedTotalCostResponse.NamespaceCostItem.TimedCostItem": {
        "properties": {
          "timestamp": {
            "description": "Timestamp of entry creation.",
            "format": "date-time",
            "type": "string"
          },
          "totalCost": {
            "description": "Egress cost details at the given timestamp.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNodeTemplatesReportResponse": {
        "properties": {
          "nodeTemplates": {
            "description": "List of node templates.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.NodeTemplate"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterNodesStorageReportResponse": {
        "properties": {
          "nodes": {
            "description": "List of node storage metrics.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.NodeStorageMetrics"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterReportingCapabilitiesResponse": {
        "properties": {
          "gpuDataAvailable": {
            "description": "Returns whether the cluster has GPU requests in the selected time range.",
            "type": "boolean"
          },
          "networkDataAvailable": {
            "description": "Returns whether the cluster has network usage collected by egressd/kvisor in the selected time range.",
            "type": "boolean"
          },
          "gpuMetricsAvailable": {
            "description": "Returns whether the cluster has GPU metrics (from gpu-metrics-exporter) collected in the selected time range.",
            "type": "boolean"
          },
          "reportingDataAvailable": {
            "description": "Returns whether the cluster has reporting data in the selected time range.",
            "type": "boolean"
          },
          "reportingDataReceived": {
            "description": "Returns whether CAST AI already received reporting data from the cluster - it might not be available yet.",
            "type": "boolean"
          },
          "networkDataReceived": {
            "description": "Returns whether CAST AI already received network data from the cluster - it might not be available yet.",
            "type": "boolean"
          },
          "gpuDataReceived": {
            "description": "Returns whether CAST AI already received GPU data from the cluster - it might not be available yet.",
            "type": "boolean"
          },
          "gpuMetricsReceived": {
            "description": "Returns whether CAST AI already received GPU metrics from the cluster - it might not be available yet.",
            "type": "boolean"
          },
          "tpuDataAvailable": {
            "description": "Returns whether the cluster has TPU requests in the selected time range.",
            "type": "boolean"
          },
          "tpuDataReceived": {
            "description": "Returns whether CAST AI already received TPU data from the cluster - it might not be available yet.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterResourceUsageResponse": {
        "description": "Defines get cluster summary response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterResourceUsageResponse.UsageRec"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterResourceUsageResponse.UsageRec": {
        "properties": {
          "timestamp": {
            "description": "Timestamp of the entry.",
            "format": "date-time",
            "type": "string"
          },
          "cpuProvisioned": {
            "description": "CPU cores provisioned.",
            "type": "string"
          },
          "ramProvisioned": {
            "description": "RAM GiB provisioned.",
            "type": "string"
          },
          "cpuRequested": {
            "description": "CPU cores requested.",
            "type": "string"
          },
          "ramRequested": {
            "description": "RAM GiB requested.",
            "type": "string"
          },
          "cpuUsed": {
            "description": "CPU cores used.",
            "type": "string"
          },
          "ramUsed": {
            "description": "RAM GiB used.",
            "type": "string"
          },
          "gpuAllocatable": {
            "description": "Allocatable GPUs.",
            "type": "string"
          },
          "gpuRequested": {
            "description": "Requested GPUs.",
            "type": "string"
          },
          "gpuUsed": {
            "description": "Utilized GPUs.",
            "type": "string"
          },
          "gpuMemoryUsed": {
            "description": "Utilized GPU Memory.",
            "type": "string"
          },
          "storageProvisioned": {
            "description": "Storage GiB provisioned.",
            "type": "string"
          },
          "storageRequested": {
            "description": "Storage GiB claimed in PVC accessed by any workload.",
            "type": "string"
          },
          "storageClaimed": {
            "description": "Storage GiB claimed in PVC.",
            "type": "string"
          },
          "measurableGpuPodCount": {
            "description": "Number of pods on measurable GPUs (not MIG + time-sharing).",
            "format": "uint64",
            "type": "string"
          },
          "totalGpuPodCount": {
            "description": "Total number of pods on GPUs.",
            "format": "uint64",
            "type": "string"
          },
          "tpuAllocatable": {
            "description": "Allocatable TPUs.",
            "type": "string"
          },
          "tpuRequested": {
            "description": "Requested TPUs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterSavingsReportResponse": {
        "description": "Defines a cluster savings report response.",
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterSavingsReportResponse.Item"
            },
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetClusterSavingsReportResponse.Summary"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterSavingsReportResponse.Item": {
        "properties": {
          "timestamp": {
            "description": "Timestamp of entry creation.",
            "format": "date-time",
            "type": "string"
          },
          "downscalingSavings": {
            "type": "string"
          },
          "spotSavings": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterSavingsReportResponse.Summary": {
        "properties": {
          "totalCost": {
            "type": "string"
          },
          "totalSavings": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterSummaryResponse": {
        "description": "Defines get cluster summary response.",
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.ClusterSummary"
          },
          "nodesSummaries": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterSummaryResponse.NodesSummary"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterSummaryResponse.NodesSummary": {
        "properties": {
          "managedBy": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetClusterSummaryResponse.NodesSummary.ManagedBy"
          },
          "linuxNodeCount": {
            "type": "string"
          },
          "windowsNodeCount": {
            "type": "string"
          },
          "cpuOverprovisioning": {
            "type": "string"
          },
          "ramOverprovisioning": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterSummaryResponse.NodesSummary.ManagedBy": {
        "default": "UNKNOWN",
        "description": "The provider name which managed this node group.",
        "enum": [
          "UNKNOWN",
          "CASTAI",
          "KARPENTER",
          "EKS",
          "GKE",
          "AKS",
          "KOPS",
          "OPENSHIFT",
          "CASTAI_OMNI"
        ],
        "type": "string"
      },
      "costreport.v1beta1.GetClusterUnscheduledPodsResponse": {
        "description": "Defines response for unscheduled pods in the cluster.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterUnscheduledPodsResponse.UnscheduledWorkload"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterUnscheduledPodsResponse.UnscheduledPod": {
        "properties": {
          "name": {
            "description": "Pod name.",
            "type": "string"
          },
          "cpuRequested": {
            "description": "CPU cores requested.",
            "type": "string"
          },
          "ramRequested": {
            "description": "RAM GiB requested.",
            "type": "string"
          },
          "message": {
            "description": "Unscheduled pod message.",
            "type": "string"
          },
          "events": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterUnscheduledPodsResponse.UnscheduledPod.Event"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterUnscheduledPodsResponse.UnscheduledPod.Event": {
        "properties": {
          "message": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "reportingController": {
            "type": "string"
          },
          "firstTimestamp": {
            "format": "date-time",
            "type": "string"
          },
          "lastTimestamp": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterUnscheduledPodsResponse.UnscheduledWorkload": {
        "properties": {
          "name": {
            "description": "Workload name.",
            "type": "string"
          },
          "namespace": {
            "description": "Workload namespace.",
            "type": "string"
          },
          "type": {
            "description": "Workload type.",
            "type": "string"
          },
          "unscheduledPods": {
            "description": "Unscheduled pods.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterUnscheduledPodsResponse.UnscheduledPod"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterWorkloadEfficiencyReportByNameResponse": {
        "description": "Defines cluster workload efficiency response.",
        "properties": {
          "containers": {
            "description": "Defines the efficiency for every container in the workload.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.ContainerEfficiency"
            },
            "type": "array"
          },
          "metricsServerAvailable": {
            "description": "Whether cluster has metrics server installed.",
            "type": "boolean"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          },
          "currentPodCount": {
            "description": "Current pod count of this workload.",
            "format": "int64",
            "nullable": true,
            "type": "string"
          },
          "waste": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "costImpact": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostImpact"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterWorkloadEfficiencyReportResponse": {
        "description": "Defines cluster workload efficiency response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "description": "Workload cost entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadEfficiencyReportResponse.WorkloadItem"
            },
            "type": "array"
          },
          "metricsServerAvailable": {
            "description": "Whether cluster has metrics server installed.",
            "type": "boolean"
          },
          "topItems": {
            "description": "Workloads with highest cost impact.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadEfficiencyReportResponse.TopWorkload"
            },
            "type": "array"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of elements in 'items' array",
            "type": "string"
          }
        },
        "required": [
          "clusterId"
        ],
        "type": "object"
      },
      "costreport.v1beta1.GetClusterWorkloadEfficiencyReportResponse.CostImpactHistoryItem": {
        "properties": {
          "timestamp": {
            "description": "Timestamp of the cost impact.",
            "format": "date-time",
            "type": "string"
          },
          "costImpact": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostImpact"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterWorkloadEfficiencyReportResponse.TopWorkload": {
        "properties": {
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "costImpact": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostImpact"
          },
          "costImpactHistory": {
            "description": "Cost impact history.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadEfficiencyReportResponse.CostImpactHistoryItem"
            },
            "type": "array"
          }
        },
        "required": [
          "namespace",
          "workloadName",
          "workloadType"
        ],
        "type": "object"
      },
      "costreport.v1beta1.GetClusterWorkloadEfficiencyReportResponse.WorkloadItem": {
        "description": "Defines a workload.",
        "properties": {
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "requests": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "usage": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "waste": {
            "$ref": "#/components/schemas/costreport.v1beta1.Resources"
          },
          "costImpact": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostImpact"
          },
          "totalCostImpact": {
            "description": "Total cost impact of the workload. Sum of cost impacts by lifecycle.",
            "type": "string"
          }
        },
        "required": [
          "namespace",
          "requests",
          "usage",
          "workloadName",
          "workloadType"
        ],
        "type": "object"
      },
      "costreport.v1beta1.GetClusterWorkloadEventMetricsResponse": {
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "series": {
            "description": "Time-series data grouped by event type.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadEventSeries"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterWorkloadReportResponse": {
        "description": "Defines cluster workload cost response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "description": "Workload cost entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadReportItem"
            },
            "type": "array"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterWorkloadRightsizingPatchRequest.WorkloadID": {
        "properties": {
          "namespace": {
            "type": "string"
          },
          "workloadName": {
            "type": "string"
          },
          "workloadType": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClusterWorkloadRightsizingPatchRequest.Workloads": {
        "properties": {
          "workloads": {
            "description": "Defines a list of Workload IDs.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClusterWorkloadRightsizingPatchRequest.WorkloadID"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClustersCostReportResponse": {
        "description": "Defines get clusters cost report response.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClustersCostReportResponse.ClusterCostItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClustersCostReportResponse.ClusterCostItem": {
        "description": "Defines cost report item - cost of one cluster.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "intervals": {
            "description": "Cost details of cluster per interval.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetClustersCostReportResponse.IntervalItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClustersCostReportResponse.IntervalItem": {
        "properties": {
          "timestamp": {
            "description": "Timestamp of entry.",
            "format": "date-time",
            "type": "string"
          },
          "costOnDemandPerHour": {
            "description": "Cost of on-demand instances.",
            "type": "string"
          },
          "costSpotPerHour": {
            "description": "Cost of spot instances.",
            "type": "string"
          },
          "costSpotFallbackPerHour": {
            "description": "Cost of spot-fallback instances.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetClustersSummaryResponse": {
        "description": "Defines get clusters summary response.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.ClusterSummary"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostAllocationGroupDataTransferSummaryResponse": {
        "properties": {
          "groups": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetCostAllocationGroupDataTransferSummaryResponse.CostAllocationGroupItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostAllocationGroupDataTransferSummaryResponse.CostAllocationGroupItem": {
        "properties": {
          "groupName": {
            "type": "string"
          },
          "groupId": {
            "type": "string"
          },
          "workloadCount": {
            "title": "Total workload count over requested period",
            "type": "string"
          },
          "items": {
            "description": "Group traffic entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetCostAllocationGroupDataTransferSummaryResponse.CostItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostAllocationGroupDataTransferSummaryResponse.CostItem": {
        "description": "Defines a workload.",
        "properties": {
          "timestamp": {
            "description": "Timestamp of entry.",
            "format": "date-time",
            "type": "string"
          },
          "egressMetrics": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetCostAllocationGroupDataTransferSummaryResponse.DataTransferCostItem"
          },
          "ingressMetrics": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetCostAllocationGroupDataTransferSummaryResponse.DataTransferCostItem"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostAllocationGroupDataTransferSummaryResponse.DataTransferCostItem": {
        "description": "Defines a datatransfer costs item.",
        "properties": {
          "internetBytes": {
            "type": "string"
          },
          "internetCost": {
            "type": "string"
          },
          "interRegionBytes": {
            "type": "string"
          },
          "interRegionCost": {
            "type": "string"
          },
          "interZoneBytes": {
            "type": "string"
          },
          "interZoneCost": {
            "type": "string"
          },
          "intraZoneBytes": {
            "type": "string"
          },
          "intraZoneCost": {
            "type": "string"
          },
          "cloudApiBytes": {
            "type": "string"
          },
          "cloudApiCost": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostAllocationGroupDataTransferWorkloadsResponse": {
        "description": "Defines cluster workloads datatransfer cost response aggregated over the requested period.",
        "properties": {
          "groupName": {
            "type": "string"
          },
          "groupId": {
            "type": "string"
          },
          "clusters": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetCostAllocationGroupDataTransferWorkloadsResponse.ClusterDetails"
            },
            "type": "array"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostAllocationGroupDataTransferWorkloadsResponse.ClusterDetails": {
        "properties": {
          "clusterId": {
            "title": "Cluser ID where workload belongs to",
            "type": "string"
          },
          "items": {
            "description": "Workload entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetCostAllocationGroupDataTransferWorkloadsResponse.WorkloadItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostAllocationGroupDataTransferWorkloadsResponse.WorkloadDataTransferCostItem": {
        "description": "Defines an aggregated workloads datatransfer cost over requested period.",
        "properties": {
          "internetBytes": {
            "type": "string"
          },
          "internetCost": {
            "type": "string"
          },
          "interRegionBytes": {
            "type": "string"
          },
          "interRegionCost": {
            "type": "string"
          },
          "interZoneBytes": {
            "type": "string"
          },
          "interZoneCost": {
            "type": "string"
          },
          "intraZoneBytes": {
            "type": "string"
          },
          "intraZoneCost": {
            "type": "string"
          },
          "cloudApiBytes": {
            "type": "string"
          },
          "cloudApiCost": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostAllocationGroupDataTransferWorkloadsResponse.WorkloadItem": {
        "description": "Defines a workload.",
        "properties": {
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "podCount": {
            "description": "Average pod count of the workload within requested period.",
            "type": "string"
          },
          "egressMetrics": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetCostAllocationGroupDataTransferWorkloadsResponse.WorkloadDataTransferCostItem"
          },
          "ingressMetrics": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetCostAllocationGroupDataTransferWorkloadsResponse.WorkloadDataTransferCostItem"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostAnomaliesResponse": {
        "description": "Defines the cost anomalies response for a single cluster.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "anomalies": {
            "description": "Details of the detected anomalies.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetCostAnomaliesResponse.Anomaly"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostAnomaliesResponse.Anomaly": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "title": "timestamp of when the anomaly occured",
            "type": "string"
          },
          "metric": {
            "title": "metric of the anomaly",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostComparisonReportResponse": {
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetCostComparisonReportResponse.Summary"
          },
          "periodA": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetCostComparisonReportResponse.PeriodDetails"
          },
          "periodB": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetCostComparisonReportResponse.PeriodDetails"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostComparisonReportResponse.AutoscaledWorkloads": {
        "description": "Resource usage of workloads with enabled workload optimization.",
        "properties": {
          "requestedCpuCores": {
            "description": "Average requested CPU cores.",
            "type": "string"
          },
          "usedCpuCores": {
            "description": "Average used CPU cores.",
            "type": "string"
          },
          "cpuUtilizationPercent": {
            "description": "Average CPU utilization percentage.",
            "type": "string"
          },
          "cpuCost": {
            "description": "Average CPU cost.",
            "type": "string"
          },
          "requestedRamGib": {
            "description": "Average requested RAM GiB.",
            "type": "string"
          },
          "usedRamGib": {
            "description": "Average used RAM GiB.",
            "type": "string"
          },
          "ramUtilizationPercent": {
            "description": "Average RAM utilization percentage.",
            "type": "string"
          },
          "ramCost": {
            "description": "Average RAM cost.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostComparisonReportResponse.PeriodDetails": {
        "properties": {
          "provisionedCpuCores": {
            "description": "Average provisioned CPU cores.",
            "type": "string"
          },
          "requestedCpuCores": {
            "description": "Average requested CPU cores.",
            "type": "string"
          },
          "usedCpuCores": {
            "description": "Average used CPU cores.",
            "type": "string"
          },
          "provisionedCpuCoreCost": {
            "description": "Average provisioned CPU cost.",
            "type": "string"
          },
          "requestedCpuCoreCost": {
            "description": "Average requested CPU cost.",
            "type": "string"
          },
          "provisionedRamGib": {
            "description": "Average provisioned RAM GiB.",
            "type": "string"
          },
          "requestedRamGib": {
            "description": "Average requested RAM GiB.",
            "type": "string"
          },
          "usedRamGib": {
            "description": "Average used RAM GiB.",
            "type": "string"
          },
          "provisionedRamGibCost": {
            "description": "Average provisioned RAM GiB cost.",
            "type": "string"
          },
          "requestedRamGibCost": {
            "description": "Average requested RAM GiB cost.",
            "type": "string"
          },
          "computeCost": {
            "description": "Compute cost.",
            "type": "string"
          },
          "workloads": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetCostComparisonReportResponse.AutoscaledWorkloads"
          },
          "items": {
            "description": "Timed cost details.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetCostComparisonReportResponse.TimedCostItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostComparisonReportResponse.Summary": {
        "properties": {
          "savedPerProvisionedCpu": {
            "description": "Saved per provisioned CPU (total) daily.",
            "type": "string"
          },
          "savedPerRequestedCpu": {
            "description": "Saved per requested CPU (total) daily.",
            "type": "string"
          },
          "savedPerProvisionedRam": {
            "description": "Saved per provisioned RAM (total) daily.",
            "type": "string"
          },
          "savedPerRequestedRam": {
            "description": "Saved per requested RAM (total) daily.",
            "type": "string"
          },
          "savingsPerProvisionedCpuCore": {
            "description": "Savings per provisioned CPU core daily.",
            "type": "string"
          },
          "savingsPerProvisionedCpuCorePercent": {
            "description": "Savings per provisioned CPU core percent.",
            "type": "string"
          },
          "savingsPerRequestedCpuCore": {
            "description": "Savings per requested CPU core daily.",
            "type": "string"
          },
          "savingsPerRequestedCpuCorePercent": {
            "description": "Savings per requested CPU core percent.",
            "type": "string"
          },
          "savingsPerProvisionedRamGib": {
            "description": "Savings per provisioned RAM GiB daily.",
            "type": "string"
          },
          "savingsPerProvisionedRamGibPercent": {
            "description": "Savings per provisioned RAM GiB percent.",
            "type": "string"
          },
          "savingsPerRequestedRamGib": {
            "description": "Savings per requested RAM GiB daily.",
            "type": "string"
          },
          "savingsPerRequestedRamGibPercent": {
            "description": "Savings per requested RAM GiB percent.",
            "type": "string"
          },
          "workloadCpuCoresReduced": {
            "description": "Workload CPU cores reduced.",
            "type": "string"
          },
          "workloadRamGibReduced": {
            "description": "Workload RAM GiB reduced.",
            "type": "string"
          },
          "workloadOptimizationSavings": {
            "description": "Workload optimization savings per day.",
            "type": "string"
          },
          "clusterGrowthRate": {
            "description": "Cluster resource growth rate in percent.",
            "type": "string"
          },
          "clusterCostGrowthRate": {
            "description": "Cluster cost growth rate in percent.",
            "type": "string"
          },
          "workloadGrowthRate": {
            "description": "Workload resource growth rate in percent.",
            "type": "string"
          },
          "workloadOptimizationEnabledDate": {
            "description": "Workload optimization enabled date.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetCostComparisonReportResponse.TimedCostItem": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "provisionedCpuCores": {
            "description": "Average provisioned CPU cores.",
            "type": "string"
          },
          "requestedCpuCores": {
            "description": "Average requested CPU cores.",
            "type": "string"
          },
          "usedCpuCores": {
            "description": "Average used CPU cores.",
            "type": "string"
          },
          "provisionedCpuCoreCost": {
            "description": "Average provisioned CPU cost.",
            "type": "string"
          },
          "requestedCpuCoreCost": {
            "description": "Average requested CPU cost.",
            "type": "string"
          },
          "provisionedRamGib": {
            "description": "Average provisioned RAM GiB.",
            "type": "string"
          },
          "requestedRamGib": {
            "description": "Average requested RAM GiB.",
            "type": "string"
          },
          "usedRamGib": {
            "description": "Average used RAM GiB.",
            "type": "string"
          },
          "provisionedRamGibCost": {
            "description": "Average provisioned RAM GiB cost.",
            "type": "string"
          },
          "requestedRamGibCost": {
            "description": "Average requested RAM GiB cost.",
            "type": "string"
          },
          "workloads": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetCostComparisonReportResponse.AutoscaledWorkloads"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetDetailedClusterCPUUsageResponse": {
        "properties": {
          "provisionedManagedByCast": {
            "format": "double",
            "type": "number"
          },
          "provisionedManagedByOthers": {
            "format": "double",
            "type": "number"
          },
          "complexAggregations": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetDetailedClusterCPUUsageResponse.ComplexAggregations"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetDetailedClusterCPUUsageResponse.ComplexAggregations": {
        "properties": {
          "provisionedByCastOnDemand": {
            "format": "double",
            "type": "number"
          },
          "provisionedByCastSpot": {
            "format": "double",
            "type": "number"
          },
          "provisionedByOthersOnDemand": {
            "format": "double",
            "type": "number"
          },
          "provisionedByOthersSpot": {
            "format": "double",
            "type": "number"
          },
          "provisionedByCastOnDemandGpu": {
            "format": "double",
            "type": "number"
          },
          "provisionedByCastSpotGpu": {
            "format": "double",
            "type": "number"
          },
          "provisionedByOthersOnDemandGpu": {
            "format": "double",
            "type": "number"
          },
          "provisionedByOthersSpotGpu": {
            "format": "double",
            "type": "number"
          },
          "provisionedByCastOnDemandTpu": {
            "format": "double",
            "type": "number"
          },
          "provisionedByCastSpotTpu": {
            "format": "double",
            "type": "number"
          },
          "provisionedByOthersOnDemandTpu": {
            "format": "double",
            "type": "number"
          },
          "provisionedByOthersSpotTpu": {
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetEgressdScriptResponse": {
        "properties": {
          "script": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetEgressdScriptTemplateResponse": {
        "properties": {
          "script": {
            "$ref": "#/components/schemas/google.api.HttpBody"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetGpuMetricsExporterScriptResponse": {
        "properties": {
          "script": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetGpuMetricsExporterScriptTemplateResponse": {
        "properties": {
          "script": {
            "$ref": "#/components/schemas/google.api.HttpBody"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetNamespacesForClustersResponse": {
        "description": "Defines namespaces for clusters response.",
        "properties": {
          "clusterNamespaces": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.ClusterNamespaces"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetNodeLabelNamesResponse": {
        "description": "Defines organization node label names response.",
        "properties": {
          "labelNames": {
            "description": "List of node label names.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetNodeLabelValuesResponse": {
        "description": "Defines organization node label values response.",
        "properties": {
          "labelValues": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationClustersCostReportResponse": {
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersCostReportResponse.Summary"
          },
          "topClustersCost": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersCostReportResponse.ClusterCost"
            },
            "type": "array"
          },
          "clusters": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersCostReportResponse.ClusterSummary"
            },
            "type": "array"
          },
          "totalDailyCost": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersCostReportResponse.TimestampedCostItem"
            },
            "type": "array"
          },
          "previousPeriodStart": {
            "title": "Shows total cost change in % comparing to this period start",
            "type": "string"
          },
          "previousPeriodEnd": {
            "title": "Shows total cost change in % comparing to this period end",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationClustersCostReportResponse.ClusterCost": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersCostReportResponse.TimestampedCostItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationClustersCostReportResponse.ClusterSummary": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersCostReportResponse.Summary"
          },
          "clusterName": {
            "type": "string"
          },
          "clusterDeletedAt": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationClustersCostReportResponse.Summary": {
        "properties": {
          "totalCost": {
            "description": "Average compute cost.",
            "type": "string"
          },
          "cpuCost": {
            "description": "Average CPU cost.",
            "type": "string"
          },
          "ramCost": {
            "description": "Average RAM cost.",
            "type": "string"
          },
          "costOnDemand": {
            "description": "Average compute cost of on-demand instances.",
            "type": "string"
          },
          "costFallback": {
            "description": "Average compute cost of spot fallback instances.",
            "type": "string"
          },
          "costSpot": {
            "description": "Average compute cost of spot instances.",
            "type": "string"
          },
          "cpuRequested": {
            "description": "Average requested CPU cores.",
            "type": "string"
          },
          "cpuProvisioned": {
            "description": "Average provisioned CPU cores.",
            "type": "string"
          },
          "cpuAllocatable": {
            "description": "Average allocatable CPU cores.",
            "type": "string"
          },
          "ramRequested": {
            "description": "Average requested RAM GiB.",
            "type": "string"
          },
          "ramProvisioned": {
            "description": "Average provisioned RAM GiB.",
            "type": "string"
          },
          "ramAllocatable": {
            "description": "Average allocatable RAM GiB.",
            "type": "string"
          },
          "gpuCost": {
            "description": "Average GPU cost.",
            "type": "string"
          },
          "gpuRequested": {
            "description": "Average requested GPUs.",
            "type": "string"
          },
          "gpuProvisioned": {
            "description": "Average provisioned GPUs.",
            "type": "string"
          },
          "gpuAllocatable": {
            "description": "Average allocatable GPUs.",
            "type": "string"
          },
          "storageCost": {
            "description": "Average Storage cost.",
            "type": "string"
          },
          "storageRequested": {
            "description": "Average claimed Storage (PVC accessed by any workload).",
            "type": "string"
          },
          "storageProvisioned": {
            "description": "Average provisioned Storage.",
            "type": "string"
          },
          "storageClaimed": {
            "description": "Average claimed Storage (PVC).",
            "type": "string"
          },
          "totalCostPercentChange": {
            "title": "Total cost change percentage, compared to the previous period",
            "type": "string"
          },
          "tpuCost": {
            "description": "Average TPU cost.",
            "type": "string"
          },
          "tpuRequested": {
            "description": "Average requested TPUs.",
            "type": "string"
          },
          "tpuProvisioned": {
            "description": "Average provisioned TPUs.",
            "type": "string"
          },
          "tpuAllocatable": {
            "description": "Average allocatable TPUs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationClustersCostReportResponse.TimestampedCostItem": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationClustersEfficiencySummaryResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersEfficiencySummaryResponse.ClusterEfficiencyDetails"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "description": "Total count of items matching request filters.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationClustersEfficiencySummaryResponse.ClusterEfficiencyDetails": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "wasted": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersEfficiencySummaryResponse.Wasted"
          },
          "onDemandResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersEfficiencySummaryResponse.ClusterEfficiencyDetails.LifecycleResources"
          },
          "spotResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersEfficiencySummaryResponse.ClusterEfficiencyDetails.LifecycleResources"
          },
          "fallbackResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationClustersEfficiencySummaryResponse.ClusterEfficiencyDetails.LifecycleResources"
          },
          "storageResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.StorageResourceEfficiency"
          },
          "cpuCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostEfficiency"
          },
          "ramCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostEfficiency"
          },
          "storageCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.StorageCostEfficiency"
          },
          "cpuOverprovisionedPercent": {
            "format": "double",
            "type": "number"
          },
          "ramOverprovisionedPercent": {
            "format": "double",
            "type": "number"
          },
          "storageOverprovisionedPercent": {
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationClustersEfficiencySummaryResponse.ClusterEfficiencyDetails.LifecycleResources": {
        "properties": {
          "cpuResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.ResourceEfficiency"
          },
          "ramResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.ResourceEfficiency"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationClustersEfficiencySummaryResponse.Wasted": {
        "properties": {
          "cpu": {
            "format": "double",
            "type": "number"
          },
          "ram": {
            "format": "double",
            "type": "number"
          },
          "storage": {
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationEfficiencyReportResponse": {
        "description": "Defines get cluster efficiency report response.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationEfficiencyReportResponse.TimestampedItem"
            },
            "title": "Report per time-step across the whole organization",
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationEfficiencyReportResponse.TimestampedItem": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "cpuResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.ResourceEfficiency"
          },
          "cpuCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostEfficiency"
          },
          "ramResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.ResourceEfficiency"
          },
          "ramCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostEfficiency"
          },
          "storageResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.StorageResourceEfficiency"
          },
          "storageCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.StorageCostEfficiency"
          },
          "onDemand": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationEfficiencyReportResponse.TimestampedItem.LifecycleCostAndResources"
          },
          "spot": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationEfficiencyReportResponse.TimestampedItem.LifecycleCostAndResources"
          },
          "fallback": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetOrganizationEfficiencyReportResponse.TimestampedItem.LifecycleCostAndResources"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationEfficiencyReportResponse.TimestampedItem.LifecycleCostAndResources": {
        "properties": {
          "cpuResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.ResourceEfficiency"
          },
          "ramResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.ResourceEfficiency"
          },
          "cpuCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostEfficiency"
          },
          "ramCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostEfficiency"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationEfficiencySummaryResponse": {
        "properties": {
          "cpuResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.ResourceEfficiency"
          },
          "cpuCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostEfficiency"
          },
          "ramResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.ResourceEfficiency"
          },
          "ramCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostEfficiency"
          },
          "storageResources": {
            "$ref": "#/components/schemas/costreport.v1beta1.StorageResourceEfficiency"
          },
          "storageCost": {
            "$ref": "#/components/schemas/costreport.v1beta1.StorageCostEfficiency"
          },
          "totalWaste": {
            "format": "double",
            "title": "Total waste ($) for the selected period",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetOrganizationWorkloadEventMetricsResponse": {
        "properties": {
          "series": {
            "description": "Time-series data grouped by event type.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadEventSeries"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetReliabilityMetricsScriptResponse": {
        "properties": {
          "script": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetReliabilityMetricsScriptTemplateResponse": {
        "properties": {
          "script": {
            "$ref": "#/components/schemas/google.api.HttpBody"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetRightsizingSummaryResponse": {
        "description": "Defines rightsizing summary response.",
        "properties": {
          "rightsizingRecommendation": {
            "$ref": "#/components/schemas/costreport.v1beta1.RightsizingRecommendation"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetSavingsRecommendationResponse": {
        "description": "Defines savings recommendation response.",
        "properties": {
          "recommendations": {
            "additionalProperties": {
              "$ref": "#/components/schemas/costreport.v1beta1.SavingsRecommendation"
            },
            "description": "Different types of estimated savings reports.",
            "type": "object"
          },
          "currentConfiguration": {
            "$ref": "#/components/schemas/costreport.v1beta1.SavingsCurrentConfiguration"
          },
          "lastUpdatedAt": {
            "description": "Timestamp of the last cluster snapshot used to calculate the report.",
            "format": "date-time",
            "type": "string"
          },
          "isRebalancingRecommended": {
            "description": "Whether rebalancing is recommended. Calculated based on available savings.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetSingleNamespaceCostReportResponse": {
        "description": "Defines the get single namespace cost report response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace name.",
            "type": "string"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          },
          "costSummary": {
            "$ref": "#/components/schemas/costreport.v1beta1.NamespaceCostSummary"
          },
          "dailyCostItems": {
            "description": "Cost metrics of the namespace.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.NamespaceCostItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetSingleWorkloadCostReportResponse": {
        "description": "Defines cluster workload cost response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/costreport.v1beta1.WorkloadReportItem"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetSingleWorkloadDataTransferCostResponse": {
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/costreport.v1beta1.WorkloadDataTransferItem"
          },
          "egressdStatus": {
            "$ref": "#/components/schemas/costreport.v1beta1.EgressdStatus"
          }
        },
        "title": "Defines single workload datatransfer cost response",
        "type": "object"
      },
      "costreport.v1beta1.GetSingleWorkloadEventsResponse": {
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "series": {
            "description": "Time-series data grouped by event type.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadEventSeries"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetSingleWorkloadGPUSummaryResponse": {
        "properties": {
          "clusterId": {
            "title": "Workload cluster ID",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "avgGpuUtilization": {
            "description": "Average GPU utilization (in %) over selected period (based on graphic engine active).",
            "type": "string"
          },
          "totalWastedGpuMemoryBytes": {
            "description": "Total wasted GPU memory in bytes over selected period.",
            "type": "string"
          },
          "totalIdleMinutes": {
            "description": "Total GPU idle minutes.",
            "format": "int64",
            "type": "string"
          },
          "totalUptimeMinutes": {
            "description": "Total workload uptime minutes (how long workload is running).",
            "format": "int64",
            "type": "string"
          },
          "totalCostImpact": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostImpact"
          },
          "intervals": {
            "description": "Timestamped (daily) GPU details breakdown.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetSingleWorkloadGPUSummaryResponse.TimestampedItem"
            },
            "type": "array"
          },
          "avgGpuMemoryUtilization": {
            "description": "Average GPU memory utilization (in %) over selected period.",
            "type": "string"
          },
          "totalGpuMemoryBytes": {
            "description": "Total available GPU memory bytes over selected period.",
            "type": "string"
          },
          "totalUsedGpuMemoryBytes": {
            "description": "Total used GPU memory bytes over selected period.",
            "type": "string"
          },
          "avgFiDevGpuUtil": {
            "description": "Average GPU utilization (in %) over selected period (based on DCGM_FI_DEV_GPU_UTIL metric).",
            "type": "string"
          },
          "unifiedUtilization": {
            "description": "Average unified GPU utilization (in %) over selected period.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetSingleWorkloadGPUSummaryResponse.TimestampedItem": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "podCount": {
            "format": "int64",
            "title": "Workload pod count",
            "type": "string"
          },
          "idleMinutes": {
            "description": "GPU idle minutes for given timestamp.",
            "format": "int64",
            "type": "string"
          },
          "uptimeMinutes": {
            "description": "Workload uptime minutes for given timestamp.",
            "format": "int64",
            "type": "string"
          },
          "utilization": {
            "$ref": "#/components/schemas/costreport.v1beta1.GPUUtilization"
          },
          "memory": {
            "$ref": "#/components/schemas/costreport.v1beta1.GPUMemory"
          },
          "costImpact": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostImpact"
          },
          "measurableGpuPodCount": {
            "description": "Number of pods on measurable GPUs (not MIG + time-sharing) for given timestamp.",
            "format": "uint64",
            "type": "string"
          },
          "totalGpuPodCount": {
            "description": "Total number of pods on GPUs for given timestamp.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadCostSummariesResponse": {
        "description": "Defines workload compute cost report response.",
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "description": "Workload cost entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadCostSummariesResponse.WorkloadItem"
            },
            "type": "array"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "description": "Total count of items matching request filters.",
            "format": "uint64",
            "type": "string"
          },
          "previousPeriodStart": {
            "title": "Shows total cost change in % comparing to this period start",
            "type": "string"
          },
          "previousPeriodEnd": {
            "title": "Shows total cost change in % comparing to this period end",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadCostSummariesResponse.CostSummary": {
        "properties": {
          "podCount": {
            "description": "Average amount of pods for the given time period.",
            "type": "string"
          },
          "cpuCount": {
            "description": "Average number of CPUs for the given time period.",
            "type": "string"
          },
          "ramGib": {
            "description": "Average amount of RAM GiB for the given time period.",
            "type": "string"
          },
          "gpuCount": {
            "description": "Average number of requested GPUs for the given time period.",
            "type": "string"
          },
          "tpuCount": {
            "description": "Average number of requested TPU chips for the given time period.",
            "type": "string"
          },
          "cpuCost": {
            "description": "CPU cost for the given time period.",
            "type": "string"
          },
          "ramCost": {
            "description": "RAM cost for the given time period.",
            "type": "string"
          },
          "gpuCost": {
            "description": "GPU cost for the given time period.",
            "type": "string"
          },
          "tpuCost": {
            "description": "TPU cost for the given time period.",
            "type": "string"
          },
          "costOnDemand": {
            "description": "Cost of the workload on on-demand instances for the given time period.",
            "type": "string"
          },
          "costSpot": {
            "description": "Cost of the workload on spot instances for the given time period.",
            "type": "string"
          },
          "costSpotFallback": {
            "description": "Cost of the workload on spot fallback instances for the given time period.",
            "type": "string"
          },
          "totalCost": {
            "description": "Total cost of the workload for the given time period.",
            "type": "string"
          },
          "storageCost": {
            "description": "Storage cost for the given time period.",
            "type": "string"
          },
          "storageGib": {
            "description": "Average amount of storage GiB for the given time period.",
            "type": "string"
          },
          "totalCostPercentChange": {
            "title": "Total cost change percentage, compared to the previous period",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadCostSummariesResponse.WorkloadItem": {
        "description": "Defines a workload.",
        "properties": {
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "cost": {
            "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadCostSummariesResponse.CostSummary"
          },
          "labels": {
            "description": "Labels of the workload.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadLabel"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadDataTransferCostResponse": {
        "properties": {
          "clusterId": {
            "description": "ID of the cluster.",
            "type": "string"
          },
          "items": {
            "description": "Workload datatransfer cost entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadDataTransferItem"
            },
            "type": "array"
          },
          "egressdStatus": {
            "$ref": "#/components/schemas/costreport.v1beta1.EgressdStatus"
          },
          "noDataReason": {
            "$ref": "#/components/schemas/costreport.v1beta1.NoDataReason"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of elements in 'items' array",
            "type": "string"
          }
        },
        "title": "Defines cluster workload datatransfer cost",
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadLabelNamesResponse": {
        "description": "Defines organization workload label names response.",
        "properties": {
          "labelNames": {
            "description": "List of workload label names.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadLabelValuesResponse": {
        "description": "Defines organization workload label values response.",
        "properties": {
          "labelValues": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadTrafficDestinationsHistoryResponse": {
        "description": "Defines the response for workload traffic destinations history.",
        "properties": {
          "destinations": {
            "description": "Workload traffic destinations and their pricing history.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadTrafficDestinationsHistoryResponse.DestinationHistory"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadTrafficDestinationsHistoryResponse.DestinationHistory": {
        "description": "Defines a destination workload costs with history.",
        "properties": {
          "destination": {
            "$ref": "#/components/schemas/costreport.v1beta1.WorkloadDestination"
          },
          "history": {
            "description": "History of traffic costs.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadTrafficDestinationsHistoryResponse.HistoryItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadTrafficDestinationsHistoryResponse.HistoryItem": {
        "description": "Defines a traffic history item.",
        "properties": {
          "timestamp": {
            "description": "Timestamp of traffic history item.",
            "format": "date-time",
            "type": "string"
          },
          "egress": {
            "$ref": "#/components/schemas/costreport.v1beta1.TrafficCost"
          },
          "ingress": {
            "$ref": "#/components/schemas/costreport.v1beta1.TrafficCost"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadTrafficDestinationsResponse": {
        "description": "Defines the response for workload traffic destinations.",
        "properties": {
          "destinations": {
            "description": "Workload traffic destinations.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadDestination"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsGPUReportRequest.Filter": {
        "properties": {
          "clusterIds": {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "workloadFilters": {
            "$ref": "#/components/schemas/costreport.v1beta1.WorkloadFilter"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsGPUReportResponse": {
        "description": "Defines workloads GPU report response.",
        "properties": {
          "items": {
            "description": "Workload GPU report entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadGPUReportItem"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "description": "Total count of items.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsGPUSummaryRequest.Filter": {
        "properties": {
          "clusterIds": {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "workloadFilters": {
            "$ref": "#/components/schemas/costreport.v1beta1.WorkloadFilter"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsGPUSummaryResponse": {
        "description": "Defines workloads GPU summary report response.",
        "properties": {
          "workloads": {
            "description": "Workload entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsGPUSummaryResponse.WorkloadItem"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsGPUSummaryResponse.WorkloadItem": {
        "description": "Defines a workload.",
        "properties": {
          "clusterId": {
            "title": "Workload cluster ID",
            "type": "string"
          },
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "idleMinutes": {
            "description": "GPU idle minutes for given period.",
            "format": "int64",
            "type": "string"
          },
          "uptimeMinutes": {
            "description": "Workload uptime minutes for given period.",
            "format": "int64",
            "type": "string"
          },
          "podCount": {
            "format": "int64",
            "title": "Workload pod count",
            "type": "string"
          },
          "utilization": {
            "$ref": "#/components/schemas/costreport.v1beta1.GPUUtilization"
          },
          "memory": {
            "$ref": "#/components/schemas/costreport.v1beta1.GPUMemory"
          },
          "costImpact": {
            "$ref": "#/components/schemas/costreport.v1beta1.CostImpact"
          },
          "measurableGpuPodCount": {
            "description": "Number of pods on measurable GPUs (not MIG + time-sharing) for given period.",
            "format": "uint64",
            "type": "string"
          },
          "totalGpuPodCount": {
            "description": "Total number of pods on GPUs for given period.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsGPUUtilizationRequest.Filter": {
        "properties": {
          "clusterIds": {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "workloadFilters": {
            "$ref": "#/components/schemas/costreport.v1beta1.WorkloadFilters"
          },
          "search": {
            "description": "Filter items by workload name, type or namespace.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsGPUUtilizationResponse": {
        "description": "Defines cluster workload cost response.",
        "properties": {
          "workloads": {
            "description": "Workload entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsGPUUtilizationResponse.WorkloadItem"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsGPUUtilizationResponse.WorkloadItem": {
        "description": "Defines a workload.",
        "properties": {
          "clusterId": {
            "title": "Workload cluster ID",
            "type": "string"
          },
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "utilizationPercent": {
            "description": "Workload GPU utilization percent (based on graphic engine active).",
            "type": "string"
          },
          "fiDevGpuUtil": {
            "description": "Workload GPU utilization percent (based on DCGM_FI_DEV_GPU_UTIL metric).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsMetadataResponse": {
        "properties": {
          "workloads": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadMetadata"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsWastedGPUCostImpactRequest.Filter": {
        "properties": {
          "clusterIds": {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "workloadFilters": {
            "$ref": "#/components/schemas/costreport.v1beta1.WorkloadFilter"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsWastedGPUCostImpactResponse": {
        "description": "Defines workloads cost impact of wasted GPU resources response.",
        "properties": {
          "workloads": {
            "description": "Workload entries.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsWastedGPUCostImpactResponse.WorkloadItem"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "next_cursor is a token to be used in future request to retrieve subsequent items. If empty - no more items present.",
            "type": "string"
          },
          "count": {
            "format": "uint64",
            "title": "total count of items",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsWastedGPUCostImpactResponse.CostImpact": {
        "description": "Defines cost impact of wasted GPU resources for a given time.",
        "properties": {
          "costImpact": {
            "description": "Cost impact of wasted GPU resources for the given time period.",
            "type": "string"
          },
          "timestamp": {
            "description": "Timestamp of entry.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.GetWorkloadsWastedGPUCostImpactResponse.WorkloadItem": {
        "description": "Defines a workload.",
        "properties": {
          "clusterId": {
            "title": "Workload cluster ID",
            "type": "string"
          },
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "totalCostImpact": {
            "description": "Total cost impact of wasted GPU resources for the given time period.",
            "type": "string"
          },
          "costImpactHistory": {
            "description": "Cost impact of wasted GPU resources for given period.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GetWorkloadsWastedGPUCostImpactResponse.CostImpact"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.IdleDisk": {
        "properties": {
          "name": {
            "type": "string"
          },
          "integrationId": {
            "type": "string"
          },
          "cloud": {
            "$ref": "#/components/schemas/castai.v1.Cloud"
          },
          "region": {
            "description": "Not all disks contain information about either the region or zone. Only one will be available.",
            "type": "string"
          },
          "zone": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "lastAttach": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "lastDetach": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/costreport.v1beta1.DiskStatus"
          },
          "storageSizeBytes": {
            "format": "int64",
            "type": "string"
          },
          "storageCostMonthly": {
            "description": "Value based only on cost multiplied by storage size doesnt take to account throughput or IOPS.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.ListAllocationGroupsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroup"
            },
            "title": "Allocation groups",
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.ListIdleDisksResponse": {
        "properties": {
          "idleDisks": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.IdleDisk"
            },
            "type": "array"
          },
          "nextPage": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Page"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.NamespaceCostItem": {
        "description": "Defines a namespaces' cost for a given time.",
        "properties": {
          "timestamp": {
            "description": "Timestamp of entry creation.",
            "format": "date-time",
            "type": "string"
          },
          "costOnDemand": {
            "description": "Average cost of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "costSpot": {
            "description": "Average cost of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "costSpotFallback": {
            "description": "Average cost of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "cpuCountOnDemand": {
            "description": "Average number of CPUs of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "cpuCountSpot": {
            "description": "Average number of CPUs of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "cpuCountSpotFallback": {
            "description": "Average number of CPUs of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "cpuCostOnDemand": {
            "description": "Average CPU cost of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "cpuCostSpot": {
            "description": "Average CPU cost of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "cpuCostSpotFallback": {
            "description": "Average CPU cost of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "ramCostOnDemand": {
            "description": "Average RAM cost of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "ramCostSpot": {
            "description": "Average RAM cost of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "ramCostSpotFallback": {
            "description": "Average RAM cost of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "ramGibOnDemand": {
            "description": "Average requested RAM (GiB) of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "ramGibSpot": {
            "description": "Average requested RAM (GiB) of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "ramGibSpotFallback": {
            "description": "Average requested RAM (GiB) of the workload that is on spot_fallback instances for the given time period.",
            "type": "string"
          },
          "gpuCostOnDemand": {
            "description": "Average GPU cost of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "gpuCostSpot": {
            "description": "Average GPU cost of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "gpuCostSpotFallback": {
            "description": "Average GPU cost of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "gpuCountOnDemand": {
            "description": "Average number of requested GPUs of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "gpuCountSpot": {
            "description": "Average number of requested GPUs of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "gpuCountSpotFallback": {
            "description": "Average number of requested GPUs of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "tpuCostOnDemand": {
            "description": "Average TPU cost of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "tpuCostSpot": {
            "description": "Average TPU cost of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "tpuCostSpotFallback": {
            "description": "Average TPU cost of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "tpuCountOnDemand": {
            "description": "Average number of requested TPU chips of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "tpuCountSpot": {
            "description": "Average number of requested TPU chips of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "tpuCountSpotFallback": {
            "description": "Average number of requested TPU chips of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "storageCost": {
            "description": "Average storage cost of volumes claimed in the namespace for the given time period.",
            "type": "string"
          },
          "storageGib": {
            "description": "Average requested storage size (GiB) of volumes claimed in the namespace for the given time period.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.NamespaceCostSummary": {
        "description": "Defines a namespace's cost summary over a selected period.",
        "properties": {
          "totalCost": {
            "title": "Total cost for the selected time period",
            "type": "string"
          },
          "avgCost": {
            "title": "Average cost = total_cost / number of entries in selected period",
            "type": "string"
          },
          "avgCpuCost": {
            "title": "Avg X cost = total cost of X type of resource / number of entries in selected period",
            "type": "string"
          },
          "avgRamCost": {
            "type": "string"
          },
          "avgGpuCost": {
            "type": "string"
          },
          "avgTpuCost": {
            "title": "Avg TPU cost = total TPU cost / number of entries in selected period",
            "type": "string"
          },
          "totalWorkloadsCount": {
            "description": "Number of all workloads in the namespace that appeared in the selected time range.",
            "type": "string"
          },
          "avgStorageCost": {
            "title": "Avg storage cost = total storage cost / number of entries in selected period",
            "type": "string"
          },
          "avgDailyCpuCost": {
            "type": "string"
          },
          "avgDailyRamCost": {
            "type": "string"
          },
          "avgDailyGpuCost": {
            "type": "string"
          },
          "avgDailyTpuCost": {
            "title": "Avg daily TPU cost = total TPU cost / number of days in selected period",
            "type": "string"
          },
          "avgDailyStorageCost": {
            "type": "string"
          },
          "totalRequestedCpuHours": {
            "title": "Total requested CPU hours for the selected time period",
            "type": "string"
          },
          "totalRequestedRamGibHours": {
            "title": "Total requested RAM GiB hours for the selected time period",
            "type": "string"
          },
          "totalRequestedGpuHours": {
            "title": "Total requested GPU hours for the selected time period",
            "type": "string"
          },
          "totalRequestedTpuHours": {
            "title": "Total requested TPU chip hours for the selected time period",
            "type": "string"
          },
          "totalRequestedStorageGibHours": {
            "title": "Total requested storage GiB hours for the selected time period",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.NamespaceDataTransferItem": {
        "properties": {
          "namespace": {
            "description": "Name of the namespace.",
            "type": "string"
          },
          "egress": {
            "$ref": "#/components/schemas/costreport.v1beta1.NamespaceDataTransferItem.DataTransferCostItem"
          },
          "ingress": {
            "$ref": "#/components/schemas/costreport.v1beta1.NamespaceDataTransferItem.DataTransferCostItem"
          },
          "workloadCount": {
            "title": "Workload count",
            "type": "string"
          },
          "totalCost": {
            "title": "Total cost",
            "type": "string"
          },
          "totalBytes": {
            "title": "Total bytes",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.NamespaceDataTransferItem.DataTransferCostItem": {
        "properties": {
          "internetBytes": {
            "type": "string"
          },
          "internetCost": {
            "type": "string"
          },
          "interRegionBytes": {
            "type": "string"
          },
          "interRegionCost": {
            "type": "string"
          },
          "interZoneBytes": {
            "type": "string"
          },
          "interZoneCost": {
            "type": "string"
          },
          "intraZoneBytes": {
            "type": "string"
          },
          "intraZoneCost": {
            "type": "string"
          },
          "cloudApiBytes": {
            "type": "string"
          },
          "cloudApiCost": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.NamespaceFilter": {
        "properties": {
          "namespace": {
            "description": "Filter items by namespace. Acts like a case-insensitive substring search.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.NamespaceFilters": {
        "properties": {
          "clusterIds": {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "clusterIds"
        ],
        "type": "object"
      },
      "costreport.v1beta1.NoDataReason": {
        "default": "Unknown",
        "description": "Defines a list of possible reasons why report data is missing.",
        "enum": [
          "Unknown",
          "NoMetricsServer",
          "AgentOutdated"
        ],
        "type": "string"
      },
      "costreport.v1beta1.Node": {
        "properties": {
          "instanceType": {
            "type": "string"
          },
          "cpuCores": {
            "format": "int32",
            "type": "integer"
          },
          "ramBytes": {
            "format": "double",
            "type": "number"
          },
          "gpu": {
            "format": "int32",
            "type": "integer"
          },
          "price": {
            "title": "Total node price in $",
            "type": "string"
          },
          "cpuPrice": {
            "title": "$/CPU hour",
            "type": "string"
          },
          "ramPrice": {
            "title": "$/GiB hour",
            "type": "string"
          },
          "spot": {
            "type": "boolean"
          },
          "fallback": {
            "type": "boolean"
          },
          "master": {
            "title": "Whether it is a master node",
            "type": "boolean"
          },
          "infra": {
            "title": "Whether it is an infra node",
            "type": "boolean"
          },
          "nodeName": {
            "type": "string"
          },
          "az": {
            "title": "Availability zone name",
            "type": "string"
          },
          "os": {
            "title": "Operating system - the field is set only when the calculations distinguish between OS (e.g. Windows vs Linux in Azure)",
            "type": "string"
          },
          "gpuFractional": {
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.NodeLabelFilters": {
        "properties": {
          "clusterIds": {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "search": {
            "description": "Filter node label names by substring.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.NodeStorageMetrics": {
        "properties": {
          "nodeName": {
            "description": "Name of the node.",
            "type": "string"
          },
          "allocatableBytes": {
            "description": "Allocatable ephemeral storage in bytes.",
            "format": "int64",
            "type": "string"
          },
          "usedBytes": {
            "description": "Used ephemeral storage in bytes.",
            "format": "int64",
            "type": "string"
          },
          "requestedBytes": {
            "description": "Requested ephemeral storage in bytes.",
            "format": "int64",
            "type": "string"
          },
          "totalBytes": {
            "format": "int64",
            "title": "Total ephemeral storage in bytes",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.NodeTemplate": {
        "properties": {
          "nodeTemplateName": {
            "description": "Name of the node template.",
            "type": "string"
          },
          "nodeCount": {
            "description": "Count of nodes.",
            "format": "int64",
            "type": "string"
          },
          "cpuRequested": {
            "description": "Requested CPU cores.",
            "type": "string"
          },
          "ramRequested": {
            "description": "Requested RAM GiB.",
            "type": "string"
          },
          "cpuUsed": {
            "description": "Used CPU cores.",
            "type": "string"
          },
          "ramUsed": {
            "description": "Used RAM GiB.",
            "type": "string"
          },
          "cpuProvisioned": {
            "description": "Provisioned CPU cores.",
            "type": "string"
          },
          "ramProvisioned": {
            "description": "Provisioned RAM GiB.",
            "type": "string"
          },
          "cpuAllocatable": {
            "description": "Allocatable CPU cores.",
            "type": "string"
          },
          "ramAllocatable": {
            "description": "Allocatable RAM GiB.",
            "type": "string"
          },
          "avgCpuEfficiency": {
            "title": "Average CPU efficiency",
            "type": "string"
          },
          "avgRamEfficiency": {
            "title": "Average RAM efficiency",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.RecommendationDetails": {
        "properties": {
          "configurationAfter": {
            "$ref": "#/components/schemas/costreport.v1beta1.ConfigurationAfter"
          },
          "armSavingsConfiguration": {
            "$ref": "#/components/schemas/costreport.v1beta1.ConfigurationAfter"
          },
          "replicatedWorkloads": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.ReplicatedWorkload"
            },
            "type": "array"
          },
          "requestedStorageBytes": {
            "format": "int64",
            "title": "Amount of storage requested by current workloads",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.ReplicatedWorkload": {
        "properties": {
          "ownerType": {
            "description": "Deprecated: use workload_type instead.",
            "type": "string",
            "deprecated": true
          },
          "replicas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "currentNodes": {
            "items": {
              "type": "string"
            },
            "title": "Node name",
            "type": "array"
          },
          "currentNodeType": {
            "type": "string"
          },
          "recommendedNodeType": {
            "type": "string"
          },
          "workloadName": {
            "type": "string"
          },
          "workloadNamespace": {
            "type": "string"
          },
          "workloadType": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.ResourceEfficiency": {
        "properties": {
          "provisioned": {
            "format": "double",
            "title": "Provisioned resource units (CPU cores, RAM GiB)",
            "type": "number"
          },
          "requested": {
            "format": "double",
            "title": "Requested resource units (CPU cores, RAM GiB)",
            "type": "number"
          },
          "used": {
            "format": "double",
            "title": "Used resource units (CPU cores, RAM GiB)",
            "type": "number"
          },
          "overprovisionedPercent": {
            "format": "double",
            "title": "Overprovisioning as %",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.Resources": {
        "description": "Defines the resources.",
        "properties": {
          "cpu": {
            "description": "Defines the cpu resource.",
            "type": "string"
          },
          "memoryGib": {
            "description": "Defines the memory resource in GiB.",
            "type": "string"
          }
        },
        "required": [
          "cpu",
          "memoryGib"
        ],
        "type": "object"
      },
      "costreport.v1beta1.RightsizingRecommendation": {
        "description": "RightsizingRecommendation defines a rightsizing recommendation.",
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.RightsizingRecommendation.Summary"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.RightsizingRecommendation.Summary": {
        "description": "Summary defines a summary of the recommendation.",
        "properties": {
          "cpuCoresDifference": {
            "description": "Difference of cpu cores between current workload requests and recommended configuration.",
            "format": "double",
            "type": "number"
          },
          "ramBytesDifference": {
            "description": "Difference of ram bytes between current workload requests and recommended configuration.",
            "format": "double",
            "type": "number"
          },
          "efficiency": {
            "type": "string"
          },
          "cpuEfficiency": {
            "title": "Defines cpu efficiency ratio of all the cluster's workloads which have requests defined",
            "type": "string"
          },
          "memoryEfficiency": {
            "title": "Defines memory efficiency ratio of all the cluster's workloads which have requests defined",
            "type": "string"
          }
        },
        "required": [
          "cpuEfficiency",
          "efficiency",
          "memoryEfficiency"
        ],
        "type": "object"
      },
      "costreport.v1beta1.Saving": {
        "description": "Saving defines price before and after applying a savings recommendation.",
        "properties": {
          "priceBefore": {
            "description": "Price before applying this configuration.",
            "type": "string"
          },
          "priceAfter": {
            "description": "Price after applying this configuration.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.SavingsCurrentConfiguration": {
        "description": "SavingsCurrentConfiguration defines current cluster configuration.",
        "properties": {
          "nodes": {
            "description": "A single cluster node.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.Node"
            },
            "type": "array"
          },
          "totalPrice": {
            "$ref": "#/components/schemas/costreport.v1beta1.SavingsPrice"
          },
          "workloads": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.ReplicatedWorkload"
            },
            "type": "array"
          },
          "provisionedStorageBytes": {
            "format": "int64",
            "title": "cluster level provisioned storage bytes",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.SavingsPrice": {
        "description": "SavingsPrice defines pricing details.",
        "properties": {
          "hourly": {
            "description": "Total hourly price of the node configuration in $ currency.",
            "type": "string"
          },
          "monthly": {
            "description": "Total monthly price of the node configuration in $ currency.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.SavingsRecommendation": {
        "description": "Savings recommendation: includes hourly & monthly prices as well as percent saved.",
        "properties": {
          "monthly": {
            "$ref": "#/components/schemas/costreport.v1beta1.Saving"
          },
          "hourly": {
            "$ref": "#/components/schemas/costreport.v1beta1.Saving"
          },
          "savingsPercentage": {
            "description": "Available savings by applying this configuration.",
            "type": "string"
          },
          "details": {
            "$ref": "#/components/schemas/costreport.v1beta1.RecommendationDetails"
          },
          "armSavingsMonthly": {
            "$ref": "#/components/schemas/costreport.v1beta1.Saving"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.StorageCostEfficiency": {
        "properties": {
          "cost": {
            "format": "double",
            "title": "Cost of storage",
            "type": "number"
          },
          "perGibProvisioned": {
            "format": "double",
            "title": "Storage per GiB provisioned storage (cost / provisioned_storage_gib)",
            "type": "number"
          },
          "perGibClaimed": {
            "format": "double",
            "title": "Storage per GiB claimed storage",
            "type": "number"
          },
          "perGibRequested": {
            "format": "double",
            "title": "Storage per GiB requested storage",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.StorageResourceEfficiency": {
        "properties": {
          "provisioned": {
            "format": "double",
            "title": "Provisioned GiB of storage",
            "type": "number"
          },
          "claimed": {
            "format": "double",
            "title": "Claimed GiB of storage by a PVC",
            "type": "number"
          },
          "requested": {
            "format": "double",
            "title": "Requested GiB of storage (PVCs requested by at least one workload)",
            "type": "number"
          },
          "overprovisionedPercent": {
            "format": "double",
            "title": "Overprovisioning as %",
            "type": "number"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.TrafficCost": {
        "properties": {
          "interZoneBytes": {
            "description": "Bytes transferred between zones.",
            "type": "string"
          },
          "interZoneCost": {
            "description": "Cost of bytes transferred between zones.",
            "type": "string"
          }
        },
        "title": "Defines a cost of inter zone traffic",
        "type": "object"
      },
      "costreport.v1beta1.UpdateAllocationGroupResponse": {
        "properties": {
          "allocationGroupId": {
            "title": "ID of the allocation group",
            "type": "string"
          },
          "allocationGroup": {
            "$ref": "#/components/schemas/costreport.v1beta1.AllocationGroup"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.UpdateOAJStateRequest": {
        "properties": {
          "isEnable": {
            "description": "Whether OAJ is enabled for the organization.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.UpdateOAJStateResponse": {
        "type": "object"
      },
      "costreport.v1beta1.WorkloadCostItem": {
        "description": "Defines a workloads cost for a given time.",
        "properties": {
          "timestamp": {
            "description": "Timestamp of entry creation.",
            "format": "date-time",
            "type": "string"
          },
          "costOnDemand": {
            "description": "Average hourly cost of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "costSpot": {
            "description": "Average hourly cost of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "costSpotFallback": {
            "description": "Average hourly cost of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "cpuCountOnDemand": {
            "description": "Average number of CPUs of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "cpuCountSpot": {
            "description": "Average number of CPUs of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "cpuCountSpotFallback": {
            "description": "Average number of CPUs of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "podCountOnDemand": {
            "description": "Average amount of pods for the workload that are on on-demand instances for the given time period.",
            "type": "string"
          },
          "podCountSpot": {
            "description": "Average amount of pods for the workload that are on spot instances for the given time period.",
            "type": "string"
          },
          "podCountSpotFallback": {
            "description": "Average amount of pods for the workload that are on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "uptimeMinutesOnDemand": {
            "description": "Number of minutes the workload was running on on-demand instances for the given time period.",
            "type": "string"
          },
          "uptimeMinutesSpot": {
            "description": "Number of minutes the workload was running on spot instances for the given time period.",
            "type": "string"
          },
          "uptimeMinutesSpotFallback": {
            "description": "Number of minutes the workload was running on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "cpuCostOnDemand": {
            "description": "Average hourly CPU cost of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "cpuCostSpot": {
            "description": "Average hourly CPU cost of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "cpuCostSpotFallback": {
            "description": "Average hourly CPU cost of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "ramCostOnDemand": {
            "description": "Average hourly RAM cost of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "ramCostSpot": {
            "description": "Average hourly RAM cost of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "ramCostSpotFallback": {
            "description": "Average hourly RAM cost of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "ramGibOnDemand": {
            "description": "Average requested RAM (GiB) of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "ramGibSpot": {
            "description": "Average requested RAM (GiB) of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "ramGibSpotFallback": {
            "description": "Average requested RAM (GiB) of the workload that is on spot_fallback instances for the given time period.",
            "type": "string"
          },
          "gpuCostOnDemand": {
            "description": "Average hourly GPU cost of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "gpuCostSpot": {
            "description": "Average hourly GPU cost of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "gpuCostSpotFallback": {
            "description": "Average hourly GPU cost of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "gpuCountOnDemand": {
            "description": "Average number of requested GPUs of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "gpuCountSpot": {
            "description": "Average number of requested GPUs of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "gpuCountSpotFallback": {
            "description": "Average number of requested GPUs of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "storageCost": {
            "description": "Average hourly storage cost of all provisioned volumes attached to the workload for the given time period.",
            "type": "string"
          },
          "storageGib": {
            "description": "Average requested storage size of all PVs attached to the workload for the given time period.",
            "type": "string"
          },
          "tpuCostOnDemand": {
            "description": "Average hourly TPU cost of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "tpuCostSpot": {
            "description": "Average hourly TPU cost of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "tpuCostSpotFallback": {
            "description": "Average hourly TPU cost of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          },
          "tpuCountOnDemand": {
            "description": "Average number of requested TPUs of the workload that is on on-demand instances for the given time period.",
            "type": "string"
          },
          "tpuCountSpot": {
            "description": "Average number of requested TPUs of the workload that is on spot instances for the given time period.",
            "type": "string"
          },
          "tpuCountSpotFallback": {
            "description": "Average number of requested TPUs of the workload that is on spot-fallback instances for the given time period.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadCostSummary": {
        "properties": {
          "totalCost": {
            "type": "string"
          },
          "totalCostOnDemand": {
            "type": "string"
          },
          "totalCostSpot": {
            "type": "string"
          },
          "totalCostSpotFallback": {
            "type": "string"
          },
          "totalStorageCost": {
            "type": "string"
          },
          "avgCost": {
            "type": "string"
          },
          "avgCpuCost": {
            "type": "string"
          },
          "avgRamCost": {
            "type": "string"
          },
          "avgGpuCost": {
            "type": "string"
          },
          "avgStorageCost": {
            "type": "string"
          },
          "avgTpuCost": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadDataTransferCostItem": {
        "description": "Defines a workloads datatransfer cost for a given time.",
        "properties": {
          "timestamp": {
            "description": "Timestamp of datatransfer item aggregation.",
            "format": "date-time",
            "type": "string"
          },
          "internetBytes": {
            "type": "string"
          },
          "internetCost": {
            "type": "string"
          },
          "interRegionBytes": {
            "type": "string"
          },
          "interRegionCost": {
            "type": "string"
          },
          "interZoneBytes": {
            "type": "string"
          },
          "interZoneCost": {
            "type": "string"
          },
          "intraZoneBytes": {
            "type": "string"
          },
          "intraZoneCost": {
            "type": "string"
          },
          "cloudApiBytes": {
            "type": "string"
          },
          "cloudApiCost": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadDataTransferItem": {
        "description": "Defines a workload datatransfer details item.",
        "properties": {
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "egressMetrics": {
            "description": "Egress datatransfer cost metrics of the workload.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadDataTransferCostItem"
            },
            "type": "array"
          },
          "ingressMetrics": {
            "description": "Ingress datatransfer cost metrics of the workload.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadDataTransferCostItem"
            },
            "type": "array"
          },
          "totalCost": {
            "title": "Total datatransfer cost",
            "type": "string"
          },
          "totalBytes": {
            "title": "Total bytes",
            "type": "string"
          },
          "destinationAddresses": {
            "$ref": "#/components/schemas/costreport.v1beta1.DestinationAddresses"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadDestination": {
        "description": "Defines a traffic destination workload with costs.",
        "properties": {
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "egress": {
            "$ref": "#/components/schemas/costreport.v1beta1.TrafficCost"
          },
          "ingress": {
            "$ref": "#/components/schemas/costreport.v1beta1.TrafficCost"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadEventMetricsItem": {
        "properties": {
          "timestamp": {
            "description": "Start of the aggregation bucket.",
            "format": "date-time",
            "type": "string"
          },
          "eventCount": {
            "description": "Number of events in this bucket.",
            "format": "uint64",
            "type": "string"
          },
          "byContainer": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadEventMetricsItemByContainer"
            },
            "title": "Events counted by container",
            "type": "array"
          }
        },
        "required": [
          "eventCount",
          "timestamp"
        ],
        "type": "object"
      },
      "costreport.v1beta1.WorkloadEventMetricsItemByContainer": {
        "properties": {
          "container": {
            "title": "Container name",
            "type": "string"
          },
          "eventCount": {
            "format": "uint64",
            "title": "Number of events for this container",
            "type": "string"
          }
        },
        "required": [
          "container",
          "eventCount"
        ],
        "type": "object"
      },
      "costreport.v1beta1.WorkloadEventSeries": {
        "description": "One time-series per event type (and optionally managed_by). Items are ordered by timestamp ascending.",
        "properties": {
          "eventType": {
            "description": "Kubernetes reason string for the event (e.g. \"OOMKilled\").",
            "type": "string"
          },
          "items": {
            "description": "Time-series data points.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadEventMetricsItem"
            },
            "type": "array"
          },
          "managedBy": {
            "description": "Set only when group_by_managed_by was requested. \"woop\" = managed by CAST AI workload autoscaler, \"\" = unmanaged.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "eventType"
        ],
        "type": "object"
      },
      "costreport.v1beta1.WorkloadFilter": {
        "description": "Defines a filter for workload report.",
        "properties": {
          "labels": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadFilter.LabelValue"
            },
            "type": "array"
          },
          "workloadNames": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labelsOperator": {
            "$ref": "#/components/schemas/costreport.v1beta1.FilterOperator"
          },
          "workloadTypes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "namespaces": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadFilter.LabelValue": {
        "properties": {
          "label": {
            "description": "Label name.",
            "type": "string"
          },
          "value": {
            "description": "Label Value.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadFilters": {
        "properties": {
          "namespace": {
            "description": "Filter items by namespace.",
            "type": "string"
          },
          "workloadName": {
            "description": "Filter items by workload name.",
            "type": "string"
          },
          "workloadType": {
            "description": "Filter items by workload type.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadGPUReportItem": {
        "description": "Defines a workload GPU report item with time-series data.",
        "properties": {
          "clusterId": {
            "description": "Workload cluster ID.",
            "type": "string"
          },
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "gpuModels": {
            "description": "GPU models used by this workload.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.GPUReportSummary"
          },
          "series": {
            "description": "Time-series data grouped by GPU model.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.GPUReportSeries"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadLabel": {
        "properties": {
          "name": {
            "description": "Name of the label.",
            "type": "string"
          },
          "value": {
            "description": "Value of the label.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadLabelFilters": {
        "properties": {
          "clusterIds": {
            "description": "Cluster IDs for filtering. Leave empty for the full list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "workloadFilters": {
            "$ref": "#/components/schemas/costreport.v1beta1.WorkloadFilters"
          },
          "labelNameContains": {
            "description": "Filter workload label names by substring.",
            "type": "string"
          },
          "labelValueContains": {
            "description": "Filter workload label values by substring.",
            "type": "string"
          },
          "namespaces": {
            "description": "Namespaces for filtering. Only labels from workloads in the selected namespaces are returned. Leave empty for the full list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadMetadata": {
        "properties": {
          "workloadName": {
            "type": "string"
          },
          "workloadType": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "labels": {
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadLabel"
            },
            "type": "array"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "lastSeenAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "costreport.v1beta1.WorkloadReportItem": {
        "description": "Defines a workload.",
        "properties": {
          "workloadName": {
            "description": "Name of the workload.",
            "type": "string"
          },
          "workloadType": {
            "description": "Type of the workload.",
            "type": "string"
          },
          "namespace": {
            "description": "Namespace the workload is in.",
            "type": "string"
          },
          "costMetrics": {
            "description": "Cost metrics of the workload.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadCostItem"
            },
            "type": "array"
          },
          "labels": {
            "description": "Labels of the workload.",
            "items": {
              "$ref": "#/components/schemas/costreport.v1beta1.WorkloadLabel"
            },
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/costreport.v1beta1.WorkloadCostSummary"
          }
        },
        "type": "object"
      },
      "dbo.v1.Account": {
        "properties": {
          "id": {
            "type": "string"
          },
          "roleId": {
            "type": "string"
          },
          "csp": {
            "$ref": "#/components/schemas/castai.v1.Cloud"
          }
        },
        "required": [
          "csp",
          "id",
          "roleId"
        ],
        "type": "object"
      },
      "dbo.v1.CacheConfiguration": {
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "cacheId": {
            "readOnly": true,
            "type": "string"
          },
          "databaseName": {
            "description": "Name of the logical database to which this configuration corresponds.",
            "type": "string"
          },
          "caching": {
            "$ref": "#/components/schemas/dbo.v1.Caching"
          },
          "version": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "connectionString": {
            "description": "Deprecated: use connection_strings. Will contain first connection string if available.",
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "deprecated": true
          },
          "connectionStrings": {
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "metrics": {
            "$ref": "#/components/schemas/dbo.v1.CacheMetrics"
          },
          "mode": {
            "$ref": "#/components/schemas/dbo.v1.TTLMode"
          }
        },
        "required": [
          "databaseName"
        ],
        "type": "object"
      },
      "dbo.v1.CacheEfficiency": {
        "description": "CacheEfficiency represents cache efficiency for a given cache configuration.",
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "totalQueries": {
            "description": "Amount of queries observed by cache.",
            "format": "uint64",
            "type": "string"
          },
          "cacheableQueries": {
            "description": "Deprecated: Amount of queries that potentially could be cached.",
            "format": "uint64",
            "type": "string",
            "deprecated": true
          },
          "cacheHits": {
            "description": "Amount of cached queries by cache.",
            "format": "uint64",
            "type": "string"
          },
          "cacheHitRate": {
            "description": "Cache efficiency.",
            "format": "double",
            "type": "number"
          },
          "dqlQueries": {
            "description": "Amount of dql queries.",
            "format": "uint64",
            "type": "string"
          },
          "events": {
            "description": "Events that occurred in this time bucket since previous timestamp.",
            "items": {
              "$ref": "#/components/schemas/dbo.v1.Event"
            },
            "type": "array"
          }
        },
        "required": [
          "cacheHitRate",
          "cacheHits",
          "cacheableQueries",
          "dqlQueries",
          "timestamp",
          "totalQueries"
        ],
        "type": "object"
      },
      "dbo.v1.CacheGroup": {
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "nullable": true,
            "type": "string"
          },
          "instanceId": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "clusterId": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "endpoints": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.Endpoint"
            },
            "type": "array"
          },
          "configurations": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.CacheConfiguration"
            },
            "type": "array"
          },
          "protocolType": {
            "$ref": "#/components/schemas/dbo.v1.CacheGroup.ProtocolType"
          },
          "metrics": {
            "$ref": "#/components/schemas/dbo.v1.CacheMetrics"
          },
          "cacheStatus": {
            "$ref": "#/components/schemas/dbo.v1.CacheStatus"
          },
          "statusConditions": {
            "$ref": "#/components/schemas/dbo.v1.CacheGroup.StatusConditions"
          },
          "version": {
            "format": "int32",
            "readOnly": true,
            "type": "integer"
          },
          "directMode": {
            "nullable": true,
            "type": "boolean"
          },
          "directModeLastChanged": {
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "helmChartVersion": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "protocolType"
        ],
        "type": "object"
      },
      "dbo.v1.CacheGroup.ProtocolType": {
        "default": "Unspecified",
        "description": "ProtocolType specifies the protocol type used by the database.",
        "enum": [
          "Unspecified",
          "PostgreSQL",
          "MySQL"
        ],
        "type": "string"
      },
      "dbo.v1.CacheGroup.StatusConditions": {
        "properties": {
          "redeploymentNeeded": {
            "description": "Indicates that redeployment is needed for this DBO.",
            "readOnly": true,
            "type": "boolean"
          },
          "usingLatestConfiguration": {
            "description": "Indicates that latest configuration has been retrieved by DBO.",
            "readOnly": true,
            "type": "boolean"
          },
          "chartUpToDate": {
            "description": "Indicates that DBO uses recommended helm chart version.",
            "readOnly": true,
            "type": "boolean"
          },
          "pullTimeout": {
            "description": "Indicates that DBO hasn't fetched configuration within expected time limit.",
            "readOnly": true,
            "type": "boolean"
          },
          "connectionIssue": {
            "description": "Indicates that DBO is reporting connection issues to upstream services.",
            "readOnly": true,
            "type": "boolean"
          },
          "descriptions": {
            "description": "Human-readable descriptions of any issues detected.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "poolingEnabled": {
            "description": "Indicates if connection pooling is enabled in the DBO deployment.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "dbo.v1.CacheInsightsItem": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "maxMissExecutionTime": {
            "format": "double",
            "type": "number"
          },
          "minMissExecutionTime": {
            "format": "double",
            "type": "number"
          },
          "p50MissExecutionTime": {
            "format": "double",
            "type": "number"
          },
          "p95MissExecutionTime": {
            "format": "double",
            "type": "number"
          },
          "p99MissExecutionTime": {
            "format": "double",
            "type": "number"
          },
          "maxTtl": {
            "format": "double",
            "type": "number"
          },
          "minTtl": {
            "format": "double",
            "type": "number"
          },
          "uniqueQueries": {
            "format": "uint64",
            "type": "string"
          },
          "uniqueResults": {
            "format": "uint64",
            "type": "string"
          }
        },
        "required": [
          "maxMissExecutionTime",
          "maxTtl",
          "minMissExecutionTime",
          "minTtl",
          "p50MissExecutionTime",
          "p95MissExecutionTime",
          "p99MissExecutionTime",
          "timestamp",
          "uniqueQueries",
          "uniqueResults"
        ],
        "type": "object"
      },
      "dbo.v1.CacheInsightsSummary": {
        "properties": {
          "p50MissExecutionTime": {
            "format": "double",
            "type": "number"
          },
          "p95MissExecutionTime": {
            "format": "double",
            "type": "number"
          },
          "p99MissExecutionTime": {
            "format": "double",
            "type": "number"
          },
          "maxTtl": {
            "format": "double",
            "type": "number"
          },
          "minTtl": {
            "format": "double",
            "type": "number"
          },
          "uniqueQueries": {
            "format": "uint64",
            "type": "string"
          },
          "uniqueResults": {
            "format": "uint64",
            "type": "string"
          }
        },
        "required": [
          "maxTtl",
          "minTtl",
          "p50MissExecutionTime",
          "p95MissExecutionTime",
          "p99MissExecutionTime",
          "uniqueQueries",
          "uniqueResults"
        ],
        "type": "object"
      },
      "dbo.v1.CacheMetrics": {
        "properties": {
          "totalQueries": {
            "description": "Amount of queries observed by cache.",
            "format": "uint64",
            "type": "string"
          },
          "cacheableQueries": {
            "description": "Deprecated: Amount of queries that potentially could be cached.",
            "format": "uint64",
            "type": "string",
            "deprecated": true
          },
          "cacheHits": {
            "description": "Amount of cached queries by cache.",
            "format": "uint64",
            "type": "string"
          },
          "cacheHitRate": {
            "description": "Cache efficiency.",
            "format": "double",
            "type": "number"
          },
          "timeSaved": {
            "description": "Time saved by caching queries.",
            "nullable": true,
            "type": "string"
          },
          "totalCaches": {
            "description": "Amount of cache configurations.",
            "format": "int64",
            "type": "integer"
          },
          "enabledCaches": {
            "description": "Amount of cache configurations with enabled caching.",
            "format": "int64",
            "type": "integer"
          },
          "dqlQueries": {
            "description": "Amount of dql queries.",
            "format": "uint64",
            "type": "string"
          },
          "cacheMisses": {
            "description": "Number of cache misses.",
            "format": "uint64",
            "type": "string"
          },
          "totalTime": {
            "description": "Total execution time in milliseconds.",
            "format": "uint64",
            "type": "string"
          },
          "timeSavedPercent": {
            "description": "Amount of DB time saved %.",
            "format": "double",
            "type": "number"
          },
          "projectedCacheHits": {
            "format": "uint64",
            "title": "Projected number of cache hits",
            "type": "string"
          },
          "projectedHitRate": {
            "format": "double",
            "title": "Projected cache efficiency",
            "type": "number"
          },
          "projectedTimeSavedPercent": {
            "format": "double",
            "title": "Projected amount of DB time saved %",
            "type": "number"
          },
          "optimalCacheHits": {
            "format": "uint64",
            "title": "Optimal number of cache hits",
            "type": "string"
          },
          "optimalHitRate": {
            "format": "double",
            "title": "Optimal cache efficiency",
            "type": "number"
          },
          "optimalTimeSavedPercent": {
            "format": "float",
            "title": "Optimal amount of DB time saved %",
            "type": "number"
          },
          "averageHitExecutionTime": {
            "description": "Average hit execution time in milliseconds.",
            "format": "double",
            "type": "number"
          },
          "averageMissExecutionTime": {
            "description": "Average miss execution time in milliseconds.",
            "format": "double",
            "type": "number"
          },
          "averageExecutionTime": {
            "description": "Average execution time in milliseconds.",
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "averageExecutionTime",
          "averageHitExecutionTime",
          "averageMissExecutionTime",
          "cacheHitRate",
          "cacheHits",
          "cacheMisses",
          "cacheableQueries",
          "dqlQueries",
          "enabledCaches",
          "optimalCacheHits",
          "optimalHitRate",
          "optimalTimeSavedPercent",
          "projectedCacheHits",
          "projectedHitRate",
          "projectedTimeSavedPercent",
          "timeSavedPercent",
          "totalCaches",
          "totalQueries",
          "totalTime"
        ],
        "type": "object"
      },
      "dbo.v1.CachePerformanceTimeseries": {
        "description": "CachePerformance represents cache performance for a given database instance.",
        "properties": {
          "metric": {
            "$ref": "#/components/schemas/dbo.v1.CachePerformanceTimeseries.Timeseries"
          }
        },
        "type": "object"
      },
      "dbo.v1.CachePerformanceTimeseries.CachePerformance": {
        "description": "CachePerformance represents cache performance for a given cache configuration.",
        "properties": {
          "id": {
            "description": "ID of the cache configuration.",
            "type": "string"
          },
          "cacheHits": {
            "description": "Amount of cached queries by cache.",
            "format": "uint64",
            "type": "string"
          },
          "projectedCacheHits": {
            "format": "uint64",
            "title": "Projected number of cache hits",
            "type": "string"
          }
        },
        "required": [
          "cacheHits",
          "id",
          "projectedCacheHits"
        ],
        "type": "object"
      },
      "dbo.v1.CachePerformanceTimeseries.Timeseries": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "databases": {
            "description": "Cache performance for a cache configuration.",
            "items": {
              "$ref": "#/components/schemas/dbo.v1.CachePerformanceTimeseries.CachePerformance"
            },
            "type": "array"
          },
          "events": {
            "description": "Events that occurred in this time bucket since previous timestamp.",
            "items": {
              "$ref": "#/components/schemas/dbo.v1.Event"
            },
            "type": "array"
          }
        },
        "required": [
          "timestamp"
        ],
        "type": "object"
      },
      "dbo.v1.CacheQuery": {
        "properties": {
          "templateHash": {
            "description": "Hash of the raw template.",
            "type": "string"
          },
          "template": {
            "description": "Raw template.",
            "type": "string"
          },
          "totalQueries": {
            "description": "How many times a given query was called in summary period.",
            "format": "uint64",
            "type": "string"
          },
          "cacheHits": {
            "description": "How many times a given query was cached in summary period.",
            "format": "uint64",
            "nullable": true,
            "type": "string"
          },
          "uniqueQueries": {
            "description": "Amount of unique queries.",
            "format": "uint64",
            "type": "string"
          },
          "cacheEnabled": {
            "description": "Indicates if cache is enabled.",
            "nullable": true,
            "type": "boolean"
          },
          "cacheMode": {
            "$ref": "#/components/schemas/dbo.v1.TTLMode"
          },
          "ruleType": {
            "$ref": "#/components/schemas/dbo.v1.RuleType"
          },
          "ttl": {
            "description": "TTL value in seconds.",
            "format": "int64",
            "nullable": true,
            "type": "integer"
          },
          "efficiency": {
            "description": "Cache efficiency.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "ruleId": {
            "description": "Rule ID.",
            "nullable": true,
            "type": "string"
          },
          "medianExecutionTime": {
            "description": "Median execution time in milliseconds.",
            "format": "double",
            "nullable": true,
            "readOnly": true,
            "type": "number"
          },
          "averageHitExecutionTime": {
            "description": "Average hit execution time in milliseconds.",
            "format": "double",
            "nullable": true,
            "readOnly": true,
            "type": "number"
          },
          "averageMissExecutionTime": {
            "description": "Average miss execution time in milliseconds.",
            "format": "double",
            "nullable": true,
            "readOnly": true,
            "type": "number"
          },
          "averageExecutionTime": {
            "description": "Average execution time in milliseconds.",
            "format": "double",
            "nullable": true,
            "readOnly": true,
            "type": "number"
          },
          "totalExecutionTime": {
            "description": "Total execution time in milliseconds.",
            "format": "uint64",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "totalDbTime": {
            "description": "Total DB time.",
            "format": "uint64",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "dbTimeSavedPercent": {
            "description": "DB time saved %.",
            "format": "double",
            "nullable": true,
            "readOnly": true,
            "type": "number"
          },
          "cacheMisses": {
            "description": "Cache misses.",
            "format": "uint64",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "projectedHitRate": {
            "description": "Projected cache efficiency.",
            "format": "double",
            "nullable": true,
            "readOnly": true,
            "type": "number"
          },
          "projectedDbTimeSavedPercent": {
            "description": "Projected DB time saved %.",
            "format": "double",
            "nullable": true,
            "readOnly": true,
            "type": "number"
          },
          "uniqueResults": {
            "description": "Amount of unique results.",
            "format": "uint64",
            "readOnly": true,
            "type": "string"
          },
          "projectedCacheHits": {
            "description": "Projected number of cache hits.",
            "format": "uint64",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "dbo.v1.CacheStatus": {
        "default": "Undeployed",
        "description": "CacheStatus specifies status of the cache deployment.",
        "enum": [
          "Undeployed",
          "Error",
          "Ready",
          "Pending",
          "Active"
        ],
        "type": "string"
      },
      "dbo.v1.Caching": {
        "properties": {
          "enabled": {
            "example": false,
            "type": "boolean"
          },
          "defaultTtl": {
            "$ref": "#/components/schemas/dbo.v1.TTLMode"
          }
        },
        "type": "object"
      },
      "dbo.v1.CreateCacheConfigurationResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/dbo.v1.CacheConfiguration"
          }
        },
        "type": "object"
      },
      "dbo.v1.CreateCacheDiagnosticUploadURLResponse": {
        "properties": {
          "uploadUrl": {
            "type": "string"
          }
        },
        "required": [
          "uploadUrl"
        ],
        "type": "object"
      },
      "dbo.v1.CreateCacheTTLResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/dbo.v1.TTLConfiguration"
          }
        },
        "type": "object"
      },
      "dbo.v1.CreateRegistrationResponse": {
        "properties": {
          "registration": {
            "$ref": "#/components/schemas/dbo.v1.Registration"
          }
        },
        "type": "object"
      },
      "dbo.v1.CreateRegistrationStatusUpdateResponse": {
        "type": "object"
      },
      "dbo.v1.DatabaseCluster": {
        "properties": {
          "id": {
            "description": "ID of the database cluster.",
            "type": "string"
          },
          "name": {
            "description": "Name of the database cluster.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/dbo.v1.DatabaseCluster.Type"
          },
          "instances": {
            "description": "Instances within the database cluster.",
            "items": {
              "$ref": "#/components/schemas/dbo.v1.DatabaseInstance"
            },
            "type": "array"
          },
          "currentCost": {
            "description": "Current cost of the whole cluster.",
            "type": "string"
          },
          "estimatedCost": {
            "description": "Estimated cost of the whole cluster.",
            "type": "string"
          },
          "potentialSavings": {
            "description": "Potential savings for the whole cluster.",
            "type": "string"
          },
          "potentialSavingsFraction": {
            "description": "Potential savings in fraction (given 100$ old cost and 60$ new cost -> 0.4 savings).",
            "type": "string"
          },
          "metricsOverview": {
            "$ref": "#/components/schemas/dbo.v1.DatabaseMetrics"
          },
          "databases": {
            "description": "Cluster databases.",
            "items": {
              "$ref": "#/components/schemas/dbo.v1.DatabaseInstance.LogicalDatabase"
            },
            "type": "array"
          },
          "endpoints": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.Endpoint"
            },
            "title": "Cluster endpoints",
            "type": "array"
          },
          "cacheGroupId": {
            "description": "ID of the cache group connected to the database cluster.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "currentCost",
          "estimatedCost",
          "id",
          "name",
          "potentialSavings",
          "potentialSavingsFraction",
          "type"
        ],
        "type": "object"
      },
      "dbo.v1.DatabaseCluster.Type": {
        "default": "Unknown",
        "description": "The type of the database cluster.",
        "enum": [
          "Unknown",
          "Aurora"
        ],
        "type": "string"
      },
      "dbo.v1.DatabaseComponent": {
        "properties": {
          "cluster": {
            "$ref": "#/components/schemas/dbo.v1.DatabaseCluster"
          },
          "instance": {
            "$ref": "#/components/schemas/dbo.v1.DatabaseInstance"
          }
        },
        "type": "object"
      },
      "dbo.v1.DatabaseInstance": {
        "properties": {
          "id": {
            "description": "ID of the database instance.",
            "type": "string"
          },
          "name": {
            "description": "Name of the database instance.",
            "type": "string"
          },
          "configuration": {
            "$ref": "#/components/schemas/dbo.v1.DatabaseInstanceConfiguration"
          },
          "rds": {
            "$ref": "#/components/schemas/dbo.v1.RDS"
          },
          "metricsOverview": {
            "$ref": "#/components/schemas/dbo.v1.DatabaseMetrics"
          },
          "metrics": {
            "$ref": "#/components/schemas/dbo.v1.CacheMetrics"
          },
          "databases": {
            "description": "Logical databases within the database instance.",
            "items": {
              "$ref": "#/components/schemas/dbo.v1.DatabaseInstance.LogicalDatabase"
            },
            "type": "array"
          },
          "cacheStatus": {
            "$ref": "#/components/schemas/dbo.v1.CacheStatus"
          },
          "cacheStatusConditions": {
            "description": "Deprecated: use cacheGroup.statusConditions. Status of the cache deployment.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array",
            "deprecated": true
          },
          "cacheGroupId": {
            "description": "ID of the cache group connected to the database instance.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "configuration",
          "id",
          "name"
        ],
        "type": "object"
      },
      "dbo.v1.DatabaseInstance.LogicalDatabase": {
        "properties": {
          "id": {
            "description": "ID of the logical database.",
            "type": "string"
          },
          "name": {
            "description": "Name of the logical database.",
            "type": "string"
          },
          "cacheEnabled": {
            "type": "boolean"
          },
          "connectionString": {
            "description": "Deprecated: use connection_strings. Connection string to the database cache.",
            "nullable": true,
            "readOnly": true,
            "type": "string",
            "deprecated": true
          },
          "cacheId": {
            "description": "ID of the cache configuration connected to the logical database.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "cacheDefaultTtl": {
            "$ref": "#/components/schemas/dbo.v1.TTLMode"
          },
          "metrics": {
            "$ref": "#/components/schemas/dbo.v1.DatabaseInstance.LogicalDatabase.Metrics"
          },
          "connectionStrings": {
            "description": "Connection string to the database cache.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "required": [
          "cacheEnabled",
          "id",
          "name"
        ],
        "type": "object"
      },
      "dbo.v1.DatabaseInstance.LogicalDatabase.Metrics": {
        "properties": {
          "totalQueriesCount": {
            "description": "Total amount of executed queries.",
            "format": "uint64",
            "type": "string"
          },
          "databaseLoad": {
            "description": "Database load.",
            "format": "double",
            "type": "number"
          },
          "readsCount": {
            "description": "Amount of read operations.",
            "format": "uint64",
            "type": "string"
          },
          "writesCount": {
            "description": "Amount of write operations.",
            "format": "uint64",
            "type": "string"
          },
          "realCacheHits": {
            "description": "When cache is enabled we will have real cache efficiency.",
            "format": "uint64",
            "nullable": true,
            "type": "string"
          },
          "predictedCacheHits": {
            "description": "When the cache is not enabled we will provide predicted efficiency.",
            "format": "uint64",
            "nullable": true,
            "type": "string"
          },
          "cacheableQueries": {
            "description": "Deprecated: Amount of queries that potentially could be cached.",
            "format": "uint64",
            "nullable": true,
            "type": "string",
            "deprecated": true
          }
        },
        "required": [
          "databaseLoad",
          "readsCount",
          "totalQueriesCount",
          "writesCount"
        ],
        "type": "object"
      },
      "dbo.v1.DatabaseInstanceConfiguration": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/dbo.v1.DatabaseType"
          },
          "hostname": {
            "description": "Hostname of the database instance.",
            "type": "string"
          },
          "port": {
            "description": "Port of the  instance.",
            "format": "int32",
            "type": "integer"
          },
          "cloud": {
            "$ref": "#/components/schemas/castai.v1.Cloud"
          }
        },
        "required": [
          "hostname",
          "port",
          "type"
        ],
        "type": "object"
      },
      "dbo.v1.DatabaseMetrics": {
        "properties": {
          "databaseLoad": {
            "description": "Current/Average database CPU load.",
            "format": "double",
            "type": "number"
          },
          "totalQueries": {
            "description": "Total amount of executed queries.",
            "format": "uint64",
            "type": "string"
          },
          "realCacheEfficiency": {
            "description": "When cache is enabled we will have real cache efficiency.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "predictedCacheEfficiency": {
            "description": "When the cache is not enabled we will provide predicted efficiency.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "totalReadQueries": {
            "format": "uint64",
            "title": "Total amount of read queries",
            "type": "string"
          }
        },
        "required": [
          "databaseLoad",
          "totalQueries",
          "totalReadQueries"
        ],
        "type": "object"
      },
      "dbo.v1.DatabaseType": {
        "default": "PostgreSQL",
        "description": "DatabaseType specifies database type for cache configuration.",
        "enum": [
          "PostgreSQL",
          "MySQL",
          "MariaDB",
          "MongoDB",
          "AuroraPostgreSQL"
        ],
        "type": "string"
      },
      "dbo.v1.DeleteAccountParams": {
        "properties": {
          "accountId": {
            "type": "string"
          }
        },
        "required": [
          "accountId"
        ],
        "type": "object"
      },
      "dbo.v1.DeleteCacheConfigurationResponse": {
        "type": "object"
      },
      "dbo.v1.DeleteCacheGroupResponse": {
        "type": "object"
      },
      "dbo.v1.DeleteCacheTTLResponse": {
        "type": "object"
      },
      "dbo.v1.DeployCacheParams": {
        "properties": {
          "cacheGroupId": {
            "type": "string"
          },
          "helmChartValues": {
            "readOnly": true,
            "type": "string"
          },
          "manualExecuteCommand": {
            "readOnly": true,
            "type": "string"
          },
          "poolingEnabled": {
            "nullable": true,
            "type": "boolean"
          },
          "protocolType": {
            "$ref": "#/components/schemas/dbo.v1.CacheGroup.ProtocolType"
          }
        },
        "required": [
          "cacheGroupId"
        ],
        "type": "object"
      },
      "dbo.v1.DeployDBAgentParams": {
        "properties": {
          "cacheGroupId": {
            "type": "string"
          },
          "helmChartValues": {
            "readOnly": true,
            "type": "string"
          },
          "manualExecuteCommand": {
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "cacheGroupId"
        ],
        "type": "object"
      },
      "dbo.v1.Endpoint": {
        "properties": {
          "hostname": {
            "description": "Hostname of the database instance.",
            "type": "string"
          },
          "port": {
            "description": "Port of the database instance.",
            "example": 5432,
            "format": "int32",
            "type": "integer"
          },
          "suffix": {
            "description": "Suffix for db-optimizer endpoint service name. Leave empty to not deploy separate k8s service for this endpoint.",
            "nullable": true,
            "type": "string"
          },
          "connectionString": {
            "description": "Connection string for corresponding endpoint on DBO deployment.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "hostname",
          "port"
        ],
        "type": "object"
      },
      "dbo.v1.Event": {
        "description": "Event describes single event that happened within time bucket.",
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "eventType": {
            "$ref": "#/components/schemas/dbo.v1.EventType"
          }
        },
        "required": [
          "eventType",
          "timestamp"
        ],
        "type": "object"
      },
      "dbo.v1.EventType": {
        "default": "EVENT_TYPE_UNSPECIFIED",
        "description": "EventType defines different types of events for the metric.events list.",
        "enum": [
          "EVENT_TYPE_UNSPECIFIED",
          "DIRECT_MODE_ENABLED",
          "DIRECT_MODE_DISABLED"
        ],
        "type": "string"
      },
      "dbo.v1.ExchangeCacheStateResponse": {
        "properties": {
          "ttlConfigurations": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.TTLByCacheId"
            },
            "readOnly": true,
            "type": "array"
          },
          "directMode": {
            "readOnly": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "dbo.v1.GetCacheConfigurationResponse": {
        "properties": {
          "cacheConfiguration": {
            "$ref": "#/components/schemas/dbo.v1.CacheConfiguration"
          }
        },
        "required": [
          "cacheConfiguration"
        ],
        "type": "object"
      },
      "dbo.v1.GetCacheEfficiencyResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.CacheEfficiency"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dbo.v1.GetCacheGroupMetricsFilterOptionsResponse": {
        "properties": {
          "users": {
            "description": "List of distinct users from metrics data.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dbo.v1.GetCacheGroupOperationalMetricsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.OperationalMetricsTimeseries"
            },
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/dbo.v1.OperationalMetricsSummary"
          }
        },
        "required": [
          "items",
          "summary"
        ],
        "type": "object"
      },
      "dbo.v1.GetCacheGroupPerformanceResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.CachePerformanceTimeseries"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dbo.v1.GetCacheGroupPerformanceSummaryResponse": {
        "properties": {
          "metrics": {
            "$ref": "#/components/schemas/dbo.v1.CacheMetrics"
          }
        },
        "type": "object"
      },
      "dbo.v1.GetCacheGroupPoolingEligibilityResponse": {
        "properties": {
          "poolingCompatible": {
            "type": "boolean"
          },
          "insights": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.PoolingEligibilityInsight"
            },
            "type": "array"
          }
        },
        "required": [
          "insights",
          "poolingCompatible"
        ],
        "type": "object"
      },
      "dbo.v1.GetCacheQueriesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.CacheQuery"
            },
            "type": "array"
          },
          "nextPage": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Page"
          },
          "totalCount": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "dbo.v1.GetCacheQueryInsightsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.CacheInsightsItem"
            },
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/dbo.v1.CacheInsightsSummary"
          }
        },
        "type": "object"
      },
      "dbo.v1.GetCacheQueryTemplateResponse": {
        "properties": {
          "template": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dbo.v1.GetCacheSummaryResponse": {
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/dbo.v1.CacheMetrics"
          }
        },
        "type": "object"
      },
      "dbo.v1.GetDatabaseClusterResponse": {
        "properties": {
          "cluster": {
            "$ref": "#/components/schemas/dbo.v1.DatabaseCluster"
          }
        },
        "required": [
          "cluster"
        ],
        "type": "object"
      },
      "dbo.v1.GetDatabaseInstanceInfrastructureMetricsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.InstanceMetrics"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dbo.v1.GetDatabaseInstanceResponse": {
        "properties": {
          "instance": {
            "$ref": "#/components/schemas/dbo.v1.DatabaseInstance"
          }
        },
        "required": [
          "instance"
        ],
        "type": "object"
      },
      "dbo.v1.GetRegistrationStatusResponse": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/dbo.v1.RegistrationStatusUpdate"
          }
        },
        "type": "object"
      },
      "dbo.v1.InstanceMetrics": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "cpuUtilization": {
            "description": "Average CPU usage in percentage.",
            "format": "double",
            "type": "number"
          },
          "activeSessions": {
            "description": "Average number of active clients connected to database instance.",
            "format": "double",
            "type": "number"
          },
          "activeMemory": {
            "description": "Average active memory in percentage.",
            "format": "double",
            "type": "number"
          },
          "freeMemory": {
            "description": "Average free memory in percentage.",
            "format": "double",
            "type": "number"
          },
          "iopsWrites": {
            "description": "Average disk input operations performance per second.",
            "format": "double",
            "type": "number"
          },
          "iopsReads": {
            "description": "Average disk output operations performance per second.",
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "activeMemory",
          "activeSessions",
          "cpuUtilization",
          "freeMemory",
          "iopsReads",
          "iopsWrites",
          "timestamp"
        ],
        "type": "object"
      },
      "dbo.v1.ListAccountsResponse": {
        "properties": {
          "accounts": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.Account"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dbo.v1.ListCacheConfigurationsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.CacheConfiguration"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dbo.v1.ListCacheGroupsResponse": {
        "properties": {
          "metrics": {
            "$ref": "#/components/schemas/dbo.v1.CacheMetrics"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.CacheGroup"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dbo.v1.ListCacheTTLsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.TTLConfiguration"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dbo.v1.ListDatabaseComponentsResponse": {
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/dbo.v1.OrganizationSummary"
          },
          "components": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.DatabaseComponent"
            },
            "type": "array"
          }
        },
        "required": [
          "components",
          "summary"
        ],
        "type": "object"
      },
      "dbo.v1.OperationalMetricsSummary": {
        "properties": {
          "databases": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.OperationalMetricsSummary.CacheConfigurationMetrics"
            },
            "type": "array"
          }
        },
        "required": [
          "databases"
        ],
        "type": "object"
      },
      "dbo.v1.OperationalMetricsSummary.CacheConfigurationMetrics": {
        "properties": {
          "id": {
            "description": "ID of the cache configuration.",
            "type": "string"
          },
          "databaseName": {
            "description": "Database name.",
            "type": "string"
          },
          "databaseTotalConnections": {
            "description": "Total number of connections from DBO to database.",
            "format": "double",
            "type": "number"
          },
          "databaseIdleConnections": {
            "description": "Number of idle connections from DBO to database.",
            "format": "double",
            "type": "number"
          },
          "dboTotalConnections": {
            "description": "Total number of connections to DBO.",
            "format": "double",
            "type": "number"
          },
          "dboIdleConnections": {
            "description": "Number of idle connections to DBO.",
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "databaseIdleConnections",
          "databaseName",
          "databaseTotalConnections",
          "dboIdleConnections",
          "dboTotalConnections",
          "id"
        ],
        "type": "object"
      },
      "dbo.v1.OperationalMetricsTimeseries": {
        "description": "OperationalMetricsTimeseries represents operational metrics timeseries for a cache group.",
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "databaseTotalConnections": {
            "description": "Total number of connections from DBO to database.",
            "format": "double",
            "type": "number"
          },
          "databaseIdleConnections": {
            "description": "Number of idle connections from DBO to database.",
            "format": "double",
            "type": "number"
          },
          "dboTotalConnections": {
            "description": "Total number of connections to DBO.",
            "format": "double",
            "type": "number"
          },
          "dboIdleConnections": {
            "description": "Number of idle connections to DBO.",
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "databaseIdleConnections",
          "databaseTotalConnections",
          "dboIdleConnections",
          "dboTotalConnections",
          "timestamp"
        ],
        "type": "object"
      },
      "dbo.v1.OrganizationSummary": {
        "properties": {
          "currentCost": {
            "description": "Current cost of registered database instances.",
            "type": "string"
          },
          "estimatedCost": {
            "description": "Estimated cost of registered database instances after optimizations.",
            "type": "string"
          },
          "potentialSavings": {
            "description": "Potential savings after applying optimizations as a fraction.",
            "type": "string"
          },
          "totalDatabaseCount": {
            "description": "Amount of logical databases.",
            "format": "int64",
            "type": "integer"
          },
          "enabledCachedCount": {
            "description": "Deprecated: use cache metrics. Amount of cache configurations with enabled caching.",
            "format": "int64",
            "type": "integer",
            "deprecated": true
          },
          "totalQueries": {
            "description": "Amount of queries observed by cache.",
            "format": "uint64",
            "type": "string"
          },
          "cacheableQueries": {
            "description": "Deprecated: Amount of queries that potentially could be cached.",
            "format": "uint64",
            "type": "string",
            "deprecated": true
          },
          "dqlQueries": {
            "description": "Amount of dql queries.",
            "format": "uint64",
            "type": "string"
          },
          "cacheHits": {
            "description": "Deprecated: use cache metrics. Amount of cached queries by cache.",
            "format": "uint64",
            "nullable": true,
            "type": "string",
            "deprecated": true
          },
          "timeSaved": {
            "description": "Deprecated: use cache metrics. Time saved by caching queries.",
            "nullable": true,
            "type": "string",
            "deprecated": true
          }
        },
        "required": [
          "cacheableQueries",
          "currentCost",
          "dqlQueries",
          "enabledCachedCount",
          "estimatedCost",
          "potentialSavings",
          "totalDatabaseCount",
          "totalQueries"
        ],
        "type": "object"
      },
      "dbo.v1.PhaseOneParams": {
        "properties": {
          "csp": {
            "$ref": "#/components/schemas/castai.v1.Cloud"
          }
        },
        "required": [
          "csp"
        ],
        "type": "object"
      },
      "dbo.v1.PoolingEligibilityInsight": {
        "properties": {
          "lastSeen": {
            "format": "date-time",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/dbo.v1.TrafficInsightsType"
          },
          "summary": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "documentationLink": {
            "type": "string"
          }
        },
        "required": [
          "description",
          "documentationLink",
          "lastSeen",
          "summary",
          "type"
        ],
        "type": "object"
      },
      "dbo.v1.ProxyState": {
        "properties": {
          "deployment": {
            "$ref": "#/components/schemas/dbo.v1.ProxyState.CacheDeployment"
          },
          "configStates": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.ProxyState.CacheConfigState"
            },
            "type": "array"
          },
          "trafficInsights": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.ProxyState.TrafficInsights"
            },
            "type": "array"
          }
        },
        "required": [
          "configStates",
          "deployment",
          "trafficInsights"
        ],
        "type": "object"
      },
      "dbo.v1.ProxyState.CacheConfigState": {
        "properties": {
          "cacheId": {
            "type": "string"
          },
          "configVersion": {
            "format": "int32",
            "type": "integer"
          },
          "dbStatus": {
            "$ref": "#/components/schemas/dbo.v1.ProxyState.DatabaseConnectionStatus"
          }
        },
        "required": [
          "cacheId",
          "configVersion",
          "dbStatus"
        ],
        "type": "object"
      },
      "dbo.v1.ProxyState.CacheDeployment": {
        "properties": {
          "namespace": {
            "type": "string"
          },
          "serviceName": {
            "type": "string"
          },
          "chartVersion": {
            "type": "string"
          },
          "proxyImage": {
            "type": "string"
          },
          "queryProcessorImage": {
            "type": "string"
          },
          "endpoints": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.Endpoint"
            },
            "type": "array"
          },
          "poolingEnabled": {
            "type": "boolean"
          }
        },
        "required": [
          "chartVersion",
          "namespace",
          "proxyImage",
          "queryProcessorImage",
          "serviceName"
        ],
        "type": "object"
      },
      "dbo.v1.ProxyState.DatabaseConnectionStatus": {
        "default": "Success",
        "description": "This one is equivalent to DB status that is reported from proxy.",
        "enum": [
          "Success",
          "DNSFailure",
          "ConnectionFailure",
          "Unknown"
        ],
        "type": "string"
      },
      "dbo.v1.ProxyState.TrafficInsights": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/dbo.v1.TrafficInsightsType"
          }
        },
        "required": [
          "timestamp",
          "type"
        ],
        "type": "object"
      },
      "dbo.v1.RDS": {
        "properties": {
          "account": {
            "description": "Account name owning the database instance.",
            "type": "string"
          },
          "region": {
            "description": "Region in which RDS is deployed.",
            "type": "string"
          },
          "currentInstanceDetails": {
            "$ref": "#/components/schemas/dbo.v1.RDS.InstanceDetails"
          },
          "proposedInstanceDetails": {
            "$ref": "#/components/schemas/dbo.v1.RDS.InstanceDetails"
          },
          "potentialSavings": {
            "description": "Potential savings by using proposed instance.",
            "nullable": true,
            "type": "string"
          },
          "potentialSavingsFraction": {
            "description": "Potential savings in fraction (given 100$ old cost and 60$ new cost -> 0.4 savings).",
            "nullable": true,
            "type": "string"
          },
          "performanceInsightsEnabled": {
            "description": "Indicates if database instance has performance insights enabled.",
            "type": "boolean"
          },
          "clusterName": {
            "description": "The name of the cluster the database instance belongs to.",
            "nullable": true,
            "type": "string"
          },
          "writer": {
            "description": "The database instance is an aurora writer or is not a read replica for other type of clusters.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "required": [
          "account",
          "currentInstanceDetails",
          "performanceInsightsEnabled",
          "region"
        ],
        "type": "object"
      },
      "dbo.v1.RDS.InstanceDetails": {
        "properties": {
          "instanceType": {
            "description": "Instance type.",
            "type": "string"
          },
          "instancePrice": {
            "description": "Monthly instance price.",
            "type": "string"
          },
          "cpu": {
            "description": "Number of CPUs.",
            "format": "int64",
            "type": "integer"
          },
          "memoryMib": {
            "description": "Amount of memory in MiB.",
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "cpu",
          "instancePrice",
          "instanceType",
          "memoryMib"
        ],
        "type": "object"
      },
      "dbo.v1.Registration": {
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/dbo.v1.RegistrationType"
          },
          "executeCommand": {
            "readOnly": true,
            "type": "string"
          },
          "phaseOne": {
            "$ref": "#/components/schemas/dbo.v1.PhaseOneParams"
          },
          "deployCache": {
            "$ref": "#/components/schemas/dbo.v1.DeployCacheParams"
          },
          "deleteAccount": {
            "$ref": "#/components/schemas/dbo.v1.DeleteAccountParams"
          },
          "uninstallCache": {
            "$ref": "#/components/schemas/dbo.v1.UninstallCacheParams"
          },
          "deployDbAgent": {
            "$ref": "#/components/schemas/dbo.v1.DeployDBAgentParams"
          },
          "uninstallDbAgent": {
            "$ref": "#/components/schemas/dbo.v1.UninstallDBAgentParams"
          }
        },
        "type": "object"
      },
      "dbo.v1.RegistrationStatus": {
        "default": "Unknown",
        "description": "- InProgress: Arbitrary number of InProgress states can be emitted\n - Success: Terminal state indicating success (uniqueness not enforced)\n - Failure: Terminal state indicating failure (uniqueness not enforced)",
        "enum": [
          "Unknown",
          "InProgress",
          "Success",
          "Failure"
        ],
        "title": "Status of the registration",
        "type": "string"
      },
      "dbo.v1.RegistrationStatusUpdate": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/dbo.v1.RegistrationStatus"
          },
          "message": {
            "type": "string"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "dbo.v1.RegistrationType": {
        "default": "PhaseOneOnboarding",
        "enum": [
          "PhaseOneOnboarding",
          "DeployCache",
          "DeleteAccount",
          "UninstallCache",
          "DeployDBAgent",
          "UninstallDBAgent"
        ],
        "title": "Type of the registration",
        "type": "string"
      },
      "dbo.v1.RuleType": {
        "default": "Table",
        "description": "RuleType defines custom rule type.",
        "enum": [
          "Table",
          "Query"
        ],
        "type": "string"
      },
      "dbo.v1.TTLByCacheId": {
        "properties": {
          "cacheId": {
            "readOnly": true,
            "type": "string"
          },
          "databaseName": {
            "readOnly": true,
            "type": "string"
          },
          "cacheDefaultTtl": {
            "$ref": "#/components/schemas/dbo.v1.TTLMode"
          },
          "entries": {
            "items": {
              "$ref": "#/components/schemas/dbo.v1.TTLConfiguration"
            },
            "readOnly": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "dbo.v1.TTLConfiguration": {
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "templateHash": {
            "format": "uint64",
            "nullable": true,
            "type": "string"
          },
          "table": {
            "nullable": true,
            "type": "string"
          },
          "template": {
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "mode": {
            "$ref": "#/components/schemas/dbo.v1.TTLMode"
          },
          "manualTtl": {
            "description": "TTL value in seconds. Only applicable if mode is set to Manual.",
            "format": "int64",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "mode"
        ],
        "type": "object"
      },
      "dbo.v1.TTLMode": {
        "default": "DontCache",
        "description": "TTLMode defines a caching behaviour for TTL setting.",
        "enum": [
          "DontCache",
          "Auto",
          "Manual"
        ],
        "type": "string"
      },
      "dbo.v1.TimeRange": {
        "properties": {
          "start": {
            "description": "Start of period.",
            "format": "date-time",
            "type": "string"
          },
          "end": {
            "description": "End of period.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "dbo.v1.TrafficInsightsType": {
        "default": "Undefined",
        "enum": [
          "Undefined",
          "ListenNotify",
          "SessionLocks",
          "SimpleProtocolPrepares",
          "PoolingIncompatibleFunctions"
        ],
        "title": "TrafficInsightsType represents different types of traffic patterns observed in database queries",
        "type": "string"
      },
      "dbo.v1.UninstallCacheParams": {
        "properties": {
          "cacheGroupId": {
            "type": "string"
          }
        },
        "required": [
          "cacheGroupId"
        ],
        "type": "object"
      },
      "dbo.v1.UninstallDBAgentParams": {
        "properties": {
          "cacheGroupId": {
            "type": "string"
          }
        },
        "required": [
          "cacheGroupId"
        ],
        "type": "object"
      },
      "dbo.v1.UpdateCacheConfigurationResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/dbo.v1.CacheConfiguration"
          }
        },
        "type": "object"
      },
      "dbo.v1.UpdateCacheTTLResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/dbo.v1.TTLConfiguration"
          }
        },
        "type": "object"
      },
      "dedicatedinstance.v1beta1.DedicatedInstance": {
        "properties": {
          "name": {
            "type": "string"
          },
          "instanceType": {
            "type": "string"
          },
          "used": {
            "$ref": "#/components/schemas/dedicatedinstance.v1beta1.DedicatedInstanceConsumption"
          },
          "total": {
            "$ref": "#/components/schemas/dedicatedinstance.v1beta1.DedicatedInstanceConsumption"
          }
        },
        "type": "object"
      },
      "dedicatedinstance.v1beta1.DedicatedInstanceConsumption": {
        "properties": {
          "cpu": {
            "format": "int32",
            "type": "integer"
          },
          "ssd": {
            "format": "int32",
            "type": "integer"
          },
          "memory": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "dedicatedinstance.v1beta1.GCPQuery": {
        "properties": {
          "name": {
            "type": "string"
          },
          "project": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "dedicatedinstance.v1beta1.ListDedicatedInstancesResponse": {
        "properties": {
          "dedicatedInstances": {
            "items": {
              "$ref": "#/components/schemas/dedicatedinstance.v1beta1.DedicatedInstance"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.AKSClusterParams": {
        "description": "AKSClusterParams defines AKS-specific arguments.",
        "properties": {
          "region": {
            "description": "Region of the cluster.",
            "type": "string"
          },
          "nodeResourceGroup": {
            "description": "Node resource group of the cluster.",
            "type": "string"
          },
          "subscriptionId": {
            "description": "Azure subscription ID where cluster runs.",
            "type": "string"
          },
          "maxPodsPerNode": {
            "description": "Deprecated. This field is no longer updatable and node configuration equivalent should be used.",
            "format": "int32",
            "type": "integer"
          },
          "networkPlugin": {
            "description": "Network plugin in use by the cluster. Can be `kubenet` or `azure`.",
            "type": "string"
          },
          "zoneNamePattern": {
            "description": "Zone name pattern in the cluster.",
            "type": "string"
          },
          "tenantId": {
            "description": "Azure tenant id.",
            "type": "string"
          },
          "podCidr": {
            "nullable": true,
            "type": "string"
          },
          "httpProxyConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.HttpProxyConfig"
          },
          "clusterResourceGroup": {
            "description": "Azure cluster resource group.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.AKSInitData": {
        "properties": {
          "cloudConfigBase64": {
            "type": "string"
          },
          "protectedSettingsBase64": {
            "type": "string"
          },
          "architecture": {
            "nullable": true,
            "type": "string"
          },
          "os": {
            "nullable": true,
            "type": "string"
          },
          "gpuEnabled": {
            "nullable": true,
            "type": "boolean"
          },
          "clusterConfigHash": {
            "nullable": true,
            "type": "string"
          },
          "nvidiaCudaDriverTag": {
            "description": "VHD GPU driver tags from /opt/azure/vhd-install.complete. Empty for non-GPU VHDs.",
            "nullable": true,
            "type": "string"
          },
          "nvidiaGridDriverTag": {
            "nullable": true,
            "type": "string"
          },
          "ancNceComparisonFileFound": {
            "description": "AKS Node Controller (ANC) / NCE comparison bootstrap command file.",
            "nullable": true,
            "type": "boolean"
          },
          "ancNceComparisonFileContent": {
            "nullable": true,
            "type": "string"
          },
          "ancConfigurationFileFound": {
            "description": "AKS Node Controller configuration file.",
            "nullable": true,
            "type": "boolean"
          },
          "ancConfigurationFileContents": {
            "nullable": true,
            "type": "string"
          },
          "nodeCloudInitOverrideFound": {
            "description": "Node cloud-init override file.",
            "nullable": true,
            "type": "boolean"
          },
          "nodeCloudInitOverrideContents": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.AWSNodeConfig": {
        "description": "AWSNodeConfig holds AWS-specific configuration for node provisioning.",
        "properties": {
          "capacityReservation": {
            "$ref": "#/components/schemas/externalcluster.v1.AWSNodeConfig.CapacityReservation"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.AWSNodeConfig.CapacityReservation": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/externalcluster.v1.AWSNodeConfig.CapacityReservationType"
          },
          "id": {
            "title": "The ID of the capacity reservation.\nExample: \"cr-0123456789abcdef0\"",
            "type": "string"
          },
          "resourceGroupArn": {
            "nullable": true,
            "title": "Resource Group ARN for UltraCluster Capacity Blocks.\nRequired for UltraCluster Capacity Blocks to ensure placement within the correct high-bandwidth topology.\nOptional for regular Capacity Blocks and ODCRs.\nExample: \"arn:aws:resource-groups:us-east-1:123456789012:group/my-ultracluster\"",
            "type": "string"
          }
        },
        "title": "CapacityReservation specifies a capacity reservation to use for provisioning.\nWhen set, the instance will be launched into the specified capacity reservation.\nReference: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservation-overview.html",
        "type": "object"
      },
      "externalcluster.v1.AWSNodeConfig.CapacityReservationType": {
        "default": "CAPACITY_RESERVATION_TYPE_UNSPECIFIED",
        "description": "CapacityReservationType indicates the type of capacity reservation.\n\n - ODCR: On-Demand Capacity Reservation (ODCR)\n - CAPACITY_BLOCK: Capacity Block for ML\n - INTERRUPTIBLE_ODCR: Interruptible On-Demand Capacity Reservation\nRepresents spare capacity lent from existing ODCRs with 2-minute interruption notice.",
        "enum": [
          "CAPACITY_RESERVATION_TYPE_UNSPECIFIED",
          "ODCR",
          "CAPACITY_BLOCK",
          "INTERRUPTIBLE_ODCR"
        ],
        "type": "string"
      },
      "externalcluster.v1.AddNodeBatchResponse": {
        "description": "AddNodeBatchResponse is the response to AddNodeBatch RPC.",
        "properties": {
          "operationId": {
            "description": "The ID of the operation.",
            "type": "string"
          },
          "nodeBatchId": {
            "description": "The ID of the created node batch . Will be used to track the progress of node batch creation.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.AddNodeResponse": {
        "description": "AddNodeResponse is the result of AddNodeRequest.",
        "properties": {
          "nodeId": {
            "description": "The ID of the node.",
            "type": "string"
          },
          "operationId": {
            "description": "Add node operation ID.",
            "type": "string"
          }
        },
        "required": [
          "nodeId",
          "operationId"
        ],
        "type": "object"
      },
      "externalcluster.v1.AnywhereClusterParams": {
        "description": "AnywhereClusterParams defines Anywhere-specific arguments.",
        "properties": {
          "clusterName": {
            "description": "Name of the cluster.",
            "type": "string"
          },
          "kubeSystemNamespaceId": {
            "description": "NamespaceID as unique identifier for the cluster.",
            "type": "string"
          }
        },
        "required": [
          "kubeSystemNamespaceId"
        ],
        "type": "object"
      },
      "externalcluster.v1.CloudEvent": {
        "description": "CloudEvent represents a remote event that happened in the cloud, e.g. \"node added\".",
        "properties": {
          "eventType": {
            "description": "Event type.",
            "type": "string"
          },
          "nodeId": {
            "description": "Cast-assigned node ID.",
            "nullable": true,
            "type": "string"
          },
          "nodeState": {
            "description": "Node state.",
            "type": "string"
          },
          "providerId": {
            "description": "ProviderID of the node as assigned by the cloud manager or other process.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.Cluster": {
        "description": "Cluster represents external kubernetes cluster.",
        "properties": {
          "id": {
            "description": "The cluster's ID.",
            "type": "string"
          },
          "name": {
            "description": "The name of the external cluster.",
            "type": "string"
          },
          "organizationId": {
            "description": "The cluster's organization ID.",
            "type": "string"
          },
          "credentialsId": {
            "description": "The cluster's credentials ID.",
            "type": "string"
          },
          "createdAt": {
            "description": "The date when cluster was registered.",
            "format": "date-time",
            "type": "string"
          },
          "region": {
            "$ref": "#/components/schemas/externalcluster.v1.Region"
          },
          "status": {
            "description": "Current lifecycle status of the cluster.\n\nPossible values:\n* `connecting` - Cluster credentials are being updated and the first reconcile after the update is still pending. Cluster enters this state after Phase 2 onboarding and before a successful\nreconcile.\n* `ready` - Cluster is healthy and ready for use. May be in this state even without credentials for node autoscaling.\n* `warning` - An issue was detected that prevents normal operation. Autoscaling does NOT work in this state; the autoscaler will not issue commands. (Phase 2 only)\n* `failed` - Cluster failed multiple times with persistent errors and could not recover. Reconciles will not run automatically; manual fix by triggering reconciliation is required. (Phase 2 only)\n* `deleting` - Cluster disconnect has been requested, but cleanup operations are still pending. Cleanup operations execute on reconcile and all dependencies must finish before cluster deletion.\n* `deleted` - Successfully disconnected the cluster, and its dependencies have been cleaned up. The cluster remains visible to users (penultimate state). The next step is to remove the cluster\nfrom the Cast console.\n* `hibernating` - Cluster hibernation was requested and is still in progress. (Phase 2 only)\n* `hibernated` - Cluster has been hibernated and is not expected to run any nodes. Resume is needed to bring the cluster back to life. (Phase 2 only)\n* `resuming` - Cluster was hibernated, resume was requested, and is still in progress. (Phase 2 only)\n\nUse `status` to understand the cluster's lifecycle state and operational readiness.\nFor agent connectivity, use `agent_status` instead.",
            "type": "string"
          },
          "agentSnapshotReceivedAt": {
            "description": "The date agent snapshot was last received.",
            "format": "date-time",
            "type": "string"
          },
          "agentStatus": {
            "description": "Current connectivity status of the CAST AI agent running in the cluster.\n\nPossible values:\n* `waiting-connection` - No snapshot has been received yet from the agent. Initial state after cluster registration.\n* `online` - Agent is actively sending snapshots to the CAST AI API. This is the normal healthy state.\n* `non-responding` - Agent snapshot has not been received within the expected timeout window. May indicate networking issues or agent pod problems.\n* `disconnected` - Agent is fully disconnected. Occurs when cluster has no credentials and no snapshots have been received for an extended period.\n* `disconnecting` - Cluster is being deleted (cluster status is `deleting`).\n\nThe agent_status is computed dynamically based on the timestamp of the last received snapshot\nand the cluster's lifecycle status. Use this field to monitor agent health and connectivity.\nFor cluster lifecycle state, use `status` instead.",
            "type": "string"
          },
          "providerType": {
            "description": "Cluster cloud provider type.",
            "type": "string"
          },
          "deletedAt": {
            "description": "The date when cluster was deleted.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Cluster tags",
            "type": "object"
          },
          "eks": {
            "$ref": "#/components/schemas/externalcluster.v1.EKSClusterParams"
          },
          "gke": {
            "$ref": "#/components/schemas/externalcluster.v1.GKEClusterParams"
          },
          "kops": {
            "$ref": "#/components/schemas/externalcluster.v1.KOPSClusterParams"
          },
          "aks": {
            "$ref": "#/components/schemas/externalcluster.v1.AKSClusterParams"
          },
          "openshift": {
            "$ref": "#/components/schemas/externalcluster.v1.OpenshiftClusterParams"
          },
          "anywhere": {
            "$ref": "#/components/schemas/externalcluster.v1.AnywhereClusterParams"
          },
          "selfHostedWithEc2Nodes": {
            "$ref": "#/components/schemas/externalcluster.v1.SelfHostedWithEC2NodesParams"
          },
          "oke": {
            "$ref": "#/components/schemas/externalcluster.v1.OKEClusterParams"
          },
          "subnets": {
            "description": "Cluster subnets.",
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.Subnet"
            },
            "type": "array"
          },
          "zones": {
            "description": "Cluster zones.",
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.Zone"
            },
            "type": "array"
          },
          "clusterNameId": {
            "description": "User friendly unique cluster identifier.",
            "type": "string"
          },
          "reconcileError": {
            "description": "Shows last reconcile error if any.",
            "nullable": true,
            "type": "string"
          },
          "allRegionZones": {
            "description": "All available zones in cluster's region.",
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.Zone"
            },
            "type": "array"
          },
          "sshPublicKey": {
            "description": "Deprecated. Node configuration equivalent should be used.",
            "nullable": true,
            "type": "string"
          },
          "providerNamespaceId": {
            "description": "Cluster location where cloud provider organizes cloud resources, eg.: GCP project ID, AWS account ID.",
            "type": "string"
          },
          "kubernetesVersion": {
            "nullable": true,
            "title": "Kubernetes version installed on the control plane",
            "type": "string"
          },
          "managedBy": {
            "description": "Method used to onboard the cluster, eg.: console, terraform.",
            "type": "string"
          },
          "firstOperationAt": {
            "description": "Timestamp when the first operation was performed for a given cluster, which marks when cluster optimisation started by CAST AI.",
            "format": "date-time",
            "type": "string"
          },
          "reconciledAt": {
            "description": "Timestamp when the last reconcile was performed.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "reconcileInfo": {
            "$ref": "#/components/schemas/externalcluster.v1.Cluster.ReconcileInfo"
          },
          "isPhase2": {
            "description": "Indicates if the cluster is in phase 2.",
            "type": "boolean"
          },
          "castwareInstallMethod": {
            "$ref": "#/components/schemas/externalcluster.v1.Cluster.CastwareInstallMethod"
          },
          "attributes": {
            "$ref": "#/components/schemas/externalcluster.v1.ClusterAttributes"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.Cluster.CastwareInstallMethod": {
        "default": "CASTWARE_INSTALL_METHOD_UNSPECIFIED",
        "description": "Method used to install CASTware components.\n\n - CASTWARE_INSTALL_METHOD_UNSPECIFIED: Default value.\n - OPERATOR: CASTware installed via the operator.",
        "enum": [
          "CASTWARE_INSTALL_METHOD_UNSPECIFIED",
          "OPERATOR"
        ],
        "type": "string"
      },
      "externalcluster.v1.Cluster.ReconcileInfo": {
        "properties": {
          "reconciledAt": {
            "description": "Timestamp when the last reconcile was performed.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "error": {
            "description": "Shows last reconcile error if any.",
            "nullable": true,
            "type": "string"
          },
          "startedAt": {
            "description": "Timestamp when the reconcile was started.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "retryAt": {
            "description": "Timestamp when the reconcile was retried.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "errorCount": {
            "description": "Number of times the reconcile was retried.",
            "format": "int32",
            "type": "integer"
          },
          "status": {
            "$ref": "#/components/schemas/externalcluster.v1.Cluster.ReconcileInfo.ReconcileStatus"
          },
          "mode": {
            "$ref": "#/components/schemas/externalcluster.v1.Cluster.ReconcileInfo.ReconcileMode"
          }
        },
        "title": "Reconcile information for Phase 2 clusters",
        "type": "object"
      },
      "externalcluster.v1.Cluster.ReconcileInfo.ReconcileMode": {
        "default": "unspecified",
        "description": "Reconcile mode.",
        "enum": [
          "unspecified",
          "enabled",
          "disabled",
          "paused"
        ],
        "type": "string"
      },
      "externalcluster.v1.Cluster.ReconcileInfo.ReconcileStatus": {
        "default": "unknown",
        "description": "Reconcile status.",
        "enum": [
          "unknown",
          "ok",
          "failed",
          "warning"
        ],
        "type": "string"
      },
      "externalcluster.v1.ClusterAttributes": {
        "description": "ClusterAttributes defines cluster attributes.",
        "properties": {
          "karpenter": {
            "$ref": "#/components/schemas/externalcluster.v1.KarpenterAttribute"
          },
          "omni": {
            "$ref": "#/components/schemas/externalcluster.v1.OmniAttribute"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.ClusterUpdate": {
        "properties": {
          "credentials": {
            "description": "JSON encoded cluster credentials string.",
            "type": "string"
          },
          "eks": {
            "$ref": "#/components/schemas/externalcluster.v1.UpdateEKSClusterParams"
          },
          "gke": {
            "$ref": "#/components/schemas/externalcluster.v1.UpdateGKEClusterParams"
          },
          "aks": {
            "$ref": "#/components/schemas/externalcluster.v1.UpdateAKSClusterParams"
          },
          "selfHostedWithEc2Nodes": {
            "$ref": "#/components/schemas/externalcluster.v1.UpdateSelfHostedWithEC2NodesParams"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.ComputeCapacity": {
        "properties": {
          "instances": {
            "description": "Number of nodes to be created.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.CreateAssumeRolePrincipalResponse": {
        "properties": {
          "arn": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.CreateClusterTokenResponse": {
        "properties": {
          "token": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.DeleteAssumeRolePrincipalResponse": {
        "type": "object"
      },
      "externalcluster.v1.DeleteClusterResponse": {
        "description": "DeleteClusterResponse is the result of DeleteClusterRequest.",
        "type": "object"
      },
      "externalcluster.v1.DeleteNodeResponse": {
        "description": "DeleteNodeResponse is the result of DeleteNodeRequest.",
        "properties": {
          "operationId": {
            "description": "Node delete operation ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.DisableGCPSAResponse": {
        "type": "object"
      },
      "externalcluster.v1.DisableGKESAResponse": {
        "type": "object"
      },
      "externalcluster.v1.DisconnectClusterResponse": {
        "description": "DisconnectClusterResponse is the result of DisconnectClusterRequest.",
        "properties": {
          "cluster": {
            "$ref": "#/components/schemas/externalcluster.v1.Cluster"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.DisconnectConfig": {
        "properties": {
          "deleteProvisionedNodes": {
            "description": "Whether CAST provisioned nodes should be deleted.",
            "type": "boolean"
          },
          "keepKubernetesResources": {
            "description": "Whether CAST Kubernetes resources should be kept.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.DrainConfig": {
        "properties": {
          "timeoutSeconds": {
            "description": "Node drain timeout in seconds. Defaults to 600s if not set.",
            "format": "int32",
            "type": "integer"
          },
          "force": {
            "description": "If set to true, pods will be forcefully deleted after drain timeout.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.DrainNodeResponse": {
        "description": "DrainNodeResponse is the result of DrainNodeRequest.",
        "properties": {
          "operationId": {
            "description": "Drain node operation ID.",
            "type": "string"
          }
        },
        "required": [
          "operationId"
        ],
        "type": "object"
      },
      "externalcluster.v1.EKSClusterParams": {
        "description": "EKSClusterParams defines EKS-specific arguments.",
        "properties": {
          "clusterName": {
            "description": "Name of the cluster.",
            "type": "string"
          },
          "region": {
            "description": "Region of the cluster.",
            "type": "string"
          },
          "accountId": {
            "description": "AWS Account ID where cluster runs.",
            "type": "string"
          },
          "assumeRoleArn": {
            "title": "ARN of role that will be assumed to perform AWS actions",
            "type": "string"
          },
          "subnets": {
            "description": "Deprecated. Output only. Cluster's subnets configuration.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "securityGroups": {
            "description": "Deprecated. Output only. Cluster's security groups configuration.",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "type": "array"
          },
          "instanceProfileArn": {
            "description": "Deprecated. Output only. Cluster's instance profile ARN used for CAST provisioned nodes.",
            "readOnly": true,
            "type": "string"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Deprecated. Output only. CAST provisioned nodes tags configuration.",
            "readOnly": true,
            "type": "object"
          },
          "dnsClusterIp": {
            "title": "Deprecated. IP address to use for DNS queries within the cluster. Defaults to 10.100.0.10 or 172.20.0.10 based on the IP address of the primary interface",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.EKSNodeBatchConfig": {
        "properties": {
          "fleetContextId": {
            "description": "Context ID passed to the CreateFleet API.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.EdgeConfig": {
        "description": "EdgeConfig holds Edge specific configuration.",
        "properties": {
          "configurationId": {
            "description": "ID of the Edge configuration.",
            "nullable": true,
            "type": "string"
          },
          "locationId": {
            "description": "Edge location ID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GCPCreateSARequest.AKSClusterParams": {
        "description": "AKSClusterParams is a placeholder for future use.",
        "type": "object"
      },
      "externalcluster.v1.GCPCreateSAResponse": {
        "properties": {
          "serviceAccountEmail": {
            "type": "string"
          },
          "serviceAccountId": {
            "description": "service_account_id - The unique, stable numeric ID for the service\naccount. Each service account retains its unique ID even if you delete the\nservice account. For example, if you delete a service account, then create a\nnew service account with the same name, the new service account has a\ndifferent unique ID than the deleted service account.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GKEClusterParams": {
        "description": "GKEClusterParams defines GKE-specific arguments.",
        "properties": {
          "clusterName": {
            "description": "Name of the cluster.",
            "type": "string"
          },
          "region": {
            "description": "Region of the cluster.",
            "type": "string"
          },
          "projectId": {
            "description": "GCP project ID where cluster runs.",
            "type": "string"
          },
          "location": {
            "description": "Location of the cluster.",
            "type": "string"
          },
          "maxPodsPerNode": {
            "description": "Max pods per node. Default is 110.",
            "format": "int32",
            "type": "integer"
          },
          "castServiceAccount": {
            "title": "CAST service account",
            "type": "string"
          },
          "clientServiceAccount": {
            "title": "Client service account",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GKECreateSAResponse": {
        "properties": {
          "serviceAccount": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GPUConfig": {
        "description": "GPUConfig describes instance GPU configuration.\n\nUse for:\n* Creating GCP N1 with customer quantity and type of GPUs attached.\n* Setting required labels for AKS GPU nodes.\n* Configuring gpu sharing.\nRequired while provisioning GCP N1 instance types with GPU.\nEg.: n1-standard-2 with 8 x NVIDIA Tesla K80",
        "properties": {
          "type": {
            "description": "GPU type.  N1 GCP machines allow attaching custom type of GPUs.\nPublic documentation refers to this as \"accelerator type\" which you should read \"name of specialized hardware\".",
            "type": "string"
          },
          "count": {
            "description": "Number of GPUs. N1 GCP machines allow attaching custom number of GPUs.",
            "format": "int32",
            "type": "integer"
          },
          "timeSharing": {
            "$ref": "#/components/schemas/externalcluster.v1.GPUTimeSharing"
          },
          "migConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.MIGConfig"
          },
          "mps": {
            "$ref": "#/components/schemas/externalcluster.v1.MPS"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GPUDevice": {
        "properties": {
          "manufacturer": {
            "title": "Manufacturer nvidia/amd",
            "type": "string"
          },
          "count": {
            "format": "int32",
            "title": "Count amount of graphic cards",
            "type": "integer"
          },
          "memoryMib": {
            "format": "int32",
            "title": "MemoryMiB single GPU memory in MiB",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GPUInfo": {
        "properties": {
          "gpuDevices": {
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.GPUDevice"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GPUTimeSharing": {
        "description": "GPUTimeSharing configures sharing strategy by splitting time of single GPU to several processes.",
        "properties": {
          "replicas": {
            "format": "int32",
            "title": "Specifies the number of time-sliced GPU replicas to make available for\nshared access to GPUs of the specified resource type.\nMore info at https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/gpu-sharing.html#about-configuring-gpu-time-slicing",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetAssumeRolePrincipalResponse": {
        "properties": {
          "arn": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetAssumeRoleUserResponse": {
        "properties": {
          "arn": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetCleanupScriptResponse": {
        "description": "GetCleanupScriptResponse is the result of GetCleanupScriptRequest.",
        "properties": {
          "script": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetClusterResponse": {
        "description": "GetClusterResponse is the result of GetClusterRequest.",
        "properties": {
          "cluster": {
            "$ref": "#/components/schemas/externalcluster.v1.Cluster"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetConnectAndEnableCASTAICmdResponse": {
        "description": "GetConnectAndEnableCASTAICmdResponse is the result of GetConnectAndEnableCASTAICmdRequest.",
        "properties": {
          "script": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetCredentialsScriptResponse": {
        "description": "GetCredentialsScriptResponse is the result of GetCredentialsScriptRequest.",
        "properties": {
          "script": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetListNodesFiltersResponse": {
        "properties": {
          "filters": {
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.NodeListFilter"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetNodeBatchResponse": {
        "description": "GetNodeBatchResponse is the response to GetNodeBatch RPC, containing the status of node batch creation and details about created nodes.",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/externalcluster.v1.GetNodeBatchResponse.BatchOperationStatus"
          },
          "done": {
            "type": "boolean"
          },
          "createdCount": {
            "format": "int32",
            "type": "integer"
          },
          "failedCount": {
            "format": "int32",
            "type": "integer"
          },
          "createdNodes": {
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.GetNodeBatchResponse.CreatedNode"
            },
            "type": "array"
          },
          "errors": {
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.GetNodeBatchResponse.OperationError"
            },
            "type": "array"
          },
          "startedAt": {
            "format": "date-time",
            "type": "string"
          },
          "completedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetNodeBatchResponse.BatchOperationStatus": {
        "default": "BATCH_OPERATION_STATUS_UNSPECIFIED",
        "description": "BatchOperationStatus represents the current status of the batch operation.",
        "enum": [
          "BATCH_OPERATION_STATUS_UNSPECIFIED",
          "PENDING",
          "IN_PROGRESS",
          "PARTIAL",
          "SUCCESS",
          "FAILED"
        ],
        "type": "string"
      },
      "externalcluster.v1.GetNodeBatchResponse.CreatedNode": {
        "properties": {
          "nodeId": {
            "type": "string"
          },
          "instanceType": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/externalcluster.v1.GetNodeBatchResponse.NodeStatus"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetNodeBatchResponse.NodeStatus": {
        "default": "NODE_STATUS_UNSPECIFIED",
        "description": "NodeStatus represents the status of a provisioned node.",
        "enum": [
          "NODE_STATUS_UNSPECIFIED",
          "CREATED",
          "JOINED",
          "JOIN_FAILED"
        ],
        "type": "string"
      },
      "externalcluster.v1.GetNodeBatchResponse.OperationError": {
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.GetNodeResponse": {
        "properties": {
          "node": {
            "$ref": "#/components/schemas/externalcluster.v1.Node"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.HandleCloudEventResponse": {
        "description": "HandleCloudEventResponse is the result of HandleCloudEventRequest.",
        "type": "object"
      },
      "externalcluster.v1.HttpProxyConfig": {
        "description": "HttpProxyConfig holds settings when HTTP/S communication is required.",
        "properties": {
          "httpProxy": {
            "type": "string"
          },
          "httpsProxy": {
            "type": "string"
          },
          "noProxy": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.ImpersonationServiceAccountRequest": {
        "properties": {
          "provider": {
            "title": "The cloud provider type for which to create the impersonation service account",
            "type": "string"
          }
        },
        "title": "ImpersonationServiceAccountRequest is the request message for creating\na service account that can be used for workload identity impersonation",
        "type": "object"
      },
      "externalcluster.v1.ImpersonationServiceAccountResponse": {
        "properties": {
          "email": {
            "title": "The email of the created service account",
            "type": "string"
          },
          "id": {
            "title": "The id of the created service account",
            "type": "string"
          }
        },
        "title": "ImpersonationServiceAccountResponse contains the created service account details",
        "type": "object"
      },
      "externalcluster.v1.IngestInstanceLogsResponse": {
        "description": "IngestInstanceLogsResponse returns ingest instance logs response.",
        "type": "object"
      },
      "externalcluster.v1.IngestNodeLogsResponse": {
        "description": "IngestNodeLogsResponse returns ingest node logs response.",
        "type": "object"
      },
      "externalcluster.v1.InsertAKSInitDataResponse": {
        "type": "object"
      },
      "externalcluster.v1.KOPSClusterParams": {
        "description": "KOPSClusterParams defines KOPS-specific arguments.",
        "properties": {
          "clusterName": {
            "description": "Name of the cluster.",
            "type": "string"
          },
          "cloud": {
            "description": "Cloud provider of the cluster.",
            "type": "string"
          },
          "region": {
            "description": "Region of the cluster.",
            "type": "string"
          },
          "stateStore": {
            "description": "KOPS state store url.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.KarpenterAttribute": {
        "description": "KarpenterAttribute defines Karpenter-specific attributes.",
        "properties": {
          "version": {
            "description": "Karpenter version.",
            "nullable": true,
            "type": "string"
          },
          "kentEligibility": {
            "$ref": "#/components/schemas/externalcluster.v1.KentEligibility"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.KentEligibility": {
        "default": "NOT_SUPPORTED",
        "description": "KentEligibility defines Karpenter KENT eligibility status.",
        "enum": [
          "NOT_SUPPORTED",
          "ELIGIBLE"
        ],
        "type": "string"
      },
      "externalcluster.v1.KentParam": {
        "default": "enable_spot_interruption_prediction",
        "enum": [
          "enable_spot_interruption_prediction",
          "enable_rebalancing",
          "install_evictor"
        ],
        "title": "KentParam is extensive list of toggleable Kent features",
        "type": "string"
      },
      "externalcluster.v1.LifecycleType": {
        "default": "lifecycle_type_unspecified",
        "description": "LifecycleType represents the lifecycle type of the node.",
        "enum": [
          "lifecycle_type_unspecified",
          "on_demand",
          "fallback",
          "spot"
        ],
        "type": "string"
      },
      "externalcluster.v1.ListClustersResponse": {
        "description": "ListClustersResponse is the result of ListClustersRequest.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.Cluster"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.ListNodesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.Node"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.LogEvent": {
        "properties": {
          "level": {
            "type": "string"
          },
          "time": {
            "format": "date-time",
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "fields": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.MIGConfig": {
        "description": "MIGConfig configures MIG slicing on NVIDIA GPUs.",
        "properties": {
          "partitionSizes": {
            "items": {
              "type": "string"
            },
            "title": "Partition sizes required when using MIG slicing",
            "type": "array"
          },
          "gpuMemoryGb": {
            "format": "int32",
            "nullable": true,
            "title": "The amount of memory in gigabytes that each GPU has.\nOnly required when using bottlerocket AMI on EKS",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.MPS": {
        "description": "MPS configures Multi-Process Service sharing strategy on NVIDIA GPUs.",
        "properties": {
          "replicas": {
            "format": "int32",
            "title": "Specifies the number of MPS replicas to make available for\nshared access to GPUs of the specified resource type.\nMore info at https://github.com/NVIDIA/k8s-device-plugin?tab=readme-ov-file#with-cuda-mps",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.Node": {
        "description": "Node represents a single VM that run as Kubernetes master or worker.",
        "properties": {
          "cloud": {
            "type": "string"
          },
          "role": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeType"
          },
          "id": {
            "type": "string"
          },
          "instanceType": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeState"
          },
          "name": {
            "type": "string"
          },
          "spotConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeSpotConfig"
          },
          "createdAt": {
            "description": "created_at represents timestamp of when node was created in cloud infrastructure.",
            "format": "date-time",
            "type": "string"
          },
          "network": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeNetwork"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "taints": {
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.Taint"
            },
            "type": "array"
          },
          "unschedulable": {
            "type": "boolean"
          },
          "resources": {
            "$ref": "#/components/schemas/externalcluster.v1.Resources"
          },
          "instanceId": {
            "nullable": true,
            "readOnly": true,
            "title": "Output only. Cloud provider instance id. The value depends on cloud provider.\nAWS - i-1a1aa11111aaaa1aa\nGCP - projects/{project}/zones/{zone}/instances/{name}\nAzure - /subscriptions/{id}/resourceGroups/{name}/providers/Microsoft.Compute/virtualMachineScaleSets/{name}/virtualMachines/0",
            "type": "string"
          },
          "instanceName": {
            "description": "Output only. Cloud provider instance name.",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "instanceLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Output only. Cloud provider instance tags/labels.",
            "readOnly": true,
            "type": "object"
          },
          "zone": {
            "type": "string"
          },
          "joinedAt": {
            "description": "joined_at represents timestamp of when node has joined kubernetes cluster.",
            "format": "date-time",
            "type": "string"
          },
          "addedBy": {
            "type": "string"
          },
          "instanceArchitecture": {
            "description": "Deprecated. Use node_info architecture field.",
            "nullable": true,
            "type": "string"
          },
          "instancePrice": {
            "description": "Deprecated. Pricing is now handled by price service.",
            "nullable": true,
            "type": "string"
          },
          "nodeInfo": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeInfo"
          },
          "nodeConfigurationId": {
            "nullable": true,
            "type": "string"
          },
          "gpuInfo": {
            "$ref": "#/components/schemas/externalcluster.v1.GPUInfo"
          },
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "providerId": {
            "nullable": true,
            "title": "provider_id is id from node spec node.Spec.ProviderID, eg.:\naws   - aws:///us-east-1a/i-0eea4991c66785226\ngcp   - gce://{project}/{zone}/{name}\nazure -  azure:///subscriptions/{subID}/resourceGroups/{rgName}/providers/Microsoft.Compute/virtualMachineScaleSets/{scaleSetName}/virtualMachines/0",
            "type": "string"
          },
          "subnetId": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "annotations",
          "cloud",
          "createdAt",
          "id",
          "instanceLabels",
          "instanceType",
          "labels",
          "name",
          "resources",
          "role",
          "spotConfig",
          "state",
          "taints",
          "unschedulable"
        ],
        "type": "object"
      },
      "externalcluster.v1.NodeAffinity": {
        "description": "NodeAffinity provides control over the assignment of individual nodes to dedicated host instances.",
        "properties": {
          "dedicatedGroup": {
            "description": "The name of the dedicated group.",
            "nullable": true,
            "type": "string"
          },
          "affinity": {
            "description": "THe affinity rules required for choosing the group.",
            "items": {
              "$ref": "#/components/schemas/k8s_selector.v1.KubernetesNodeAffinity"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.NodeBatchConfig": {
        "properties": {
          "spotConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeSpotConfig"
          },
          "volume": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeVolume"
          },
          "gpuConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.GPUConfig"
          },
          "kubernetesLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Node Kubernetes labels.",
            "type": "object"
          },
          "kubernetesTaints": {
            "description": "Node Kubernetes taints.",
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.Taint"
            },
            "type": "array"
          },
          "configurationId": {
            "description": "ID reference of Node configuration (template) to be used for node creation.",
            "nullable": true,
            "type": "string"
          },
          "nodeAffinity": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeAffinity"
          },
          "edgeConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.EdgeConfig"
          },
          "aws": {
            "$ref": "#/components/schemas/externalcluster.v1.AWSNodeConfig"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.NodeBatchOption": {
        "properties": {
          "capacityPerNode": {
            "$ref": "#/components/schemas/externalcluster.v1.ComputeCapacity"
          },
          "instanceType": {
            "description": "Instance type of the node.",
            "type": "string"
          },
          "zone": {
            "description": "Zone of the node.",
            "nullable": true,
            "type": "string"
          },
          "subnetId": {
            "description": "Node subnet ID.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.NodeBatchSpec": {
        "properties": {
          "totalCapacity": {
            "$ref": "#/components/schemas/externalcluster.v1.ComputeCapacity"
          },
          "baseConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeBatchConfig"
          },
          "options": {
            "description": "List of different options for nodes in the batch.\nEach option is merged with the baseConfiguration.",
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.NodeBatchOption"
            },
            "type": "array"
          },
          "eks": {
            "$ref": "#/components/schemas/externalcluster.v1.EKSNodeBatchConfig"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.NodeConfig": {
        "properties": {
          "instanceType": {
            "description": "Instance type of the node.",
            "type": "string"
          },
          "spotConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeSpotConfig"
          },
          "zone": {
            "description": "Zone of the node.",
            "nullable": true,
            "type": "string"
          },
          "subnetId": {
            "description": "Node subnet ID.",
            "nullable": true,
            "type": "string"
          },
          "volume": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeVolume"
          },
          "gpuConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.GPUConfig"
          },
          "kubernetesLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Node Kubernetes labels.",
            "type": "object"
          },
          "kubernetesTaints": {
            "description": "Node Kubernetes taints.",
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.Taint"
            },
            "type": "array"
          },
          "configurationName": {
            "description": "Name reference of Node configuration (template)to be used for node creation.\nSuperseded if Configuration ID reference is provided.\nRequest will fail if several configurations with same name exists for a given cluster.",
            "nullable": true,
            "type": "string"
          },
          "configurationId": {
            "description": "ID reference of Node configuration (template) to be used for node creation. Supersedes Configuration Name.",
            "nullable": true,
            "type": "string"
          },
          "nodeAffinity": {
            "$ref": "#/components/schemas/externalcluster.v1.NodeAffinity"
          },
          "edgeConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.EdgeConfig"
          },
          "aws": {
            "$ref": "#/components/schemas/externalcluster.v1.AWSNodeConfig"
          }
        },
        "required": [
          "instanceType"
        ],
        "type": "object"
      },
      "externalcluster.v1.NodeInfo": {
        "properties": {
          "kernelVersion": {
            "type": "string"
          },
          "osImage": {
            "type": "string"
          },
          "containerRuntimeVersion": {
            "type": "string"
          },
          "kubeletVersion": {
            "type": "string"
          },
          "kubeProxyVersion": {
            "type": "string"
          },
          "operatingSystem": {
            "type": "string"
          },
          "architecture": {
            "type": "string"
          }
        },
        "title": "NodeInfo defines the full information about the node returned by kubectl",
        "type": "object"
      },
      "externalcluster.v1.NodeListFilter": {
        "properties": {
          "type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "values": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.NodeLogs": {
        "properties": {
          "logEvents": {
            "items": {
              "$ref": "#/components/schemas/externalcluster.v1.LogEvent"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.NodeNetwork": {
        "description": "NodeNetwork represents node network.",
        "properties": {
          "publicIp": {
            "type": "string"
          },
          "privateIp": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.NodeSpotConfig": {
        "description": "NodeSpotConfig defines if node should be created as spot instance, and params for creation.",
        "properties": {
          "isSpot": {
            "description": "Whether node should be created as spot instance.",
            "type": "boolean"
          },
          "price": {
            "description": "Spot instance price. Applicable only for AWS nodes.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.NodeState": {
        "description": "NodeState contains feedback information about progress on the node provisioning.",
        "properties": {
          "phase": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.NodeStatus": {
        "default": "node_status_unspecified",
        "description": "NodeStatus represents the status of the node.",
        "enum": [
          "node_status_unspecified",
          "unknown",
          "pending",
          "creating",
          "ready",
          "not_ready",
          "draining",
          "deleting",
          "deleted",
          "interrupted",
          "cordoned"
        ],
        "type": "string"
      },
      "externalcluster.v1.NodeType": {
        "default": "NODE_TYPE_INVALID",
        "description": "NodeType defines the role of the VM when joining the Kubernetes cluster. Default value is not allowed.",
        "enum": [
          "NODE_TYPE_INVALID",
          "master",
          "NODE_TYPE_MASTER",
          "worker",
          "NODE_TYPE_WORKER"
        ],
        "type": "string"
      },
      "externalcluster.v1.NodeVolume": {
        "description": "NodeVolume defines node's local root volume configuration.",
        "properties": {
          "size": {
            "description": "Volume size in GiB.",
            "format": "int32",
            "type": "integer"
          },
          "raidConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.RaidConfig"
          },
          "stopEnabled": {
            "description": "Storage Optimization enabled - if true, allows root disk to be provisioned based on size from Node Disk Recommendation.\nUsually it means the root disk size will be lower than what is defined in the Node Configuration.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.OKEClusterParams": {
        "description": "OKEClusterParams defines OKE -specific arguments.",
        "properties": {
          "clusterName": {
            "description": "Name of the cluster.",
            "type": "string"
          },
          "region": {
            "description": "Region of the cluster.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.OmniAttribute": {
        "description": "OmniAttribute defines Omni-specific attributes.",
        "properties": {
          "enabled": {
            "description": "Indicates if Omni is enabled.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.OnboardingPath": {
        "default": "ONBOARDING_PATH_UNSPECIFIED",
        "description": "OnboardingPath identifies the installation method used for onboarding.",
        "enum": [
          "ONBOARDING_PATH_UNSPECIFIED",
          "ONBOARDING_PATH_SCRIPT",
          "ONBOARDING_PATH_HELM",
          "ONBOARDING_PATH_CASTCTL"
        ],
        "type": "string"
      },
      "externalcluster.v1.OpenshiftClusterParams": {
        "description": "OpenShiftClusterParams defines OpenShift-specific arguments.",
        "properties": {
          "clusterName": {
            "description": "Name of the cluster.",
            "type": "string"
          },
          "cloud": {
            "description": "Cloud provider of the cluster.",
            "type": "string"
          },
          "region": {
            "description": "Region of the cluster.",
            "type": "string"
          },
          "internalId": {
            "title": "The OpenShift ClusterID",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.OperationMode": {
        "default": "OPERATION_MODE_UNSPECIFIED",
        "description": "OperationMode defines the execution mode for hibernate/resume operations.\n\n - OPERATION_MODE_UNSPECIFIED: Default value.\n - OPERATION_MODE_DEFAULT: Normal operation - executes the hibernate/resume.\n - OPERATION_MODE_DRY_RUN: Dry-run mode - validates only without executing.",
        "enum": [
          "OPERATION_MODE_UNSPECIFIED",
          "OPERATION_MODE_DEFAULT",
          "OPERATION_MODE_DRY_RUN"
        ],
        "type": "string"
      },
      "externalcluster.v1.RaidConfig": {
        "description": "RaidConfig allow You have two or more devices, of approximately the same size, and you want to combine their storage capacity\nand also combine their performance by accessing them in parallel.",
        "properties": {
          "chunkSize": {
            "description": "Specify the RAID0 chunk size in kilobytes, this parameter affects the read/write in the disk array and must be tailored\nfor the type of data written by the workloads in the node. If not provided it will default to 64KB.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.ReconcileClusterResponse": {
        "description": "ReconcileClusterResponse is the result of ReconcileClusterRequest.",
        "type": "object"
      },
      "externalcluster.v1.RefreshAKSInitDataResponse": {
        "description": "RefreshAKSInitDataResponse is the result of RefreshAKSInitDataRequest.",
        "type": "object"
      },
      "externalcluster.v1.Region": {
        "description": "Region represents cluster region.",
        "properties": {
          "name": {
            "description": "Name of the region.",
            "type": "string"
          },
          "displayName": {
            "description": "Display name of the region.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.RegisterClusterRequest": {
        "description": "RegisterClusterRequest registers cluster.",
        "properties": {
          "name": {
            "description": "The name of the cluster.",
            "type": "string"
          },
          "organizationId": {
            "description": "Organization of the cluster.",
            "type": "string"
          },
          "id": {
            "description": "The ID of the cluster.",
            "type": "string"
          },
          "castwareInstallMethod": {
            "$ref": "#/components/schemas/externalcluster.v1.Cluster.CastwareInstallMethod"
          },
          "eks": {
            "$ref": "#/components/schemas/externalcluster.v1.EKSClusterParams"
          },
          "gke": {
            "$ref": "#/components/schemas/externalcluster.v1.GKEClusterParams"
          },
          "kops": {
            "$ref": "#/components/schemas/externalcluster.v1.KOPSClusterParams"
          },
          "aks": {
            "$ref": "#/components/schemas/externalcluster.v1.AKSClusterParams"
          },
          "openshift": {
            "$ref": "#/components/schemas/externalcluster.v1.OpenshiftClusterParams"
          },
          "anywhere": {
            "$ref": "#/components/schemas/externalcluster.v1.AnywhereClusterParams"
          },
          "selfHostedWithEc2Nodes": {
            "$ref": "#/components/schemas/externalcluster.v1.SelfHostedWithEC2NodesParams"
          },
          "oke": {
            "$ref": "#/components/schemas/externalcluster.v1.OKEClusterParams"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "externalcluster.v1.RegisterClusterResponse": {
        "description": "RegisterClusterResponse is the result of RegisterClusterRequest.",
        "properties": {
          "cluster": {
            "$ref": "#/components/schemas/externalcluster.v1.Cluster"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.Resources": {
        "properties": {
          "cpuAllocatableMilli": {
            "format": "int32",
            "type": "integer"
          },
          "memAllocatableMib": {
            "format": "int32",
            "type": "integer"
          },
          "cpuCapacityMilli": {
            "format": "int32",
            "type": "integer"
          },
          "memCapacityMib": {
            "format": "int32",
            "type": "integer"
          },
          "cpuRequestsMilli": {
            "format": "int32",
            "type": "integer"
          },
          "memRequestsMib": {
            "format": "int32",
            "type": "integer"
          },
          "bandwidthCapacityMbps": {
            "format": "int32",
            "type": "integer"
          }
        },
        "title": "Resources represents kubernetes node",
        "type": "object"
      },
      "externalcluster.v1.SelfHostedWithEC2NodesParams": {
        "properties": {
          "clusterName": {
            "description": "Name of the cluster.",
            "type": "string"
          },
          "region": {
            "description": "Region of the cluster.",
            "type": "string"
          },
          "accountId": {
            "description": "AWS Account ID where cluster runs.",
            "type": "string"
          },
          "assumeRoleArn": {
            "title": "ARN of role that will be assumed to perform AWS actions",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.Subnet": {
        "description": "Subnet represents cluster subnet.",
        "properties": {
          "id": {
            "description": "The ID of the subnet.",
            "type": "string"
          },
          "name": {
            "description": "Deprecated. Subnet name is not filled and should not be used.",
            "type": "string"
          },
          "zoneName": {
            "description": "Subnet's zone name.",
            "type": "string"
          },
          "cidr": {
            "description": "Cidr block of the subnet.",
            "type": "string"
          },
          "public": {
            "description": "Public defines if subnet is publicly routable.\nOptional. Populated for EKS provider only.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.Taint": {
        "description": "Taint defines node taint in kubernetes cluster.",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "effect": {
            "type": "string"
          }
        },
        "required": [
          "effect",
          "key",
          "value"
        ],
        "type": "object"
      },
      "externalcluster.v1.TriggerHibernateClusterResponse": {
        "description": "TriggerHibernateClusterResponse is the result of HibernateClusterRequest.",
        "properties": {
          "clusterId": {
            "description": "The ID of the cluster.",
            "type": "string"
          },
          "operationId": {
            "description": "Hibernate operation ID. Empty when mode is dry-run.",
            "type": "string"
          },
          "mode": {
            "$ref": "#/components/schemas/externalcluster.v1.OperationMode"
          }
        },
        "required": [
          "clusterId",
          "mode",
          "operationId"
        ],
        "type": "object"
      },
      "externalcluster.v1.TriggerResumeClusterResponse": {
        "description": "TriggerResumeClusterResponse is the result of ResumeClusterRequest.",
        "properties": {
          "clusterId": {
            "description": "The ID of the cluster.",
            "type": "string"
          },
          "operationId": {
            "description": "Resume operation ID. Empty when mode is dry-run.",
            "type": "string"
          },
          "mode": {
            "$ref": "#/components/schemas/externalcluster.v1.OperationMode"
          }
        },
        "required": [
          "clusterId",
          "mode",
          "operationId"
        ],
        "type": "object"
      },
      "externalcluster.v1.UpdateAKSClusterParams": {
        "description": "UpdateAKSClusterParams defines updatable AKS cluster configuration.",
        "properties": {
          "httpProxyConfig": {
            "$ref": "#/components/schemas/externalcluster.v1.HttpProxyConfig"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.UpdateClusterResponse": {
        "description": "UpdateClusterResponse is the result of UpdateClusterRequest.",
        "properties": {
          "cluster": {
            "$ref": "#/components/schemas/externalcluster.v1.Cluster"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.UpdateClusterTagsResponse": {
        "description": "UpdateClusterTagsResponse result of cluster tags update.",
        "type": "object"
      },
      "externalcluster.v1.UpdateEKSClusterParams": {
        "description": "UpdateEKSClusterParams defines updatable EKS cluster configuration.",
        "properties": {
          "assumeRoleArn": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.UpdateGKEClusterParams": {
        "description": "UpdateGKEClusterParams defines updatable GKE cluster configuration.",
        "properties": {
          "gkeSaImpersonate": {
            "description": "service account email to impersonate.",
            "type": "string"
          },
          "projectId": {
            "description": "GCP target project where cluster runs.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.UpdateSelfHostedWithEC2NodesParams": {
        "properties": {
          "assumeRoleArn": {
            "type": "string"
          },
          "instanceProfileArn": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "externalcluster.v1.Zone": {
        "description": "Cluster zone.",
        "properties": {
          "id": {
            "description": "ID of the zone.",
            "type": "string"
          },
          "name": {
            "description": "Zone name.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "google.api.HttpBody": {
        "description": "Message that represents an arbitrary HTTP body. It should only be used for\npayload formats that can't be represented as JSON, such as raw binary or\nan HTML page.\n\n\nThis message can be used both in streaming and non-streaming API methods in\nthe request as well as the response.\n\nIt can be used as a top-level request field, which is convenient if one\nwants to extract parameters from either the URL or HTTP template into the\nrequest fields and also want access to the raw HTTP body.\n\nExample:\n\n    message GetResourceRequest {\n      // A unique request id.\n      string request_id = 1;\n\n      // The raw HTTP body is bound to this field.\n      google.api.HttpBody http_body = 2;\n\n    }\n\n    service ResourceService {\n      rpc GetResource(GetResourceRequest)\n        returns (google.api.HttpBody);\n      rpc UpdateResource(google.api.HttpBody)\n        returns (google.protobuf.Empty);\n\n    }\n\nExample with streaming methods:\n\n    service CaldavService {\n      rpc GetCalendar(stream google.api.HttpBody)\n        returns (stream google.api.HttpBody);\n      rpc UpdateCalendar(stream google.api.HttpBody)\n        returns (stream google.api.HttpBody);\n\n    }\n\nUse of this type only changes how the request and response bodies are\nhandled, all other features will continue to work unchanged.",
        "properties": {
          "contentType": {
            "description": "The HTTP Content-Type header value specifying the content type of the body.",
            "type": "string"
          },
          "data": {
            "description": "The HTTP request/response body as raw binary.",
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "extensions": {
            "description": "Application specific response metadata. Must be set in the first response\nfor streaming APIs.",
            "items": {
              "$ref": "#/components/schemas/google.protobuf.Any"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "google.protobuf.Any": {
        "additionalProperties": {
          "type": "object"
        },
        "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(&foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := &pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := &pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\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\": <string>,\n      \"lastName\": <string>\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    }",
        "properties": {
          "@type": {
            "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "google.protobuf.NullValue": {
        "default": "NULL_VALUE",
        "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\nThe JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value.",
        "enum": [
          "NULL_VALUE"
        ],
        "type": "string"
      },
      "imageprovider.v1.GetImagesResponse": {
        "properties": {
          "images": {
            "items": {
              "$ref": "#/components/schemas/imageprovider.v1.Image"
            },
            "title": "list of found images",
            "type": "array"
          }
        },
        "type": "object"
      },
      "imageprovider.v1.Image": {
        "properties": {
          "ref": {
            "type": "string"
          },
          "digest": {
            "type": "string"
          },
          "registry": {
            "type": "string"
          },
          "repo": {
            "type": "string"
          },
          "tag": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.AgentSyncStateFilter": {
        "properties": {
          "imagesIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.AgentSyncStateImages": {
        "properties": {
          "fullResourcesResyncRequired": {
            "type": "boolean"
          },
          "scannedImages": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ScannedImage"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPath": {
        "properties": {
          "id": {
            "description": "Attack path uuid.",
            "type": "string"
          },
          "name": {
            "description": "Attack path name, eg. Internet exposed admin-ui service with high severity vulnerabilities.",
            "type": "string"
          },
          "severityLevel": {
            "title": "Severity level, eg. critical, high",
            "type": "string"
          },
          "riskFactors": {
            "description": "Risk factors involved in attack path, eg. internet_exposed, vulnerabilities, sensitive_data.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "environment": {
            "$ref": "#/components/schemas/insights.v1.AttackPathEnvironment"
          },
          "stats": {
            "$ref": "#/components/schemas/insights.v1.AttackPathStats"
          },
          "target": {
            "$ref": "#/components/schemas/insights.v1.AttackPathTarget"
          },
          "updatedAt": {
            "format": "date-time",
            "title": "when attack path was last generated",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPathEnvironment": {
        "properties": {
          "clusterId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPathGraph": {
        "properties": {
          "vertices": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.AttackPathGraphVertex"
            },
            "type": "array"
          },
          "edges": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.AttackPathGraphEdge"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPathGraphEdge": {
        "properties": {
          "source": {
            "type": "string"
          },
          "target": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPathGraphVertex": {
        "properties": {
          "id": {
            "description": "Graph vertex id which is unique in single graph context.",
            "type": "string"
          },
          "type": {
            "description": "Type, eg. application, ingress, service, image.",
            "type": "string"
          },
          "clusterResource": {
            "$ref": "#/components/schemas/insights.v1.AttackPathGraphVertex.ClusterResourceMeta"
          },
          "image": {
            "$ref": "#/components/schemas/insights.v1.AttackPathGraphVertex.ImageMeta"
          },
          "internet": {
            "$ref": "#/components/schemas/insights.v1.AttackPathGraphVertex.InternetMeta"
          },
          "name": {
            "title": "Name of the vertex",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPathGraphVertex.ClusterResourceMeta": {
        "properties": {
          "kind": {
            "description": "Kubernetes resource kind, eg. Deployment, Service, DaemonSet.",
            "type": "string"
          },
          "namespace": {
            "description": "Kubernetes namespace.",
            "type": "string"
          },
          "name": {
            "description": "Kubernetes resource name.",
            "type": "string"
          },
          "affectedIngressRules": {
            "description": "Affected ingress rules.",
            "items": {
              "$ref": "#/components/schemas/insights.v1.AttackPathGraphVertex.IngressRule"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPathGraphVertex.ImageMeta": {
        "properties": {
          "vulnCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPathGraphVertex.IngressRule": {
        "properties": {
          "host": {
            "description": "Host that this rule applies to, or \"*\" for any host.",
            "type": "string"
          },
          "service": {
            "description": "The service that this rule routes to.",
            "type": "string"
          },
          "paths": {
            "description": "Paths that are routed to the specified service.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPathGraphVertex.InternetMeta": {
        "properties": {
          "publicAddresses": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPathStats": {
        "properties": {
          "affectedResourcesCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.AttackPathTarget": {
        "properties": {
          "name": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.BaseImage": {
        "properties": {
          "tag": {
            "$ref": "#/components/schemas/insights.v1.Tag"
          },
          "digest": {
            "type": "string"
          },
          "sharedLayers": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.BestPracticesStandard": {
        "default": "cast",
        "description": "Standard in which check should be returned.\n\n - cast: default standard\n - cisAks12: cis aks 12\n - cisEks12: cis eks 12\n - cisGke13: cis gke 13\n - cisAks13: cis aks 13\n - cisEks13: cis eks 13\n - cisGke14: cis gke 14\n - cisAks14: cis aks 14\n - cisAks15: cis aks 15\n - cisEks14: cis eks 14\n - cisEks15: cis eks 15\n - cisGke15: cis gke 15\n - cisGke16: cis gke 16\n - cisAks16: cis aks 16",
        "enum": [
          "cast",
          "cisAks12",
          "cisEks12",
          "cisGke13",
          "cisAks13",
          "cisEks13",
          "cisGke14",
          "cisAks14",
          "cisAks15",
          "cisEks14",
          "cisEks15",
          "cisGke15",
          "cisGke16",
          "cisAks16"
        ],
        "type": "string"
      },
      "insights.v1.BestPracticesStandardInfo": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/insights.v1.BestPracticesStandard"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.CVE": {
        "properties": {
          "name": {
            "type": "string"
          },
          "link": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "score": {
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "insights.v1.CheckClusterResource": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/insights.v1.CheckClusterResourceStatus"
          },
          "resource": {
            "$ref": "#/components/schemas/insights.v1.ClusterResource"
          }
        },
        "type": "object"
      },
      "insights.v1.CheckClusterResourceStatus": {
        "default": "resource_affected",
        "description": "- resource_affected: Resource is affected. It fails this check.\n - resource_excepted: Resource is excepted. It failed this check, but there is a matching exception.\n - resource_unaffected: Resource is unaffected. It passes this check.",
        "enum": [
          "resource_affected",
          "resource_excepted",
          "resource_unaffected"
        ],
        "title": "State of a cluster resource in relation to a specific check",
        "type": "string"
      },
      "insights.v1.CheckEnforcement": {
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "enforcementId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.CheckExceptionsGroup": {
        "properties": {
          "clusters": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "namespaces": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kinds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "names": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.CheckExceptionsPayload": {
        "properties": {
          "groups": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.CheckExceptionsGroup"
            },
            "type": "array"
          },
          "version": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.Cluster": {
        "properties": {
          "name": {
            "type": "string"
          },
          "path": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.ClusterResource": {
        "properties": {
          "id": {
            "title": "Cluster Resource ID",
            "type": "string"
          },
          "clusterId": {
            "title": "Cluster ID",
            "type": "string"
          },
          "name": {
            "title": "Object name",
            "type": "string"
          },
          "namespace": {
            "title": "Object namespace",
            "type": "string"
          },
          "kind": {
            "title": "Object kind",
            "type": "string"
          },
          "apiVersion": {
            "title": "Object API version",
            "type": "string"
          },
          "clusterName": {
            "title": "Name of owning cluster",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.ClusterSecuritySettings": {
        "properties": {
          "id": {
            "title": "The ID of the cluster",
            "type": "string"
          },
          "name": {
            "title": "The name of the cluster",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/insights.v1.SecurityAgentStatus"
          },
          "agentVersion": {
            "title": "Version of the agent, if applicable",
            "type": "string"
          },
          "lastActivity": {
            "format": "date-time",
            "title": "Last activity of the agent, if applicable",
            "type": "string"
          },
          "features": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.SecurityFeature"
            },
            "title": "The security features enabled on the cluster, if applicable",
            "type": "array"
          },
          "featureStatus": {
            "$ref": "#/components/schemas/insights.v1.SecurityAgentFeatureStatus"
          }
        },
        "type": "object"
      },
      "insights.v1.ComplianceDetails": {
        "properties": {
          "compliant": {
            "format": "int32",
            "title": "Total number of compliant resources",
            "type": "integer"
          },
          "nonCompliant": {
            "format": "int32",
            "title": "Total number of non-compliant resources",
            "type": "integer"
          },
          "critical": {
            "format": "int32",
            "title": "Number of critical non-compliant resources",
            "type": "integer"
          },
          "high": {
            "format": "int32",
            "title": "Number of high non-compliant resources",
            "type": "integer"
          },
          "medium": {
            "format": "int32",
            "title": "Number of medium non-compliant resources",
            "type": "integer"
          },
          "low": {
            "format": "int32",
            "title": "Number of low non-compliant resources",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.ConfigureClusterSecuritySettingsResponse": {
        "type": "object"
      },
      "insights.v1.ContainerImage": {
        "properties": {
          "digest": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/insights.v1.ImageStatus"
          },
          "tags": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.Tag"
            },
            "type": "array"
          },
          "vulnerabilitiesBySeverityLevel": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "type": "object"
          },
          "fixes": {
            "format": "int32",
            "type": "integer"
          },
          "clusters": {
            "format": "int32",
            "type": "integer"
          },
          "affectedResources": {
            "format": "int32",
            "type": "integer"
          },
          "scanStatus": {
            "$ref": "#/components/schemas/insights.v1.ImageScanStatus"
          },
          "scanErrorMsg": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.ContainerImagePackage": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "vulnerabilitiesBySeverityLevel": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "type": "object"
          },
          "fixes": {
            "format": "int32",
            "type": "integer"
          },
          "layerDigest": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.ContainerImageVulnerability": {
        "properties": {
          "vulnId": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "externalLink": {
            "type": "string"
          },
          "pkgVulnId": {
            "type": "string"
          },
          "package": {
            "$ref": "#/components/schemas/insights.v1.Package"
          },
          "fixedVersion": {
            "type": "string"
          },
          "severityLevel": {
            "$ref": "#/components/schemas/insights.v1.VulnerabilitySeverity"
          },
          "severityScore": {
            "format": "float",
            "type": "number"
          },
          "layerDigest": {
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.CreateIntegrationRequest.Jira": {
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "projectKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "username": {
            "type": "string"
          },
          "token": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.CreateIntegrationRequest.Payload": {
        "properties": {
          "jira": {
            "$ref": "#/components/schemas/insights.v1.CreateIntegrationRequest.Jira"
          }
        },
        "type": "object"
      },
      "insights.v1.CreateIntegrationResponse": {
        "properties": {
          "integration": {
            "$ref": "#/components/schemas/insights.v1.Integration"
          }
        },
        "type": "object"
      },
      "insights.v1.CreateTicketRequest.Type": {
        "default": "Unknown",
        "description": "Type of the item in the Cast console.",
        "enum": [
          "Unknown",
          "Check",
          "Image",
          "Package",
          "Vulnerability",
          "AttackPath",
          "RuntimeAnomaly"
        ],
        "type": "string"
      },
      "insights.v1.CreateTicketResponse": {
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "title": "url to the ticket in the ticketing system's UI",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.DeleteImagesRequest": {
        "properties": {
          "tagNames": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.DeleteImagesResponse": {
        "type": "object"
      },
      "insights.v1.DeleteIntegrationResponse": {
        "type": "object"
      },
      "insights.v1.DeletePolicyEnforcementResponse": {
        "type": "object"
      },
      "insights.v1.EnforceCheckPolicyResponse": {
        "properties": {
          "enforcementByCluster": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "map of enforcement ids keyed by cluster id",
            "type": "object"
          }
        },
        "type": "object"
      },
      "insights.v1.ExceptedImage": {
        "properties": {
          "tagName": {
            "type": "string"
          },
          "package": {
            "$ref": "#/components/schemas/insights.v1.ExceptedPackage"
          }
        },
        "required": [
          "tagName"
        ],
        "type": "object"
      },
      "insights.v1.ExceptedPackage": {
        "properties": {
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "vulnerability": {
            "$ref": "#/components/schemas/insights.v1.ExceptedVulnerability"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "insights.v1.ExceptedVulnerability": {
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "insights.v1.ExceptionFilter": {
        "default": "all",
        "description": "Used for filtering resources by exceptions.\n\n - all: return all resources\n - active: return only not excepted resources\n - excepted: return only excepted resources",
        "enum": [
          "all",
          "active",
          "excepted"
        ],
        "type": "string"
      },
      "insights.v1.FiltersForVulnerabilitiesResponse": {
        "properties": {
          "clusterIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "namespaces": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "severities": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "risks": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fixes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetAgentStatusResponse": {
        "properties": {
          "installed": {
            "title": "Is agent installed",
            "type": "boolean"
          },
          "policyEnforcement": {
            "title": "Is policy enforcement enabled",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "insights.v1.GetAgentSyncStateResponse": {
        "properties": {
          "images": {
            "$ref": "#/components/schemas/insights.v1.AgentSyncStateImages"
          }
        },
        "type": "object"
      },
      "insights.v1.GetAgentsStatusRequest": {
        "properties": {
          "clusterIds": {
            "items": {
              "type": "string"
            },
            "title": "(required) cluster id",
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetAgentsStatusResponse": {
        "properties": {
          "agentStatuses": {
            "additionalProperties": {
              "type": "boolean"
            },
            "title": "Map of agent statuses keyed by cluster id",
            "type": "object"
          },
          "statuses": {
            "additionalProperties": {
              "$ref": "#/components/schemas/insights.v1.GetAgentsStatusResponse.AgentStatus"
            },
            "title": "Map of agent statuses keyed by cluster id",
            "type": "object"
          }
        },
        "type": "object"
      },
      "insights.v1.GetAgentsStatusResponse.AgentStatus": {
        "properties": {
          "installed": {
            "type": "boolean"
          },
          "policyEnforcement": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "insights.v1.GetAttackPathDetailsResponse": {
        "properties": {
          "details": {
            "$ref": "#/components/schemas/insights.v1.AttackPath"
          },
          "graph": {
            "$ref": "#/components/schemas/insights.v1.AttackPathGraph"
          },
          "ticket": {
            "$ref": "#/components/schemas/insights.v1.Ticket"
          }
        },
        "type": "object"
      },
      "insights.v1.GetAttackPathsOverviewResponse": {
        "properties": {
          "attackPaths": {
            "format": "int32",
            "title": "Number of attack paths",
            "type": "integer"
          },
          "criticalAttackPaths": {
            "format": "int32",
            "title": "Number of critical attack paths",
            "type": "integer"
          },
          "highAttackPaths": {
            "format": "int32",
            "title": "Number of high attack paths",
            "type": "integer"
          },
          "mediumAttackPaths": {
            "format": "int32",
            "title": "Number of medium attack paths",
            "type": "integer"
          },
          "lowAttackPaths": {
            "format": "int32",
            "title": "Number of low attack paths",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.GetAttackPathsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.AttackPath"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetBestPracticesCheckDetailsResponse": {
        "properties": {
          "ruleId": {
            "description": "Machine readable rule name.",
            "type": "string"
          },
          "name": {
            "description": "Human readable rule name.",
            "type": "string"
          },
          "description": {
            "description": "Check detailed description.",
            "type": "string"
          },
          "labels": {
            "description": "Check labels.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "category": {
            "description": "Category of insight.",
            "type": "string"
          },
          "severityScore": {
            "description": "Rule's severity rating [0.0,10.0].",
            "format": "float",
            "type": "number"
          },
          "severityLevel": {
            "$ref": "#/components/schemas/insights.v1.VulnerabilitySeverity"
          },
          "cvss3vector": {
            "description": "CVSSV3 vulnerability vector.",
            "type": "string"
          },
          "mdCheckDetails": {
            "title": "Details about check in markdown format",
            "type": "string"
          },
          "manual": {
            "title": "Is the check manual or automated",
            "type": "boolean"
          },
          "enforceable": {
            "title": "Can check be enforced",
            "type": "boolean"
          },
          "enforcedOn": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.CheckEnforcement"
            },
            "title": "IDs of clusters that have this rule enforced",
            "type": "array"
          },
          "ticket": {
            "$ref": "#/components/schemas/insights.v1.Ticket"
          }
        },
        "type": "object"
      },
      "insights.v1.GetBestPracticesOverviewResponse": {
        "properties": {
          "failedChecks": {
            "format": "int32",
            "title": "Number of checks that have not passed",
            "type": "integer"
          },
          "passedChecks": {
            "format": "int32",
            "title": "Number of checks that have passed",
            "type": "integer"
          },
          "nodes": {
            "$ref": "#/components/schemas/insights.v1.ComplianceDetails"
          },
          "workloads": {
            "$ref": "#/components/schemas/insights.v1.ComplianceDetails"
          },
          "other": {
            "$ref": "#/components/schemas/insights.v1.ComplianceDetails"
          }
        },
        "type": "object"
      },
      "insights.v1.GetBestPracticesReportFiltersResponse": {
        "properties": {
          "filters": {
            "additionalProperties": {
              "$ref": "#/components/schemas/insights.v1.GetBestPracticesReportFiltersResponse.ClusterFilters"
            },
            "title": "Cluster filters mapped by cluster id",
            "type": "object"
          },
          "labels": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.GetBestPracticesReportFiltersResponse.Labels"
            },
            "type": "array"
          },
          "namespaces": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "clusterIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "title": "threat categories available",
            "type": "array"
          },
          "severityLevels": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.VulnerabilitySeverity"
            },
            "title": "severity levels available",
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetBestPracticesReportFiltersResponse.ClusterFilters": {
        "properties": {
          "namespaces": {
            "items": {
              "type": "string"
            },
            "title": "namespaces available",
            "type": "array"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "title": "threat categories available",
            "type": "array"
          },
          "severityLevels": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.VulnerabilitySeverity"
            },
            "title": "severity levels available",
            "type": "array"
          },
          "labels": {
            "items": {
              "type": "string"
            },
            "title": "labels available",
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetBestPracticesReportFiltersResponse.Labels": {
        "properties": {
          "label": {
            "type": "string"
          },
          "values": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetBestPracticesReportResponse": {
        "properties": {
          "checks": {
            "description": "Filtered checks.",
            "items": {
              "$ref": "#/components/schemas/insights.v1.GetBestPracticesReportResponse.CheckItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetBestPracticesReportResponse.CheckItem": {
        "properties": {
          "ruleId": {
            "description": "Machine readable rule name.",
            "type": "string"
          },
          "name": {
            "description": "Human readable rule name.",
            "type": "string"
          },
          "provider": {
            "description": "Check provider.",
            "type": "string"
          },
          "labels": {
            "description": "Check labels.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "description": "Category of insight.",
            "type": "string"
          },
          "severityScore": {
            "format": "float",
            "title": "Rule's severity rating [0.0,10.0]. TODO: change to cvss3 calculation",
            "type": "number"
          },
          "severityLevel": {
            "$ref": "#/components/schemas/insights.v1.VulnerabilitySeverity"
          },
          "total": {
            "description": "Total number of objects that were checked.",
            "format": "int32",
            "type": "integer"
          },
          "failed": {
            "description": "Number of objects that did not pass the check.",
            "format": "int32",
            "type": "integer"
          },
          "excepted": {
            "format": "int32",
            "title": "Number of objects that did not pass but are excepted",
            "type": "integer"
          },
          "cvss3vector": {
            "description": "CVSSV3 vulnerability vector.",
            "type": "string"
          },
          "manual": {
            "title": "Is the check manual or automated",
            "type": "boolean"
          },
          "clusters": {
            "additionalProperties": {
              "$ref": "#/components/schemas/insights.v1.GetBestPracticesReportResponse.CheckItem.Cluster"
            },
            "title": "Check references for each cluster, keyed by cluster ID",
            "type": "object"
          },
          "clustersCount": {
            "description": "Count of clusters having this check.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.GetBestPracticesReportResponse.CheckItem.Cluster": {
        "properties": {
          "namespaces": {
            "items": {
              "type": "string"
            },
            "title": "list of namespaces having the check",
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetCheckExceptionsResponse": {
        "properties": {
          "groups": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.CheckExceptionsGroup"
            },
            "type": "array"
          },
          "version": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.GetCheckResourcesResponse": {
        "properties": {
          "resources": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.CheckClusterResource"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "previousCursor": {
            "type": "string"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.GetChecksResourcesRequest": {
        "properties": {
          "ruleIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "clusterIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "namespaces": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "excepted": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "insights.v1.GetChecksResourcesResponse": {
        "properties": {
          "resources": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ClusterResource"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetClusterSecuritySettingsResponse": {
        "properties": {
          "settings": {
            "$ref": "#/components/schemas/insights.v1.ClusterSecuritySettings"
          }
        },
        "type": "object"
      },
      "insights.v1.GetComplianceStandardsResponse": {
        "properties": {
          "standards": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.BestPracticesStandardInfo"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImageDetailsResponse": {
        "properties": {
          "architecture": {
            "type": "string"
          },
          "tags": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.Tag"
            },
            "type": "array"
          },
          "layers": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.Layer"
            },
            "type": "array"
          },
          "digest": {
            "type": "string"
          },
          "lastSeen": {
            "format": "date-time",
            "type": "string"
          },
          "bases": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.BaseImage"
            },
            "type": "array"
          },
          "clusters": {
            "format": "int32",
            "type": "integer"
          },
          "status": {
            "$ref": "#/components/schemas/insights.v1.ImageStatus"
          },
          "size": {
            "format": "uint64",
            "type": "string"
          },
          "vulnerabilities": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "type": "object"
          },
          "exceptedReason": {
            "type": "string"
          },
          "exceptedAt": {
            "format": "date-time",
            "type": "string"
          },
          "scanStatus": {
            "$ref": "#/components/schemas/insights.v1.ImageScanStatus"
          },
          "scanError": {
            "type": "string"
          },
          "inferredLanguage": {
            "type": "string"
          },
          "ticket": {
            "$ref": "#/components/schemas/insights.v1.Ticket"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImageDigestsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.GetContainerImageDigestsResponse.Image"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImageDigestsResponse.Image": {
        "properties": {
          "digest": {
            "type": "string"
          },
          "architecture": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/insights.v1.ImageStatus"
          },
          "vulnerabilities": {
            "format": "int32",
            "type": "integer"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "tags": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.Tag"
            },
            "type": "array"
          },
          "scanStatus": {
            "$ref": "#/components/schemas/insights.v1.ImageScanStatus"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImagePackageVulnerabilityDetailsResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "cwes": {
            "items": {
              "type": "string"
            },
            "title": "Example: cwe-503",
            "type": "array"
          },
          "severityLevel": {
            "$ref": "#/components/schemas/insights.v1.VulnerabilitySeverity"
          },
          "cvss": {
            "additionalProperties": {
              "$ref": "#/components/schemas/insights.v1.GetContainerImagePackageVulnerabilityDetailsResponse.CVSS"
            },
            "type": "object"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "package": {
            "$ref": "#/components/schemas/insights.v1.PackageDetails"
          },
          "affectedVersion": {
            "type": "string"
          },
          "patchedVersion": {
            "type": "string"
          },
          "sources": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "defaultSource": {
            "type": "string"
          },
          "affectedVersions": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ticket": {
            "$ref": "#/components/schemas/insights.v1.Ticket"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImagePackageVulnerabilityDetailsResponse.CVSS": {
        "properties": {
          "vectorv2": {
            "type": "string"
          },
          "scorev2": {
            "format": "float",
            "type": "number"
          },
          "vectorv3": {
            "type": "string"
          },
          "scorev3": {
            "format": "float",
            "type": "number"
          },
          "severityLevel": {
            "$ref": "#/components/schemas/insights.v1.VulnerabilitySeverity"
          }
        },
        "title": "Common Vulnerability Scoring System",
        "type": "object"
      },
      "insights.v1.GetContainerImagePackagesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ContainerImagePackage"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImageResourcesByManifestDigestResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.GetContainerImageResourcesByManifestDigestResponse.TagResource"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImageResourcesByManifestDigestResponse.TagResource": {
        "properties": {
          "tag": {
            "$ref": "#/components/schemas/insights.v1.Tag"
          },
          "affectedResources": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ClusterResource"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImageResourcesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ImageResource"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImageVulnerabilitiesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ContainerImageVulnerability"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImagesFiltersResponse": {
        "properties": {
          "labels": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.GetContainerImagesFiltersResponse.Labels"
            },
            "type": "array"
          },
          "namespaces": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "clusterIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImagesFiltersResponse.Labels": {
        "properties": {
          "label": {
            "type": "string"
          },
          "values": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetContainerImagesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ContainerImage"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.GetDailySummaryResponse": {
        "properties": {
          "vulnerabilities": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.VulnerabilitiesSummary"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetExceptedChecksResponse": {
        "properties": {
          "checks": {
            "description": "Excepted checks.",
            "items": {
              "$ref": "#/components/schemas/insights.v1.GetExceptedChecksResponse.Item"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetExceptedChecksResponse.Item": {
        "properties": {
          "ruleId": {
            "description": "Machine readable rule name.",
            "type": "string"
          },
          "name": {
            "description": "Human readable rule name.",
            "type": "string"
          },
          "labels": {
            "description": "Check labels.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "description": "Category of insight.",
            "type": "string"
          },
          "severityScore": {
            "format": "float",
            "title": "Rule's severity rating [0.0,10.0]. TODO: change to cvss3 calculation",
            "type": "number"
          },
          "severityLevel": {
            "$ref": "#/components/schemas/insights.v1.VulnerabilitySeverity"
          },
          "exceptedResources": {
            "format": "int32",
            "title": "Total number of resources that were excepted",
            "type": "integer"
          },
          "cvss3vector": {
            "description": "CVSSV3 vulnerability vector.",
            "type": "string"
          },
          "manual": {
            "title": "Is the check manual or automated",
            "type": "boolean"
          },
          "clusters": {
            "additionalProperties": {
              "$ref": "#/components/schemas/insights.v1.GetExceptedChecksResponse.Item.Cluster"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "insights.v1.GetExceptedChecksResponse.Item.Cluster": {
        "properties": {
          "namespaces": {
            "items": {
              "type": "string"
            },
            "title": "list of namespaces having the check",
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetImageRegistriesResponse": {
        "properties": {
          "registries": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.GetImageRegistriesResponse.ImageRegistry"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetImageRegistriesResponse.ImageRegistry": {
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.GetImageSecurityOverviewResponse": {
        "properties": {
          "criticalVulnerabilities": {
            "format": "int32",
            "title": "The number of critical image vulnerabilities",
            "type": "integer"
          },
          "criticalFixes": {
            "format": "int32",
            "title": "The number of fixes available for critical image vulnerabilities",
            "type": "integer"
          },
          "highVulnerabilities": {
            "format": "int32",
            "title": "The number of high image vulnerabilities",
            "type": "integer"
          },
          "highFixes": {
            "format": "int32",
            "title": "The number of fixes available for high image vulnerabilities",
            "type": "integer"
          },
          "mediumVulnerabilities": {
            "format": "int32",
            "title": "The number of medium image vulnerabilities",
            "type": "integer"
          },
          "mediumFixes": {
            "format": "int32",
            "title": "The number of fixes available for medium image vulnerabilities",
            "type": "integer"
          },
          "lowVulnerabilities": {
            "format": "int32",
            "title": "The number of low image vulnerabilities",
            "type": "integer"
          },
          "lowFixes": {
            "format": "int32",
            "title": "The number of fixes available for low image vulnerabilities",
            "type": "integer"
          },
          "totalImageRepositories": {
            "format": "int32",
            "title": "The total number of images",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.GetIntegrationResponse": {
        "properties": {
          "integration": {
            "$ref": "#/components/schemas/insights.v1.Integration"
          }
        },
        "type": "object"
      },
      "insights.v1.GetNodesOverviewResponse": {
        "properties": {
          "managedNodes": {
            "format": "int32",
            "title": "Number of managed nodes",
            "type": "integer"
          },
          "unmanagedNodes": {
            "format": "int32",
            "title": "Number of unmanaged nodes",
            "type": "integer"
          },
          "scheduledUpdates": {
            "format": "int32",
            "title": "Number of managed nodes with scheduled updates",
            "type": "integer"
          },
          "nodeAges": {
            "items": {
              "type": "string"
            },
            "title": "A list of node ages",
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetProjectsResponse": {
        "properties": {
          "items": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetResourceDetailsResponse": {
        "properties": {
          "checks": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.GetResourceDetailsResponse.Check"
            },
            "type": "array"
          },
          "details": {
            "$ref": "#/components/schemas/insights.v1.ClusterResource"
          }
        },
        "type": "object"
      },
      "insights.v1.GetResourceDetailsResponse.Check": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "standard": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.GetVulnerabilitiesMTTRResponse": {
        "properties": {
          "overall": {
            "$ref": "#/components/schemas/insights.v1.MTTRAggregate"
          },
          "byReason": {
            "description": "MTTR broken down by resolution reason.",
            "items": {
              "$ref": "#/components/schemas/insights.v1.MTTRByReason"
            },
            "type": "array"
          },
          "bySeverity": {
            "description": "MTTR broken down by severity bucket.",
            "items": {
              "$ref": "#/components/schemas/insights.v1.MTTRBySeverity"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetVulnerabilitiesOverviewResponse": {
        "properties": {
          "total": {
            "format": "int32",
            "type": "integer"
          },
          "critical": {
            "format": "int32",
            "type": "integer"
          },
          "high": {
            "format": "int32",
            "type": "integer"
          },
          "medium": {
            "format": "int32",
            "type": "integer"
          },
          "low": {
            "format": "int32",
            "type": "integer"
          },
          "none": {
            "format": "int32",
            "type": "integer"
          },
          "na": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.GetVulnerabilitiesTrendResponse": {
        "properties": {
          "timeseries": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.GetVulnerabilitiesTrendResponse.Items"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.GetVulnerabilitiesTrendResponse.Items": {
        "properties": {
          "time": {
            "format": "date-time",
            "type": "string"
          },
          "vulnsTotal": {
            "format": "int64",
            "type": "integer"
          },
          "vulnsCritical": {
            "format": "int64",
            "type": "integer"
          },
          "vulnsHigh": {
            "format": "int64",
            "type": "integer"
          },
          "vulnsMedium": {
            "format": "int64",
            "type": "integer"
          },
          "vulnsLow": {
            "format": "int64",
            "type": "integer"
          },
          "vulnsNone": {
            "format": "int64",
            "type": "integer"
          },
          "clustersCount": {
            "format": "int64",
            "type": "integer"
          },
          "workloadsCount": {
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.ImageExceptionChangesRequest": {
        "properties": {
          "added": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ExceptedImage"
            },
            "type": "array"
          },
          "deleted": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ExceptedImage"
            },
            "type": "array"
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "added",
          "deleted"
        ],
        "type": "object"
      },
      "insights.v1.ImageExceptionChangesResponse": {
        "properties": {
          "deleted": {
            "format": "int64",
            "type": "integer"
          },
          "created": {
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.ImageResource": {
        "properties": {
          "name": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "cluster": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.ImageScanStatus": {
        "default": "Unknown",
        "enum": [
          "Unknown",
          "Pending",
          "Failed",
          "Completed"
        ],
        "title": "ImageScanStatus informs the user whether the image is being scanned or failed scanning or completed scanning",
        "type": "string"
      },
      "insights.v1.ImageStatus": {
        "default": "NotRunning",
        "enum": [
          "NotRunning",
          "Running"
        ],
        "title": "ImagesStatus informs the user whether the image is used or not",
        "type": "string"
      },
      "insights.v1.IngestAgentLogResponse": {
        "type": "object"
      },
      "insights.v1.Integration": {
        "properties": {
          "id": {
            "title": "Integration ID",
            "type": "string"
          },
          "name": {
            "title": "Integration name",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/insights.v1.Integration.Type"
          },
          "metadata": {
            "description": "JSON encoded integration metadata.",
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "createdAt": {
            "description": "Creation timestamp.",
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "description": "Update timestamp.",
            "format": "date-time",
            "type": "string"
          },
          "url": {
            "title": "Integration url",
            "type": "string"
          },
          "username": {
            "title": "Integration username",
            "type": "string"
          },
          "projectKeys": {
            "items": {
              "type": "string"
            },
            "title": "Integration project keys",
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.Integration.Type": {
        "default": "UNKNOWN",
        "enum": [
          "UNKNOWN",
          "JIRA"
        ],
        "title": "Integration type",
        "type": "string"
      },
      "insights.v1.Layer": {
        "properties": {
          "digest": {
            "type": "string"
          },
          "command": {
            "type": "string"
          },
          "size": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.ListClusterSecuritySettingsResponse": {
        "properties": {
          "clusters": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ClusterSecuritySettings"
            },
            "type": "array"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.ListIntegrationsResponse": {
        "properties": {
          "integrations": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.Integration"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.ListVulnerabilitiesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ListVulnerabilitiesResponse.Vulnerability"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "previousCursor": {
            "type": "string"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.ListVulnerabilitiesResponse.Vulnerability": {
        "properties": {
          "id": {
            "title": "Depends on a security advisory",
            "type": "string"
          },
          "component": {
            "type": "string"
          },
          "affectedImages": {
            "format": "int32",
            "type": "integer"
          },
          "affectedWorkloads": {
            "format": "int32",
            "type": "integer"
          },
          "risks": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.Risk"
            },
            "type": "array"
          },
          "patchAvailability": {
            "$ref": "#/components/schemas/insights.v1.ListVulnerabilitiesResponse.Vulnerability.Fix"
          },
          "score": {
            "$ref": "#/components/schemas/insights.v1.ListVulnerabilitiesResponse.Vulnerability.Score"
          }
        },
        "type": "object"
      },
      "insights.v1.ListVulnerabilitiesResponse.Vulnerability.Fix": {
        "default": "NOT_PROVIDED",
        "enum": [
          "NOT_PROVIDED",
          "NO",
          "PARTIAL",
          "YES"
        ],
        "title": "Fix availability for a given vulnerability",
        "type": "string"
      },
      "insights.v1.ListVulnerabilitiesResponse.Vulnerability.Score": {
        "properties": {
          "epss": {
            "format": "float",
            "type": "number"
          },
          "cvss": {
            "additionalProperties": {
              "format": "float",
              "type": "number"
            },
            "title": "version -> score",
            "type": "object"
          }
        },
        "type": "object"
      },
      "insights.v1.ListWorkloadsResponse": {
        "properties": {
          "resources": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ClusterResource"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "insights.v1.LogEvent": {
        "properties": {
          "level": {
            "type": "string"
          },
          "time": {
            "format": "date-time",
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "fields": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "insights.v1.MTTRAggregate": {
        "description": "MTTRAggregate represents a single MTTR aggregate.\nAll MTTR values are rounded to whole seconds.",
        "properties": {
          "closedCount": {
            "description": "Number of resolved vulnerability episodes in this bucket.",
            "format": "uint64",
            "type": "string"
          },
          "sumTtrSeconds": {
            "description": "Sum of time to resolve in whole seconds.",
            "format": "uint64",
            "type": "string"
          },
          "mttr": {
            "description": "Mean time to resolve in whole seconds.",
            "type": "string"
          },
          "clustersCount": {
            "description": "Distinct clusters involved in these resolutions.",
            "format": "uint64",
            "type": "string"
          },
          "workloadsCount": {
            "description": "Distinct workloads involved in these resolutions.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.MTTRByReason": {
        "description": "MTTRByReason is MTTR broken down by resolution_reason.",
        "properties": {
          "reason": {
            "$ref": "#/components/schemas/insights.v1.VulnerabilityResolutionReason"
          },
          "aggregate": {
            "$ref": "#/components/schemas/insights.v1.MTTRAggregate"
          }
        },
        "type": "object"
      },
      "insights.v1.MTTRBySeverity": {
        "description": "MTTRBySeverity is MTTR broken down by severity bucket.",
        "properties": {
          "severity": {
            "$ref": "#/components/schemas/insights.v1.VulnerabilitySeverity"
          },
          "aggregate": {
            "$ref": "#/components/schemas/insights.v1.MTTRAggregate"
          }
        },
        "type": "object"
      },
      "insights.v1.Package": {
        "properties": {
          "name": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "title": "Package is used when showing a list of items",
        "type": "object"
      },
      "insights.v1.PackageDetails": {
        "properties": {
          "name": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "paths": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "ticket": {
            "$ref": "#/components/schemas/insights.v1.Ticket"
          }
        },
        "title": "Package details is used when showing a single item",
        "type": "object"
      },
      "insights.v1.PostAgentTelemetryResponse": {
        "properties": {
          "disabledFeatures": {
            "items": {
              "type": "string"
            },
            "title": "disabled features",
            "type": "array"
          },
          "fullResync": {
            "title": "indicates if full cluster resource resync is required",
            "type": "boolean"
          },
          "nodeIds": {
            "items": {
              "type": "string"
            },
            "title": "indicates already kube-benched nodes",
            "type": "array"
          },
          "enforcedRules": {
            "items": {
              "type": "string"
            },
            "title": "rules that should be enforced by kvisor",
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.PreviewExceptionGroupsResourcesResponse": {
        "properties": {
          "resources": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.ClusterResource"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.Risk": {
        "default": "NOT_PROVIDED",
        "description": "- NOT_PROVIDED: Indicates a bug on the backend",
        "enum": [
          "NOT_PROVIDED",
          "PUBLICLY_REACHABLE",
          "EXPLOIT_AVAILABLE",
          "ACTIVELY_EXPLOITED"
        ],
        "title": "Risk associated with a specific vulnerability",
        "type": "string"
      },
      "insights.v1.SaveCheckExceptionsFiltersResponse": {
        "properties": {
          "kinds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.SaveCheckExceptionsResponse": {
        "type": "object"
      },
      "insights.v1.ScannedImage": {
        "properties": {
          "id": {
            "type": "string"
          },
          "architecture": {
            "type": "string"
          },
          "resourceIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.ScheduleBestPracticesScanRequest": {
        "properties": {
          "clusterId": {
            "title": "(required) ID of cluster",
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.ScheduleBestPracticesScanResponse": {
        "type": "object"
      },
      "insights.v1.SecurityAgentFeatureStatus": {
        "default": "SECURITY_AGENT_FEATURE_STATUS_ACTIVE",
        "description": "- SECURITY_AGENT_FEATURE_STATUS_ACTIVE: Configured features are synchronized to the security agent\n - SECURITY_AGENT_FEATURE_STATUS_UPDATING: Configured features are not yet synchronized to the security agent and\nare currently being updated",
        "enum": [
          "SECURITY_AGENT_FEATURE_STATUS_ACTIVE",
          "SECURITY_AGENT_FEATURE_STATUS_UPDATING"
        ],
        "title": "Decribes the status of security agent feature synchronization in a cluster",
        "type": "string"
      },
      "insights.v1.SecurityAgentStatus": {
        "default": "AGENT_STATUS_UNKNOWN",
        "description": "SecurityAgentStatus represents the status of a security agent.\n\n - AGENT_STATUS_UNKNOWN: Unknown status\n - ENABLED: The agent is enabled\n - DISABLED: The agent is disabled\n - UPDATE_NEEDED: The agent requires an update\n - NOT_RESPONDING: The agent is not responding",
        "enum": [
          "AGENT_STATUS_UNKNOWN",
          "ENABLED",
          "DISABLED",
          "UPDATE_NEEDED",
          "NOT_RESPONDING"
        ],
        "type": "string"
      },
      "insights.v1.SecurityFeature": {
        "default": "SECURITY_FEATURE_UNKNOWN",
        "description": "- SECURITY_FEATURE_UNKNOWN: Unknown security feature\n - IMAGE_SCANNING: Image scanning is enabled on the cluster\n - CONFIGURATION_SCANNING: Configuration scanning is enabled on the cluster\n - RUNTIME_SECURITY: Runtime security is enabled on the cluster\n - NETFLOW: Netflow collection is enabled on the cluster",
        "enum": [
          "SECURITY_FEATURE_UNKNOWN",
          "IMAGE_SCANNING",
          "CONFIGURATION_SCANNING",
          "RUNTIME_SECURITY",
          "NETFLOW"
        ],
        "title": "SecurityFeature represents a security feature that is enabled on a cluster",
        "type": "string"
      },
      "insights.v1.Tag": {
        "properties": {
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.Ticket": {
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.UpdateIntegrationRequest.Jira": {
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "projectKeys": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "username": {
            "type": "string"
          },
          "token": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "insights.v1.UpdateIntegrationRequest.Payload": {
        "properties": {
          "jira": {
            "$ref": "#/components/schemas/insights.v1.UpdateIntegrationRequest.Jira"
          }
        },
        "type": "object"
      },
      "insights.v1.UpdateIntegrationResponse": {
        "properties": {
          "integration": {
            "$ref": "#/components/schemas/insights.v1.Integration"
          }
        },
        "type": "object"
      },
      "insights.v1.VulnerabilitiesSummary": {
        "properties": {
          "name": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "clusters": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.Cluster"
            },
            "type": "array"
          },
          "cves": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.CVE"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "insights.v1.VulnerabilityResolutionReason": {
        "default": "VULNERABILITY_RESOLUTION_REASON_UNSPECIFIED",
        "description": "Resolution reason used when computing MTTR.",
        "enum": [
          "VULNERABILITY_RESOLUTION_REASON_UNSPECIFIED",
          "VULNERABILITY_RESOLUTION_REASON_WORKLOAD_INACTIVE",
          "VULNERABILITY_RESOLUTION_REASON_IMAGE_CHANGED_TO_OLDER",
          "VULNERABILITY_RESOLUTION_REASON_IMAGE_CHANGED_TO_NEWER"
        ],
        "type": "string"
      },
      "insights.v1.VulnerabilitySeverity": {
        "default": "any",
        "description": "Each invariant is defined in camel case in order to avoid breaking changes\nwhen replacing string fields in existing responses with this enum.\nCamel case was chosen because message field names in generated code are always in\ncamel case and there is no way to change that. On the other hand, enum field names\nare carried over to the generated code without any modifications.",
        "enum": [
          "any",
          "none",
          "low",
          "medium",
          "high",
          "critical",
          "notAvailable"
        ],
        "type": "string"
      },
      "inventoryblacklist.v1.AddBlacklistRequest": {
        "description": "Defines request object to add autoscaler inventory's blacklist item.",
        "properties": {
          "organizationId": {
            "description": "Organization id for which the instance type or family is blacklisted.",
            "nullable": true,
            "type": "string"
          },
          "clusterId": {
            "description": "Cluster id, that will only be set if instance type or family is blacklisted for specific cluster.",
            "nullable": true,
            "type": "string"
          },
          "instanceFamily": {
            "description": "Instance type family name, such as: 'c2d'.\nEither this or instance type must be set.",
            "nullable": true,
            "type": "string"
          },
          "instanceType": {
            "description": "Instance type name, such as: 'c2d-highmem-32'.\nEither this or instance family must be set.",
            "nullable": true,
            "type": "string"
          },
          "expiresAt": {
            "description": "The date time when the disabling is due to be expired.\nThis is for the situations when disabling is done by the platform due to\ncloud availability.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "reason": {
            "description": "Reason for disabling instance type or family.",
            "type": "string"
          },
          "lifecycle": {
            "$ref": "#/components/schemas/inventoryblacklist.v1.InventoryBlacklistLifecycle"
          }
        },
        "type": "object"
      },
      "inventoryblacklist.v1.AddBlacklistResponse": {
        "description": "Defines response object of added autoscaler inventory's blacklist item.",
        "properties": {
          "id": {
            "description": "The ID of the blacklisted item.",
            "type": "string"
          },
          "organizationId": {
            "description": "Organization id for which the instance type or family is blacklisted.\nEither this or cluster id must be set.",
            "type": "string"
          },
          "clusterId": {
            "description": "Cluster id, that will only be set if instance type or family is blacklisted for specific cluster.\nEither this or organization id must be set.",
            "nullable": true,
            "type": "string"
          },
          "disabledAt": {
            "description": "Organization id for which the instance type or family is blacklisted.",
            "format": "date-time",
            "type": "string"
          },
          "expiresAt": {
            "description": "The date time when the disabling is due to be expired.\nThis is for the situations when disabling is done by the platform due to cloud availability.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "instanceFamily": {
            "description": "Instance type family name, such as: 'c2d'.\nEither this or instance type must be set.",
            "nullable": true,
            "type": "string"
          },
          "instanceType": {
            "description": "Instance type name, such as: 'c2d-highmem-32'.\nEither this or instance family must be set.",
            "nullable": true,
            "type": "string"
          },
          "reason": {
            "description": "Reason for disabling instance type or family.",
            "type": "string"
          },
          "lifecycle": {
            "$ref": "#/components/schemas/inventoryblacklist.v1.InventoryBlacklistLifecycle"
          }
        },
        "type": "object"
      },
      "inventoryblacklist.v1.InventoryBlacklistItem": {
        "description": "Defines BlacklistItem, which describes the properties for blacklisted instance type or family.",
        "properties": {
          "instanceType": {
            "description": "Instance type name, such as: 'c2d-highmem-32'.\nEither this or instance family must be set.",
            "nullable": true,
            "type": "string"
          },
          "instanceFamily": {
            "description": "Instance type family name, such as: 'c2d'.\nEither this or instance type must be set.",
            "nullable": true,
            "type": "string"
          },
          "reason": {
            "description": "Reason for disabling instance type or family.",
            "type": "string"
          },
          "organizationId": {
            "description": "Organization id for which the instance type or family is blacklisted.",
            "type": "string"
          },
          "clusterId": {
            "description": "Cluster id, that will only be set if instance type or family is blacklisted for specific cluster.",
            "nullable": true,
            "type": "string"
          },
          "disabledAt": {
            "description": "The date time when the instance type or family was disabled.",
            "format": "date-time",
            "type": "string"
          },
          "expiresAt": {
            "description": "The date time when the disabling is due to be expired.\nThis is for the situations when disabling is done by the platform due to cloud availability.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "lifecycle": {
            "$ref": "#/components/schemas/inventoryblacklist.v1.InventoryBlacklistLifecycle"
          }
        },
        "type": "object"
      },
      "inventoryblacklist.v1.InventoryBlacklistLifecycle": {
        "default": "all",
        "description": "Defines inventory blacklist instance type lifecycles.\n\n - all: All instance type lifecycles.\n - spot: Spot instance type lifecycle.\n - on_demand: On-demand instance type lifecycle.",
        "enum": [
          "all",
          "spot",
          "on_demand"
        ],
        "type": "string"
      },
      "inventoryblacklist.v1.ListBlacklistsResponse": {
        "description": "Defines response object of fetched cluster autoscaler blacklist.",
        "properties": {
          "items": {
            "description": "Blacklisted instances of inventory items for that cluster or organization.",
            "items": {
              "$ref": "#/components/schemas/inventoryblacklist.v1.InventoryBlacklistItem"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "inventoryblacklist.v1.RemoveBlacklistRequest": {
        "description": "Defines request object to remove autoscaler inventory's blacklisted items.",
        "properties": {
          "organizationId": {
            "description": "Organization id for which the instance type or family is blacklisted.",
            "nullable": true,
            "type": "string"
          },
          "clusterId": {
            "description": "Cluster id, that will only be set if instance type or family is\nblacklisted for specific cluster.",
            "nullable": true,
            "type": "string"
          },
          "instanceFamily": {
            "description": "Organization id for which the instance type or family is blacklisted.\nInstance type family name, such as: 'c2d'.\nEither this or instance type must be set.",
            "nullable": true,
            "type": "string"
          },
          "instanceType": {
            "description": "Instance type name, such as: 'c2d-highmem-32'.\nEither this or instance family must be set.",
            "nullable": true,
            "type": "string"
          },
          "lifecycle": {
            "$ref": "#/components/schemas/inventoryblacklist.v1.InventoryBlacklistLifecycle"
          }
        },
        "type": "object"
      },
      "inventoryblacklist.v1.RemoveBlacklistResponse": {
        "description": "Defines response object of removed autoscaler inventory's blacklist response.",
        "type": "object"
      },
      "k8s_selector.v1.KubernetesNodeAffinity": {
        "properties": {
          "key": {
            "type": "string"
          },
          "values": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "operator": {
            "$ref": "#/components/schemas/k8s_selector.v1.Operator"
          }
        },
        "required": [
          "key",
          "operator",
          "values"
        ],
        "type": "object"
      },
      "k8s_selector.v1.Operator": {
        "default": "IN",
        "description": "- IN: In values\n - NotIn: Not in values\n - Exists: Just exist\n - DoesNotExist: Values does not exist\n - Gt: Greater then\n - Lt: Lower then",
        "enum": [
          "IN",
          "in",
          "NotIn",
          "notIn",
          "Exists",
          "exists",
          "DoesNotExist",
          "doesNotExist",
          "Gt",
          "gt",
          "Lt",
          "lt"
        ],
        "title": "Selection operator",
        "type": "string"
      },
      "nodeconfig.v1.AKSConfig": {
        "properties": {
          "maxPodsPerNode": {
            "description": "Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node.\nDefaults to 30. Values between 10 and 250 are allowed.\nSetting values above 110 will require specific CNI configuration. Please refer to Microsoft documentation for additional guidance.",
            "format": "int32",
            "type": "integer"
          },
          "osDiskType": {
            "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.OsDiskType"
          },
          "imageFamily": {
            "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.ImageFamily"
          },
          "loadBalancers": {
            "description": "List of load balancers to attach nodes to. Populating this field disables Cast's default load balancer autodiscovery mechanism.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.LoadBalancers"
            },
            "type": "array"
          },
          "osDiskEphemeral": {
            "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.OsDiskEphemeral"
          },
          "publicIp": {
            "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.PublicIP"
          },
          "networkSecurityGroupId": {
            "description": "The ID of the network security group. If not provided the SG from `castpool` will be used.",
            "nullable": true,
            "type": "string"
          },
          "applicationSecurityGroupIds": {
            "description": "Specifies an array of references to application security group.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "podSubnetId": {
            "description": "ID of Subnet to use as a POD CIDR.",
            "nullable": true,
            "type": "string"
          },
          "enableEncryptionAtHost": {
            "nullable": true,
            "title": "Enables encryption at host for nodes provisioned by CAST AI.\nSee https://learn.microsoft.com/en-us/azure/virtual-machines/disk-encryption#encryption-at-host---end-to-end-encryption-for-your-vm-data",
            "type": "boolean"
          },
          "acceleratedNetworking": {
            "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.AcceleratedNetworkingMode"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.AKSConfig.AcceleratedNetworkingMode": {
        "default": "ACCELERATED_NETWORKING_MODE_UNSPECIFIED",
        "description": "AcceleratedNetworkingMode controls SR-IOV accelerated networking on the node NIC.\n\n - ACCELERATED_NETWORKING_MODE_UNSPECIFIED: Enable accelerated networking when the VM SKU supports it.\n - ACCELERATED_NETWORKING_MODE_DISABLED: Force accelerated networking off regardless of SKU support.",
        "enum": [
          "ACCELERATED_NETWORKING_MODE_UNSPECIFIED",
          "ACCELERATED_NETWORKING_MODE_DISABLED"
        ],
        "type": "string"
      },
      "nodeconfig.v1.AKSConfig.ImageFamily": {
        "default": "FAMILY_UNSPECIFIED",
        "description": "List of supported image families (OSes) for AKS.",
        "enum": [
          "FAMILY_UNSPECIFIED",
          "FAMILY_UBUNTU",
          "family_ubuntu",
          "FAMILY_AZURE_LINUX",
          "family_azure_linux",
          "FAMILY_WINDOWS_2019",
          "family_windows_2019",
          "FAMILY_WINDOWS_2022",
          "family_windows_2022"
        ],
        "type": "string"
      },
      "nodeconfig.v1.AKSConfig.LoadBalancers": {
        "properties": {
          "name": {
            "description": "Deprecated: Use ID instead\nName of the load balancer. It is assumed to reside in the cluster's infrastructure resource group.\nOnly available for backwards compatibility and only accounted for in IP-based backend pools.",
            "type": "string",
            "deprecated": true
          },
          "id": {
            "description": "The full ID of the load balancer in Azure.\nFor backwards compatibility, the field is not required but it should be treated as required for any new clients.",
            "type": "string"
          },
          "ipBasedBackendPools": {
            "description": "List of IP-based backend pools to attach each node's IP to.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.LoadBalancers.IPBasedBackendPool"
            },
            "type": "array"
          },
          "nicBasedBackendPools": {
            "description": "List of NIC-based backend pools to attach each node's NIC to.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.LoadBalancers.NICBasedBackendPool"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.AKSConfig.LoadBalancers.IPBasedBackendPool": {
        "properties": {
          "name": {
            "description": "Name of the backend pool as defined in Azure. Backend pools must have unique names within the load balancer.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.AKSConfig.LoadBalancers.NICBasedBackendPool": {
        "properties": {
          "name": {
            "description": "Name of the backend pool as defined in Azure. Backend pools must have unique names within the load balancer.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.AKSConfig.OsDiskEphemeral": {
        "properties": {
          "placement": {
            "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.OsDiskEphemeral.Placement"
          },
          "cacheType": {
            "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.OsDiskEphemeral.CacheType"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.AKSConfig.OsDiskEphemeral.CacheType": {
        "default": "UNSPECIFIED",
        "description": "Deprecated: This message exists for compatibility reasons only.",
        "enum": [
          "UNSPECIFIED",
          "READ_ONLY",
          "READ_WRITE"
        ],
        "type": "string",
        "deprecated": true
      },
      "nodeconfig.v1.AKSConfig.OsDiskEphemeral.Placement": {
        "default": "PLACEMENT_UNSPECIFIED",
        "description": "Placement of the ephemeral OS disk. If unspecified, the default value is picked based on VM SKU.\nSee https://learn.microsoft.com/en-us/azure/virtual-machines/ephemeral-os-disks#placement-options-for-ephemeral-os-disks for details.",
        "enum": [
          "PLACEMENT_UNSPECIFIED",
          "PLACEMENT_RESOURCE_DISK",
          "PLACEMENT_CACHE_DISK",
          "PLACEMENT_NVME_DISK"
        ],
        "type": "string"
      },
      "nodeconfig.v1.AKSConfig.OsDiskType": {
        "default": "OS_DISK_TYPE_UNSPECIFIED",
        "description": "OsDiskType represent possible values for AKS node os disk type(this is subset of all available Azure disk types).",
        "enum": [
          "OS_DISK_TYPE_UNSPECIFIED",
          "OS_DISK_TYPE_STANDARD",
          "OS_DISK_TYPE_STANDARD_SSD",
          "OS_DISK_TYPE_PREMIUM_SSD"
        ],
        "type": "string"
      },
      "nodeconfig.v1.AKSConfig.PublicIP": {
        "properties": {
          "ipPrefix": {
            "description": "The ip_prefix from which to allocate publicIP addresses.",
            "nullable": true,
            "type": "string"
          },
          "tags": {
            "description": "The list of IP tags associated with the public IP address.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig.PublicIP.AKSPublicIPTags"
            },
            "type": "array"
          },
          "idleTimeoutInMinutes": {
            "description": "The idle timeout of the public IP address.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.AKSConfig.PublicIP.AKSPublicIPTags": {
        "properties": {
          "ipTagType": {
            "description": "Possible values are: 'FirstPartyUsage', 'NetworkDomain', 'RoutingPreference'.",
            "type": "string"
          },
          "tagValue": {
            "description": "IP tag associated with the public IP. Example: SQL, Storage etc.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.AmiSelector": {
        "properties": {
          "amiId": {
            "description": "AMI ID to be used for provisioned nodes.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.ContainerRuntime": {
        "default": "UNSPECIFIED",
        "description": "List of supported container runtimes kubelet should use.",
        "enum": [
          "UNSPECIFIED",
          "unspecified",
          "DOCKERD",
          "dockerd",
          "CONTAINERD",
          "containerd"
        ],
        "type": "string"
      },
      "nodeconfig.v1.CreateConfigurationResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/nodeconfig.v1.NodeConfiguration"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.DeleteConfigurationResponse": {
        "type": "object"
      },
      "nodeconfig.v1.EC2VolumesConfig": {
        "properties": {
          "deviceName": {
            "description": "Node's security groups.",
            "type": "string"
          },
          "type": {
            "description": "EBS volume type to be used for provisioned nodes. Defaults to gp3.",
            "type": "string"
          },
          "size": {
            "description": "EBS volume size in GiB to be used for provisioned nodes.",
            "format": "int32",
            "type": "integer"
          },
          "iops": {
            "description": "EBS volume IOPS value to be used for provisioned nodes.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "throughput": {
            "description": "EBS volume throughput in MiB/s to be used for provisioned nodes.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "encrypted": {
            "default": false,
            "description": "Whether device is encrypted.",
            "type": "boolean"
          },
          "kmsKeyArn": {
            "description": "KMS key for encrypting EBS volumes.\nAccepts any AWS-supported format (ARN, Key ID, Alias, or Alias ARN).\nSupports both single-region and multi-region keys (mrk- prefix).",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "deviceName"
        ],
        "type": "object"
      },
      "nodeconfig.v1.EKSConfig": {
        "properties": {
          "securityGroups": {
            "description": "Cluster's security groups configuration.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dnsClusterIp": {
            "description": "Comma-separated IP addresses to use for DNS queries within the cluster. Defaults to 10.100.0.10 or 172.20.0.10 based on the primary interface's IP address.",
            "nullable": true,
            "type": "string"
          },
          "instanceProfileArn": {
            "description": "Cluster's instance profile ARN used for CAST provisioned nodes.",
            "type": "string"
          },
          "keyPairId": {
            "description": "AWS key pair ID to be used for provisioned nodes. Has priority over sshPublicKey.",
            "nullable": true,
            "type": "string"
          },
          "volumeType": {
            "description": "EBS volume type to be used for provisioned nodes. Defaults to gp3.",
            "nullable": true,
            "type": "string"
          },
          "volumeIops": {
            "description": "EBS volume IOPS value to be used for provisioned nodes.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "volumeThroughput": {
            "description": "EBS volume throughput in MiB/s to be used for provisioned nodes.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "imdsV1": {
            "default": true,
            "nullable": true,
            "title": "Allow IMDSv1, the default is true",
            "type": "boolean"
          },
          "imdsHopLimit": {
            "default": 2,
            "format": "int32",
            "nullable": true,
            "title": "Allow configure the IMDSv2 hop limit, the default is 2",
            "type": "integer"
          },
          "volumeKmsKeyArn": {
            "nullable": true,
            "title": "KMS key for encrypting EBS volumes attached to the node.\nAccepts any AWS-supported format:\n- Key ARN: arn:aws:kms:us-east-1:012345678910:key/12345678-1234-1234-1234-123456789012\n- Multi-region Key ARN: arn:aws:kms:us-east-1:012345678910:key/mrk-36c6b62059f14982a99a5c6825b692fd\n- Key ID: 12345678-1234-1234-1234-123456789012\n- Multi-region Key ID: mrk-36c6b62059f14982a99a5c6825b692fd\n- Alias: alias/ExampleAlias\n- Alias ARN: arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias",
            "type": "string"
          },
          "targetGroup": {
            "$ref": "#/components/schemas/nodeconfig.v1.TargetGroup"
          },
          "maxPodsPerNodeFormula": {
            "nullable": true,
            "title": "Formula to calculate maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node.\nAvailable variables:\n- NUM_IP_PER_PREFIX\n- NUM_MAX_NET_INTERFACES - instance parameter\n- NUM_IP_PER_INTERFACE - instance parameter\n- NUM_CPU -instance parameter\n- NUM_RAM_GB - instance parameter",
            "type": "string"
          },
          "ipsPerPrefix": {
            "default": 16,
            "format": "int32",
            "nullable": true,
            "title": "Number of IPs per prefix to be used for calculating max pods. Defaults to 16. More info: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-prefix-eni.html#ec2-prefix-basics",
            "type": "integer"
          },
          "imageFamily": {
            "$ref": "#/components/schemas/nodeconfig.v1.EKSConfig.ImageFamily"
          },
          "targetGroups": {
            "description": "TargetGroups defines a list of load balancer target groups to register cluster instances into.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.TargetGroup"
            },
            "type": "array"
          },
          "nodeGroupArn": {
            "description": "Is used to create temporary cloud native pools.",
            "nullable": true,
            "type": "string"
          },
          "threadsPerCpu": {
            "description": "Specifies how many hardware threads are allocated per physical CPU core.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "instanceProfileArn"
        ],
        "type": "object"
      },
      "nodeconfig.v1.EKSConfig.ImageFamily": {
        "default": "FAMILY_UNSPECIFIED",
        "description": "List of supported image families (OSes) for EKS.\n\n - FAMILY_AL2: Amazon Linux 2 (https://aws.amazon.com/amazon-linux-2/).\n - FAMILY_AL2023: Amazon Linux 2023 (https://aws.amazon.com/linux/amazon-linux-2023/).\n - FAMILY_BOTTLEROCKET: Bottlerocket (https://aws.amazon.com/bottlerocket/).",
        "enum": [
          "FAMILY_UNSPECIFIED",
          "FAMILY_AL2",
          "family_al2",
          "FAMILY_AL2023",
          "family_al2023",
          "FAMILY_BOTTLEROCKET",
          "family_bottlerocket"
        ],
        "type": "string"
      },
      "nodeconfig.v1.FallbackConfiguration": {
        "description": "Contains the configuration of fallback node pools.",
        "properties": {
          "fallbackInstanceType": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.GKEConfig": {
        "properties": {
          "maxPodsPerNode": {
            "description": "Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 110.\nFor Standard GKE clusters, you can run a maximum of 256 Pods on a node with a /23 range, not 512 as you might expect.\nThis is done to provides a buffer so that Pods don't become unschedulable due to a\ntransient lack of IP addresses in the Pod IP range for a given node.\nFor all ranges, at most half as many Pods can be scheduled as IP addresses in the range.",
            "format": "int32",
            "type": "integer"
          },
          "maxPodsPerNodeFormula": {
            "description": "Max Pods Per Node Formula to calculate the maximum number of pods that can be run on a node.\nThis affects how many IP addresses a node will need.\nAvailable variables:\n- NUM_CPU -instance parameter\n- NUM_RAM_GB - instance parameter\nThis formula reserves Pod CIDR space the same way GKE does. GKE doubles the max-pods-per-node value, then rounds up\nto the next power of 2 to determine the CIDR size. This reduces IP address reuse as Pods are created and deleted.\nFor example: if max pods per node is 11, you need 22 IPs. The next power of 2 is 32, so the Pod CIDR will be /27.\nMore info: https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr#cidr_ranges_for_clusters .",
            "type": "string"
          },
          "networkTags": {
            "description": "Network tags to be added on a VM. Each tag must be 1-63 characters long, start with a lowercase letter and end with either a number or a lowercase letter.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "diskType": {
            "description": "Type of boot disk attached to the node. For available types please read official GCP docs(https://cloud.google.com/compute/docs/disks#pdspecs).",
            "nullable": true,
            "type": "string"
          },
          "zones": {
            "description": "Zones is a preferred list of zones to choose from when adding a node.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "useEphemeralStorageLocalSsd": {
            "description": "Flag indicating whether to use local SSD storage for the node. Defaults to false.",
            "type": "boolean"
          },
          "loadBalancers": {
            "description": "List of load balancers to be used for the cluster.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.GKEConfig.LoadBalancers"
            },
            "type": "array"
          },
          "secondaryIpRange": {
            "$ref": "#/components/schemas/nodeconfig.v1.SecondaryIPRange"
          },
          "fallbackConfiguration": {
            "$ref": "#/components/schemas/nodeconfig.v1.FallbackConfiguration"
          },
          "onHostMaintenance": {
            "$ref": "#/components/schemas/nodeconfig.v1.GKEConfig.OnHostMaintenance"
          },
          "minCpuPlatform": {
            "description": "Minimum CPU platform for the node (e.g., \"Intel Ice Lake\", \"AMD Milan\").",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.GKEConfig.LoadBalancers": {
        "properties": {
          "targetBackendPools": {
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.GKEConfig.LoadBalancers.TargetBackendPools"
            },
            "type": "array"
          },
          "unmanagedInstanceGroups": {
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.GKEConfig.LoadBalancers.UnmanagedInstanceGroups"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.GKEConfig.LoadBalancers.TargetBackendPools": {
        "properties": {
          "name": {
            "description": "Name of the target backend pool.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.GKEConfig.LoadBalancers.UnmanagedInstanceGroups": {
        "properties": {
          "name": {
            "description": "Name of the unmanaged instance group.",
            "type": "string"
          },
          "zone": {
            "description": "Zone of the unmanaged instance group.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.GKEConfig.OnHostMaintenance": {
        "default": "MIGRATE",
        "description": "Maintenance behavior of the instances.",
        "enum": [
          "MIGRATE",
          "migrate",
          "TERMINATE",
          "terminate"
        ],
        "type": "string"
      },
      "nodeconfig.v1.GetConfigurationResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/nodeconfig.v1.NodeConfiguration"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.GetSuggestedConfigurationResponse": {
        "properties": {
          "securityGroups": {
            "description": "All clusters Security Groups in the cluster VPC.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.SecurityGroup"
            },
            "type": "array"
          },
          "subnets": {
            "description": "All cluster routable subnets.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.SubnetDetails"
            },
            "type": "array"
          },
          "instanceProfiles": {
            "description": "All instance profile ARNs available in the AWS account.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.InstanceProfile"
            },
            "type": "array"
          }
        },
        "title": "GetSuggestedConfigurationResponse returns suggested configuration based on existing cloud resources",
        "type": "object"
      },
      "nodeconfig.v1.InstanceProfile": {
        "properties": {
          "arn": {
            "description": "ARN of the instance profile.",
            "type": "string"
          },
          "name": {
            "description": "Name of the instance profile.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.KOPSConfig": {
        "properties": {
          "keyPairId": {
            "description": "AWS key pair ID to be used for provisioned nodes. Has priority over sshPublicKey.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.ListConfigurationsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.NodeConfiguration"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.ListMaxPodsPresetsResponse": {
        "properties": {
          "presets": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.NewNodeConfiguration": {
        "properties": {
          "name": {
            "description": "The name of the node configuration.",
            "type": "string"
          },
          "diskCpuRatio": {
            "description": "Disk to CPU ratio. Sets the number of GiBs to be added for every CPU on the node. The root volume will have a minimum of 100GiB and will be further increased based on value.",
            "format": "int32",
            "type": "integer"
          },
          "subnets": {
            "description": "Subnet ids to be used for provisioned nodes.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sshPublicKey": {
            "description": "Optional SSH public key to be used for provisioned nodes. Value should be base64 encoded.",
            "nullable": true,
            "type": "string"
          },
          "image": {
            "description": "Image to be used while provisioning the node.\nImage setting takes precedence over image family.\nIf both image and image family are empty, the latest image from a default family will be used, depending on the cloud provider.",
            "nullable": true,
            "type": "string"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Tags to be added on cloud instances for provisioned nodes.",
            "type": "object"
          },
          "dockerConfig": {
            "description": "Optional docker daemon configuration properties. Provide only properties that you want to override. Available values https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file",
            "example": {
              "max-concurrent-downloads": 10,
              "insecure-registries": [
                "registry.com:5000"
              ]
            },
            "properties": {},
            "type": "object"
          },
          "eks": {
            "$ref": "#/components/schemas/nodeconfig.v1.EKSConfig"
          },
          "aks": {
            "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig"
          },
          "kops": {
            "$ref": "#/components/schemas/nodeconfig.v1.KOPSConfig"
          },
          "gke": {
            "$ref": "#/components/schemas/nodeconfig.v1.GKEConfig"
          },
          "selfHostedWithEc2Nodes": {
            "$ref": "#/components/schemas/nodeconfig.v1.SelfHostedWithEC2NodesConfig"
          },
          "initScript": {
            "description": "Init script to be run on your instance at launch. Should not contain any sensitive data. Value should be base64 encoded.",
            "nullable": true,
            "type": "string"
          },
          "kubeletConfig": {
            "description": "Optional kubelet configuration properties. Applicable for EKS only.",
            "properties": {},
            "type": "object"
          },
          "containerRuntime": {
            "$ref": "#/components/schemas/nodeconfig.v1.ContainerRuntime"
          },
          "minDiskSize": {
            "description": "Minimal disk size in GiB. Defaults to 100.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "drainTimeoutSec": {
            "description": "Drain timeout in seconds. Defaults to 0.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "nodeconfig.v1.NodeConfiguration": {
        "properties": {
          "id": {
            "description": "The node configuration ID.",
            "type": "string"
          },
          "name": {
            "description": "The name of the node configuration.",
            "type": "string"
          },
          "version": {
            "description": "The version of the node configuration.",
            "format": "int32",
            "type": "integer"
          },
          "createdAt": {
            "description": "The date when node configuration was created.",
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "description": "The date when node configuration was updated.",
            "format": "date-time",
            "type": "string"
          },
          "default": {
            "description": "Whether node configuration is the default one.",
            "type": "boolean"
          },
          "diskCpuRatio": {
            "description": "Disk to CPU ratio.",
            "format": "int32",
            "type": "integer"
          },
          "subnets": {
            "description": "Subnet ids to be used for provisioned nodes.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sshPublicKey": {
            "description": "Base64 encoded ssh public key to be used for provisioned nodes.",
            "nullable": true,
            "type": "string"
          },
          "image": {
            "description": "Image to be used while provisioning the node.\nImage setting takes precedence over image family.\nIf both image and image family are empty, the latest image from a default family will be used, depending on the cloud provider.",
            "nullable": true,
            "type": "string"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Tags to be added on cloud instances for provisioned nodes.",
            "type": "object"
          },
          "dockerConfig": {
            "description": "Optional docker daemon configuration properties. Applicable for EKS only.",
            "nullable": true,
            "properties": {},
            "type": "object"
          },
          "eks": {
            "$ref": "#/components/schemas/nodeconfig.v1.EKSConfig"
          },
          "aks": {
            "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig"
          },
          "kops": {
            "$ref": "#/components/schemas/nodeconfig.v1.KOPSConfig"
          },
          "gke": {
            "$ref": "#/components/schemas/nodeconfig.v1.GKEConfig"
          },
          "selfHostedWithEc2Nodes": {
            "$ref": "#/components/schemas/nodeconfig.v1.SelfHostedWithEC2NodesConfig"
          },
          "initScript": {
            "description": "Base64 encoded init script to be run on your instance at launch.",
            "nullable": true,
            "type": "string"
          },
          "kubeletConfig": {
            "description": "Optional kubelet configuration properties. Applicable for EKS only.",
            "nullable": true,
            "properties": {},
            "type": "object"
          },
          "containerRuntime": {
            "$ref": "#/components/schemas/nodeconfig.v1.ContainerRuntime"
          },
          "minDiskSize": {
            "description": "Minimal disk size in GiB.",
            "format": "int32",
            "type": "integer"
          },
          "drainTimeoutSec": {
            "description": "Drain timeout in seconds. Defaults to 0.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "default",
          "diskCpuRatio",
          "id",
          "minDiskSize",
          "name",
          "subnets",
          "tags",
          "version"
        ],
        "type": "object"
      },
      "nodeconfig.v1.NodeConfigurationUpdate": {
        "properties": {
          "diskCpuRatio": {
            "description": "Disk to CPU ratio. Sets the number of GiBs to be added for every CPU on the node. The root volume will have a minimum of 100GiB and will be further increased based on value.",
            "format": "int32",
            "type": "integer"
          },
          "subnets": {
            "description": "Subnet ids to be used for provisioned nodes.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sshPublicKey": {
            "description": "Optional SSH public key to be used for provisioned nodes. Value should be base64 encoded.",
            "nullable": true,
            "type": "string"
          },
          "image": {
            "description": "Image to be used while provisioning the node.\nImage setting takes precedence over image family.\nIf both image and image family are empty, the latest image from a default family will be used, depending on the cloud provider.",
            "nullable": true,
            "type": "string"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Tags to be added on cloud instances for provisioned nodes.",
            "type": "object"
          },
          "dockerConfig": {
            "description": "Optional docker daemon configuration properties. Provide only properties that you want to override. Available values https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file",
            "example": {
              "max-concurrent-downloads": 10,
              "insecure-registries": [
                "registry.com:5000"
              ]
            },
            "properties": {},
            "type": "object"
          },
          "eks": {
            "$ref": "#/components/schemas/nodeconfig.v1.EKSConfig"
          },
          "aks": {
            "$ref": "#/components/schemas/nodeconfig.v1.AKSConfig"
          },
          "kops": {
            "$ref": "#/components/schemas/nodeconfig.v1.KOPSConfig"
          },
          "gke": {
            "$ref": "#/components/schemas/nodeconfig.v1.GKEConfig"
          },
          "selfHostedWithEc2Nodes": {
            "$ref": "#/components/schemas/nodeconfig.v1.SelfHostedWithEC2NodesConfig"
          },
          "initScript": {
            "description": "Init script to be run on your instance at launch. Should not contain any sensitive data. Value should be base64 encoded.",
            "nullable": true,
            "type": "string"
          },
          "kubeletConfig": {
            "description": "Optional kubelet configuration properties. Applicable for EKS only.",
            "properties": {},
            "type": "object"
          },
          "containerRuntime": {
            "$ref": "#/components/schemas/nodeconfig.v1.ContainerRuntime"
          },
          "minDiskSize": {
            "description": "Minimal disk size in GiB. Defaults to 100.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "drainTimeoutSec": {
            "description": "Drain timeout in seconds. Defaults to 0.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.SecondaryIPRange": {
        "properties": {
          "rangeName": {
            "title": "Name of the secondary IP range",
            "type": "string"
          }
        },
        "title": "Secondary IP range configuration",
        "type": "object"
      },
      "nodeconfig.v1.SecurityGroup": {
        "properties": {
          "id": {
            "description": "The ID of the security group.",
            "type": "string"
          },
          "name": {
            "description": "The name of the security group.",
            "type": "string"
          },
          "description": {
            "description": "A description of the security group.",
            "type": "string"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Tags of the security group.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.SelfHostedWithEC2NodesConfig": {
        "properties": {
          "securityGroups": {
            "description": "Node's security groups.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "instanceProfileArn": {
            "description": "Cluster's instance profile ARN used for CAST provisioned nodes.",
            "type": "string"
          },
          "keyPairId": {
            "description": "AWS key pair ID to be used for provisioned nodes. Has priority over sshPublicKey.",
            "nullable": true,
            "type": "string"
          },
          "imdsV1": {
            "default": true,
            "nullable": true,
            "title": "Allow IMDSv1, the default is true",
            "type": "boolean"
          },
          "imdsHopLimit": {
            "default": 2,
            "format": "int32",
            "nullable": true,
            "title": "Allow configure the IMDSv2 hop limit, the default is 2",
            "type": "integer"
          },
          "imageFamily": {
            "$ref": "#/components/schemas/nodeconfig.v1.SelfHostedWithEC2NodesConfig.ImageFamily"
          },
          "amiSelector": {
            "description": "Cluster's instance profile ARN used for CAST provisioned nodes.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.AmiSelector"
            },
            "type": "array"
          },
          "volumes": {
            "description": "Cluster's instance profile ARN used for CAST provisioned nodes.",
            "items": {
              "$ref": "#/components/schemas/nodeconfig.v1.EC2VolumesConfig"
            },
            "type": "array"
          }
        },
        "required": [
          "instanceProfileArn"
        ],
        "type": "object"
      },
      "nodeconfig.v1.SelfHostedWithEC2NodesConfig.ImageFamily": {
        "default": "FAMILY_UNSPECIFIED",
        "description": "Enum of supported image families (OSes) for SelfHostedWithEC2Nodes.\n\n - FAMILY_AL2: Amazon Linux 2 (https://aws.amazon.com/amazon-linux-2/).\n - FAMILY_AL2023: Amazon Linux 2023 (https://aws.amazon.com/linux/amazon-linux-2023/).\n - FAMILY_BOTTLEROCKET: Bottlerocket (https://aws.amazon.com/bottlerocket/).\n - FAMILY_CUSTOM: Custom AMI family (https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html).",
        "enum": [
          "FAMILY_UNSPECIFIED",
          "FAMILY_AL2",
          "family_al2",
          "FAMILY_AL2023",
          "family_al2023",
          "FAMILY_BOTTLEROCKET",
          "family_bottlerocket",
          "FAMILY_CUSTOM",
          "family_custom"
        ],
        "type": "string"
      },
      "nodeconfig.v1.SetDefaultResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/nodeconfig.v1.NodeConfiguration"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.SubnetDetails": {
        "description": "SubnetDetails contains all subnet attributes relevant for node configuration.",
        "properties": {
          "id": {
            "description": "The ID of the subnet.",
            "type": "string"
          },
          "cidr": {
            "description": "Cidr block of the subnet.",
            "type": "string"
          },
          "zone": {
            "$ref": "#/components/schemas/externalcluster.v1.Zone"
          },
          "availableIpAddressCount": {
            "description": "Available Ip Address populated for EKS provider only.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Tags of the subnet.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.TargetGroup": {
        "properties": {
          "arn": {
            "description": "ARN of the target group.",
            "type": "string"
          },
          "port": {
            "description": "Port of the target group.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "nodeconfig.v1.UpdateConfigurationResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/nodeconfig.v1.NodeConfiguration"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.AvailableInstanceType": {
        "properties": {
          "name": {
            "title": "Name of the instance type",
            "type": "string"
          },
          "family": {
            "title": "Name of the instance type family",
            "type": "string"
          },
          "cpuCost": {
            "format": "double",
            "title": "Cost of the CPU per hour",
            "type": "number"
          },
          "cpu": {
            "format": "int64",
            "title": "CPU count",
            "type": "string"
          },
          "memory": {
            "format": "int64",
            "title": "Memory in MiB",
            "type": "string"
          },
          "availableGpuDevices": {
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.AvailableInstanceType.GPUDevice"
            },
            "title": "GPU devices available for this instance type",
            "type": "array"
          },
          "isComputeOptimized": {
            "title": "Indicates if instance is compute optimized",
            "type": "boolean"
          },
          "storageOptimizedOption": {
            "$ref": "#/components/schemas/nodetemplates.v1.AvailableInstanceType.StorageOptimizedOption"
          },
          "architecture": {
            "title": "CPU architecture of the instance",
            "type": "string"
          },
          "os": {
            "$ref": "#/components/schemas/nodetemplates.v1.AvailableInstanceType.Os"
          },
          "isBareMetal": {
            "title": "Indicates if instance is bare metal",
            "type": "boolean"
          },
          "burstable": {
            "title": "Indicates if the instance is burstable",
            "type": "boolean"
          },
          "customerSpecific": {
            "title": "Indicates if the instance is customer specific",
            "type": "boolean"
          },
          "cpuManufacturers": {
            "items": {
              "type": "string"
            },
            "title": "Indicates the cpu manufacturer",
            "type": "array"
          },
          "csp": {
            "title": "Indicates csp",
            "type": "string"
          },
          "region": {
            "title": "Indicates the region the instance type belongs to",
            "type": "string"
          },
          "zone": {
            "description": "Zone identifier.",
            "type": "string"
          }
        },
        "title": "Defines the instance type",
        "type": "object"
      },
      "nodetemplates.v1.AvailableInstanceType.GPUDevice": {
        "properties": {
          "manufacturer": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          },
          "fractional": {
            "type": "boolean"
          }
        },
        "title": "One of the available gpu devices to attach of the instance type",
        "type": "object"
      },
      "nodetemplates.v1.AvailableInstanceType.Os": {
        "default": "unknown",
        "enum": [
          "unknown",
          "linux",
          "windows"
        ],
        "title": "A set of operating system",
        "type": "string"
      },
      "nodetemplates.v1.AvailableInstanceType.StorageOptimizedOption": {
        "default": "Never",
        "enum": [
          "Never",
          "OnDemand",
          "Always"
        ],
        "title": "A set of storage optimized options",
        "type": "string"
      },
      "nodetemplates.v1.CreateNodeTemplateResponse": {
        "properties": {
          "nodeTemplate": {
            "$ref": "#/components/schemas/nodetemplates.v1.NodeTemplate"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.DeleteNodeTemplateResponse": {
        "type": "object"
      },
      "nodetemplates.v1.FilterInstanceTypesResponse": {
        "properties": {
          "availableInstanceTypes": {
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.AvailableInstanceType"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.GPU": {
        "properties": {
          "enableTimeSharing": {
            "description": "Deprecated: Use sharing_strategy instead. This field is kept for backward compatibility.",
            "type": "boolean",
            "deprecated": true
          },
          "defaultSharedClientsPerGpu": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "sharingConfiguration": {
            "additionalProperties": {
              "$ref": "#/components/schemas/nodetemplates.v1.SharedGPU"
            },
            "type": "object"
          },
          "userManagedGpuDrivers": {
            "nullable": true,
            "title": "Option only for GKE clusters, by default Google-managed drivers are used",
            "type": "boolean"
          },
          "sharingStrategy": {
            "$ref": "#/components/schemas/nodetemplates.v1.GPUSharingStrategy"
          }
        },
        "title": "GPU settings",
        "type": "object"
      },
      "nodetemplates.v1.GPUSharingStrategy": {
        "default": "GPU_SHARING_STRATEGY_UNSPECIFIED",
        "enum": [
          "GPU_SHARING_STRATEGY_UNSPECIFIED",
          "GPU_SHARING_STRATEGY_TIME_SLICING",
          "GPU_SHARING_STRATEGY_MPS"
        ],
        "title": "GPU sharing strategy",
        "type": "string"
      },
      "nodetemplates.v1.GenerateNodeTemplatesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.NodeTemplateListItem"
            },
            "title": "Templates and their associated metadata",
            "type": "array"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.Label": {
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.ListNodeTemplatesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.NodeTemplateListItem"
            },
            "title": "Templates and their associated metadata",
            "type": "array"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.NewNodeTemplate": {
        "properties": {
          "configurationId": {
            "title": "ID of the selected configuration",
            "type": "string"
          },
          "name": {
            "title": "Name of the template",
            "type": "string"
          },
          "constraints": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints"
          },
          "shouldTaint": {
            "description": "Marks whether the templated nodes will have a taint template taint.\nBased on the template constraints, the template may still have additional taints.\nFor example, if both lifecycles (spot, on-demand) are enabled, to use spot nodes, the spot nodes of this template will have the spot taint.",
            "nullable": true,
            "type": "boolean"
          },
          "customLabel": {
            "$ref": "#/components/schemas/nodetemplates.v1.Label"
          },
          "rebalancingConfig": {
            "$ref": "#/components/schemas/nodetemplates.v1.RebalancingConfiguration"
          },
          "customLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Custom labels for the template.\nThe passed values will be ignored if the field custom_label is present.",
            "type": "object"
          },
          "customInstancesEnabled": {
            "nullable": true,
            "title": "Marks whether custom instances should be used when deciding which parts of inventory are available.\nThe flag is only available for GCP clusters",
            "type": "boolean"
          },
          "customInstancesWithExtendedMemoryEnabled": {
            "nullable": true,
            "title": "Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available.\nThe flag is only available for GCP clusters",
            "type": "boolean"
          },
          "isEnabled": {
            "description": "This field is used to enable/disable autoscaling for the template.",
            "nullable": true,
            "type": "boolean"
          },
          "isDefault": {
            "description": "Flag whether this template is the default template for the cluster.",
            "type": "boolean"
          },
          "customTaints": {
            "description": "Custom taints for the template.",
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.TaintWithOptionalEffect"
            },
            "type": "array"
          },
          "gpu": {
            "$ref": "#/components/schemas/nodetemplates.v1.GPU"
          },
          "edgeLocationIds": {
            "description": "List of associated edge location IDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "clmEnabled": {
            "nullable": true,
            "title": "Nodes in this node-template should be capable to execute container live migration (CLM)",
            "type": "boolean"
          },
          "priceAdjustmentConfiguration": {
            "$ref": "#/components/schemas/nodetemplates.v1.PriceAdjustmentConfiguration"
          },
          "stopEnabled": {
            "description": "Nodes in this node-template have Storage Optimization (STOP) enabled.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.NodeTemplate": {
        "properties": {
          "configurationId": {
            "title": "ID of the selected configuration",
            "type": "string"
          },
          "configurationName": {
            "title": "Name of the selected configuration",
            "type": "string"
          },
          "edgeLocationIds": {
            "description": "List of associated edge location IDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "title": "Name of the template",
            "type": "string"
          },
          "constraints": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints"
          },
          "version": {
            "title": "version of the template",
            "type": "string"
          },
          "shouldTaint": {
            "description": "Marks whether the templated nodes will have a taint.",
            "type": "boolean"
          },
          "customLabel": {
            "$ref": "#/components/schemas/nodetemplates.v1.Label"
          },
          "rebalancingConfig": {
            "$ref": "#/components/schemas/nodetemplates.v1.RebalancingConfiguration"
          },
          "customTaints": {
            "description": "Custom taints for the template.",
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.Taint"
            },
            "type": "array"
          },
          "customLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Custom labels for the template.",
            "type": "object"
          },
          "customInstancesEnabled": {
            "title": "Marks whether custom instances should be used when deciding which parts of inventory are available.\nThe flag is only available for GCP clusters",
            "type": "boolean"
          },
          "customInstancesWithExtendedMemoryEnabled": {
            "title": "Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available.\nThe flag is only available for GCP clusters",
            "type": "boolean"
          },
          "isEnabled": {
            "description": "This field is used to enable/disable autoscaling for the template.",
            "type": "boolean"
          },
          "isDefault": {
            "description": "Flag whether this template is the default template for the cluster.",
            "type": "boolean"
          },
          "gpu": {
            "$ref": "#/components/schemas/nodetemplates.v1.GPU"
          },
          "clmEnabled": {
            "title": "Nodes in this node-template should be capable to execute container live migration (CLM)",
            "type": "boolean"
          },
          "priceAdjustmentConfiguration": {
            "$ref": "#/components/schemas/nodetemplates.v1.PriceAdjustmentConfiguration"
          },
          "stopEnabled": {
            "description": "Nodes in this node-template have Storage Optimization (STOP) enabled.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.NodeTemplateListItem": {
        "properties": {
          "template": {
            "$ref": "#/components/schemas/nodetemplates.v1.NodeTemplate"
          },
          "stats": {
            "$ref": "#/components/schemas/nodetemplates.v1.NodeTemplateListItem.Stats"
          }
        },
        "required": [
          "stats",
          "template"
        ],
        "type": "object"
      },
      "nodetemplates.v1.NodeTemplateListItem.Stats": {
        "properties": {
          "countOnDemand": {
            "format": "int32",
            "type": "integer"
          },
          "countSpot": {
            "format": "int32",
            "type": "integer"
          },
          "countFallback": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "countFallback",
          "countOnDemand",
          "countSpot"
        ],
        "type": "object"
      },
      "nodetemplates.v1.PriceAdjustmentConfiguration": {
        "description": "PriceAdjustmentConfiguration represents price adjustment multipliers.",
        "properties": {
          "instanceTypeAdjustments": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Map of instance type price adjustments.\nExample: {\"m5.xlarge\": \"1.5\", \"c5.2xlarge\": \"2.0\"}",
            "type": "object"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.RebalancingConfiguration": {
        "properties": {
          "minNodes": {
            "description": "Minimum amount of nodes to create for template\nNote, this setting is only relevant for very small clusters, for larger clusters it's recommended to leave this at 0.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "title": "Defines rebalancing settings per template",
        "type": "object"
      },
      "nodetemplates.v1.SharedGPU": {
        "properties": {
          "sharedClientsPerGpu": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "title": "GPU sharing configuration for specific GPU device",
        "type": "object"
      },
      "nodetemplates.v1.Taint": {
        "description": "Taint is used in responses.",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "effect": {
            "$ref": "#/components/schemas/nodetemplates.v1.TaintEffect"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.TaintEffect": {
        "default": "NoSchedule",
        "description": "TaintEffect is a node taint effect.",
        "enum": [
          "NoSchedule",
          "NoExecute"
        ],
        "type": "string"
      },
      "nodetemplates.v1.TaintWithOptionalEffect": {
        "description": "TaintWithOptionalEffect is used when creating/updating a node template.\nWe are adding support for specifying taint effect on node templates and effect should be optional to be backwards compatible.",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "nullable": true,
            "type": "string"
          },
          "effect": {
            "$ref": "#/components/schemas/nodetemplates.v1.TaintEffect"
          }
        },
        "required": [
          "key"
        ],
        "type": "object"
      },
      "nodetemplates.v1.TemplateConstraints": {
        "properties": {
          "minCpu": {
            "format": "int32",
            "nullable": true,
            "title": "Min CPU cores per node",
            "type": "integer"
          },
          "maxCpu": {
            "format": "int32",
            "nullable": true,
            "title": "Max CPU cores per node",
            "type": "integer"
          },
          "minMemory": {
            "format": "int32",
            "nullable": true,
            "title": "Min Memory (Mib) per node",
            "type": "integer"
          },
          "maxMemory": {
            "format": "int32",
            "nullable": true,
            "title": "Max Memory (Mib) per node",
            "type": "integer"
          },
          "spot": {
            "description": "Should include spot instances in the considered pool.\nNote 1: if both spot and on-demand are false, then on-demand is assumed.\nNote 2: if both spot and on-demand are true, then you can specify which lifecycle you want by adding\n nodeSelector:\n       scheduling.cast.ai/spot: \"true\"\nselector, or an equivalent affinity to the pod manifest and\n tolerations:\n     - key: scheduling.cast.ai/spot\n       operator: Exists\ntoleration.",
            "nullable": true,
            "type": "boolean"
          },
          "onDemand": {
            "description": "Should include on-demand instances in the considered pool.",
            "nullable": true,
            "type": "boolean"
          },
          "useSpotFallbacks": {
            "description": "Spot instance fallback constraint - when true, on-demand instances will be created, when spots are unavailable.",
            "nullable": true,
            "type": "boolean"
          },
          "fallbackRestoreRateSeconds": {
            "description": "Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "enableSpotDiversity": {
            "description": "Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types.",
            "nullable": true,
            "type": "boolean"
          },
          "spotDiversityPriceIncreaseLimitPercent": {
            "description": "Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the\noptimal configuration.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "enableSpotReliability": {
            "description": "Enable/disable spot reliability policy. When enabled, autoscaler will create instances with highest reliability score within price increase threshold.",
            "nullable": true,
            "type": "boolean"
          },
          "spotReliabilityPriceIncreaseLimitPercent": {
            "description": "Allowed node price increase when using spot reliability on ordering the instance types . E.g. if the value is 10%, then the overall price of instance types can be 10% higher than\nthe price of the optimal configuration.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "spotInterruptionPredictionsEnabled": {
            "description": "Enable/disable spot interruption predictions.",
            "nullable": true,
            "type": "boolean"
          },
          "spotInterruptionPredictionsType": {
            "description": "Spot interruption predictions type. Can be either \"aws-rebalance-recommendations\" or \"interruption-predictions\".",
            "nullable": true,
            "type": "string"
          },
          "storageOptimized": {
            "nullable": true,
            "title": "Storage optimized instance constraint - will only pick storage optimized nodes if true",
            "type": "boolean"
          },
          "computeOptimized": {
            "nullable": true,
            "title": "Compute optimized instance constraint - will only pick compute optimized nodes if true",
            "type": "boolean"
          },
          "instanceFamilies": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.InstanceFamilyConstraints"
          },
          "gpu": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.GPUConstraints"
          },
          "isGpuOnly": {
            "description": "This template is gpu only. Setting this to true, will result in only instances with GPUs being considered.\nIn addition, this ensures that all of the added instances for this template won't have any nvidia taints.",
            "nullable": true,
            "type": "boolean"
          },
          "architectures": {
            "items": {
              "type": "string"
            },
            "title": "Instance type CPU architecture constraints - will only pick nodes whose CPU architecture is within this list",
            "type": "array"
          },
          "os": {
            "items": {
              "type": "string"
            },
            "title": "Instance type Operating System constraints - if empty or null then default to \"linux\" only",
            "type": "array"
          },
          "bareMetal": {
            "nullable": true,
            "title": "Bare metal instance constraint - if set to true will only pick bare metal nodes, if set to false will only pick\nnon-bare metal nodes and if not set will pick both",
            "type": "boolean"
          },
          "customPriority": {
            "description": "Custom sorting priority - instances matching defined rules will take priority over other candidates.",
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.CustomPriority"
            },
            "type": "array"
          },
          "dedicatedNodeAffinity": {
            "description": "Dedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes.\n\nDedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes. This\nfeature is only available for GCP clusters and sole tenancy nodes with local SSDs or GPUs are not supported. If\nthe sole tenancy or dedicated nodes don't have capacity for selected instance type, the Autoscaler will fall back\nto multi-tenant instance types available for this Node Template. Other instance constraints are applied when\nthe Autoscaler picks available instance types that can be created on the sole tenancy or dedicated\nnode (example: setting min CPU to 16).\n\nWhen using dedicated node affinity, with a shared sole tenancy node group in GCP following rules and limitations apply:\n- Use Resource URI/FQDN of the sole tenancy node group as the name (example: /projects/test-123/zones/europe-west1b/nodeGroups/test-node-group).\n- The GKE cluster must use Shared VPC (https://cloud.google.com/vpc/docs/shared-vpc).\n- The sole tenancy node group must be shared with the GKE cluster's project or organization.\n- The CAST's service account must have the necessary permissions to create and operate instances\n  on the sole tenancy node group's project.",
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.DedicatedNodeAffinity"
            },
            "type": "array"
          },
          "azs": {
            "description": "AZS - The list of AZ names to consider for the node template, if empty or not set all AZs are considered.\n\nAZS - The list of AZ names to consider for the node template, if empty or not set all AZs are considered. When\nsubnets defined in node config are zonal (AWS + Azure), the effective AZs are the intersection of the subnet AZs\nand the AZs in node template.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "burstable": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.ConstraintState"
          },
          "customerSpecific": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.ConstraintState"
          },
          "cpuManufacturers": {
            "description": "Describes the manufacturers of the CPUs the instance type can be equipped with.",
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.CPUManufacturer"
            },
            "type": "array"
          },
          "architecturePriority": {
            "items": {
              "type": "string"
            },
            "title": "Defines the priority of the architecture to be used when selecting the instance type. Leaving this empty will select the cheapest",
            "type": "array"
          },
          "resourceLimits": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.ResourceLimits"
          },
          "lifecycleTaintsDisabled": {
            "description": "Whether lifecycle taints should be applied.",
            "nullable": true,
            "type": "boolean"
          },
          "aws": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.AWSConstraints"
          }
        },
        "title": "Defines the constraints on a template",
        "type": "object"
      },
      "nodetemplates.v1.TemplateConstraints.AWSConstraints": {
        "properties": {
          "capacityReservations": {
            "description": "Capacity reservations that this template can use for provisioning.",
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.AWSConstraints.CapacityReservation"
            },
            "type": "array"
          }
        },
        "title": "AWS specific constraints",
        "type": "object"
      },
      "nodetemplates.v1.TemplateConstraints.AWSConstraints.CapacityReservation": {
        "properties": {
          "id": {
            "title": "Capacity reservation ID on AWS",
            "type": "string"
          },
          "capacityResourceGroupArn": {
            "title": "Capacity reservation resource group ARN (required for UltraServer capacity blocks)",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.AWSConstraints.CapacityReservationType"
          }
        },
        "title": "Capacity reservation on AWS",
        "type": "object"
      },
      "nodetemplates.v1.TemplateConstraints.AWSConstraints.CapacityReservationType": {
        "default": "CAPACITY_RESERVATION_TYPE_UNSPECIFIED",
        "description": "- CAPACITY_RESERVATION_TYPE_UNSPECIFIED: Unspecified capacity reservation type\n - ON_DEMAND_CAPACITY_RESERVATION: On-demand capacity reservation\n - CAPACITY_BLOCK: Capacity block for ML",
        "enum": [
          "CAPACITY_RESERVATION_TYPE_UNSPECIFIED",
          "ON_DEMAND_CAPACITY_RESERVATION",
          "CAPACITY_BLOCK"
        ],
        "title": "Capacity reservation type",
        "type": "string"
      },
      "nodetemplates.v1.TemplateConstraints.CPUManufacturer": {
        "default": "INTEL",
        "enum": [
          "INTEL",
          "AMD",
          "AWS",
          "APPLE",
          "AMPERE"
        ],
        "title": "CPU Manufacturer",
        "type": "string"
      },
      "nodetemplates.v1.TemplateConstraints.ConstraintState": {
        "default": "NOT_SET",
        "description": "- DISABLED: The constraint is disabled\n - ENABLED: The constraint is enabled",
        "enum": [
          "NOT_SET",
          "DISABLED",
          "ENABLED"
        ],
        "title": "Constraints state - indicates if the constraints are enabled or disabled",
        "type": "string"
      },
      "nodetemplates.v1.TemplateConstraints.CustomPriority": {
        "properties": {
          "families": {
            "items": {
              "type": "string"
            },
            "title": "Instance families to prioritize",
            "type": "array"
          },
          "spot": {
            "nullable": true,
            "title": "If set, this priority tier will apply for spot instances",
            "type": "boolean"
          },
          "onDemand": {
            "nullable": true,
            "title": "If set, this priority tier will apply for on-demand instances",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.TemplateConstraints.DedicatedNodeAffinity": {
        "properties": {
          "name": {
            "title": "The name of the sole tenancy or dedicated node group",
            "type": "string"
          },
          "instanceTypes": {
            "items": {
              "type": "string"
            },
            "title": "The instance/node types of the sole tenancy or dedicated node group",
            "type": "array"
          },
          "azName": {
            "title": "The availability zone of the sole tenancy or dedicated node group",
            "type": "string"
          },
          "affinity": {
            "description": "The affinity rules required for choosing the node.",
            "items": {
              "$ref": "#/components/schemas/k8s_selector.v1.KubernetesNodeAffinity"
            },
            "type": "array"
          },
          "cpusPerGpu": {
            "description": "Target number of CPUs to allocate per GPU on this dedicated/sole-tenant node group.\nThis allows configuring nodes in the way that when all GPUs are in use, all CPUs are also utilized, maximizing resource efficiency.\nFor a node with N GPUs and M CPUs, set cpus_per_gpu = M / N.\nIf not set, no ratio-based sizing is applied.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "minGpusPerNode": {
            "description": "Minimum number of GPUs per node for this dedicated/sole-tenant node group.\nIf not set, no minimum GPU count filtering is applied.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.TemplateConstraints.GPUConstraints": {
        "properties": {
          "minCount": {
            "format": "int32",
            "nullable": true,
            "title": "Min GPU count for the instance type to have",
            "type": "integer"
          },
          "maxCount": {
            "format": "int32",
            "nullable": true,
            "title": "Max GPU count for the instance type to have",
            "type": "integer"
          },
          "manufacturers": {
            "items": {
              "type": "string"
            },
            "title": "Manufacturers of the gpus to select - NVIDIA, AMD",
            "type": "array"
          },
          "includeNames": {
            "items": {
              "type": "string"
            },
            "title": "Names of the GPUs to include",
            "type": "array"
          },
          "excludeNames": {
            "items": {
              "type": "string"
            },
            "title": "Names of the GPUs to exclude",
            "type": "array"
          },
          "fractionalGpus": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints.ConstraintState"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.TemplateConstraints.InstanceFamilyConstraints": {
        "properties": {
          "include": {
            "items": {
              "type": "string"
            },
            "title": "Instance families to include when filtering (excludes all other families)",
            "type": "array"
          },
          "exclude": {
            "items": {
              "type": "string"
            },
            "title": "Instance families to exclude when filtering (includes all other families)",
            "type": "array"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.TemplateConstraints.ResourceLimits": {
        "properties": {
          "cpuLimitEnabled": {
            "description": "If set, enables CPU limits for the node template.",
            "type": "boolean"
          },
          "cpuLimitMaxCores": {
            "description": "Specifies the maximum number of CPU cores that the nodes provisioned from this template can collectively have.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.UpdateNodeTemplate": {
        "properties": {
          "configurationId": {
            "title": "ID of the selected configuration",
            "type": "string"
          },
          "constraints": {
            "$ref": "#/components/schemas/nodetemplates.v1.TemplateConstraints"
          },
          "shouldTaint": {
            "description": "Marks whether the templated nodes will have a taint.",
            "nullable": true,
            "type": "boolean"
          },
          "customLabel": {
            "$ref": "#/components/schemas/nodetemplates.v1.Label"
          },
          "rebalancingConfig": {
            "$ref": "#/components/schemas/nodetemplates.v1.RebalancingConfiguration"
          },
          "customTaints": {
            "description": "Custom taints for the template.",
            "items": {
              "$ref": "#/components/schemas/nodetemplates.v1.TaintWithOptionalEffect"
            },
            "type": "array"
          },
          "customLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Custom labels for the template.\nThe passed values will be ignored if the field custom_label is present.",
            "type": "object"
          },
          "customInstancesEnabled": {
            "nullable": true,
            "title": "Marks whether custom instances should be used when deciding which parts of inventory are available.\nThe flag is only available for GCP clusters",
            "type": "boolean"
          },
          "customInstancesWithExtendedMemoryEnabled": {
            "nullable": true,
            "title": "Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available.\nThe flag is only available for GCP clusters",
            "type": "boolean"
          },
          "isEnabled": {
            "description": "This field is used to enable/disable autoscaling for the template.",
            "nullable": true,
            "type": "boolean"
          },
          "isDefault": {
            "description": "Flag whether this template is the default template for the cluster.",
            "type": "boolean"
          },
          "gpu": {
            "$ref": "#/components/schemas/nodetemplates.v1.GPU"
          },
          "edgeLocationIds": {
            "description": "List of associated edge location IDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "clmEnabled": {
            "nullable": true,
            "title": "Nodes in this node-template should be capable to execute container live migration (CLM)",
            "type": "boolean"
          },
          "priceAdjustmentConfiguration": {
            "$ref": "#/components/schemas/nodetemplates.v1.PriceAdjustmentConfiguration"
          },
          "stopEnabled": {
            "description": "Nodes in this node-template have Storage Optimization (STOP) enabled.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "nodetemplates.v1.UpdateNodeTemplateResponse": {
        "properties": {
          "nodeTemplate": {
            "$ref": "#/components/schemas/nodetemplates.v1.NodeTemplate"
          }
        },
        "type": "object"
      },
      "podmutations.v1.Affinity": {
        "properties": {
          "nodeAffinity": {
            "$ref": "#/components/schemas/podmutations.v1.NodeAffinity"
          }
        },
        "type": "object"
      },
      "podmutations.v1.DeletePodMutationResponse": {
        "type": "object"
      },
      "podmutations.v1.GetInstallCmdForMutatorResponse": {
        "properties": {
          "installCmd": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "podmutations.v1.GetInstallScriptForMutatorResponse": {
        "properties": {
          "script": {
            "$ref": "#/components/schemas/google.api.HttpBody"
          }
        },
        "required": [
          "script"
        ],
        "type": "object"
      },
      "podmutations.v1.GetMutatorStatusResponse": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/podmutations.v1.GetMutatorStatusResponse.MutatorStatus"
          }
        },
        "type": "object"
      },
      "podmutations.v1.GetMutatorStatusResponse.MutatorStatus": {
        "default": "MUTATOR_STATUS_UNKNOWN",
        "enum": [
          "MUTATOR_STATUS_UNKNOWN",
          "MUTATOR_STATUS_INVALID",
          "MUTATOR_STATUS_RUNNING",
          "MUTATOR_STATUS_DISABLED"
        ],
        "title": "MutatorStatus represents the status of the mutator in the cluster",
        "type": "string"
      },
      "podmutations.v1.GetPodMutationResponse": {
        "properties": {
          "podMutation": {
            "$ref": "#/components/schemas/podmutations.v1.PodMutation"
          }
        },
        "type": "object"
      },
      "podmutations.v1.ListPodMutationsResponse": {
        "properties": {
          "podMutations": {
            "items": {
              "$ref": "#/components/schemas/podmutations.v1.PodMutation"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "podmutations.v1.NodeAffinity": {
        "properties": {
          "preferredDuringSchedulingIgnoredDuringExecution": {
            "description": "Node affinity terms that are preferred during scheduling but ignored during execution.",
            "items": {
              "$ref": "#/components/schemas/podmutations.v1.NodeAffinity.WeightedNodeAffinityTerm"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "podmutations.v1.NodeAffinity.WeightedNodeAffinityTerm": {
        "description": "Node affinity terms that are preferred during scheduling but ignored during execution.",
        "properties": {
          "weight": {
            "format": "int32",
            "title": "Weight of the node affinity term",
            "type": "integer"
          },
          "preference": {
            "$ref": "#/components/schemas/podmutations.v1.NodeSelectorTerm"
          }
        },
        "type": "object"
      },
      "podmutations.v1.NodeSelectorRequirement": {
        "properties": {
          "key": {
            "type": "string"
          },
          "operator": {
            "type": "string"
          },
          "values": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "podmutations.v1.NodeSelectorTerm": {
        "properties": {
          "matchExpressions": {
            "items": {
              "$ref": "#/components/schemas/podmutations.v1.NodeSelectorRequirement"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "podmutations.v1.ObjectFilter": {
        "properties": {
          "names": {
            "description": "Names of the objects that the pod mutation should apply to.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "namespaces": {
            "description": "Namespaces of the objects that the pod mutation should apply to. Empty means all namespaces.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "[Deprecated] Labels of the objects that the pod mutation should apply to.",
            "type": "object"
          },
          "labelsOperator": {
            "$ref": "#/components/schemas/podmutations.v1.ObjectFilter.FilterOperator"
          },
          "labelsFilter": {
            "items": {
              "$ref": "#/components/schemas/podmutations.v1.ObjectFilter.LabelValue"
            },
            "title": "Labels filter",
            "type": "array"
          },
          "kinds": {
            "description": "Object kinds that the pod mutation should apply to. Empty means all kinds.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "excludeNames": {
            "description": "Names of the objects that should be excluded from applying mutation. Empty means none objects.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "excludeNamespaces": {
            "description": "Namespaces of the objects that should be excluded from applying mutation. Empty means none objects.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "excludeLabelsOperator": {
            "$ref": "#/components/schemas/podmutations.v1.ObjectFilter.FilterOperator"
          },
          "excludeLabelsFilter": {
            "description": "Labels filter for the objects that should be excluded from applying mutation.",
            "items": {
              "$ref": "#/components/schemas/podmutations.v1.ObjectFilter.LabelValue"
            },
            "type": "array"
          },
          "excludeKinds": {
            "description": "Object kinds that should be excluded from applying mutation. Empty means none kinds.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "podmutations.v1.ObjectFilter.FilterOperator": {
        "default": "FILTER_OPERATOR_UNSPECIFIED",
        "enum": [
          "FILTER_OPERATOR_UNSPECIFIED",
          "AND",
          "OR"
        ],
        "title": "Defines operator within filter: OR/AND",
        "type": "string"
      },
      "podmutations.v1.ObjectFilter.LabelValue": {
        "description": "Key and value.",
        "properties": {
          "label": {
            "description": "Label name.",
            "type": "string"
          },
          "value": {
            "description": "Label Value.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "podmutations.v1.PatchOptions": {
        "properties": {
          "add": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "remove": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "podmutations.v1.PodMutation": {
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "objectFilter": {
            "$ref": "#/components/schemas/podmutations.v1.ObjectFilter"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "annotations": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "nodeSelector": {
            "$ref": "#/components/schemas/podmutations.v1.PatchOptions"
          },
          "tolerations": {
            "items": {
              "$ref": "#/components/schemas/podmutations.v1.Toleration"
            },
            "type": "array"
          },
          "affinity": {
            "$ref": "#/components/schemas/podmutations.v1.Affinity"
          },
          "spotType": {
            "$ref": "#/components/schemas/podmutations.v1.PodMutation.SpotType"
          },
          "nodeTemplatesToConsolidate": {
            "items": {
              "type": "string"
            },
            "title": "Node Template Names to consolidate",
            "type": "array"
          },
          "restartMatchingWorkloads": {
            "type": "boolean"
          },
          "createTime": {
            "format": "date-time",
            "readOnly": true,
            "title": "The timestamp when the pod mutation was created",
            "type": "string"
          },
          "updateTime": {
            "format": "date-time",
            "readOnly": true,
            "title": "The timestamp when the pod mutation was last updated",
            "type": "string"
          },
          "spotDistributionPercentage": {
            "description": "The percentage of pods (0-100) that receive spot scheduling constraints.\nThe specific spot scheduling constraints depend on the selected SpotType.\nAt least the remaining percentage will be scheduled on on-demand instances.\nThis field applies only if SpotType is specified.",
            "format": "int32",
            "type": "integer"
          },
          "patch": {
            "items": {
              "properties": {},
              "type": "object"
            },
            "title": "Optional patching field that allows mutation of pod definitions using the standard\nJSON patch mechanism. All preceding mutations have a priority, and the patch is\napplied at the end. Setting this field does not guarantee that it won't override\nmutations set in previous fields. For example, if a label is added via the labels\nfield and then removed by the patch, the label will be removed.\nFor more detailed explanation read JSON patching section in kubernetes documentation:\nhttps://kubernetes.io/docs/reference/kubectl/generated/kubectl_patch/",
            "type": "array"
          }
        },
        "type": "object"
      },
      "podmutations.v1.PodMutation.SpotType": {
        "default": "UNSPECIFIED_SPOT_TYPE",
        "description": "Spot Type specifies the type of spot instance to use.\n\n - UNSPECIFIED_SPOT_TYPE: Unspecified is the default value.\n - OPTIONAL_SPOT: Optional Spot allows to use any spot instance type.\n - USE_ONLY_SPOT: UseOnly Spot allows to use only spot instances.\n - PREFERRED_SPOT: Preferred Spot allows to use spot instances if available, otherwise use on-demand instances.",
        "enum": [
          "UNSPECIFIED_SPOT_TYPE",
          "OPTIONAL_SPOT",
          "USE_ONLY_SPOT",
          "PREFERRED_SPOT"
        ],
        "type": "string"
      },
      "podmutations.v1.Toleration": {
        "properties": {
          "key": {
            "type": "string"
          },
          "operator": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "effect": {
            "type": "string"
          },
          "tolerationSeconds": {
            "format": "int64",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "policies.v1.ClusterLimitsCpu": {
        "description": "Defines the minimum and maximum amount of vCPUs for cluster's worker nodes.",
        "properties": {
          "minCores": {
            "default": 1,
            "description": "Defines the minimum allowed amount of CPUs in the whole cluster.",
            "example": 1,
            "format": "int32",
            "minimum": 1,
            "type": "integer"
          },
          "maxCores": {
            "default": 20,
            "description": "Defines the maximum allowed amount of vCPUs in the whole cluster.",
            "example": 20,
            "format": "int32",
            "minimum": 2,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "policies.v1.ClusterLimitsPolicy": {
        "description": "Defines minimum and maximum amount of CPU the cluster can have.",
        "properties": {
          "enabled": {
            "default": true,
            "description": "Enable/disable cluster size limits policy.",
            "nullable": true,
            "type": "boolean"
          },
          "cpu": {
            "$ref": "#/components/schemas/policies.v1.ClusterLimitsCpu"
          }
        },
        "type": "object"
      },
      "policies.v1.Evictor": {
        "description": "Defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for\nways to compact them into fewer nodes, making nodes empty, which will be removed by the the empty worker nodes\npolicy.",
        "properties": {
          "enabled": {
            "default": false,
            "description": "Enable/disable the Evictor policy. This will either install or uninstall the Evictor component in your cluster.",
            "nullable": true,
            "type": "boolean"
          },
          "dryRun": {
            "default": false,
            "description": "Enable/disable dry-run. This property allows you to prevent the Evictor from carrying any operations out and\npreview the actions it would take.",
            "nullable": true,
            "type": "boolean"
          },
          "aggressiveMode": {
            "default": false,
            "description": "Enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods.\nThis mode will make the Evictor start considering application with just a single replica.",
            "nullable": true,
            "type": "boolean"
          },
          "scopedMode": {
            "default": false,
            "description": "Enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain in to\njust the nodes which were created by CAST AI.",
            "nullable": true,
            "type": "boolean"
          },
          "cycleInterval": {
            "default": "1m",
            "description": "Configure the interval duration between Evictor operations. This property can be used to lower or raise the\nfrequency of the Evictor's find-and-drain operations.",
            "example": "5m10s",
            "nullable": true,
            "type": "string"
          },
          "allowed": {
            "description": "* We have detected an already existing Evictor installation. If you want CAST AI to manage the Evictor instead,\n  then you will need to remove the current installation first.\n\nDeprecated; use \"status\" instead.",
            "nullable": true,
            "readOnly": true,
            "title": "Indicates whether the Evictor policy is allowed to be turned on. Reasons why it might be disallowed:",
            "type": "boolean"
          },
          "status": {
            "$ref": "#/components/schemas/policies.v1.EvictorStatus"
          },
          "nodeGracePeriodMinutes": {
            "default": 5,
            "description": "Configure the node grace period which controls the duration which must pass after a node has been created before\nEvictor starts considering that node.",
            "example": 10,
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "podEvictionFailureBackOffInterval": {
            "default": "5s",
            "description": "Configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt\nto evict it again after the amount of time specified here.",
            "example": "1m10s",
            "nullable": true,
            "type": "string"
          },
          "ignorePodDisruptionBudgets": {
            "default": false,
            "description": "If enabled then Evictor will attempt to evict pods that have pod disruption budgets configured.",
            "nullable": true,
            "type": "boolean"
          },
          "cleanupKarpenterNodes": {
            "default": false,
            "description": "If enabled, Evictor will delete Karpenter NodeClaims after draining Karpenter-managed nodes,\ntriggering Karpenter's termination controller for fast instance cleanup.",
            "nullable": true,
            "type": "boolean"
          },
          "softTainting": {
            "default": false,
            "description": "If enabled, Evictor will use soft tainting (PreferNoSchedule) instead of hard cordoning after eviction.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "policies.v1.EvictorStatus": {
        "default": "Unknown",
        "enum": [
          "Unknown",
          "Compatible",
          "Incompatible",
          "Missing",
          "InvalidConfig"
        ],
        "title": "EvictorStatus defines the discovered state of evictor helm chart",
        "type": "string"
      },
      "policies.v1.GetClusterNodeConstraintsResponse": {
        "description": "Defines cluster node constraints response.",
        "properties": {
          "clusterId": {
            "description": "The ID of the cluster.",
            "type": "string"
          },
          "items": {
            "description": "A list of viable CPU:Memory combinations.",
            "items": {
              "$ref": "#/components/schemas/policies.v1.GetClusterNodeConstraintsResponse.CpuRam"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "policies.v1.GetClusterNodeConstraintsResponse.CpuRam": {
        "description": "A viable CPU:Memory combination.",
        "properties": {
          "cpuCores": {
            "description": "Number of CPUs.",
            "format": "int32",
            "type": "integer"
          },
          "ramMib": {
            "description": "Number of memory in MiB.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "policies.v1.GetClusterPoliciesResponse": {
        "description": "Defines response object of fetched cluster policies configuration.",
        "properties": {
          "policies": {
            "$ref": "#/components/schemas/policies.v1.Policies"
          }
        },
        "type": "object"
      },
      "policies.v1.Headroom": {
        "description": "Defines Headroom for Unschedulable Pods.",
        "properties": {
          "cpuPercentage": {
            "default": 10,
            "description": "Defines percentage of additional CPU capacity to be added.",
            "format": "int32",
            "maximum": 100,
            "type": "integer"
          },
          "memoryPercentage": {
            "default": 10,
            "format": "int32",
            "maximum": 100,
            "title": "Defines percentage of additional memory capacity to be added",
            "type": "integer"
          },
          "enabled": {
            "default": true,
            "description": "Defines whether Headroom is enabled.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "policies.v1.NodeConstraints": {
        "description": "Defines the NodeConstraints that will be applied when autoscaling with UnschedulablePodsPolicy.",
        "properties": {
          "minCpuCores": {
            "default": 0,
            "description": "Defines min CPU cores for the node to pick.",
            "example": 2,
            "format": "int32",
            "type": "integer"
          },
          "maxCpuCores": {
            "default": 32,
            "description": "Defines max CPU cores for the node to pick.",
            "example": 32,
            "format": "int32",
            "type": "integer"
          },
          "minRamMib": {
            "default": 2048,
            "description": "Defines min RAM in MiB for the node to pick.",
            "example": 2048,
            "format": "int32",
            "type": "integer"
          },
          "maxRamMib": {
            "default": 262144,
            "description": "Defines max RAM in MiB for the node to pick.",
            "example": 262144,
            "format": "int32",
            "type": "integer"
          },
          "enabled": {
            "default": false,
            "description": "Defines whether NodeConstraints are enabled.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "policies.v1.NodeDownscaler": {
        "description": "Node Downscaler defines policies for removing nodes based on the configured conditions.",
        "properties": {
          "enabled": {
            "default": true,
            "description": "Enable/disable node downscaler policy.",
            "nullable": true,
            "type": "boolean"
          },
          "emptyNodes": {
            "$ref": "#/components/schemas/policies.v1.NodeDownscalerEmptyNodes"
          },
          "evictor": {
            "$ref": "#/components/schemas/policies.v1.Evictor"
          }
        },
        "type": "object"
      },
      "policies.v1.NodeDownscalerEmptyNodes": {
        "description": "Defines whether Node Downscaler should opt in for removing empty worker nodes when possible.",
        "properties": {
          "enabled": {
            "default": false,
            "description": "Enable/disable the empty worker nodes policy.",
            "nullable": true,
            "type": "boolean"
          },
          "delaySeconds": {
            "default": 0,
            "description": "* increasing the value will make the cluster more responsive to dynamic\n* workloads in the expense of higher cluster cost.",
            "format": "int32",
            "nullable": true,
            "title": "Period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of\nthe downscaler:",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "policies.v1.PodPinner": {
        "description": "Defines the CAST AI Pod Pinner component settings.",
        "properties": {
          "enabled": {
            "default": true,
            "description": "Enable/disable the Pod Pinner policy. This will either enable or disable the Pod Pinner component's automatic management in your cluster.",
            "nullable": true,
            "type": "boolean"
          },
          "status": {
            "$ref": "#/components/schemas/policies.v1.PodPinnerStatus"
          }
        },
        "type": "object"
      },
      "policies.v1.PodPinnerStatus": {
        "default": "PodPinnerStatus_Unknown",
        "enum": [
          "PodPinnerStatus_Unknown",
          "PodPinnerStatus_Compatible",
          "PodPinnerStatus_Missing",
          "PodPinnerStatus_Incompatible",
          "PodPinnerStatus_IncompatibleVersion"
        ],
        "title": "PodPinnerStatus defines the discovered state of pod pinner helm chart",
        "type": "string"
      },
      "policies.v1.Policies": {
        "description": "Defines the autoscaling policies details.",
        "properties": {
          "enabled": {
            "default": false,
            "description": "Enable/disable all policies.",
            "nullable": true,
            "type": "boolean"
          },
          "unschedulablePods": {
            "$ref": "#/components/schemas/policies.v1.UnschedulablePodsPolicy"
          },
          "clusterLimits": {
            "$ref": "#/components/schemas/policies.v1.ClusterLimitsPolicy"
          },
          "spotInstances": {
            "$ref": "#/components/schemas/policies.v1.SpotInstances"
          },
          "nodeDownscaler": {
            "$ref": "#/components/schemas/policies.v1.NodeDownscaler"
          },
          "isScopedMode": {
            "default": false,
            "description": "Run the node autoscaler in scoped mode. Only pods with the appropriate toleration will trigger node scale-up decisions,\nand only nodes provisioned by the autoscaler will be eligible for downscaling.",
            "nullable": true,
            "type": "boolean"
          },
          "nodeTemplatesPartialMatchingEnabled": {
            "default": false,
            "description": "Marks whether partial matching should be used when deciding which custom node template to select.",
            "nullable": true,
            "type": "boolean"
          },
          "defaultNodeTemplateVersion": {
            "description": "Version of the default node template at the time when the policies were retrieved.",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "policies.v1.SpotBackups": {
        "description": "Policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not\navailable.",
        "properties": {
          "enabled": {
            "default": false,
            "description": "Enable/disable spot backups policy.",
            "nullable": true,
            "type": "boolean"
          },
          "spotBackupRestoreRateSeconds": {
            "default": 1800,
            "description": "Defines interval on how often spot backups restore to real spot should occur.",
            "format": "int32",
            "minimum": 60,
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "policies.v1.SpotInstances": {
        "description": "Policy defining whether autoscaler can use spot instances for provisioning additional workloads.",
        "properties": {
          "enabled": {
            "default": false,
            "description": "Enable/disable spot instances policy.",
            "nullable": true,
            "type": "boolean"
          },
          "maxReclaimRate": {
            "default": 0,
            "description": "Max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or\nhigher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "spotBackups": {
            "$ref": "#/components/schemas/policies.v1.SpotBackups"
          },
          "spotDiversityEnabled": {
            "default": false,
            "description": "Enable/disable spot diversity policy.\n\nWhen enabled, autoscaler will try to balance between diverse and cost optimal instance types.",
            "nullable": true,
            "type": "boolean"
          },
          "spotDiversityPriceIncreaseLimitPercent": {
            "default": 20,
            "description": "Allowed node configuration price increase when diversifying instance types.\nE.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration.",
            "example": 20,
            "format": "int32",
            "minimum": 1,
            "nullable": true,
            "type": "integer"
          },
          "spotInterruptionPredictions": {
            "$ref": "#/components/schemas/policies.v1.SpotInterruptionPredictions"
          }
        },
        "type": "object"
      },
      "policies.v1.SpotInterruptionPredictions": {
        "description": "SpotInterruptionPredictions allows to configure the handling of SPOT interrupt predictions.",
        "properties": {
          "enabled": {
            "default": false,
            "description": "Enable/disable spot interruption predictions.",
            "type": "boolean"
          },
          "type": {
            "$ref": "#/components/schemas/policies.v1.SpotInterruptionPredictionsType"
          }
        },
        "type": "object"
      },
      "policies.v1.SpotInterruptionPredictionsType": {
        "default": "AWSRebalanceRecommendations",
        "description": "SpotInterruptionPredictionsType defines the type of the SPOT interruption predictions to enable.",
        "enum": [
          "AWSRebalanceRecommendations",
          "CASTAIInterruptionPredictions"
        ],
        "type": "string"
      },
      "policies.v1.UnschedulablePodsPolicy": {
        "description": "Policy defining autoscaler's behavior when unscedulable pods were detected.",
        "properties": {
          "enabled": {
            "default": false,
            "description": "Enable/disable unschedulable pods detection policy.",
            "nullable": true,
            "type": "boolean"
          },
          "headroom": {
            "$ref": "#/components/schemas/policies.v1.Headroom"
          },
          "headroomSpot": {
            "$ref": "#/components/schemas/policies.v1.Headroom"
          },
          "nodeConstraints": {
            "$ref": "#/components/schemas/policies.v1.NodeConstraints"
          },
          "diskGibToCpuRatio": {
            "default": 5,
            "description": "Defines default ratio of 1 CPU to Volume GiB  which will be summed with minimum value when creating new nodes.\nIf set to 5, the ration would be: 1 CPU : 5 GiB.\nFor example a node with 16 CPU would have (16 * 5 GiB) + minimum(100GiB) = 180 GiB volume size.\nDeprecated. Input only (for backwards-compatibility, ignored).",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "customInstancesEnabled": {
            "description": "Defines custom instance usage settings.",
            "nullable": true,
            "type": "boolean"
          },
          "podPinner": {
            "$ref": "#/components/schemas/policies.v1.PodPinner"
          }
        },
        "type": "object"
      },
      "policies.v1.UpsertClusterPoliciesResponse": {
        "description": "Defines response object for cluster policies config changes.",
        "properties": {
          "policies": {
            "$ref": "#/components/schemas/policies.v1.Policies"
          }
        },
        "type": "object"
      },
      "prometheus.BucketSpan": {
        "description": "A BucketSpan defines a number of consecutive buckets with their\noffset. Logically, it would be more straightforward to include the\nbucket counts in the Span. However, the protobuf representation is\nmore compact in the way the data is structured here (with all the\nbuckets in a single array separate from the Spans).",
        "properties": {
          "offset": {
            "description": "Gap to previous span, or starting point for 1st span (which can be negative).",
            "format": "int32",
            "type": "integer"
          },
          "length": {
            "description": "Length of consecutive buckets.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "prometheus.Exemplar": {
        "properties": {
          "labels": {
            "description": "Optional, can be empty.",
            "items": {
              "$ref": "#/components/schemas/prometheus.Label"
            },
            "type": "array"
          },
          "value": {
            "format": "double",
            "type": "number"
          },
          "timestamp": {
            "description": "timestamp is in ms format, see model/timestamp/timestamp.go for\nconversion from time.Time to Prometheus timestamp.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "prometheus.Histogram": {
        "description": "A native histogram, also known as a sparse histogram.\nOriginal design doc:\nhttps://docs.google.com/document/d/1cLNv3aufPZb3fNfaJgdaRBZsInZKKIHo9E6HinJVbpM/edit\nThe appendix of this design doc also explains the concept of float\nhistograms. This Histogram message can represent both, the usual\ninteger histogram as well as a float histogram.",
        "properties": {
          "countInt": {
            "format": "uint64",
            "type": "string"
          },
          "countFloat": {
            "format": "double",
            "type": "number"
          },
          "sum": {
            "description": "Sum of observations in the histogram.",
            "format": "double",
            "type": "number"
          },
          "schema": {
            "description": "The schema defines the bucket schema. Currently, valid numbers\nare -4 <= n <= 8. They are all for base-2 bucket schemas, where 1\nis a bucket boundary in each case, and then each power of two is\ndivided into 2^n logarithmic buckets. Or in other words, each\nbucket boundary is the previous boundary times 2^(2^-n). In the\nfuture, more bucket schemas may be added using numbers < -4 or >\n8.",
            "format": "int32",
            "type": "integer"
          },
          "zeroThreshold": {
            "description": "Breadth of the zero bucket.",
            "format": "double",
            "type": "number"
          },
          "zeroCountInt": {
            "format": "uint64",
            "type": "string"
          },
          "zeroCountFloat": {
            "format": "double",
            "type": "number"
          },
          "negativeSpans": {
            "description": "Negative Buckets.",
            "items": {
              "$ref": "#/components/schemas/prometheus.BucketSpan"
            },
            "type": "array"
          },
          "negativeDeltas": {
            "description": "Use either \"negative_deltas\" or \"negative_counts\", the former for\nregular histograms with integer counts, the latter for float\nhistograms.\n\nCount delta of each bucket compared to previous one (or to zero for 1st bucket).",
            "items": {
              "format": "int64",
              "type": "string"
            },
            "type": "array"
          },
          "negativeCounts": {
            "description": "Absolute count of each bucket.",
            "items": {
              "format": "double",
              "type": "number"
            },
            "type": "array"
          },
          "positiveSpans": {
            "description": "Positive Buckets.",
            "items": {
              "$ref": "#/components/schemas/prometheus.BucketSpan"
            },
            "type": "array"
          },
          "positiveDeltas": {
            "description": "Use either \"positive_deltas\" or \"positive_counts\", the former for\nregular histograms with integer counts, the latter for float\nhistograms.\n\nCount delta of each bucket compared to previous one (or to zero for 1st bucket).",
            "items": {
              "format": "int64",
              "type": "string"
            },
            "type": "array"
          },
          "positiveCounts": {
            "description": "Absolute count of each bucket.",
            "items": {
              "format": "double",
              "type": "number"
            },
            "type": "array"
          },
          "resetHint": {
            "$ref": "#/components/schemas/prometheus.Histogram.ResetHint"
          },
          "timestamp": {
            "description": "timestamp is in ms format, see model/timestamp/timestamp.go for\nconversion from time.Time to Prometheus timestamp.",
            "format": "int64",
            "type": "string"
          },
          "customValues": {
            "description": "custom_values are not part of the specification, DO NOT use in remote write clients.\nUsed only for converting from OpenTelemetry to Prometheus internally.",
            "items": {
              "format": "double",
              "type": "number"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "prometheus.Histogram.ResetHint": {
        "default": "UNKNOWN",
        "description": " - UNKNOWN: Need to test for a counter reset explicitly.\n - YES: This is the 1st histogram after a counter reset.\n - NO: There was no counter reset between this and the previous Histogram.\n - GAUGE: This is a gauge histogram where counter resets don't happen.",
        "enum": [
          "UNKNOWN",
          "YES",
          "NO",
          "GAUGE"
        ],
        "type": "string"
      },
      "prometheus.Label": {
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "prometheus.MetricMetadata": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/prometheus.MetricMetadata.MetricType"
          },
          "metricFamilyName": {
            "type": "string"
          },
          "help": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "prometheus.MetricMetadata.MetricType": {
        "default": "UNKNOWN",
        "enum": [
          "UNKNOWN",
          "COUNTER",
          "GAUGE",
          "HISTOGRAM",
          "GAUGEHISTOGRAM",
          "SUMMARY",
          "INFO",
          "STATESET"
        ],
        "type": "string"
      },
      "prometheus.Sample": {
        "properties": {
          "value": {
            "format": "double",
            "type": "number"
          },
          "timestamp": {
            "description": "timestamp is in ms format, see model/timestamp/timestamp.go for\nconversion from time.Time to Prometheus timestamp.",
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "prometheus.TimeSeries": {
        "description": "TimeSeries represents samples and labels for a single time series.",
        "properties": {
          "labels": {
            "description": "For a timeseries to be valid, and for the samples and exemplars\nto be ingested by the remote system properly, the labels field is required.",
            "items": {
              "$ref": "#/components/schemas/prometheus.Label"
            },
            "type": "array"
          },
          "samples": {
            "items": {
              "$ref": "#/components/schemas/prometheus.Sample"
            },
            "type": "array"
          },
          "exemplars": {
            "items": {
              "$ref": "#/components/schemas/prometheus.Exemplar"
            },
            "type": "array"
          },
          "histograms": {
            "items": {
              "$ref": "#/components/schemas/prometheus.Histogram"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "prometheus.WriteRequest": {
        "properties": {
          "timeseries": {
            "items": {
              "$ref": "#/components/schemas/prometheus.TimeSeries"
            },
            "type": "array"
          },
          "metadata": {
            "items": {
              "$ref": "#/components/schemas/prometheus.MetricMetadata"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.AckAnomaliesRequest": {
        "properties": {
          "ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.AckAnomaliesResponse": {
        "type": "object"
      },
      "runtime.v1.AddListEntriesResponse": {
        "type": "object"
      },
      "runtime.v1.Anomaly": {
        "properties": {
          "id": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "name": {
            "description": "Human readable name of the anomaly.",
            "type": "string"
          },
          "type": {
            "title": "Type of the anomaly, eg (general:oom_killed, crypto_mining:binary_executed)",
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "workload": {
            "type": "string"
          },
          "workloadKind": {
            "type": "string"
          },
          "workloadId": {
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "ackedAt": {
            "format": "date-time",
            "type": "string"
          },
          "assignedUser": {
            "type": "string"
          },
          "closedAt": {
            "format": "date-time",
            "type": "string"
          },
          "closedReason": {
            "$ref": "#/components/schemas/runtime.v1.CloseReason"
          },
          "closedReasonDescription": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/runtime.v1.AnomalyStatus"
          },
          "ruleId": {
            "description": "Rule UUID.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.AnomalyEvent": {
        "properties": {
          "id": {
            "type": "string"
          },
          "ruleName": {
            "description": "Human readable rule name which triggered anomaly.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time when anomaly was detected.",
            "format": "date-time",
            "type": "string"
          },
          "eventName": {
            "description": "Human readable name of the event related to anomaly..",
            "type": "string"
          },
          "eventType": {
            "title": "Type of the event, eg (tcp_connect, dns, exec, process_oom_killed)",
            "type": "string"
          },
          "process": {
            "description": "Process name.",
            "type": "string"
          },
          "reason": {
            "description": "Reason why anomaly event was triggered.",
            "type": "string"
          },
          "namespace": {
            "description": "Kubernetes Fields.",
            "type": "string"
          },
          "podName": {
            "type": "string"
          },
          "containerName": {
            "type": "string"
          },
          "rawEvent": {
            "properties": {},
            "type": "object"
          }
        },
        "type": "object"
      },
      "runtime.v1.AnomalyStatus": {
        "default": "ANOMALY_STATUS_UNSPECIFIED",
        "enum": [
          "ANOMALY_STATUS_UNSPECIFIED",
          "ANOMALY_STATUS_OPEN",
          "ANOMALY_STATUS_ACKED",
          "ANOMALY_STATUS_CLOSED"
        ],
        "type": "string"
      },
      "runtime.v1.AnomalyStatusFilter": {
        "default": "ANOMALY_STATUS_FILTER_UNSPECIFIED",
        "enum": [
          "ANOMALY_STATUS_FILTER_UNSPECIFIED",
          "ANOMALY_STATUS_FILTER_OPEN",
          "ANOMALY_STATUS_FILTER_UNACKED",
          "ANOMALY_STATUS_FILTER_CLOSED"
        ],
        "type": "string"
      },
      "runtime.v1.Any": {
        "properties": {
          "eventId": {
            "format": "int64",
            "type": "integer"
          },
          "syscall": {
            "format": "int64",
            "type": "integer"
          },
          "data": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.CPUStats": {
        "properties": {
          "totalUsage": {
            "description": "Total CPU time consumed.\nUnits: nanoseconds.",
            "format": "uint64",
            "type": "string"
          },
          "usageInKernelmode": {
            "description": "Time spent by tasks of the cgroup in kernel mode.\nUnits: nanoseconds.",
            "format": "uint64",
            "type": "string"
          },
          "usageInUsermode": {
            "description": "Time spent by tasks of the cgroup in user mode.\nUnits: nanoseconds.",
            "format": "uint64",
            "type": "string"
          },
          "throttledPeriods": {
            "description": "Number of periods when the container hit its throttling limit.",
            "format": "uint64",
            "type": "string"
          },
          "throttledTime": {
            "description": "Aggregate time the container was throttled for in nanoseconds.",
            "format": "uint64",
            "type": "string"
          },
          "psi": {
            "$ref": "#/components/schemas/runtime.v1.PSIStats"
          }
        },
        "type": "object"
      },
      "runtime.v1.CloseAnomaliesRequest": {
        "properties": {
          "ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "reason": {
            "$ref": "#/components/schemas/runtime.v1.CloseReason"
          },
          "reasonDescription": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.CloseAnomaliesResponse": {
        "type": "object"
      },
      "runtime.v1.CloseReason": {
        "default": "CLOSE_REASON_UNSPECIFIED",
        "enum": [
          "CLOSE_REASON_UNSPECIFIED",
          "CLOSE_REASON_FALSE_POSITIVE",
          "CLOSE_REASON_RESOLVED",
          "CLOSE_REASON_OTHER"
        ],
        "type": "string"
      },
      "runtime.v1.Column": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.Configuration": {
        "type": "object"
      },
      "runtime.v1.Container": {
        "properties": {
          "name": {
            "type": "string"
          },
          "imageName": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.ContainerEvent": {
        "properties": {
          "eventType": {
            "$ref": "#/components/schemas/runtime.v1.EventType"
          },
          "timestamp": {
            "format": "uint64",
            "type": "string"
          },
          "processStartTime": {
            "format": "uint64",
            "type": "string"
          },
          "hostPid": {
            "format": "int64",
            "type": "integer"
          },
          "pid": {
            "format": "int64",
            "type": "integer"
          },
          "ppid": {
            "format": "int64",
            "type": "integer"
          },
          "processParentStartTime": {
            "format": "uint64",
            "type": "string"
          },
          "processName": {
            "type": "string"
          },
          "exec": {
            "$ref": "#/components/schemas/runtime.v1.Exec"
          },
          "dns": {
            "$ref": "#/components/schemas/runtime.v1.DNS"
          },
          "file": {
            "$ref": "#/components/schemas/runtime.v1.File"
          },
          "tuple": {
            "$ref": "#/components/schemas/runtime.v1.Tuple"
          },
          "signature": {
            "$ref": "#/components/schemas/runtime.v1.SignatureEvent"
          },
          "any": {
            "$ref": "#/components/schemas/runtime.v1.Any"
          },
          "stdioViaSocket": {
            "$ref": "#/components/schemas/runtime.v1.StdioViaSocketFinding"
          },
          "ssh": {
            "$ref": "#/components/schemas/runtime.v1.SSHData"
          },
          "processFork": {
            "$ref": "#/components/schemas/runtime.v1.ProcessFork"
          },
          "processExit": {
            "$ref": "#/components/schemas/runtime.v1.ProcessExit"
          }
        },
        "type": "object"
      },
      "runtime.v1.ContainerEvents": {
        "properties": {
          "nodeName": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "workloadName": {
            "type": "string"
          },
          "workloadUid": {
            "type": "string"
          },
          "workloadKind": {
            "$ref": "#/components/schemas/runtime.v1.WorkloadKind"
          },
          "podName": {
            "type": "string"
          },
          "containerName": {
            "type": "string"
          },
          "containerId": {
            "type": "string"
          },
          "podUid": {
            "type": "string"
          },
          "imageDigest": {
            "type": "string"
          },
          "objectLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "objectAnnotations": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "cgroupId": {
            "format": "uint64",
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.ContainerEvent"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.ContainerStats": {
        "properties": {
          "namespace": {
            "type": "string"
          },
          "podName": {
            "type": "string"
          },
          "containerName": {
            "type": "string"
          },
          "workloadName": {
            "type": "string"
          },
          "workloadKind": {
            "type": "string"
          },
          "podUid": {
            "type": "string"
          },
          "containerId": {
            "type": "string"
          },
          "nodeName": {
            "type": "string"
          },
          "workloadUid": {
            "type": "string"
          },
          "imageDigest": {
            "type": "string"
          },
          "cgroupId": {
            "format": "uint64",
            "type": "string"
          },
          "cpuStats": {
            "$ref": "#/components/schemas/runtime.v1.CPUStats"
          },
          "memoryStats": {
            "$ref": "#/components/schemas/runtime.v1.MemoryStats"
          },
          "pidsStats": {
            "$ref": "#/components/schemas/runtime.v1.PidsStats"
          },
          "ioStats": {
            "$ref": "#/components/schemas/runtime.v1.IOStats"
          },
          "filesAccessStats": {
            "$ref": "#/components/schemas/runtime.v1.FilesAccessStats"
          }
        },
        "type": "object"
      },
      "runtime.v1.CreateListRequest": {
        "properties": {
          "name": {
            "type": "string"
          },
          "entries": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.ListEntry"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.CreateListResponse": {
        "properties": {
          "list": {
            "$ref": "#/components/schemas/runtime.v1.ListHeader"
          }
        },
        "type": "object"
      },
      "runtime.v1.CreateRuleRequest": {
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "severity": {
            "$ref": "#/components/schemas/runtime.v1.Severity"
          },
          "resourceSelector": {
            "type": "string"
          },
          "ruleText": {
            "type": "string"
          },
          "ruleEngineType": {
            "$ref": "#/components/schemas/runtime.v1.RuleEngineType"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "category",
          "name",
          "ruleEngineType",
          "ruleText",
          "severity"
        ],
        "type": "object"
      },
      "runtime.v1.CreateRuleResponse": {
        "properties": {
          "rule": {
            "$ref": "#/components/schemas/runtime.v1.Rule"
          }
        },
        "type": "object"
      },
      "runtime.v1.DNS": {
        "properties": {
          "DNSQuestionDomain": {
            "type": "string"
          },
          "answers": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.DNSAnswers"
            },
            "type": "array"
          },
          "flowDirection": {
            "$ref": "#/components/schemas/runtime.v1.FlowDirection"
          },
          "tuple": {
            "$ref": "#/components/schemas/runtime.v1.Tuple"
          }
        },
        "type": "object"
      },
      "runtime.v1.DNSAnswers": {
        "properties": {
          "type": {
            "format": "int64",
            "type": "integer"
          },
          "class": {
            "format": "int64",
            "type": "integer"
          },
          "ttl": {
            "format": "int64",
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "ip": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "cname": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.DataBatchItem": {
        "properties": {
          "containerStats": {
            "$ref": "#/components/schemas/runtime.v1.ContainerStats"
          },
          "nodeStats": {
            "$ref": "#/components/schemas/runtime.v1.NodeStats"
          },
          "containerEvents": {
            "$ref": "#/components/schemas/runtime.v1.ContainerEvents"
          },
          "netflow": {
            "$ref": "#/components/schemas/runtime.v1.Netflow"
          },
          "processTree": {
            "$ref": "#/components/schemas/runtime.v1.ProcessTreeEvent"
          }
        },
        "type": "object"
      },
      "runtime.v1.DeleteListsRequest": {
        "properties": {
          "ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "type": "object"
      },
      "runtime.v1.DeleteListsResponse": {
        "type": "object"
      },
      "runtime.v1.DeleteRulesRequest": {
        "properties": {
          "ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "type": "object"
      },
      "runtime.v1.DeleteRulesResponse": {
        "type": "object"
      },
      "runtime.v1.EditRuleResponse": {
        "properties": {
          "rule": {
            "$ref": "#/components/schemas/runtime.v1.Rule"
          }
        },
        "type": "object"
      },
      "runtime.v1.EventType": {
        "default": "UNKNOWN",
        "enum": [
          "UNKNOWN",
          "EVENT_EXEC",
          "EVENT_DNS",
          "EVENT_TCP_CONNECT",
          "EVENT_TCP_CONNECT_ERROR",
          "EVENT_TCP_LISTEN",
          "EVENT_FILE_CHANGE",
          "EVENT_PROCESS_OOM",
          "EVENT_MAGIC_WRITE",
          "EVENT_SIGNATURE",
          "EVENT_TTY_WRITE",
          "EVENT_STDIO_VIA_SOCKET",
          "EVENT_SSH",
          "EVENT_PROCESS_FORK",
          "EVENT_PROCESS_EXIT",
          "EVENT_FILE_OPEN",
          "EVENT_ANY"
        ],
        "type": "string"
      },
      "runtime.v1.Exec": {
        "properties": {
          "path": {
            "type": "string"
          },
          "args": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "hashSha256": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "flags": {
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "runtime.v1.File": {
        "properties": {
          "path": {
            "type": "string"
          },
          "hashSha256": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.FilesAccessStats": {
        "properties": {
          "paths": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "reads": {
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.FlowDirection": {
        "default": "FLOW_UNKNOWN",
        "enum": [
          "FLOW_UNKNOWN",
          "FLOW_INGRESS",
          "FLOW_EGRESS"
        ],
        "type": "string"
      },
      "runtime.v1.GetAnomaliesOverviewResponse": {
        "properties": {
          "open": {
            "format": "int32",
            "type": "integer"
          },
          "acked": {
            "format": "int32",
            "type": "integer"
          },
          "closed": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetAnomaliesResponse": {
        "properties": {
          "anomalies": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.Anomaly"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "previousCursor": {
            "type": "string"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetAnomalyEventsResponse": {
        "properties": {
          "events": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.AnomalyEvent"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "previousCursor": {
            "type": "string"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetAnomalyResponse": {
        "properties": {
          "anomaly": {
            "$ref": "#/components/schemas/runtime.v1.Anomaly"
          },
          "events": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.AnomalyEvent"
            },
            "type": "array"
          },
          "ticket": {
            "$ref": "#/components/schemas/runtime.v1.Ticket"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetClusterWorkloadsNetflowResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.WorkloadNetflow"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetConfigurationResponse": {
        "properties": {
          "config": {
            "$ref": "#/components/schemas/runtime.v1.Configuration"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetContainerImageSbomResponse": {
        "properties": {
          "imageSbom": {
            "description": "The SBOM with the packages used by the image in the specified format.",
            "properties": {},
            "type": "object"
          },
          "imageProfile": {
            "description": "Whether the image has a runtime profile available.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetListEntriesResponse": {
        "properties": {
          "entries": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.ListEntry"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "previousCursor": {
            "type": "string"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetListResponse": {
        "properties": {
          "list": {
            "$ref": "#/components/schemas/runtime.v1.ListHeaderWithRules"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetListsResponse": {
        "properties": {
          "lists": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.ListHeaderWithRules"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "previousCursor": {
            "type": "string"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetNetflowGraphResponse": {
        "properties": {
          "vertices": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.NetflowGraphVertex"
            },
            "type": "array"
          },
          "edges": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.NetflowGraphEdge"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetNetflowListResponse": {
        "properties": {
          "columns": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.Column"
            },
            "type": "array"
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.Row"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetNetflowTrendResponse": {
        "properties": {
          "timeseries": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.GetNetflowTrendResponse.Items"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetNetflowTrendResponse.Items": {
        "properties": {
          "time": {
            "format": "date-time",
            "type": "string"
          },
          "txBytes": {
            "format": "uint64",
            "type": "string"
          },
          "rxBytes": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetRuleResponse": {
        "properties": {
          "rule": {
            "$ref": "#/components/schemas/runtime.v1.Rule"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetRulesResponse": {
        "properties": {
          "rules": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.Rule"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "previousCursor": {
            "type": "string"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetRuntimeEventGroupsResponse": {
        "properties": {
          "columns": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.Column"
            },
            "type": "array"
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.Row"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "previousCursor": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetRuntimeEventsProcessTreeResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.GetRuntimeEventsProcessTreeResponse.EventProcess"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetRuntimeEventsProcessTreeResponse.EventProcess": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "pid": {
            "format": "int64",
            "type": "integer"
          },
          "startTime": {
            "format": "uint64",
            "type": "string"
          },
          "ppid": {
            "format": "int64",
            "type": "integer"
          },
          "parentStartTime": {
            "format": "uint64",
            "type": "string"
          },
          "filepath": {
            "type": "string"
          },
          "args": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "exitTime": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetRuntimeEventsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.GetRuntimeEventsResponse.RuntimeEvent"
            },
            "type": "array"
          },
          "nextCursor": {
            "type": "string"
          },
          "previousCursor": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetRuntimeEventsResponse.RuntimeEvent": {
        "properties": {
          "rawEvent": {
            "properties": {},
            "title": "JSON containing services/insights/internal/runtime/types/types.Event type",
            "type": "object"
          },
          "eventName": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.GetSyncStateResponse": {
        "properties": {
          "images": {
            "$ref": "#/components/schemas/runtime.v1.ImagesSyncState"
          }
        },
        "type": "object"
      },
      "runtime.v1.GitCloneDetectedFinding": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/runtime.v1.GitCloneRemoteType"
          },
          "fullRepo": {
            "type": "string"
          },
          "server": {
            "type": "string"
          },
          "repoPath": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.GitCloneRemoteType": {
        "default": "GIT_REMOTE_UNKNOWN",
        "enum": [
          "GIT_REMOTE_UNKNOWN",
          "GIT_REMOTE_SSH",
          "GIT_REMOTE_GIT",
          "GIT_REMOTE_HTTP",
          "GIT_REMOTE_HTTPS",
          "GIT_REMOTE_FTP",
          "GIT_REMOTE_FTPS",
          "GIT_REMOTE_LOCAL"
        ],
        "type": "string"
      },
      "runtime.v1.IOStats": {
        "properties": {
          "psi": {
            "$ref": "#/components/schemas/runtime.v1.PSIStats"
          }
        },
        "type": "object"
      },
      "runtime.v1.Image": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "architecture": {
            "type": "string"
          },
          "resourceIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "scanStatus": {
            "$ref": "#/components/schemas/runtime.v1.ImageScanStatus"
          },
          "scanError": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.ImageMetadataIngestResponse": {
        "type": "object"
      },
      "runtime.v1.ImageScanStatus": {
        "default": "IMAGE_SCAN_STATUS_UNKNOWN",
        "enum": [
          "IMAGE_SCAN_STATUS_UNKNOWN",
          "IMAGE_SCAN_STATUS_SCANNED",
          "IMAGE_SCAN_STATUS_PENDING",
          "IMAGE_SCAN_STATUS_SCAN_ERROR"
        ],
        "type": "string"
      },
      "runtime.v1.ImagesSyncState": {
        "properties": {
          "fullResyncRequired": {
            "type": "boolean"
          },
          "images": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.Image"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.IngressNightmareExploitDetectedFinding": {
        "type": "object"
      },
      "runtime.v1.KubeBenchCheck": {
        "properties": {
          "id": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "testInfo": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.KubeBenchControls": {
        "properties": {
          "version": {
            "type": "string"
          },
          "groups": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.KubeBenchGroup"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.KubeBenchGroup": {
        "properties": {
          "checks": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.KubeBenchCheck"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.KubeBenchNode": {
        "properties": {
          "nodeName": {
            "type": "string"
          },
          "resourceUid": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.KubeBenchReportIngestResponse": {
        "type": "object"
      },
      "runtime.v1.KubeLinterCheck": {
        "properties": {
          "resourceUid": {
            "type": "string"
          },
          "passed": {
            "description": "Represented as bitmasks of passed checks.",
            "format": "uint64",
            "type": "string"
          },
          "failed": {
            "description": "Represented as bitmasks of failed checks.",
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.KubeLinterReportIngestResponse": {
        "type": "object"
      },
      "runtime.v1.KubeNodeComponents.ComponentName": {
        "default": "COMPONENT_NAME_UNKNOWN",
        "enum": [
          "COMPONENT_NAME_UNKNOWN",
          "COMPONENT_NAME_KUBELET",
          "COMPONENT_NAME_KUBERNETES",
          "COMPONENT_NAME_PROXY"
        ],
        "type": "string"
      },
      "runtime.v1.KubeNodeComponents.ConfigData": {
        "properties": {
          "source": {
            "$ref": "#/components/schemas/runtime.v1.KubeNodeComponents.ConfigSource"
          },
          "content": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "title": "Raw configuration content",
            "type": "string"
          },
          "hash": {
            "title": "Hash of the configuration content",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.KubeNodeComponents.ConfigFile": {
        "properties": {
          "path": {
            "title": "Absolute path to the file on the node filesystem",
            "type": "string"
          },
          "mode": {
            "format": "int64",
            "title": "File mode bits (type + permissions)",
            "type": "integer"
          },
          "uid": {
            "format": "int64",
            "title": "Owner user ID",
            "type": "integer"
          },
          "gid": {
            "format": "int64",
            "title": "Owner group ID",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "runtime.v1.KubeNodeComponents.ConfigSource": {
        "default": "CONFIG_SOURCE_UNKNOWN",
        "enum": [
          "CONFIG_SOURCE_UNKNOWN",
          "CONFIG_SOURCE_FILE",
          "CONFIG_SOURCE_API"
        ],
        "type": "string"
      },
      "runtime.v1.KubeNodeComponents.ConfigType": {
        "default": "CONFIG_TYPE_UNKNOWN",
        "enum": [
          "CONFIG_TYPE_UNKNOWN",
          "CONFIG_TYPE_CONF",
          "CONFIG_TYPE_KUBECONFIG",
          "CONFIG_TYPE_AZURE_JSON"
        ],
        "type": "string"
      },
      "runtime.v1.KubeNodeComponents.Node": {
        "properties": {
          "id": {
            "title": "The ID of the Kubernetes node",
            "type": "string"
          },
          "name": {
            "title": "The name of the Kubernetes node",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.KubeNodeComponents.NodeComponent": {
        "properties": {
          "name": {
            "$ref": "#/components/schemas/runtime.v1.KubeNodeComponents.ComponentName"
          },
          "configType": {
            "$ref": "#/components/schemas/runtime.v1.KubeNodeComponents.ConfigType"
          },
          "configFile": {
            "$ref": "#/components/schemas/runtime.v1.KubeNodeComponents.ConfigFile"
          },
          "configData": {
            "$ref": "#/components/schemas/runtime.v1.KubeNodeComponents.ConfigData"
          }
        },
        "type": "object"
      },
      "runtime.v1.KubeNodeComponentsIngestResponse": {
        "type": "object"
      },
      "runtime.v1.KubernetesDeltaIngestResponse": {
        "type": "object"
      },
      "runtime.v1.KubernetesDeltaItem": {
        "properties": {
          "event": {
            "$ref": "#/components/schemas/runtime.v1.KubernetesDeltaItemEvent"
          },
          "objectUid": {
            "type": "string"
          },
          "objectName": {
            "type": "string"
          },
          "objectNamespace": {
            "type": "string"
          },
          "objectKind": {
            "type": "string"
          },
          "objectApiVersion": {
            "type": "string"
          },
          "objectCreatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "objectContainers": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.Container"
            },
            "type": "array"
          },
          "objectOwnerUid": {
            "type": "string"
          },
          "objectLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "objectAnnotations": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "objectStatus": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "objectSpec": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.KubernetesDeltaItemEvent": {
        "default": "DELTA_ADD",
        "enum": [
          "DELTA_ADD",
          "DELTA_UPDATE",
          "DELTA_REMOVE"
        ],
        "type": "string"
      },
      "runtime.v1.ListEntry": {
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/runtime.v1.ListEntryKind"
          },
          "value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.ListEntryKind": {
        "default": "LIST_ENTRY_KIND_UNKNOWN",
        "enum": [
          "LIST_ENTRY_KIND_UNKNOWN",
          "LIST_ENTRY_KIND_SHA256",
          "LIST_ENTRY_KIND_IP",
          "LIST_ENTRY_KIND_CIDR",
          "LIST_ENTRY_KIND_STRING"
        ],
        "type": "string"
      },
      "runtime.v1.ListHeader": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.ListHeaderWithRules": {
        "properties": {
          "header": {
            "$ref": "#/components/schemas/runtime.v1.ListHeader"
          },
          "usedByRules": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.RuleHeader"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.MemoryData": {
        "properties": {
          "usage": {
            "format": "uint64",
            "type": "string"
          },
          "limit": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.MemoryStats": {
        "properties": {
          "cache": {
            "format": "uint64",
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/runtime.v1.MemoryData"
          },
          "swapOnlyUsage": {
            "$ref": "#/components/schemas/runtime.v1.MemoryData"
          },
          "psi": {
            "$ref": "#/components/schemas/runtime.v1.PSIStats"
          }
        },
        "type": "object"
      },
      "runtime.v1.Netflow": {
        "properties": {
          "timestamp": {
            "description": "Stored as unix timestamp in nanoseconds.",
            "format": "uint64",
            "type": "string"
          },
          "processName": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "podName": {
            "type": "string"
          },
          "containerName": {
            "type": "string"
          },
          "workloadName": {
            "type": "string"
          },
          "workloadKind": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "nodeName": {
            "type": "string"
          },
          "addr": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "port": {
            "format": "int64",
            "type": "integer"
          },
          "pid": {
            "format": "int64",
            "type": "integer"
          },
          "processStartTime": {
            "format": "uint64",
            "type": "string"
          },
          "protocol": {
            "$ref": "#/components/schemas/runtime.v1.NetflowProtocol"
          },
          "destinations": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.NetflowDestination"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.NetflowDestination": {
        "properties": {
          "namespace": {
            "type": "string"
          },
          "podName": {
            "type": "string"
          },
          "workloadName": {
            "type": "string"
          },
          "workloadKind": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "dnsQuestion": {
            "type": "string"
          },
          "nodeName": {
            "type": "string"
          },
          "addr": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "port": {
            "format": "int64",
            "type": "integer"
          },
          "txBytes": {
            "format": "uint64",
            "type": "string"
          },
          "rxBytes": {
            "format": "uint64",
            "type": "string"
          },
          "txPackets": {
            "format": "uint64",
            "type": "string"
          },
          "rxPackets": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.NetflowGraphEdge": {
        "properties": {
          "source": {
            "format": "uint64",
            "type": "string"
          },
          "target": {
            "format": "uint64",
            "type": "string"
          },
          "metrics": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "runtime.v1.NetflowGraphVertex": {
        "properties": {
          "id": {
            "format": "uint64",
            "type": "string"
          },
          "metadata": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "runtime.v1.NetflowProtocol": {
        "default": "NETFLOW_PROTOCOL_UNKNOWN",
        "enum": [
          "NETFLOW_PROTOCOL_UNKNOWN",
          "NETFLOW_PROTOCOL_TCP",
          "NETFLOW_PROTOCOL_UDP"
        ],
        "type": "string"
      },
      "runtime.v1.NodeStats": {
        "properties": {
          "nodeName": {
            "type": "string"
          },
          "cpuStats": {
            "$ref": "#/components/schemas/runtime.v1.CPUStats"
          },
          "memoryStats": {
            "$ref": "#/components/schemas/runtime.v1.MemoryStats"
          },
          "ioStats": {
            "$ref": "#/components/schemas/runtime.v1.IOStats"
          }
        },
        "type": "object"
      },
      "runtime.v1.PSIData": {
        "properties": {
          "total": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.PSIStats": {
        "properties": {
          "some": {
            "$ref": "#/components/schemas/runtime.v1.PSIData"
          },
          "full": {
            "$ref": "#/components/schemas/runtime.v1.PSIData"
          }
        },
        "type": "object"
      },
      "runtime.v1.PidsStats": {
        "properties": {
          "current": {
            "format": "uint64",
            "title": "number of pids in the cgroup",
            "type": "string"
          },
          "limit": {
            "format": "uint64",
            "title": "active pids hard limit",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.Process": {
        "properties": {
          "pid": {
            "format": "int64",
            "type": "integer"
          },
          "ppid": {
            "format": "int64",
            "type": "integer"
          },
          "startTime": {
            "format": "uint64",
            "type": "string"
          },
          "parentStartTime": {
            "format": "uint64",
            "type": "string"
          },
          "args": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "filepath": {
            "type": "string"
          },
          "exitTime": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.ProcessAction": {
        "default": "PROCESS_ACTION_UNKNOWN",
        "enum": [
          "PROCESS_ACTION_UNKNOWN",
          "PROCESS_ACTION_EXEC",
          "PROCESS_ACTION_FORK",
          "PROCESS_ACTION_EXIT"
        ],
        "type": "string"
      },
      "runtime.v1.ProcessEvent": {
        "properties": {
          "timestamp": {
            "description": "Stored as unix timestamp in nanoseconds.",
            "format": "uint64",
            "type": "string"
          },
          "containerId": {
            "type": "string"
          },
          "process": {
            "$ref": "#/components/schemas/runtime.v1.Process"
          },
          "action": {
            "$ref": "#/components/schemas/runtime.v1.ProcessAction"
          }
        },
        "type": "object"
      },
      "runtime.v1.ProcessExit": {
        "properties": {
          "exitCode": {
            "format": "int64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.ProcessFork": {
        "type": "object"
      },
      "runtime.v1.ProcessIdentity": {
        "properties": {
          "pid": {
            "format": "int64",
            "type": "integer"
          },
          "startTime": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.ProcessTreeEvent": {
        "properties": {
          "initial": {
            "type": "boolean"
          },
          "events": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.ProcessEvent"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.RemoveListEntriesResponse": {
        "type": "object"
      },
      "runtime.v1.Row": {
        "properties": {
          "values": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.Rule": {
        "properties": {
          "id": {
            "description": "id is the unique identifier of a rule.\n\nIt is a UUID v4.",
            "type": "string"
          },
          "enabled": {
            "description": "enabled indicates whether the rule is enabled or not.",
            "type": "boolean"
          },
          "name": {
            "description": "name is the name of the rule.",
            "type": "string"
          },
          "type": {
            "description": "type is the type of the rule.",
            "type": "string"
          },
          "category": {
            "description": "category is the category of the rule.",
            "type": "string"
          },
          "anomaliesCount": {
            "description": "anomalies_count shows how many anomalies are detected\nvia this rule.\n\nIt is a read_only field.",
            "format": "int32",
            "type": "integer"
          },
          "severity": {
            "$ref": "#/components/schemas/runtime.v1.Severity"
          },
          "isBuiltIn": {
            "description": "is_built_in shows whether the rule is a built-in one (defined by Cast AI)\nor defined by the user.\n\nIt is a read_only field.",
            "type": "boolean"
          },
          "resourceSelector": {
            "description": "resource_selector is an expression that is used to\ncalculate the resources this rule is enforced on.",
            "type": "string"
          },
          "ruleText": {
            "description": "rule_text is the actual rule.\nThis is what will be evaluated by the engine\nto determine whether a rule is violated or not.",
            "type": "string"
          },
          "ruleEngineType": {
            "$ref": "#/components/schemas/runtime.v1.RuleEngineType"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "labels are a set of arbitrary key-value pairs\nwhich can be set by the user.",
            "type": "object"
          },
          "usedCustomLists": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.ListHeader"
            },
            "title": "used_custom_lists contains all custom list used within the rule text",
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.RuleEngineType": {
        "default": "RULE_ENGINE_TYPE_UNKNOWN",
        "enum": [
          "RULE_ENGINE_TYPE_UNKNOWN",
          "RULE_ENGINE_TYPE_CEL",
          "RULE_ENGINE_TYPE_GO"
        ],
        "type": "string"
      },
      "runtime.v1.RuleHeader": {
        "properties": {
          "id": {
            "description": "It is a UUID v4.",
            "type": "string"
          },
          "enabled": {
            "description": "enabled indicates whether the rule is enabled or not.",
            "type": "boolean"
          },
          "name": {
            "description": "name is the name of the rule.",
            "type": "string"
          },
          "type": {
            "description": "type is the type of the rule.",
            "type": "string"
          },
          "category": {
            "description": "category is the category of the rule.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.SOCKS5AddressType": {
        "default": "SOCKS5_ADDRESS_TYPE_UNKNOWN",
        "enum": [
          "SOCKS5_ADDRESS_TYPE_UNKNOWN",
          "SOCKS5_ADDRESS_TYPE_IPv4",
          "SOCKS5_ADDRESS_TYPE_DOMAIN_NAME",
          "SOCKS5_ADDRESS_TYPE_IPv6"
        ],
        "type": "string"
      },
      "runtime.v1.SOCKS5DetectedFinding": {
        "properties": {
          "role": {
            "$ref": "#/components/schemas/runtime.v1.SOCKS5Role"
          },
          "flowDirection": {
            "$ref": "#/components/schemas/runtime.v1.FlowDirection"
          },
          "cmdOrReply": {
            "format": "int64",
            "type": "integer"
          },
          "addressType": {
            "$ref": "#/components/schemas/runtime.v1.SOCKS5AddressType"
          },
          "address": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "port": {
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "runtime.v1.SOCKS5Role": {
        "default": "SOCKS5_ROLE_UNKNOWN",
        "enum": [
          "SOCKS5_ROLE_UNKNOWN",
          "SOCKS5_ROLE_CLIENT",
          "SOCKS5_ROLE_SERVER"
        ],
        "type": "string"
      },
      "runtime.v1.SSHData": {
        "properties": {
          "flowDirection": {
            "$ref": "#/components/schemas/runtime.v1.FlowDirection"
          },
          "version": {
            "type": "string"
          },
          "comments": {
            "type": "string"
          },
          "tuple": {
            "$ref": "#/components/schemas/runtime.v1.Tuple"
          }
        },
        "type": "object"
      },
      "runtime.v1.Severity": {
        "default": "SEVERITY_UNKNOWN",
        "enum": [
          "SEVERITY_UNKNOWN",
          "SEVERITY_NONE",
          "SEVERITY_LOW",
          "SEVERITY_MEDIUM",
          "SEVERITY_HIGH",
          "SEVERITY_CRITICAL"
        ],
        "type": "string"
      },
      "runtime.v1.SignatureEvent": {
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/runtime.v1.SignatureMetadata"
          },
          "finding": {
            "$ref": "#/components/schemas/runtime.v1.SignatureFinding"
          }
        },
        "type": "object"
      },
      "runtime.v1.SignatureEventID": {
        "default": "SIGNATURE_UNKNOWN",
        "enum": [
          "SIGNATURE_UNKNOWN",
          "SIGNATURE_STDIO_VIA_SOCKET",
          "SIGNATURE_TTY_DETECTED",
          "SIGNATURE_SOCKS5_DETECTED",
          "SIGNATURE_GIT_CLONE_DETECTED",
          "SIGNATURE_INGRESS_NIGHTMARE_EXPLOIT_DETECTED"
        ],
        "type": "string"
      },
      "runtime.v1.SignatureFinding": {
        "properties": {
          "stdioViaSocket": {
            "$ref": "#/components/schemas/runtime.v1.StdioViaSocketFinding"
          },
          "ttyDetected": {
            "$ref": "#/components/schemas/runtime.v1.TtyDetectedFinding"
          },
          "socks5Detected": {
            "$ref": "#/components/schemas/runtime.v1.SOCKS5DetectedFinding"
          },
          "gitCloneDetected": {
            "$ref": "#/components/schemas/runtime.v1.GitCloneDetectedFinding"
          },
          "ingressNightmareExploitDetected": {
            "$ref": "#/components/schemas/runtime.v1.IngressNightmareExploitDetectedFinding"
          }
        },
        "type": "object"
      },
      "runtime.v1.SignatureMetadata": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/runtime.v1.SignatureEventID"
          },
          "version": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.StatsItem": {
        "properties": {
          "container": {
            "$ref": "#/components/schemas/runtime.v1.ContainerStats"
          },
          "node": {
            "$ref": "#/components/schemas/runtime.v1.NodeStats"
          }
        },
        "type": "object"
      },
      "runtime.v1.StdioViaSocketFinding": {
        "properties": {
          "ip": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "port": {
            "format": "int64",
            "type": "integer"
          },
          "socketfd": {
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "runtime.v1.Ticket": {
        "properties": {
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.ToggleRulesRequest": {
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "enabled",
          "ids"
        ],
        "type": "object"
      },
      "runtime.v1.ToggleRulesResponse": {
        "type": "object"
      },
      "runtime.v1.TriggerAnomaliesWebhookRequest": {
        "properties": {
          "ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.TriggerAnomaliesWebhookResponse": {
        "type": "object"
      },
      "runtime.v1.TriggerAnomalyWebhookResponse": {
        "type": "object"
      },
      "runtime.v1.TtyDetectedFinding": {
        "properties": {
          "path": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.Tuple": {
        "properties": {
          "srcIp": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "dstIp": {
            "format": "byte",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string"
          },
          "srcPort": {
            "format": "int64",
            "type": "integer"
          },
          "dstPort": {
            "format": "int64",
            "type": "integer"
          },
          "dnsQuestion": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.UpdateSyncStateResponse": {
        "type": "object"
      },
      "runtime.v1.ValidateRequest": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/runtime.v1.ValidationType"
          },
          "ruleText": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.ValidateResponse": {
        "properties": {
          "valid": {
            "type": "boolean"
          },
          "error": {
            "nullable": true,
            "type": "string"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.ValidationError"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.ValidationError": {
        "properties": {
          "line": {
            "format": "int64",
            "type": "integer"
          },
          "column": {
            "format": "int64",
            "type": "integer"
          },
          "message": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.ValidationType": {
        "default": "VALIDATE_UNKNOWN",
        "enum": [
          "VALIDATE_UNKNOWN",
          "VALIDATE_CEL_RESOURCE_SELECTOR",
          "VALIDATE_CEL_RULE"
        ],
        "type": "string"
      },
      "runtime.v1.WorkloadKind": {
        "default": "WORKLOAD_KIND_UNKNOWN",
        "enum": [
          "WORKLOAD_KIND_UNKNOWN",
          "WORKLOAD_KIND_DEPLOYMENT",
          "WORKLOAD_KIND_REPLICA_SET",
          "WORKLOAD_KIND_STATEFUL_SET",
          "WORKLOAD_KIND_JOB",
          "WORKLOAD_KIND_CRONJOB",
          "WORKLOAD_KIND_POD"
        ],
        "type": "string"
      },
      "runtime.v1.WorkloadNetflow": {
        "properties": {
          "namespace": {
            "type": "string"
          },
          "workloadName": {
            "type": "string"
          },
          "workloadKind": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "destinations": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.WorkloadNetflowDestination"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "runtime.v1.WorkloadNetflowDestination": {
        "properties": {
          "namespace": {
            "type": "string"
          },
          "workloadName": {
            "type": "string"
          },
          "workloadKind": {
            "type": "string"
          },
          "zone": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "dnsQuestion": {
            "type": "string"
          },
          "addrs": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "txBytes": {
            "format": "uint64",
            "type": "string"
          },
          "rxBytes": {
            "format": "uint64",
            "type": "string"
          }
        },
        "type": "object"
      },
      "runtime.v1.WriteDataBatchResponse": {
        "type": "object"
      },
      "runtime.v1.WriteStreamResponse": {
        "type": "object"
      },
      "scheduledrebalancing.v1.AggressiveModeConfig": {
        "properties": {
          "ignoreLocalPersistentVolumes": {
            "description": "Rebalance workloads that use local-path Persistent Volumes.\nWARNING: THIS WILL RESULT IN DATA LOSS.",
            "type": "boolean"
          },
          "ignoreProblemJobPods": {
            "description": "Pods spawned by Jobs or CronJobs will not prevent the Rebalancer from deleting a node on which they run.\nWARNING: When true, pods spawned by Jobs or CronJobs will be terminated if the Rebalancer picks a node that runs them.\nAs such, they are likely to lose their progress.",
            "type": "boolean"
          },
          "ignoreProblemRemovalDisabledPods": {
            "description": "Pods that are marked with \"removal disabled\" will not prevent the Rebalancer from deleting a node on which they run.\nWARNING: When true, such pods will be evicted and disrupted.",
            "type": "boolean"
          },
          "ignoreProblemPodsWithoutController": {
            "description": "Pods that don't have a controller (bare pods) will not prevent the Rebalancer from deleting a node on which they run.\nWARNING: When true, such pods might not restart, since they have no controller to do it.",
            "type": "boolean"
          },
          "ignoreProblemPreventedDrainPods": {
            "description": "Pods annotated with rebalancing.cast.ai/prevented-drain=true will not prevent the Rebalancer from deleting a node on which they run.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.CreateRebalancingJobResponse": {
        "properties": {
          "job": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingJob"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.CreateRebalancingScheduleResponse": {
        "properties": {
          "schedule": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingSchedule"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.DeleteRebalancingJobResponse": {
        "type": "object"
      },
      "scheduledrebalancing.v1.DeleteRebalancingScheduleResponse": {
        "type": "object"
      },
      "scheduledrebalancing.v1.DrainFailureConfig": {
        "description": "Defines configuration for drain failure recovery behavior.",
        "properties": {
          "disableUncordon": {
            "description": "When true, drain-failed nodes will NOT be automatically uncordoned.",
            "nullable": true,
            "type": "boolean"
          },
          "uncordonAfterSeconds": {
            "description": "Time in seconds after which a drain-failed node should be automatically uncordoned.\nClamped to [3600, 259200] (1h–72h). Defaults to 10800 (3h).",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.ExecutionConditions": {
        "description": "Defines the conditions which must be met in order to fully execute the plan.",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "achievedSavingsPercentage": {
            "description": "Identifies the minimum percentage of cost savings relative to the original (blue) cost that should be achieved.\nThe rebalancing plan will not proceed after creating the nodes if the achieved savings percentage\nis not achieved. This field's value will not be considered if the initially predicted savings are negative.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.GetRebalancingJobResponse": {
        "properties": {
          "job": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingJob"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.GetRebalancingScheduleResponse": {
        "properties": {
          "schedule": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingSchedule"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.JobStatus": {
        "default": "JobStatusPending",
        "description": "JobStatus defines rebalancing job's last execution status.",
        "enum": [
          "JobStatusPending",
          "JobStatusInProgress",
          "JobStatusFinished",
          "JobStatusFailed",
          "JobStatusSkipped"
        ],
        "type": "string"
      },
      "scheduledrebalancing.v1.LaunchConfiguration": {
        "properties": {
          "selector": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.NodeSelector"
          },
          "rebalancingOptions": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingOptions"
          },
          "numTargetedNodes": {
            "description": "Maximum number of nodes that will be selected for rebalancing.",
            "format": "int32",
            "type": "integer"
          },
          "nodeTtlSeconds": {
            "description": "Specifies amount of time since node creation before the node is allowed to be considered for automated rebalancing.",
            "format": "int32",
            "type": "integer"
          },
          "targetNodeSelectionAlgorithm": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.TargetNodeSelectionAlgorithm"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.ListAvailableRebalancingTZResponse": {
        "properties": {
          "timeZones": {
            "items": {
              "$ref": "#/components/schemas/scheduledrebalancing.v1.TimeZone"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.ListRebalancingJobsResponse": {
        "properties": {
          "jobs": {
            "items": {
              "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingJob"
            },
            "type": "array"
          }
        },
        "required": [
          "jobs"
        ],
        "type": "object"
      },
      "scheduledrebalancing.v1.ListRebalancingSchedulesResponse": {
        "properties": {
          "schedules": {
            "items": {
              "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingSchedule"
            },
            "type": "array"
          }
        },
        "required": [
          "schedules"
        ],
        "type": "object"
      },
      "scheduledrebalancing.v1.Node": {
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.NodeSelector": {
        "properties": {
          "nodeSelectorTerms": {
            "description": "Required. A list of node selector terms. The terms are ORed.",
            "items": {
              "$ref": "#/components/schemas/scheduledrebalancing.v1.NodeSelectorTerm"
            },
            "type": "array"
          }
        },
        "title": "A node selector represents the union of the results of one or more label queries\nover a set of nodes; that is, it represents the OR of the selectors represented\nby the node selector terms.\n+structType=atomic",
        "type": "object"
      },
      "scheduledrebalancing.v1.NodeSelectorRequirement": {
        "description": "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values.",
        "properties": {
          "key": {
            "description": "The label key that the selector applies to.",
            "nullable": true,
            "type": "string"
          },
          "operator": {
            "description": "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.",
            "nullable": true,
            "type": "string"
          },
          "values": {
            "items": {
              "type": "string"
            },
            "title": "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch.\n+optional",
            "type": "array"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.NodeSelectorTerm": {
        "properties": {
          "matchExpressions": {
            "items": {
              "$ref": "#/components/schemas/scheduledrebalancing.v1.NodeSelectorRequirement"
            },
            "title": "A list of node selector requirements by node's labels.\n+optional",
            "type": "array"
          },
          "matchFields": {
            "items": {
              "$ref": "#/components/schemas/scheduledrebalancing.v1.NodeSelectorRequirement"
            },
            "title": "A list of node selector requirements by node's fields.\n+optional",
            "type": "array"
          }
        },
        "title": "A null or empty node selector term matches no objects. The requirements of\nthem are ANDed.\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n+structType=atomic",
        "type": "object"
      },
      "scheduledrebalancing.v1.PreviewRebalancingScheduleResponse": {
        "properties": {
          "affectedNodes": {
            "items": {
              "$ref": "#/components/schemas/scheduledrebalancing.v1.Node"
            },
            "type": "array"
          },
          "willTriggerAt": {
            "items": {
              "format": "date-time",
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.RebalancingJob": {
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "clusterId": {
            "readOnly": true,
            "title": "ID of a cluster that will be rebalanced once this job triggers",
            "type": "string"
          },
          "rebalancingScheduleId": {
            "title": "ID of schedule associated with this job",
            "type": "string"
          },
          "rebalancingPlanId": {
            "readOnly": true,
            "title": "ID of rebalancing plan: whenever job triggers, this value is updated once rebalancing plan is available,\nand will remain set until it is reset next time the job re-triggers;",
            "type": "string"
          },
          "enabled": {
            "description": "Specifies if job is currently enabled; disabled jobs are not triggered.",
            "nullable": true,
            "type": "boolean"
          },
          "lastTriggerAt": {
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "title": "Reflects the last time the job was executed",
            "type": "string"
          },
          "nextTriggerAt": {
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "title": "Reflects the next time the job will be executed",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.JobStatus"
          }
        },
        "required": [
          "rebalancingScheduleId"
        ],
        "type": "object"
      },
      "scheduledrebalancing.v1.RebalancingOptions": {
        "properties": {
          "minNodes": {
            "description": "Minimum number of nodes that should be kept in the cluster after rebalancing.",
            "format": "int32",
            "type": "integer"
          },
          "executionConditions": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.ExecutionConditions"
          },
          "keepDrainTimeoutNodes": {
            "nullable": true,
            "title": "Deprecated, use evictGracefully instead",
            "type": "boolean"
          },
          "evictGracefully": {
            "description": "Defines whether the nodes that failed to get drained until a predefined timeout, will be kept with a\nrebalancing.cast.ai/status=drain-failed annotation instead of forcefully drained.",
            "nullable": true,
            "type": "boolean"
          },
          "aggressiveMode": {
            "description": "When enabled will also consider rebalancing problematic pods (pods without controller, job pods, pods with removal-disabled annotation).",
            "nullable": true,
            "type": "boolean"
          },
          "aggressiveModeConfig": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.AggressiveModeConfig"
          },
          "drainFailureConfig": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.DrainFailureConfig"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.RebalancingSchedule": {
        "properties": {
          "id": {
            "readOnly": true,
            "type": "string"
          },
          "schedule": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.Schedule"
          },
          "launchConfiguration": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.LaunchConfiguration"
          },
          "triggerConditions": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.TriggerConditions"
          },
          "nextTriggerAt": {
            "format": "date-time",
            "readOnly": true,
            "title": "Indicates the time when all jobs for this schedule will  re-trigger",
            "type": "string"
          },
          "name": {
            "title": "Schedule name. Must be unique per-organization",
            "type": "string"
          },
          "jobs": {
            "items": {
              "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingJob"
            },
            "readOnly": true,
            "title": "Rebalancing jobs associated with this schedule",
            "type": "array"
          },
          "lastTriggerAt": {
            "format": "date-time",
            "nullable": true,
            "readOnly": true,
            "title": "Indicates the last time time this schedule triggered all of it's jobs",
            "type": "string"
          }
        },
        "required": [
          "launchConfiguration",
          "name",
          "schedule",
          "triggerConditions"
        ],
        "type": "object"
      },
      "scheduledrebalancing.v1.RebalancingScheduleUpdate": {
        "properties": {
          "name": {
            "title": "Specify new name to rename the schedule",
            "type": "string"
          },
          "schedule": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.Schedule"
          },
          "launchConfiguration": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.LaunchConfiguration"
          },
          "triggerConditions": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.TriggerConditions"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.Schedule": {
        "properties": {
          "cron": {
            "title": "Defines when the schedule should be triggered",
            "type": "string"
          }
        },
        "required": [
          "cron"
        ],
        "type": "object"
      },
      "scheduledrebalancing.v1.TargetNodeSelectionAlgorithm": {
        "default": "TargetNodeSelectionAlgorithmNormalizedPrice",
        "enum": [
          "TargetNodeSelectionAlgorithmNormalizedPrice",
          "TargetNodeSelectionAlgorithmUtilizedPrice",
          "TargetNodeSelectionAlgorithmUtilization"
        ],
        "title": "Defines the possible target node selection algorithms",
        "type": "string"
      },
      "scheduledrebalancing.v1.TimeZone": {
        "properties": {
          "name": {
            "title": "Time zone name, e.g. \"America/Los_Angeles\"",
            "type": "string"
          },
          "offset": {
            "title": "Time zone offset, e.g. -04:00 for \"America/Los_Angeles\"",
            "type": "string"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.TriggerConditions": {
        "properties": {
          "savingsPercentage": {
            "format": "float",
            "title": "Defines minimum number of savings expected",
            "type": "number"
          },
          "ignoreSavings": {
            "description": "When true, the rebalancing job will be triggered regardless of the expected savings.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.UpdateRebalancingJobResponse": {
        "properties": {
          "job": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingJob"
          }
        },
        "type": "object"
      },
      "scheduledrebalancing.v1.UpdateRebalancingScheduleResponse": {
        "properties": {
          "schedule": {
            "$ref": "#/components/schemas/scheduledrebalancing.v1.RebalancingSchedule"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ActionType": {
        "default": "ACTION_TYPE_UNSPECIFIED",
        "enum": [
          "ACTION_TYPE_UNSPECIFIED",
          "IGNORE",
          "PERSIST",
          "APPLY"
        ],
        "title": "Defines possible recommendation action type options.\nIGNORE - recommendation is ignored\nPERSIST - recommendation is persisted, but not applied\nAPPLY - recommendation is applied",
        "type": "string"
      },
      "workloadoptimization.v1.AggregatedCPUStallMetrics": {
        "properties": {
          "avg": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "avg"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.AggregatedCustomMetricGroup": {
        "description": "AggregatedCustomMetricGroup contains aggregated data points for a single metric name.",
        "properties": {
          "metricName": {
            "type": "string"
          },
          "unit": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricUnit"
          },
          "dataPoints": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricDataPoint"
            },
            "type": "array"
          }
        },
        "required": [
          "dataPoints",
          "metricName",
          "unit"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.AggregatedMetrics": {
        "properties": {
          "min": {
            "format": "double",
            "type": "number"
          },
          "max": {
            "format": "double",
            "type": "number"
          },
          "p25": {
            "format": "double",
            "type": "number"
          },
          "p50": {
            "format": "double",
            "type": "number"
          },
          "p75": {
            "format": "double",
            "type": "number"
          },
          "avg": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "avg",
          "max",
          "min",
          "p25",
          "p50",
          "p75"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.AggregatedPredictionMetrics": {
        "properties": {
          "avg": {
            "description": "Average predicted usage.",
            "format": "double",
            "type": "number"
          },
          "avgRec": {
            "description": "Average predicted recommendation.",
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "avg",
          "avgRec"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.AnomalyDetectionSettings": {
        "description": "AnomalyDetectionSettings configures how workload anomalies are detected and handled.\nDifferent anomaly types can have different detection thresholds based on the scaling policy.",
        "properties": {
          "cpuPressure": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CPUPressureSettings"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.AntiAffinitySettings": {
        "properties": {
          "considerAntiAffinity": {
            "description": "Defines if anti-affinity should be considered when scaling the workload.\nWhen true, requiring host ports, or having anti-affinity on hostname will force all recommendations to be deferred.\nWhen not set or missing the default value is true.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ApplyThresholdStrategy": {
        "properties": {
          "percentageThreshold": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyThresholdStrategy.PercentageThreshold"
          },
          "defaultAdaptiveThreshold": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyThresholdStrategy.DefaultAdaptiveThreshold"
          },
          "customAdaptiveThreshold": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyThresholdStrategy.CustomAdaptiveThreshold"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ApplyThresholdStrategy.CustomAdaptiveThreshold": {
        "properties": {
          "numerator": {
            "description": "It affects vertical stretch of function - smaller number will create smaller threshold.",
            "format": "double",
            "type": "number"
          },
          "denominator": {
            "description": "If value is close or equal to 0, the threshold will be much bigger for small values.\nFor example when numerator, exponent is 1 and denominator is 0 the threshold for 0.5 req. CPU will be 200%.",
            "format": "double",
            "type": "number"
          },
          "exponent": {
            "format": "double",
            "title": "The value changes how fast the curve is going down.\nThe smaller value will cause that we won't pick extremely small number for big resources, for example:\n - if numerator is 0, denominator is 1, and exponent is 1, for 50 CPU we will pick 2% threshold\n - if numerator is 0, denominator is 1, and exponent is 0.8, for 50 CPU we will pick 4.3% threshold",
            "type": "number"
          }
        },
        "required": [
          "denominator",
          "exponent",
          "numerator"
        ],
        "title": "CustomAdaptiveThreshold works in same way as DefaultAdaptiveThreshold, but it allows to tweak parameters of\nadaptive threshold formula.\nThe formula for calculating threshold is:\npercentage = numerator/(currentRequest + denominator)^exponent",
        "type": "object"
      },
      "workloadoptimization.v1.ApplyThresholdStrategy.DefaultAdaptiveThreshold": {
        "title": "DefaultAdaptiveThreshold will pick larger threshold percentage for small workloads and smaller percentage for\nlarge workloads.\nThe formula for calculating threshold is:\npercentage = 0.5/(currentRequest + 1)",
        "type": "object"
      },
      "workloadoptimization.v1.ApplyThresholdStrategy.PercentageThreshold": {
        "description": "PercentageThreshold is the percentage for the apply threshold strategy.",
        "properties": {
          "percentage": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "percentage"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ApplyType": {
        "default": "UNKNOWN",
        "enum": [
          "UNKNOWN",
          "IMMEDIATE",
          "DEFERRED"
        ],
        "title": "Defines possible recommendation apply type options.\nIMMEDIATE - when a new recommendation for a workload is generated a pod restart will be initiated immediately\nDEFERRED - when a new recommendation for a workload is generated pods are not restarted immediately, instead natural restarts(pod crash, new deployment, etc.) are utilized to apply new\nrecommendation values",
        "type": "string"
      },
      "workloadoptimization.v1.AssignScalingPolicyWorkloadsResponse": {
        "type": "object"
      },
      "workloadoptimization.v1.CMEPreset": {
        "default": "INVALID",
        "description": "CMEPresets defines a list of CME presets used for metrics scraping configuration.",
        "enum": [
          "INVALID",
          "MICROMETER",
          "CODAHALE",
          "DROPWIZARD",
          "OTEL_JAVA_AGENT",
          "SDK_PROMETHEUS"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.CPUPressureContainer": {
        "properties": {
          "name": {
            "type": "string"
          },
          "pressurePercentage": {
            "description": "Pressure percentage container was experiencing across pods during the observation period.",
            "format": "double",
            "type": "number"
          },
          "eligiblePodCount": {
            "description": "Pod count where container was experiencing CPU pressure above threshold.",
            "format": "int32",
            "type": "integer"
          },
          "podCountTotal": {
            "description": "Examined pod count.",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "eligiblePodCount",
          "name",
          "podCountTotal",
          "pressurePercentage"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CPUPressureEvent": {
        "properties": {
          "containers": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.CPUPressureContainer"
            },
            "type": "array"
          }
        },
        "required": [
          "containers"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CPUPressureResolvedEvent": {
        "properties": {
          "containers": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.PSIPressureResolvedContainer"
            },
            "type": "array"
          }
        },
        "required": [
          "containers"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CPUPressureSettings": {
        "description": "CPUPressureSettings configures CPU pressure anomaly detection thresholds.\nValues are percentages in the range 0-100.",
        "properties": {
          "cpuStallThresholdPercentage": {
            "description": "CPUStallThresholdPercentage is the percentage of time (0-100) that a pod\nmust experience CPU pressure to be considered under pressure.\nFor example, 50 means the pod must be stalled for at least 50% of the 5minute time window.",
            "format": "double",
            "type": "number"
          },
          "minPressuredPodPercentage": {
            "description": "MinPressuredPodPercentage is the percentage (0-100) of pods that must be\nexperiencing pressure for the detector to trigger.\nFor example, 50 means at least 50% of the workload's pods must be under pressure.",
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "cpuStallThresholdPercentage",
          "minPressuredPodPercentage"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ClusterHPA": {
        "properties": {
          "name": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "owner": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAOwner"
          },
          "management": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAManagement"
          },
          "workload": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAWorkloadTarget"
          },
          "original": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPASpec"
          },
          "inCluster": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPASpec"
          },
          "conversion": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConversionResult"
          }
        },
        "required": [
          "inCluster",
          "management",
          "name",
          "namespace",
          "original",
          "owner",
          "workload"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ConfidenceSettings": {
        "properties": {
          "threshold": {
            "description": "Defines the confidence threshold that's enough to automatically optimize a given workload vertically. Value must be [0:1].\nWhen not defined on scaling policy level or workload level, defaults to 0.9 (90%) confidence.",
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ConfigurationChangedEventV2": {
        "properties": {
          "previous": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConfigurationChangedV2"
          },
          "current": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConfigurationChangedV2"
          }
        },
        "required": [
          "current",
          "previous"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ConfigurationChangedV2": {
        "properties": {
          "workloadConfig": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadConfigV2"
          },
          "scalingPolicyConfig": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyConfig"
          }
        },
        "required": [
          "scalingPolicyConfig",
          "workloadConfig"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ConstraintsV2": {
        "description": "ConstraintsV2 defines min/max bounds for the recommendation.\nEach bound can be configured as a fixed constant value or as a percentage\nof the original pod-spec request.",
        "properties": {
          "min": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConstraintsV2.Strategy"
          },
          "max": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConstraintsV2.Strategy"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ConstraintsV2.Constant": {
        "description": "Constant bound. For memory - this is in MiB, for CPU - this is in cores.\nMatches the semantics of the legacy min/max doubles on ResourcePolicies.",
        "properties": {
          "value": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "value"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ConstraintsV2.PercentageOfOriginal": {
        "description": "PercentageOfOriginal expresses the bound as a percentage of the original\npod-spec request. Example: 150 means the limit equals 150% of the\noriginal container CPU/memory request.",
        "properties": {
          "value": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "value"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ConstraintsV2.Strategy": {
        "description": "Strategy defines how a single bound (min or max) is expressed.",
        "properties": {
          "constant": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConstraintsV2.Constant"
          },
          "percentageOfOriginal": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConstraintsV2.PercentageOfOriginal"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.Container": {
        "properties": {
          "name": {
            "description": "Name of the container.",
            "type": "string"
          },
          "resources": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          },
          "recommendation": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          },
          "originalResources": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          },
          "runtime": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Runtime"
          },
          "firstSeenResources": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ContainerConfig": {
        "description": "ContainerConfig defines configuration settings for a specific container within a workload.",
        "properties": {
          "containerName": {
            "title": "Container name for which the config is for",
            "type": "string"
          },
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ContainerConstraintsV3"
          },
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ContainerConstraintsV3"
          },
          "jvm": {
            "$ref": "#/components/schemas/workloadoptimization.v1.JVMRuntimeConfiguration"
          }
        },
        "required": [
          "containerName"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ContainerConfigUpdate": {
        "properties": {
          "containerName": {
            "title": "Container name to update the config for",
            "type": "string"
          },
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceConfigUpdate"
          },
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceConfigUpdate"
          },
          "jvm": {
            "$ref": "#/components/schemas/workloadoptimization.v1.JVMRuntimeConfigurationUpdate"
          }
        },
        "required": [
          "containerName"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ContainerConstraints": {
        "properties": {
          "containerName": {
            "title": "Container name for which the config is updated",
            "type": "string"
          },
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceConfig"
          },
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceConfig"
          }
        },
        "required": [
          "containerName"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ContainerConstraintsV2": {
        "properties": {
          "containerName": {
            "description": "Defines the container name for which the constraints are for.",
            "type": "string"
          },
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ContainerConstraintsV3"
          },
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ContainerConstraintsV3"
          }
        },
        "required": [
          "containerName"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ContainerConstraintsV3": {
        "description": "ContainerConstraintsV3 defines min and max resource constraints for container recommendations.",
        "properties": {
          "min": {
            "description": "Min values for the recommendation. For memory - this is in MiB, for CPU - this is in cores.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "max": {
            "description": "Max values for the recommendation. For memory - this is in MiB, for CPU - this is in cores.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "constraints": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConstraintsV2"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ContainerRecommendationSummary": {
        "properties": {
          "resources": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationStep"
            },
            "type": "array"
          },
          "thresholds": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ContainerThresholds"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ContainerResourceMetricSource": {
        "properties": {
          "name": {
            "type": "string"
          },
          "container": {
            "type": "string"
          },
          "target": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MetricTarget"
          }
        },
        "required": [
          "container",
          "name",
          "target"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ContainerThresholds": {
        "properties": {
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceThreshold"
          },
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceThreshold"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ConversionResult": {
        "description": "ConversionResult captures the outcome of running an HPA converter.",
        "properties": {
          "converterType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAConverterType"
          },
          "status": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConversionResult.Status"
          },
          "errorMessage": {
            "description": "Human-readable detail when status is not CONVERTED.",
            "nullable": true,
            "type": "string"
          },
          "converted": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPASpec"
          }
        },
        "required": [
          "converterType",
          "status"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ConversionResult.Status": {
        "default": "CONVERSION_STATUS_UNSPECIFIED",
        "description": "Status reports the outcome of running an HPA converter on a single HPA.\n\n - CONVERTED: Converter succeeded; `converted` is populated.\n - NON_CONVERTIBLE: HPA uses metrics not handled by this converter (external/object/pods).\n - MISSING_REQUESTS: Workload has no CPU/memory requests required for the conversion.\n - REQUESTS_TOO_SMALL: Conversion would round to zero.\n - ALREADY_AVERAGE: HPA already targets AverageValue.\n - NO_METRICS: HPA has no metrics to convert.",
        "enum": [
          "CONVERSION_STATUS_UNSPECIFIED",
          "CONVERTED",
          "NON_CONVERTIBLE",
          "MISSING_REQUESTS",
          "REQUESTS_TOO_SMALL",
          "ALREADY_AVERAGE",
          "NO_METRICS"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.Costs": {
        "properties": {
          "requested": {
            "description": "Cost of requested resources.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "recommended": {
            "description": "Cost of recommended resources.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "originalRequested": {
            "description": "Cost of resources configured in original workload template.",
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.CpuMetrics": {
        "properties": {
          "totalCpuCores": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.TimeSeriesMetric"
            },
            "type": "array"
          },
          "totalCpuCoresMin": {
            "format": "double",
            "type": "number"
          },
          "totalCpuCoresMax": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "totalCpuCores",
          "totalCpuCoresMax",
          "totalCpuCoresMin"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CreateWorkloadScalingPolicyResponse": {
        "properties": {
          "policy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.CrossVersionObjectReference": {
        "properties": {
          "kind": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "apiVersion": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricAggregation": {
        "description": "CustomMetricAggregation specifies how to aggregate custom metric values.",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricAggregationType"
          },
          "percentile": {
            "description": "Only used when type is PERCENTILE (e.g. 95 for p95).",
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricAggregationType": {
        "default": "CUSTOM_METRIC_AGGREGATION_TYPE_UNSPECIFIED",
        "description": "CustomMetricAggregationType identifies how metric values are aggregated across pods.",
        "enum": [
          "CUSTOM_METRIC_AGGREGATION_TYPE_UNSPECIFIED",
          "AVERAGE",
          "MAX",
          "MIN",
          "PERCENTILE"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.CustomMetricDataPoint": {
        "description": "CustomMetricDataPoint represents a single data point in a custom metric time series.",
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "required": [
          "timestamp"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricGroup": {
        "description": "CustomMetricGroup groups all time series for a single metric name.",
        "properties": {
          "metricName": {
            "type": "string"
          },
          "unit": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricUnit"
          },
          "series": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricSeries"
            },
            "type": "array"
          }
        },
        "required": [
          "metricName",
          "series",
          "unit"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricSeries": {
        "description": "CustomMetricSeries represents a time series for a custom metric scoped to a specific pod and container.",
        "properties": {
          "podName": {
            "type": "string"
          },
          "containerName": {
            "type": "string"
          },
          "dataPoints": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricDataPoint"
            },
            "type": "array"
          }
        },
        "required": [
          "containerName",
          "dataPoints",
          "podName"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricUnit": {
        "default": "CUSTOM_METRIC_UNIT_UNSPECIFIED",
        "description": "CustomMetricUnit identifies the unit of a custom metric, inferred from naming conventions.",
        "enum": [
          "CUSTOM_METRIC_UNIT_UNSPECIFIED",
          "MILLISECONDS",
          "SECONDS",
          "BYTES",
          "KIBIBYTES",
          "MEGABYTES",
          "PERCENT",
          "COUNT",
          "THREADS",
          "CONNECTIONS",
          "REQUESTS",
          "PACKETS",
          "MESSAGES",
          "MILLICORES",
          "CORES"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.CustomMetricsDataSource": {
        "properties": {
          "id": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "syncedAt": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "kubeResourceName": {
            "description": "KubeResourceName is the name of the resource in Kubernetes. Cannot be updated, as it would break the sync.\nIt is NOT unique per cluster as multiple data source entries in the DB may form a single resource in the cluster.\nWhen not provided, it is generated based on name field.",
            "type": "string"
          },
          "managedByCast": {
            "description": "ManagedByCast indicates whether the source of truth is a CAST database. If true, the resource\nis automatically synchronized from the database to the cluster. If false, the resource is\nsynchronized in the opposite direction (from the cluster to the database).",
            "type": "boolean"
          },
          "installedByCast": {
            "description": "InstalledByCast indicates whether this data source was installed by CAST AI.",
            "type": "boolean"
          },
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Type"
          },
          "data": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Status"
          }
        },
        "required": [
          "clusterId",
          "createdAt",
          "data",
          "id",
          "installedByCast",
          "kubeResourceName",
          "managedByCast",
          "name",
          "organizationId",
          "status",
          "type",
          "updatedAt"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data": {
        "properties": {
          "prometheus": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus"
          },
          "nodeWorkload": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.NodeWorkload"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.NodeWorkload": {
        "properties": {
          "dataSource": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.NodeWorkload.DataSource"
          },
          "metrics": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.NodeWorkload.Metrics"
          }
        },
        "required": [
          "dataSource"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.NodeWorkload.DataSource": {
        "properties": {
          "kubeletPort": {
            "format": "int32",
            "type": "integer"
          },
          "metricsPath": {
            "type": "string"
          }
        },
        "required": [
          "kubeletPort",
          "metricsPath"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.NodeWorkload.Metrics": {
        "properties": {
          "presets": {
            "description": "Preset names used to resolve metrics.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resolved": {
            "description": "All resolved metrics from presets and manual metrics combined, with origin information.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.NodeWorkload.Metrics.ResolvedMetric"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.NodeWorkload.Metrics.ResolvedMetric": {
        "description": "ResolvedMetric represents a fully resolved metric with its origin.",
        "properties": {
          "name": {
            "type": "string"
          },
          "origin": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.NodeWorkload.Metrics.ResolvedMetric.Origin"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "origin"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.NodeWorkload.Metrics.ResolvedMetric.Origin": {
        "default": "ORIGIN_UNSPECIFIED",
        "description": "Origin indicates whether this metric was manually defined or resolved from a preset.",
        "enum": [
          "ORIGIN_UNSPECIFIED",
          "MANUAL",
          "PRESET"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus": {
        "properties": {
          "dataSource": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus.DataSource"
          },
          "metrics": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus.Metrics"
          }
        },
        "required": [
          "dataSource"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus.DataSource": {
        "properties": {
          "url": {
            "type": "string"
          },
          "timeout": {
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus.Metrics": {
        "properties": {
          "presets": {
            "description": "Preset names used to resolve metrics.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resolved": {
            "description": "All resolved metrics from presets and manual metrics combined, with origin information.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus.Metrics.ResolvedMetric"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus.Metrics.ResolvedMetric": {
        "description": "ResolvedMetric represents a fully resolved metric with origin-tagged queries.",
        "properties": {
          "name": {
            "type": "string"
          },
          "queries": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus.Metrics.ResolvedMetric.Query"
            },
            "type": "array"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "queries"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus.Metrics.ResolvedMetric.Query": {
        "description": "Query represents a single Prometheus query with its origin.",
        "properties": {
          "value": {
            "type": "string"
          },
          "origin": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus.Metrics.ResolvedMetric.Query.Origin"
          }
        },
        "required": [
          "origin",
          "value"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Data.Prometheus.Metrics.ResolvedMetric.Query.Origin": {
        "default": "ORIGIN_UNSPECIFIED",
        "description": "Origin indicates whether this query was manually defined or resolved from a preset.",
        "enum": [
          "ORIGIN_UNSPECIFIED",
          "MANUAL",
          "PRESET"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Status": {
        "default": "STATUS_UNKNOWN",
        "description": "Status represents the synchronization status of the custom metrics data source. It indicates whether the data\nsource is currently being synchronized, has been successfully synchronized, is in the process of syncing, or has\nfailed to sync.",
        "enum": [
          "STATUS_UNKNOWN",
          "CONNECTING",
          "CONNECTED",
          "SYNCING",
          "FAILED"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.CustomMetricsDataSource.Type": {
        "default": "TYPE_UNSPECIFIED",
        "description": "Type defines the type of custom metrics data source. Respective Data field will be populated based on the type.\nFor each type, exactly one of the data fields should be populated.",
        "enum": [
          "TYPE_UNSPECIFIED",
          "PROMETHEUS",
          "NODE_WORKLOAD"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.CustomMetricsDataSourceInput": {
        "description": "CustomMetricsDataSourceInput is the input data type for Create and Update operations on custom metrics data sources.",
        "properties": {
          "prometheus": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSourceInput.Prometheus"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSourceInput.Prometheus": {
        "properties": {
          "dataSource": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSourceInput.Prometheus.DataSource"
          },
          "metrics": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSourceInput.Prometheus.Metrics"
          }
        },
        "required": [
          "dataSource"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSourceInput.Prometheus.DataSource": {
        "properties": {
          "url": {
            "type": "string"
          },
          "timeout": {
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSourceInput.Prometheus.Metric": {
        "description": "Metric defines a single Prometheus metric query. Multiple entries with the same name\nrepresent multiple queries for a single metric.",
        "properties": {
          "name": {
            "type": "string"
          },
          "query": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "query"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.CustomMetricsDataSourceInput.Prometheus.Metrics": {
        "properties": {
          "presets": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "manual": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSourceInput.Prometheus.Metric"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.DeleteWorkloadScalingPolicyResponse": {
        "type": "object"
      },
      "workloadoptimization.v1.DeployedRecommendation": {
        "properties": {
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          }
        },
        "required": [
          "applyType"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.DownscalingSettings": {
        "properties": {
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.Event": {
        "properties": {
          "oomKill": {
            "$ref": "#/components/schemas/workloadoptimization.v1.OOMKillEvent"
          },
          "surge": {
            "$ref": "#/components/schemas/workloadoptimization.v1.SurgeEvent"
          },
          "configurationChangedV2": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConfigurationChangedEventV2"
          },
          "recommendedPodCountChanged": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendedPodCountChangedEvent"
          },
          "recommendedRequestsChanged": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendedRequestsChangedEvent"
          },
          "scalingPolicyCreated": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyCreated"
          },
          "scalingPolicyDeleted": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyDeleted"
          },
          "scalingPolicyUpdated": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyUpdated"
          },
          "scalingPolicyAssigned": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyAssigned"
          },
          "failedHook": {
            "$ref": "#/components/schemas/workloadoptimization.v1.FailedHookEvent"
          },
          "scalingPolicyOrderUpdated": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyOrderUpdatedEvent"
          },
          "memoryPressureEviction": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MemoryPressureEvictionEvent"
          },
          "startupFailure": {
            "$ref": "#/components/schemas/workloadoptimization.v1.StartupFailureEvent"
          },
          "systemOverrideTriggered": {
            "$ref": "#/components/schemas/workloadoptimization.v1.SystemOverrideTriggeredEvent"
          },
          "systemOverrideReset": {
            "$ref": "#/components/schemas/workloadoptimization.v1.SystemOverrideResetEvent"
          },
          "cpuPressure": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CPUPressureEvent"
          },
          "hpaMaxedOut": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAMaxedOutEvent"
          },
          "hpaAlmostMaxedOut": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAMaxedOutEvent"
          },
          "unboundMemoryGrowth": {
            "$ref": "#/components/schemas/workloadoptimization.v1.UnboundMemoryGrowthEvent"
          },
          "cpuPressureResolved": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CPUPressureResolvedEvent"
          },
          "nativeVpaStateChanged": {
            "$ref": "#/components/schemas/workloadoptimization.v1.NativeVPAStateChangedEvent"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.EventContainer": {
        "properties": {
          "name": {
            "type": "string"
          },
          "resources": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          }
        },
        "required": [
          "name",
          "resources"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.EventType": {
        "default": "EVENT_TYPE_INVALID",
        "description": "EventType defines possible types for workload events.",
        "enum": [
          "EVENT_TYPE_INVALID",
          "EVENT_TYPE_SURGE",
          "EVENT_TYPE_OOM_KILL",
          "EVENT_TYPE_CONFIGURATION_CHANGEDV2",
          "EVENT_TYPE_RECOMMENDED_POD_COUNT_CHANGED",
          "EVENT_TYPE_RECOMMENDED_REQUESTS_CHANGED",
          "EVENT_TYPE_SCALING_POLICY_CREATED",
          "EVENT_TYPE_SCALING_POLICY_DELETED",
          "EVENT_TYPE_SCALING_POLICY_UPDATED",
          "EVENT_TYPE_SCALING_POLICY_ASSIGNED",
          "EVENT_TYPE_FAILED_HELM_TEST_HOOK",
          "EVENT_TYPE_SCALING_POLICY_ORDER_UPDATED",
          "EVENT_TYPE_MEMORY_PRESSURE_EVICTION",
          "EVENT_TYPE_SYSTEM_OVERRIDE_TRIGGERED",
          "EVENT_TYPE_SYSTEM_OVERRIDE_RESET",
          "EVENT_TYPE_STARTUP_FAILURE",
          "EVENT_TYPE_CPU_PRESSURE",
          "EVENT_TYPE_HPA_MAXED_OUT",
          "EVENT_TYPE_HPA_ALMOST_MAXED_OUT",
          "EVENT_TYPE_UNBOUND_MEMORY_GROWTH",
          "EVENT_TYPE_CPU_PRESSURE_RESOLVED",
          "EVENT_TYPE_NATIVE_VPA_STATE_CHANGED"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.EventTypeSummary": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.EventType"
          },
          "count": {
            "format": "int32",
            "type": "integer"
          },
          "percent": {
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ExternalMetricSource": {
        "properties": {
          "metric": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MetricIdentifier"
          },
          "target": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MetricTarget"
          }
        },
        "required": [
          "metric",
          "target"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.FailedHookEvent": {
        "properties": {
          "message": {
            "type": "string"
          },
          "time": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "message",
          "time"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GPUDeviceMetadata": {
        "properties": {
          "modelName": {
            "description": "GPU product name, e.g. \"NVIDIA A100-SXM4-40GB\".",
            "type": "string"
          },
          "memoryTotalMib": {
            "description": "Total framebuffer (VRAM) capacity in MiB for this device type.",
            "format": "double",
            "type": "number"
          },
          "count": {
            "description": "Number of devices of this type used by the workload in the queried range.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.GPUMetrics": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "gpuUtilization": {
            "description": "Average SM active utilization as a fraction (0.0–1.0).",
            "format": "double",
            "type": "number"
          },
          "memoryUsedMib": {
            "description": "Average GPU memory used in MiB.",
            "format": "double",
            "type": "number"
          },
          "memoryTotalMib": {
            "description": "Max GPU memory total (capacity) in MiB across devices in this bucket.",
            "format": "double",
            "type": "number"
          },
          "deviceCount": {
            "description": "Effective GPU device count, accounting for cross-workload sharing (fractional).",
            "format": "double",
            "type": "number"
          },
          "recGpuUtilization": {
            "description": "Recommended GPU compute utilization (from sm_active), as a fraction (0.0–1.0).",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "recMemoryUsedMib": {
            "description": "Recommended GPU memory usage in MiB (from max_used_memory_bytes, capped at 1 GiB minimum).",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "recDeviceCount": {
            "description": "Recommended effective GPU device count (rec_gpu_utilization * device_count).",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "originalGpuUtilization": {
            "description": "Original requested GPU utilization before optimization, as a fraction (0.0–1.0).",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "originalMemoryUsedMib": {
            "description": "Original requested GPU memory used in MiB before optimization.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "originalDeviceCount": {
            "description": "Original requested GPU device count before optimization.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "requestGpuUtilization": {
            "description": "Current requested GPU utilization after optimization, as a fraction (0.0–1.0).",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "requestMemoryUsedMib": {
            "description": "Current requested GPU memory used in MiB after optimization.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "requestDeviceCount": {
            "description": "Current requested GPU device count after optimization.",
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.GPUSettings": {
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          }
        },
        "required": [
          "managementOption"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetAgentStatusResponse": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/workloadoptimization.v1.GetAgentStatusResponse.AgentStatus"
          },
          "latestVersion": {
            "nullable": true,
            "type": "string"
          },
          "currentVersion": {
            "nullable": true,
            "type": "string"
          },
          "hpaSupportedFromCastAgentVersion": {
            "nullable": true,
            "type": "string"
          },
          "castAgentCurrentVersion": {
            "nullable": true,
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "inPlaceResizeEnabled": {
            "type": "boolean"
          },
          "installedAt": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "nativeHpaSupportedFromVersion": {
            "nullable": true,
            "type": "string"
          },
          "resourceQuotasAffectingOptimization": {
            "description": "True if we detected at least one ResourceQuota with a hard CPU or memory limit,\nregardless of whether VPA is enabled or the quota is currently affecting workload optimization.\nThis only informs that it MAY prevent workloads from not getting enough resources during spikes.",
            "nullable": true,
            "type": "boolean"
          },
          "metricsExporterVersion": {
            "nullable": true,
            "title": "Workload Autoscaler exporter version that is detected in the cluster",
            "type": "string"
          },
          "workloadAutoscalerReplicaCount": {
            "format": "int64",
            "type": "integer"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "psiMetricsSupported": {
            "type": "boolean"
          },
          "hpaConvertersSupportedFromVersion": {
            "type": "string"
          }
        },
        "required": [
          "clusterId",
          "hpaConvertersSupportedFromVersion",
          "inPlaceResizeEnabled",
          "psiMetricsSupported",
          "status",
          "updatedAt",
          "workloadAutoscalerReplicaCount"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetAgentStatusResponse.AgentStatus": {
        "default": "AGENT_STATUS_INVALID",
        "description": "AgentStatus defines the status of workload-autoscaler.",
        "enum": [
          "AGENT_STATUS_INVALID",
          "AGENT_STATUS_UNKNOWN",
          "AGENT_STATUS_RUNNING"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.GetAggregatedWorkloadCustomMetricsV1BetaResponse": {
        "properties": {
          "metricGroups": {
            "description": "Aggregated custom metrics time-series data grouped by metric name.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.AggregatedCustomMetricGroup"
            },
            "type": "array"
          },
          "step": {
            "description": "Step used to calculate metrics. May differ from the requested value if the server determines\nthe query would be too expensive. When the request does not provide a step, the server calculates one internally.",
            "type": "string"
          }
        },
        "required": [
          "metricGroups",
          "step"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetHPAV2MigrationEligibilityResponse": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/workloadoptimization.v1.GetHPAV2MigrationEligibilityResponse.MigrationStatus"
          },
          "eligibleCount": {
            "format": "int32",
            "title": "Count of eligible workloads for migration",
            "type": "integer"
          }
        },
        "required": [
          "eligibleCount",
          "status"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetHPAV2MigrationEligibilityResponse.MigrationStatus": {
        "default": "UNSPECIFIED",
        "description": "- FULL: All workloads are UI legacy HPAs and can be fully migrated\n - PARTIAL: Mix of UI and annotation-based workloads - partial migration supported\n - BLOCKED: All workloads are annotation-based - migration not supported\n - NONE: No workloads eligible for migration - banner should not be shown",
        "enum": [
          "UNSPECIFIED",
          "FULL",
          "PARTIAL",
          "BLOCKED",
          "NONE"
        ],
        "title": "MigrationStatus defines the migration eligibility status for HPA v2",
        "type": "string"
      },
      "workloadoptimization.v1.GetInstallCmdResponse": {
        "properties": {
          "script": {
            "type": "string"
          }
        },
        "required": [
          "script"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetInstallScriptResponse": {
        "properties": {
          "script": {
            "$ref": "#/components/schemas/google.api.HttpBody"
          }
        },
        "required": [
          "script"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetOrganizationAgentStatusesResponse": {
        "properties": {
          "clusterAgentStatuses": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.GetAgentStatusResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "clusterAgentStatuses"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadCustomMetricsV1BetaResponse": {
        "properties": {
          "metricGroups": {
            "description": "Custom metrics time-series data grouped by metric name.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricGroup"
            },
            "type": "array"
          },
          "step": {
            "description": "Step used to calculate metrics. If not set, no sampling was applied and all available data points\nare returned. May differ from the requested value if the server determines the query would be too expensive.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "metricGroups"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadEventResponse": {
        "properties": {
          "event": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadEvent"
          }
        },
        "required": [
          "event"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadEventsSummaryResponse": {
        "properties": {
          "totalCount": {
            "description": "Total number of events.",
            "format": "int32",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.EventTypeSummary"
            },
            "type": "array"
          }
        },
        "required": [
          "items",
          "totalCount"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadFiltersCounts": {
        "properties": {
          "total": {
            "format": "int32",
            "type": "integer"
          },
          "recommendationApplied": {
            "format": "int32",
            "type": "integer"
          },
          "recommendationIsLowConfidence": {
            "format": "int32",
            "type": "integer"
          },
          "workloadHasError": {
            "format": "int32",
            "type": "integer"
          },
          "workloadIsStopped": {
            "format": "int32",
            "type": "integer"
          },
          "workloadHasCustomMetrics": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "recommendationApplied",
          "recommendationIsLowConfidence",
          "total",
          "workloadHasCustomMetrics",
          "workloadHasError",
          "workloadIsStopped"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadFiltersResponse": {
        "properties": {
          "workloadIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "workloadNames": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kinds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "namespaces": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "scalingPolicyNames": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "counts": {
            "$ref": "#/components/schemas/workloadoptimization.v1.GetWorkloadFiltersCounts"
          }
        },
        "required": [
          "counts",
          "kinds",
          "namespaces",
          "scalingPolicyNames",
          "workloadIds",
          "workloadNames"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadGPUMetricsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.GPUMetrics"
            },
            "type": "array"
          },
          "gpuDevices": {
            "description": "Metadata about GPU device types used by this workload.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.GPUDeviceMetadata"
            },
            "type": "array"
          },
          "recGpuDevices": {
            "description": "Recommended GPU device types (empty until GPU device recommendations are implemented).",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.GPUDeviceMetadata"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadNativeVpaSpecResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "object": {
            "nullable": true,
            "properties": {},
            "title": "Unstructured view of native VPA spec (optional, may not exist for all workloads)",
            "type": "object"
          }
        },
        "required": [
          "clusterId",
          "id",
          "organizationId"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadRecommendationManifestResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "object": {
            "description": "Unstructured view of the Recommendation CR (autoscaling.cast.ai/v1, kind=Recommendation).",
            "properties": {},
            "type": "object"
          }
        },
        "required": [
          "clusterId",
          "id",
          "name",
          "namespace",
          "object",
          "organizationId"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadResponse": {
        "properties": {
          "workload": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Workload"
          },
          "metrics": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadMetrics"
          },
          "pods": {
            "description": "Stores information about the pods synchronisation status.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.PodMetadata"
            },
            "type": "array"
          }
        },
        "required": [
          "pods",
          "workload"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadScalingPolicyResponse": {
        "properties": {
          "policy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadSpecResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "isCustom": {
            "type": "boolean"
          },
          "object": {
            "properties": {},
            "title": "Unstructured view of K8S object",
            "type": "object"
          }
        },
        "required": [
          "clusterId",
          "group",
          "id",
          "isCustom",
          "kind",
          "name",
          "namespace",
          "object",
          "organizationId",
          "version"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadsSummaryMetricsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadsSummaryMetrics"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.GetWorkloadsSummaryResponse": {
        "properties": {
          "totalCount": {
            "description": "Total number of workloads.",
            "format": "int32",
            "type": "integer"
          },
          "optimizedCount": {
            "description": "Number of all optimized workloads.",
            "format": "int32",
            "type": "integer"
          },
          "hpaOptimizedCount": {
            "description": "Number of workloads with horizontal optimization enabled.",
            "format": "int32",
            "type": "integer"
          },
          "vpaOptimizedCount": {
            "description": "Number of workloads with vertical optimization enabled.",
            "format": "int32",
            "type": "integer"
          },
          "hpaVpaOptimizedCount": {
            "description": "Number of workloads with vertical and horizontal optimization enabled.",
            "format": "int32",
            "type": "integer"
          },
          "apiManagedCount": {
            "description": "Number of workloads that are managed by API.",
            "format": "int32",
            "type": "integer"
          },
          "annotationManagedCount": {
            "description": "Number of workloads that are managed by annotations.",
            "format": "int32",
            "type": "integer"
          },
          "recommendedCpuCores": {
            "description": "Number of recommended CPU cores.",
            "format": "double",
            "type": "number"
          },
          "requestedCpuCores": {
            "description": "Number of requested CPU cores.",
            "format": "double",
            "type": "number"
          },
          "cpuCoresDifference": {
            "description": "Difference between recommended and requested CPU cores.",
            "format": "double",
            "type": "number"
          },
          "recommendedMemory": {
            "description": "Recommended memory in Gi.",
            "format": "double",
            "type": "number"
          },
          "requestedMemory": {
            "description": "Requested memory in Gi.",
            "format": "double",
            "type": "number"
          },
          "memoryDifference": {
            "description": "Difference between recommended and actually used memory.",
            "format": "double",
            "type": "number"
          },
          "costsPerHour": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Costs"
          },
          "originalRequestedCpuCores": {
            "description": "Original requested CPU cores.",
            "format": "double",
            "type": "number"
          },
          "originalRequestedMemoryGibs": {
            "description": "Original requested memory in Gi.",
            "format": "double",
            "type": "number"
          },
          "usageCpuCores": {
            "description": "CPU usage in cores.",
            "format": "double",
            "type": "number"
          },
          "usageMemoryGibs": {
            "description": "Memory usage in Gi.",
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "annotationManagedCount",
          "apiManagedCount",
          "cpuCoresDifference",
          "hpaOptimizedCount",
          "hpaVpaOptimizedCount",
          "memoryDifference",
          "optimizedCount",
          "originalRequestedCpuCores",
          "originalRequestedMemoryGibs",
          "recommendedCpuCores",
          "recommendedMemory",
          "requestedCpuCores",
          "requestedMemory",
          "totalCount",
          "usageCpuCores",
          "usageMemoryGibs",
          "vpaOptimizedCount"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPAConfig": {
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "minReplicas": {
            "description": "Min replicas a workload can have.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "maxReplicas": {
            "description": "Max replicas a workload can have.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "useNative": {
            "description": "Defines whether to use native Kubernetes HPA instead of CAST AI HPA.",
            "nullable": true,
            "type": "boolean"
          },
          "metrics": {
            "description": "Metrics list which is scaled on. Matches Kubernetes HPA spec.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.MetricSpec"
            },
            "type": "array"
          },
          "behavior": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HorizontalPodAutoscalerBehavior"
          },
          "takeOwnership": {
            "nullable": true,
            "title": "When true, CAST AI will take ownership of existing HPAs and manage them according to the policy settings.\nWarning: taking ownership will override existing HPAs with policy setting values\nNote: Ownership will be claimed only on eligible objects, for example existing HPAs with an owner reference will be skipped",
            "type": "boolean"
          }
        },
        "required": [
          "managementOption"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPAConfigUpdate": {
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "minReplicas": {
            "format": "int32",
            "nullable": true,
            "title": "Min replicas a workload can have. Must be greater than 0. Required when HPA is turned on and value changes",
            "type": "integer"
          },
          "maxReplicas": {
            "format": "int32",
            "nullable": true,
            "title": "Max replicas a workload can have. Must be greater than 0 and not less than min replicas. Required when HPA is turned on and value changes",
            "type": "integer"
          },
          "useNative": {
            "description": "Defines whether to use native Kubernetes HPA instead of CAST AI HPA.",
            "nullable": true,
            "type": "boolean"
          },
          "metrics": {
            "description": "Metrics list which is scaled on. Matches Kubernetes HPA spec.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.MetricSpec"
            },
            "type": "array"
          },
          "behavior": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HorizontalPodAutoscalerBehavior"
          },
          "takeOwnership": {
            "nullable": true,
            "title": "When true, CAST AI will take ownership of existing HPAs and manage them according to the configured settings.\nWarning: taking ownership will override existing HPAs with newly configured settings\nNote: Ownership will be claimed only on eligible objects, for example existing HPAs with an owner reference will be skipped",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.HPAConverterType": {
        "default": "HPA_CONVERTER_TYPE_UNSPECIFIED",
        "description": "HPAConverterType defines the strategy for converting HPA.\n\n - AVERAGE_VALUE_FROM_ORIGINAL_REQUESTS: Converts HPA utilization (%) targets to AverageValue using workload container requests.",
        "enum": [
          "HPA_CONVERTER_TYPE_UNSPECIFIED",
          "AVERAGE_VALUE_FROM_ORIGINAL_REQUESTS"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.HPAConverters": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAConverterType"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPALegacyConfig": {
        "description": "HPALegacyConfig holds the resolved configuration for legacy CAST AI HPA.",
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "minReplicas": {
            "description": "Minimum number of replicas.",
            "format": "int32",
            "type": "integer"
          },
          "maxReplicas": {
            "description": "Maximum number of replicas.",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "managementOption",
          "maxReplicas",
          "minReplicas"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPALegacyUnsupportedReason": {
        "description": "HPALegacyUnsupportedReason contains categorized type and description for why legacy CAST AI HPA is unsupported.",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPALegacyUnsupportedReasonType"
          },
          "description": {
            "description": "Description of why legacy CAST AI HPA is unsupported.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPALegacyUnsupportedReasonType": {
        "default": "HPA_LEGACY_UNSUPPORTED_REASON_UNKNOWN",
        "description": "HPALegacyUnsupportedReasonType explains why legacy CAST AI HPA is unsupported for the workload.\n\n - HPA_LEGACY_UNSUPPORTED_REASON_WORKLOAD_TYPE: Workload type/kind is not supported for legacy HPA.\n - HPA_LEGACY_UNSUPPORTED_REASON_HAS_NATIVE_HPA: Workload already has a native HPA configured.\n - HPA_LEGACY_UNSUPPORTED_REASON_NO_ELIGIBLE_CONTAINER: Workload has no HPA eligible container.\n - HPA_LEGACY_UNSUPPORTED_REASON_ROLLOUT_WORKLOAD_REF: Rollout workload is configured using workloadRef.",
        "enum": [
          "HPA_LEGACY_UNSUPPORTED_REASON_UNKNOWN",
          "HPA_LEGACY_UNSUPPORTED_REASON_WORKLOAD_TYPE",
          "HPA_LEGACY_UNSUPPORTED_REASON_HAS_NATIVE_HPA",
          "HPA_LEGACY_UNSUPPORTED_REASON_NO_ELIGIBLE_CONTAINER",
          "HPA_LEGACY_UNSUPPORTED_REASON_ROLLOUT_WORKLOAD_REF"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.HPAManagement": {
        "description": "HPAManagement describes the CAST control-plane relationship to this HPA.\nsource is meaningful only when mode == MODE_MANAGED.",
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAManagement.Mode"
          },
          "source": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAManagement.Source"
          }
        },
        "required": [
          "mode",
          "source"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPAManagement.Mode": {
        "default": "MODE_UNSPECIFIED",
        "description": "Mode describes whether CAST actively manages this HPA.\n\n - MODE_UNMANAGED: CAST does not manage this HPA.\n - MODE_MANAGED: CAST mutates / owns this HPA.",
        "enum": [
          "MODE_UNSPECIFIED",
          "MODE_UNMANAGED",
          "MODE_MANAGED"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.HPAManagement.Source": {
        "default": "SOURCE_UNSPECIFIED",
        "description": "Source identifies which CAST feature created or manages this HPA.\n\n - SOURCE_VPA_CONVERTER: Managed via the VPA converter path (vertical-only policy with AverageValueFromOriginalRequests).\n - SOURCE_SCALING_POLICY: Managed via horizontal autoscaling policy.",
        "enum": [
          "SOURCE_UNSPECIFIED",
          "SOURCE_VPA_CONVERTER",
          "SOURCE_SCALING_POLICY"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.HPAMaxedOutEvent": {
        "properties": {
          "desiredReplicas": {
            "format": "int32",
            "type": "integer"
          },
          "maxReplicas": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "desiredReplicas",
          "maxReplicas"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPAMode": {
        "default": "HPA_MODE_UNSPECIFIED",
        "description": "HPAMode describes the computed horizontal‑scaling state for a workload.\n\n - HPA_MODE_NOT_SET: No HPA configuration on the workload (no native/legacy/v2).\n - HPA_MODE_LEGACY: Legacy CAST AI HPA is configured.\n - HPA_MODE_V2: HPA v2 is configured.\n - HPA_MODE_TAKEOVER: HPA v2 is configured with ownership takeover.\n - HPA_MODE_NATIVE: Workload has an existing native HPA that is not managed by CAST AI.",
        "enum": [
          "HPA_MODE_UNSPECIFIED",
          "HPA_MODE_NOT_SET",
          "HPA_MODE_LEGACY",
          "HPA_MODE_V2",
          "HPA_MODE_TAKEOVER",
          "HPA_MODE_NATIVE"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.HPAOwner": {
        "description": "HPAOwner describes who owns the HPA Kubernetes object (from OwnerReferences).\nIndependent of CAST management.",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAOwner.Type"
          },
          "kind": {
            "type": "string"
          },
          "apiVersion": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPAOwner.Type": {
        "default": "TYPE_UNSPECIFIED",
        "description": "Type classifies the controller that owns the HPA object.\n\n - TYPE_STANDALONE: No owner reference present - plain Kubernetes HPA.\n - TYPE_KEDA: Owned by a KEDA ScaledObject.\n - TYPE_CASTAI: Owned by CAST AI (Recommendation CRD).\n - TYPE_OTHER: Owned by some other third-party controller.",
        "enum": [
          "TYPE_UNSPECIFIED",
          "TYPE_STANDALONE",
          "TYPE_KEDA",
          "TYPE_CASTAI",
          "TYPE_OTHER"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.HPAScalingPolicy": {
        "description": "HPAScalingPolicy is a single policy which must hold true for a specified past interval.",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAScalingPolicyType"
          },
          "value": {
            "format": "int32",
            "title": "value contains the amount of change which is permitted by the policy.\nIt must be greater than zero",
            "type": "integer"
          },
          "periodSeconds": {
            "description": "periodSeconds specifies the window of time for which the policy should hold true.\nPeriodSeconds must be greater than zero and less than or equal to 1800 (30 min).",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "periodSeconds",
          "type",
          "value"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPAScalingPolicyType": {
        "default": "HPA_SCALING_POLICY_TYPE_UNSPECIFIED",
        "description": "HPAScalingPolicyType is the type of the policy which could be used while making scaling decisions.\nPODS_SCALING_POLICY - A policy used to specify a change in absolute number of pods.\nPERCENT_SCALING_POLICY - A policy used to specify a relative amount of change with respect to the current number of pods.",
        "enum": [
          "HPA_SCALING_POLICY_TYPE_UNSPECIFIED",
          "PODS_SCALING_POLICY",
          "PERCENT_SCALING_POLICY"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.HPAScalingRules": {
        "description": "HPAScalingRules configures the scaling behavior for one direction via\nscaling Policy Rules and a configurable metric tolerance.",
        "properties": {
          "stabilizationWindowSeconds": {
            "description": "stabilizationWindowSeconds is the number of seconds for which past recommendations should be\nconsidered while scaling up or scaling down.\nStabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour).\nIf not set, use the default values:\n- For scale up: 0 (i.e. no stabilization is done).\n- For scale down: 300 (i.e. the stabilization window is 300 seconds long).",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "selectPolicy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicySelect"
          },
          "policies": {
            "description": "policies is a list of potential scaling polices which can be used during scaling.\nIf not set, use the default values:\n- For scale up: allow doubling the number of pods, or an absolute change of 4 pods in a 15s window.\n- For scale down: allow all pods to be removed in a 15s window.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.HPAScalingPolicy"
            },
            "type": "array"
          },
          "tolerance": {
            "nullable": true,
            "title": "tolerance is the tolerance on the ratio between the current and desired\nmetric value under which no updates are made to the desired number of\nreplicas (e.g. 0.01 for 1%). Must be greater than or equal to zero. If not\nset, the default cluster-wide tolerance is applied (by default 10%).\nDisclaimer: setting a tolerance requires enabling the alpha HPAConfigurableTolerance feature gate on k8s cluster. Otherwise it's NOOP",
            "type": "string"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.HPASpec": {
        "properties": {
          "minReplicas": {
            "description": "Min replicas a workload can have.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "maxReplicas": {
            "description": "Max replicas a workload can have.",
            "format": "int32",
            "type": "integer"
          },
          "targetCpuUtilizationPercentage": {
            "description": "Target CPU utilization percentage.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "metrics": {
            "description": "Metrics list which is scaled on.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.MetricSpec"
            },
            "type": "array"
          },
          "managedByCastai": {
            "description": "Whether the HPA is managed by CAST AI.",
            "type": "boolean"
          },
          "behavior": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HorizontalPodAutoscalerBehavior"
          }
        },
        "required": [
          "managedByCastai",
          "maxReplicas"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPAState": {
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAMode"
          },
          "nativeHpa": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPASpec"
          },
          "legacyConfig": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPALegacyConfig"
          },
          "v2Config": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAV2Config"
          },
          "v2UnsupportedReason": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAUnsupportedReason"
          },
          "legacyUnsupportedReason": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPALegacyUnsupportedReason"
          }
        },
        "required": [
          "mode"
        ],
        "title": "HPAState is a computed, read-only summary of the workload's horizontal-scaling posture.\nhttps://castai.atlassian.net/wiki/spaces/ENG/pages/3899293718/Unified+HPA+State+Contract+Proposal+and+Implementation+Details",
        "type": "object"
      },
      "workloadoptimization.v1.HPATargetWorkloadContainer": {
        "description": "HPATargetWorkloadContainer mirrors Container.",
        "properties": {
          "name": {
            "type": "string"
          },
          "resources": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          },
          "recommendation": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          },
          "originalResources": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          },
          "runtime": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Runtime"
          },
          "firstSeenResources": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPAUnsupportedReason": {
        "description": "HPAUnsupportedReason contains categorized type and description for why HPA V2 is unsupported.",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAUnsupportedReasonType"
          },
          "description": {
            "description": "Description of why HPA V2 is unsupported.",
            "type": "string"
          }
        },
        "required": [
          "description",
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPAUnsupportedReasonType": {
        "default": "HPA_UNSUPPORTED_REASON_UNKNOWN",
        "description": "HPAUnsupportedReasonType explains why HPA V2 is unsupported for the workload.\n\n - HPA_UNSUPPORTED_REASON_WORKLOAD_TYPE: Workload type/kind is not supported for HPA.\n - HPA_UNSUPPORTED_REASON_TAKE_OWNERSHIP: Cannot take ownership of existing HPA (e.g. owned by third party or has unsupported metrics).",
        "enum": [
          "HPA_UNSUPPORTED_REASON_UNKNOWN",
          "HPA_UNSUPPORTED_REASON_WORKLOAD_TYPE",
          "HPA_UNSUPPORTED_REASON_TAKE_OWNERSHIP"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.HPAV2Config": {
        "description": "HPAV2Config holds the resolved configuration for native Kubernetes HPA v2.",
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "minReplicas": {
            "description": "Minimum number of replicas.",
            "format": "int32",
            "type": "integer"
          },
          "maxReplicas": {
            "description": "Maximum number of replicas.",
            "format": "int32",
            "type": "integer"
          },
          "metrics": {
            "description": "Metrics the HPA scales on.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.MetricSpec"
            },
            "type": "array"
          },
          "behavior": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HorizontalPodAutoscalerBehavior"
          },
          "takeOwnership": {
            "description": "Whether CAST AI takes ownership of the existing native HPA.",
            "type": "boolean"
          }
        },
        "required": [
          "managementOption",
          "maxReplicas",
          "minReplicas",
          "takeOwnership"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HPAWorkloadTarget": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "isCustom": {
            "type": "boolean"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "containers": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.HPATargetWorkloadContainer"
            },
            "type": "array"
          },
          "runningPods": {
            "format": "int32",
            "type": "integer"
          },
          "scalingPolicyId": {
            "type": "string"
          },
          "scalingPolicyName": {
            "type": "string"
          }
        },
        "required": [
          "containers",
          "createdAt",
          "group",
          "id",
          "isCustom",
          "kind",
          "name",
          "namespace",
          "runningPods",
          "scalingPolicyId",
          "scalingPolicyName",
          "updatedAt",
          "version"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HeapCommited": {
        "properties": {
          "metricsGib": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.HeapCommitedMetrics"
            },
            "type": "array"
          },
          "aggregatedGib": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HeapCommitedAggregatedMetrics"
          }
        },
        "required": [
          "aggregatedGib",
          "metricsGib"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HeapCommitedAggregatedMetrics": {
        "properties": {
          "avg": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "avg"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HeapCommitedMetrics": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "avg": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "avg",
          "timestamp"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HeapRecommended": {
        "properties": {
          "metricsGib": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.HeapRecommendedMetrics"
            },
            "type": "array"
          },
          "aggregatedGib": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HeapRecommendedAggregatedMetrics"
          }
        },
        "required": [
          "aggregatedGib",
          "metricsGib"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HeapRecommendedAggregatedMetrics": {
        "properties": {
          "avg": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "avg"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HeapRecommendedMetrics": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "avg": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "avg",
          "timestamp"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HeapUsed": {
        "properties": {
          "metricsGib": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.HeapUsedMetrics"
            },
            "type": "array"
          },
          "aggregatedGib": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HeapUsedAggregatedMetrics"
          }
        },
        "required": [
          "aggregatedGib",
          "metricsGib"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HeapUsedAggregatedMetrics": {
        "properties": {
          "p95": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "p95"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HeapUsedMetrics": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "p95": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "p95",
          "timestamp"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HorizontalOverrides": {
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "minReplicas": {
            "description": "Min replicas a workload can have.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "maxReplicas": {
            "description": "Max replicas a workload can have.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "shortAverageSeconds": {
            "description": "Defines the window of time to make a horizontal scaling decision.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "scaleDown": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingBehaviour"
          },
          "metrics": {
            "description": "Metrics list which is scaled on.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.MetricSpec"
            },
            "type": "array"
          },
          "behavior": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HorizontalPodAutoscalerBehavior"
          },
          "useNative": {
            "description": "Defines whether to use native Kubernetes HPA instead of CAST AI HPA.",
            "nullable": true,
            "type": "boolean"
          },
          "takeOwnership": {
            "nullable": true,
            "title": "When true, CAST AI will take ownership of existing HPAs and manage them according to configured settings.\nWarning: taking ownership will override existing HPAs with newly configured settings\nNote: Ownership will be claimed only on eligible objects, for example existing HPAs with an owner reference will be skipped",
            "type": "boolean"
          }
        },
        "required": [
          "takeOwnership"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.HorizontalPodAutoscalerBehavior": {
        "description": "HorizontalPodAutoscalerBehavior configures the scaling behavior of the target\nin both Up and Down directions (scaleUp and scaleDown fields respectively).",
        "properties": {
          "scaleUp": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAScalingRules"
          },
          "scaleDown": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAScalingRules"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.InPlaceResizeStatus": {
        "default": "UNKNOWN_INPLACE_RESIZE_STATUS",
        "description": "InPlaceResizeStatus explains the in-place resize status.",
        "enum": [
          "UNKNOWN_INPLACE_RESIZE_STATUS",
          "RESIZING",
          "RESIZED",
          "ERROR"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.InitiatedBy": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "nullable": true,
            "type": "string"
          },
          "email": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.JVMContainerMetrics": {
        "properties": {
          "heapUsed": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HeapUsed"
          },
          "heapCommitted": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HeapCommited"
          },
          "recommendedHeap": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HeapRecommended"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.JVMMemorySettings": {
        "properties": {
          "optimization": {
            "description": "Defines whether JVM memory optimization is enabled.",
            "type": "boolean"
          }
        },
        "required": [
          "optimization"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.JVMRuntimeConfiguration": {
        "description": "JVMRuntimeConfiguration defines set of settings that enables and configures for JVM optimization.",
        "properties": {
          "enabled": {
            "description": "Flag to enable JVM optimization.",
            "nullable": true,
            "type": "boolean"
          },
          "optionsEnvVar": {
            "description": "Name of environment variable with JVM parameters that will be injected to container (defaults to JAVA_OPTS if not set).",
            "nullable": true,
            "type": "string"
          },
          "autoInstrument": {
            "description": "When true, JMX exporter will be automatically injected into this container.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.JVMRuntimeConfigurationUpdate": {
        "description": "JVMRuntimeConfigurationUpdate defines set of settings that enables and configures for JVM optimization.",
        "properties": {
          "enabled": {
            "description": "Flag to enable JVM optimization.",
            "nullable": true,
            "type": "boolean"
          },
          "optionsEnvVar": {
            "description": "Name of environment variable with JVM parameters that will be injected to container (defaults to JAVA_OPTS if not set).",
            "nullable": true,
            "type": "string"
          },
          "autoInstrument": {
            "description": "When true, JMX exporter will be automatically injected into this container.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.JVMSettings": {
        "properties": {
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.JVMMemorySettings"
          },
          "autoInstrument": {
            "description": "When true, JMX exporter will be automatically injected into pods where JVM runtime is detected.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.KeyValuePair": {
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.KubernetesLabelExpressionMatcher": {
        "properties": {
          "key": {
            "description": "Key is the label key that the selector applies to.",
            "nullable": true,
            "type": "string"
          },
          "operator": {
            "$ref": "#/components/schemas/workloadoptimization.v1.KubernetesLabelSelectorOperator"
          },
          "values": {
            "description": "Values is an array of string values.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "operator",
          "values"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.KubernetesLabelSelectorOperator": {
        "default": "KUBERNETES_LABEL_SELECTOR_OP_UNSPECIFIED",
        "description": "KubernetesLabelSelectorOperator defines the set of operators for a selector requirement.\n\n - KUBERNETES_LABEL_SELECTOR_OP_IN: Selects resources with label values in the provided set.\n - KUBERNETES_LABEL_SELECTOR_OP_NOT_IN: Selects resources with label values not in the provided set.\n - KUBERNETES_LABEL_SELECTOR_OP_EXISTS: Selects resources that have the specified label key, regardless of value.\n - KUBERNETES_LABEL_SELECTOR_OP_DOES_NOT_EXIST: Selects resources that do not have the specified label key.\n - KUBERNETES_LABEL_SELECTOR_OP_CONTAINS: Selects resources where the label value contains the specified substring.\n - KUBERNETES_LABEL_SELECTOR_OP_REGEX: Selects resources where the label value matches the specified regular expression.",
        "enum": [
          "KUBERNETES_LABEL_SELECTOR_OP_UNSPECIFIED",
          "KUBERNETES_LABEL_SELECTOR_OP_IN",
          "KUBERNETES_LABEL_SELECTOR_OP_NOT_IN",
          "KUBERNETES_LABEL_SELECTOR_OP_EXISTS",
          "KUBERNETES_LABEL_SELECTOR_OP_DOES_NOT_EXIST",
          "KUBERNETES_LABEL_SELECTOR_OP_CONTAINS",
          "KUBERNETES_LABEL_SELECTOR_OP_REGEX"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.KubernetesNamespaceMatcher": {
        "description": "Represents a namespace matcher for a scaling policy. If multiple matchers are defined, the workload must match all of them.",
        "properties": {
          "names": {
            "description": "Defines matching by namespace names.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "labelsExpressions": {
            "description": "Defines matching by a list of label selector requirements.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.KubernetesLabelExpressionMatcher"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.KubernetesWorkloadMatcher": {
        "properties": {
          "gvk": {
            "items": {
              "type": "string"
            },
            "title": "GVK should be in the format kind[.version][.group] and can be:\n- Only kind, e.g., \"Deployment\"\n- Group and kind, e.g., \"Deployment.apps\"\n- Group, version, and kind, e.g., \"Deployment.v1.apps\"",
            "type": "array"
          },
          "labelsExpressions": {
            "description": "Defines matching by a list of label selector requirements.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.KubernetesLabelExpressionMatcher"
            },
            "type": "array"
          }
        },
        "title": "Represents a workload matcher for a scaling policy",
        "type": "object"
      },
      "workloadoptimization.v1.LimitRange": {
        "properties": {
          "id": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "cpuPod": {
            "$ref": "#/components/schemas/workloadoptimization.v1.LimitRangeResource"
          },
          "memoryPod": {
            "$ref": "#/components/schemas/workloadoptimization.v1.LimitRangeResource"
          },
          "cpuContainer": {
            "$ref": "#/components/schemas/workloadoptimization.v1.LimitRangeResource"
          },
          "memoryContainer": {
            "$ref": "#/components/schemas/workloadoptimization.v1.LimitRangeResource"
          },
          "object": {
            "properties": {},
            "title": "Unstructured view of K8S object",
            "type": "object"
          }
        },
        "required": [
          "clusterId",
          "id",
          "name",
          "namespace",
          "object",
          "organizationId"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.LimitRangeResource": {
        "properties": {
          "min": {
            "description": "The min amount of a resource. For memory - this is in MiB, for CPU - this is in cores.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "max": {
            "description": "The quota value for a resource. For memory - this is in MiB, for CPU - this is in cores.",
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ListClusterHPAsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ClusterHPA"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ListCustomMetricsDataSourcesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ListLimitRangesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.LimitRange"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ListResourceQuotasResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ResourceQuota"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ListWorkloadEventsResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadEvent"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "The token to request the next page of results.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ListWorkloadScalingPoliciesResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
            },
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ListWorkloadsResponse": {
        "properties": {
          "workloads": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.Workload"
            },
            "type": "array"
          },
          "nextCursor": {
            "description": "The token to request the next page of results.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "workloads"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ManagedBy": {
        "default": "API",
        "description": "Defines sources that can manage the workload.\nAPI - workload is managed by Cast API.\nAnnotations - workload is managed by annotations.",
        "enum": [
          "API",
          "ANNOTATIONS"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ManagementOption": {
        "default": "UNDEFINED",
        "description": "Defines possible options for workload management.\nREAD_ONLY - workload watched (metrics collected), but no actions may be performed by CAST AI.\nMANAGED - workload watched (metrics collected), CAST AI may perform actions on the workload.",
        "enum": [
          "UNDEFINED",
          "READ_ONLY",
          "MANAGED"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.MemoryEventSettings": {
        "properties": {
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.MemoryPressureEvictionEvent": {
        "properties": {
          "containers": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.MemoryPressureEvictionEvent.Container"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.MemoryPressureEvictionEvent.Container": {
        "properties": {
          "name": {
            "type": "string"
          },
          "memoryUsageGib": {
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.MetricIdentifier": {
        "properties": {
          "name": {
            "type": "string"
          },
          "selector": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "name",
          "selector"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.MetricSourceType": {
        "default": "METRIC_SOURCE_TYPE_UNSPECIFIED",
        "description": "MetricSourceType defines the source type of a metric used for autoscaling decisions.\nRESOURCE - Resource metrics like CPU or memory usage collected from pods.\nPODS - Custom metrics aggregated across pods (e.g., requests-per-second).\nOBJECT - Metrics associated with a specific Kubernetes object (e.g., Ingress request rate).\nEXTERNAL - Metrics not associated with any Kubernetes object (e.g., from a cloud provider).\nCONTAINER_RESOURCE - Resource metrics scoped to a specific container within a pod.",
        "enum": [
          "METRIC_SOURCE_TYPE_UNSPECIFIED",
          "RESOURCE",
          "PODS",
          "OBJECT",
          "EXTERNAL",
          "CONTAINER_RESOURCE"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.MetricSpec": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MetricSourceType"
          },
          "resource": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceMetricSource"
          },
          "pods": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PodsMetricSource"
          },
          "object": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ObjectMetricSource"
          },
          "external": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ExternalMetricSource"
          },
          "containerResource": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ContainerResourceMetricSource"
          }
        },
        "title": "MetricSpec defines one metric type",
        "type": "object"
      },
      "workloadoptimization.v1.MetricTarget": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MetricTargetType"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "value"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.MetricTargetType": {
        "default": "METRIC_TARGET_TYPE_UNSPECIFIED",
        "description": "MetricTargetType defines how the target value for a metric should be interpreted\nwhen scaling decisions are made by the HPA controller.\nVALUE - A specific metric value to target (e.g., 500m).\nAVERAGE_VALUE - A metric value averaged across all pods (e.g., 200Mi).\nUTILIZATION - A percentage of the requested resource utilization (e.g., 80).",
        "enum": [
          "METRIC_TARGET_TYPE_UNSPECIFIED",
          "VALUE",
          "AVERAGE_VALUE",
          "UTILIZATION"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.MigrateClusterToHPAV2Response": {
        "type": "object"
      },
      "workloadoptimization.v1.NativeVPAStateChangedEvent": {
        "properties": {
          "vpaPresent": {
            "type": "boolean"
          }
        },
        "required": [
          "vpaPresent"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.NewCustomMetricsDataSource": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSource.Type"
          },
          "data": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSourceInput"
          }
        },
        "required": [
          "data",
          "name",
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.NewWorkloadScalingPolicy": {
        "properties": {
          "name": {
            "title": "The scaling policy name must be unique within a cluster and adhere to the format guidelines of Kubernetes labels/annotations.\nIt should have a maximum length of 63 characters and begin and end with an alphanumeric character.\nAdditionally, it can include alphanumeric characters, periods (.), underscores (_), or hyphens (-). For reference on the formatting, please visit:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/",
            "type": "string"
          },
          "recommendationPolicies": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationPolicies"
          },
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          },
          "assignmentRules": {
            "description": "AssignmentRules defines the ordered list of matching rules.\nThe first matching rule is selected and assigned to workload.\nIf none are matching then the default cluster policy is assigned.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyAssignmentRule"
            },
            "type": "array"
          },
          "hpaSettings": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyHPASettings"
          },
          "isOpsPilot": {
            "description": "Indicates that this scaling policy was created by OpsPilot and can be updated by it in subsequent runs.",
            "type": "boolean"
          }
        },
        "required": [
          "applyType",
          "name",
          "recommendationPolicies"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.OOMKillEvent": {
        "properties": {
          "containers": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.EventContainer"
            },
            "type": "array"
          }
        },
        "required": [
          "containers"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ObjectMetricSource": {
        "properties": {
          "metric": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MetricIdentifier"
          },
          "describedObject": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CrossVersionObjectReference"
          },
          "target": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MetricTarget"
          }
        },
        "required": [
          "describedObject",
          "metric",
          "target"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.PSIPressureResolvedContainer": {
        "properties": {
          "name": {
            "type": "string"
          },
          "startedAt": {
            "description": "Time pressure was detected.",
            "format": "date-time",
            "type": "string"
          },
          "stoppedAt": {
            "description": "Time pressure correction was stopped.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "name",
          "startedAt",
          "stoppedAt"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.PatchWorkloadV2": {
        "properties": {
          "scalingPolicyId": {
            "description": "Defines the scaling policy ID assigned to the workload.",
            "nullable": true,
            "type": "string"
          },
          "workloadConfig": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadConfigUpdateV2"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.PodInPlaceResize": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/workloadoptimization.v1.InPlaceResizeStatus"
          },
          "error": {
            "description": "Error of the in place resize.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "error",
          "status"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.PodMetadata": {
        "properties": {
          "name": {
            "description": "Name of the pod.",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PodStatus"
          },
          "containers": {
            "description": "Details about individual containers.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.PodMetadataContainer"
            },
            "type": "array"
          },
          "recommendation": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PodRecommendationStatus"
          },
          "isLatestRecommendation": {
            "title": "Is it the latest deployed recommendation?",
            "type": "boolean"
          },
          "inPlaceResize": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PodInPlaceResize"
          },
          "updatedAt": {
            "description": "When this information has been updated in our system.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "containers",
          "isLatestRecommendation",
          "name",
          "status",
          "updatedAt"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.PodMetadataContainer": {
        "properties": {
          "name": {
            "description": "Container name.",
            "type": "string"
          },
          "resources": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          }
        },
        "required": [
          "name",
          "resources"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.PodMetrics": {
        "properties": {
          "podCount": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.TimeSeriesMetric"
            },
            "type": "array"
          },
          "podCountMin": {
            "format": "double",
            "type": "number"
          },
          "podCountMax": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "podCount",
          "podCountMax",
          "podCountMin"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.PodRecommendationStatus": {
        "properties": {
          "appliedAt": {
            "description": "The time the last recommendation has been applied.",
            "format": "date-time",
            "type": "string"
          },
          "resourcesMismatched": {
            "description": "Mismatch between recommended resources and actual resources.",
            "type": "boolean"
          }
        },
        "required": [
          "appliedAt",
          "resourcesMismatched"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.PodStatus": {
        "default": "UNKNOWN_POD_STATUS",
        "description": "PodStatus defines short status information of the pod.",
        "enum": [
          "UNKNOWN_POD_STATUS",
          "PENDING",
          "RUNNING",
          "SUCCEEDED",
          "FAILED"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.PodsMetricSource": {
        "properties": {
          "metric": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MetricIdentifier"
          },
          "target": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MetricTarget"
          }
        },
        "required": [
          "metric",
          "target"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.PredictiveInsights": {
        "properties": {
          "isEligible": {
            "description": "Indicates if the workload is eligible for predictive analysis and has future resource forecasts.",
            "type": "boolean"
          },
          "availableUntil": {
            "description": "Timestamp until which predictive data is available.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "isEligible"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.PredictiveScaling": {
        "properties": {
          "enabled": {
            "description": "Defines if predictive scaling is enabled for resource.",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.PredictiveScalingSettings": {
        "properties": {
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PredictiveScaling"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.RecommendationError": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationErrorType"
          },
          "message": {
            "description": "Human-readable reason.",
            "type": "string"
          }
        },
        "required": [
          "message",
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.RecommendationErrorType": {
        "default": "ERROR_UNKNOWN",
        "description": "RecommendationErrorType explains why the recommendation has failed to apply.\n\n - ERROR_IMMEDIATE_APPLY_BLOCKED: Workload-autoscaler has blocked immediate applies due to too many consecutive failed attempts (circuit breaker).\n - ERROR_HPA_STATUS_UNHEALTHY: The HPA recommendation status propagated from the in-cluster state.",
        "enum": [
          "ERROR_UNKNOWN",
          "ERROR_DEPLOY_FAILED",
          "ERROR_CUSTOM_WORKLOAD_INVALID_NAME",
          "ERROR_CUSTOM_WORKLOAD_CONTAINERS_MISMATCH",
          "ERROR_RECOMMENDATION_GENERATION",
          "ERROR_IMMEDIATE_APPLY_BLOCKED",
          "ERROR_HPA_STATUS_UNHEALTHY"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.RecommendationEvent": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationEventType"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.RecommendationEventType": {
        "default": "RECOMMENDATION_EVENT_TYPE_INVALID",
        "description": "Defines possible options for recommendation events.\n\n - RECOMMENDATION_EVENT_TYPE_REVERT: RECOMMENDATION_EVENT_TYPE_REVERT - recommendation replicas were reverted.",
        "enum": [
          "RECOMMENDATION_EVENT_TYPE_INVALID",
          "RECOMMENDATION_EVENT_TYPE_REVERT"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.RecommendationOrigin": {
        "default": "ORIGIN_UNKNOWN",
        "description": "Defines possible options from where the recommendation has originated.",
        "enum": [
          "ORIGIN_UNKNOWN",
          "ORIGIN_SNAPSHOT",
          "ORIGIN_MEMORY_EVENT",
          "ORIGIN_SURGE_EVENT",
          "ORIGIN_CONFIG_CHANGED",
          "ORIGIN_READONLY_RESOURCE_CHANGED",
          "ORIGIN_VERTICAL_MANAGEMENT_ENABLED",
          "ORIGIN_STARTUP_FAILURE_EVENT",
          "ORIGIN_HPA_ALMOST_MAXED_OUT",
          "ORIGIN_HPA_MAXED_OUT"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.RecommendationPolicies": {
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          },
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourcePolicies"
          },
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourcePolicies"
          },
          "startup": {
            "$ref": "#/components/schemas/workloadoptimization.v1.StartupSettings"
          },
          "downscaling": {
            "$ref": "#/components/schemas/workloadoptimization.v1.DownscalingSettings"
          },
          "memoryEvent": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MemoryEventSettings"
          },
          "antiAffinity": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AntiAffinitySettings"
          },
          "confidence": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConfidenceSettings"
          },
          "rolloutBehavior": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RolloutBehaviorSettings"
          },
          "predictiveScaling": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PredictiveScalingSettings"
          },
          "excludedContainers": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "anomalyDetection": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AnomalyDetectionSettings"
          },
          "jvm": {
            "$ref": "#/components/schemas/workloadoptimization.v1.JVMSettings"
          },
          "hpaConverters": {
            "description": "Configuration for converting existing HPAs when VPA is the sole optimization.\nIf HPA management is enabled, it takes precedence over this setting.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.HPAConverters"
            },
            "type": "array"
          },
          "gpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.GPUSettings"
          }
        },
        "required": [
          "applyType",
          "cpu",
          "managementOption",
          "memory"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.RecommendationStatus": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationStatusType"
          },
          "appliedPods": {
            "description": "Number of pods that have the recommendation applied (deferred - any recommendation, immediate - latest).",
            "format": "int32",
            "type": "integer"
          },
          "totalPods": {
            "description": "Total number of pods for the recommendation.",
            "format": "int32",
            "type": "integer"
          },
          "lowConfidence": {
            "description": "Determine if it's a low confidence.",
            "type": "boolean"
          },
          "stopReason": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationStopReason"
          },
          "error": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationError"
          },
          "earliestActiveRecommendationAt": {
            "description": "When the oldest recommendation has been applied to active pods.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "appliedPods",
          "lowConfidence",
          "totalPods",
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.RecommendationStatusType": {
        "default": "STATUS_UNKNOWN",
        "description": "RecommendationStatusType explains what is the current state of recommendations.",
        "enum": [
          "STATUS_UNKNOWN",
          "STATUS_WAITING",
          "STATUS_APPLIED",
          "STATUS_STOPPED"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.RecommendationStep": {
        "description": "RecommendationStep captures a single transformation stage in the recommendation\npipeline. The args field contains unstructured step-specific parameters.",
        "properties": {
          "message": {
            "type": "string"
          },
          "resources": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Resources"
          },
          "args": {
            "properties": {},
            "type": "object"
          },
          "labels": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationStepLabel"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.RecommendationStepLabel": {
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "description": "The value of the label as a string.\nNumeric values are encoded as their string representation.",
            "type": "string"
          },
          "unit": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationStepLabel.Unit"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.RecommendationStepLabel.Unit": {
        "default": "UNIT_UNSPECIFIED",
        "description": "The optional unit of the label.\nPERCENT - for percentages sent as floats.\nMILLICORE - CPU millicores.\nBYTE - Memory bytes.",
        "enum": [
          "UNIT_UNSPECIFIED",
          "PERCENT",
          "MILLICORE",
          "BYTE"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.RecommendationStopReason": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationStopReasonType"
          },
          "message": {
            "description": "Human-readable reason.",
            "type": "string"
          }
        },
        "required": [
          "message",
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.RecommendationStopReasonType": {
        "default": "STOP_REASON_UNKNOWN",
        "description": "RecommendationStopReasonType explains why the recommendation has been stopped for the workload.",
        "enum": [
          "STOP_REASON_UNKNOWN",
          "STOP_REASON_OOMKILL"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.RecommendationSummary": {
        "description": "RecommendationSummary describes the overall outcome and per-container calculation steps\nfor a workload recommendation event.",
        "properties": {
          "confidence": {
            "$ref": "#/components/schemas/workloadoptimization.v1.SummaryConfidence"
          },
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          },
          "actionType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ActionType"
          },
          "containerRecommendations": {
            "additionalProperties": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ContainerRecommendationSummary"
            },
            "type": "object"
          },
          "thresholds": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadThresholds"
          },
          "origins": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationOrigin"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.RecommendedPodCountChangedEvent": {
        "properties": {
          "current": {
            "format": "int32",
            "type": "integer"
          },
          "previous": {
            "format": "int32",
            "type": "integer"
          },
          "debugData": {
            "properties": {},
            "title": "Unstructured debug data describing details about how recommendation was generated",
            "type": "object"
          },
          "summary": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationSummary"
          }
        },
        "required": [
          "current",
          "previous"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.RecommendedRequestsChangedEvent": {
        "properties": {
          "current": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendedRequestsChangedEvent.Change"
          },
          "previous": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendedRequestsChangedEvent.Change"
          },
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          },
          "debugData": {
            "properties": {},
            "title": "Unstructured debug data describing details about how recommendation was generated",
            "type": "object"
          },
          "origins": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationOrigin"
            },
            "title": "Recommendation origin triggers that caused this recommendation change",
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationSummary"
          }
        },
        "required": [
          "applyType",
          "current",
          "previous"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.RecommendedRequestsChangedEvent.Change": {
        "properties": {
          "containers": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.EventContainer"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ResetSystemOverridesRequest.Target": {
        "default": "TARGET_UNSPECIFIED",
        "description": "Specifies which type of system override should be reset for the workload.",
        "enum": [
          "TARGET_UNSPECIFIED",
          "VERTICAL_OPTIMIZATION"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ResetSystemOverridesResponse": {
        "properties": {
          "result": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResetSystemOverridesResponse.Result"
          },
          "reason": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResetSystemOverridesResponse.Reason"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ResetSystemOverridesResponse.Reason": {
        "default": "REASON_UNSPECIFIED",
        "description": "Defines the reason for non-successful outcomes.\n\n - SYSTEM_OVERRIDE_INACTIVE: Indicates that the system overrides were inactive and therefore no action was taken.",
        "enum": [
          "REASON_UNSPECIFIED",
          "SYSTEM_OVERRIDE_INACTIVE"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ResetSystemOverridesResponse.Result": {
        "default": "RESULT_UNSPECIFIED",
        "description": "Defines outcomes of system overrides reset action.",
        "enum": [
          "RESULT_UNSPECIFIED",
          "SUCCESS",
          "IGNORED"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ResourceConfig": {
        "properties": {
          "function": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceConfig.Function"
          },
          "args": {
            "description": "The arguments for the function - i.e. for a quantile, this should be a [0, 1] float.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "overhead": {
            "description": "The overhead for the recommendation, the formula is: (1 + overhead) * function(args).",
            "format": "double",
            "type": "number"
          },
          "applyThreshold": {
            "description": "The threshold of when to apply the recommendation - when diff of current requests and recommendation is greater than this, apply the recommendation.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "min": {
            "description": "Min values for the recommendation. For memory - this is in MiB, for CPU - this is in cores.\nIf not set, there will be no lower bound for the recommendation (default behaviour).\nSuperseded by constraints when it is set.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "max": {
            "description": "Max values for the recommendation. For memory - this is in MiB, for CPU - this is in cores.\nIf not set, there will be no upper bound for the recommendation (default behaviour).\nSuperseded by constraints when it is set.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "lookBackPeriodSeconds": {
            "description": "Period of time over which the resource recommendation is calculated (default value is 24 hours).",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "limit": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceLimitStrategy"
          },
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "applyThresholdStrategy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyThresholdStrategy"
          },
          "constraints": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConstraintsV2"
          }
        },
        "required": [
          "args",
          "function",
          "overhead"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ResourceConfig.Function": {
        "default": "QUANTILE",
        "description": "The function which to use when calculating the resource recommendation.\nQUANTILE - the quantile function.\nMAX - the max function.",
        "enum": [
          "QUANTILE",
          "MAX"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ResourceConfigOverrides": {
        "properties": {
          "function": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceConfigOverrides.Function"
          },
          "args": {
            "description": "The arguments for the function - i.e. for a quantile, this should be a [0, 1] float.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "overhead": {
            "description": "The overhead for the recommendation, the formula is: (1 + overhead) * function(args).",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "applyThreshold": {
            "description": "The threshold of when to apply the recommendation - when diff of current requests and recommendation is greater than this, apply the recommendation.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "min": {
            "description": "Min values for the recommendation. For memory - this is in MiB, for CPU - this is in cores.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "max": {
            "description": "Max values for the recommendation. For memory - this is in MiB, for CPU - this is in cores.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "lookBackPeriodSeconds": {
            "description": "Period of time over which the resource recommendation is calculated.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "limit": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceLimitStrategy"
          },
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "applyThresholdStrategy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyThresholdStrategy"
          },
          "constraints": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConstraintsV2"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ResourceConfigOverrides.Function": {
        "default": "QUANTILE",
        "description": "The function which to use when calculating the resource recommendation.\nQUANTILE - the quantile function.\nMAX - the max function.",
        "enum": [
          "QUANTILE",
          "MAX"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ResourceConfigUpdate": {
        "properties": {
          "min": {
            "description": "Min values for the recommendation. For memory - this is in MiB, for CPU - this is in cores.\nIf not set, there will be no lower bound for the recommendation (default behaviour).",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "max": {
            "description": "Max values for the recommendation. For memory - this is in MiB, for CPU - this is in cores.\nIf not set, there will be no upper bound for the recommendation (default behaviour).",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "constraints": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConstraintsV2"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ResourceLimitStrategy": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceLimitStrategy.Type"
          },
          "multiplier": {
            "format": "double",
            "type": "number"
          },
          "onlyIfOriginalExist": {
            "description": "Apply the strategy only when the resource limits exists originally.",
            "nullable": true,
            "type": "boolean"
          },
          "onlyIfOriginalLower": {
            "description": "Use the original resource limits if they are higher.",
            "nullable": true,
            "type": "boolean"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ResourceLimitStrategy.Type": {
        "default": "UNKNOWN",
        "description": "Type is the type of the limit strategy.\n\n - NO_LIMIT: No limit removes the resource limit even if it was specified in the workload spec.\n - MULTIPLIER: Multiplier used to calculate the resource limit. The final value is determined by multiplying the resource request by the specified factor.\n - KEEP_LIMITS: Keep limits respects limits if they are present in the workload spec.\n - MAINTAIN_RATIO: Maintain original ratio of requests/limits.",
        "enum": [
          "UNKNOWN",
          "NO_LIMIT",
          "MULTIPLIER",
          "KEEP_LIMITS",
          "MAINTAIN_RATIO"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ResourceMetricSource": {
        "properties": {
          "name": {
            "type": "string"
          },
          "target": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MetricTarget"
          }
        },
        "required": [
          "name",
          "target"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ResourceMetrics": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "min": {
            "format": "double",
            "type": "number"
          },
          "max": {
            "format": "double",
            "type": "number"
          },
          "p25": {
            "format": "double",
            "type": "number"
          },
          "p50": {
            "format": "double",
            "type": "number"
          },
          "p75": {
            "format": "double",
            "type": "number"
          },
          "rec": {
            "format": "double",
            "type": "number"
          },
          "req": {
            "format": "double",
            "type": "number"
          },
          "avg": {
            "format": "double",
            "type": "number"
          },
          "recPredicted": {
            "format": "double",
            "type": "number"
          },
          "avgPredicted": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "avg",
          "avgPredicted",
          "max",
          "min",
          "p25",
          "p50",
          "p75",
          "rec",
          "recPredicted",
          "req",
          "timestamp"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ResourcePolicies": {
        "properties": {
          "function": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourcePolicies.Function"
          },
          "args": {
            "description": "The arguments for the function - i.e. for a quantile, this should be a [0, 1] float.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "overhead": {
            "description": "The overhead for the recommendation, the formula is: (1 + overhead) * function(args).",
            "format": "double",
            "type": "number"
          },
          "applyThreshold": {
            "description": "The threshold of when to apply the recommendation - when diff of current requests and recommendation is greater than this, apply the recommendation.",
            "format": "double",
            "type": "number"
          },
          "lookBackPeriodSeconds": {
            "description": "Period of time over which the resource recommendation is calculated (default value is 24 hours).",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "min": {
            "description": "Min values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores.\nIf not set, the default value will be 10m for CPU and 10MiB for memory. This value will be overridden if configured on workload level.\nValue cannot be lower than 10m for CPU and 10MiB for memory.\nSuperseded by constraints when it is set.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "max": {
            "description": "Max values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores.\nIf not set, there will be no upper bound for the recommendation (default behaviour). This value will be overridden if configured on workload level.\nSuperseded by constraints when it is set.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "limit": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceLimitStrategy"
          },
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "applyThresholdStrategy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyThresholdStrategy"
          },
          "constraints": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConstraintsV2"
          }
        },
        "required": [
          "applyThreshold",
          "args",
          "function",
          "overhead"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ResourcePolicies.Function": {
        "default": "QUANTILE",
        "description": "The function which to use when calculating the resource recommendation.\nQUANTILE - the quantile function.\nMAX - the max function.",
        "enum": [
          "QUANTILE",
          "MAX"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ResourceQuantity": {
        "properties": {
          "cpuCores": {
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "memoryGib": {
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ResourceQuota": {
        "properties": {
          "id": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "cpuRequests": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceQuotaResource"
          },
          "cpuLimits": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceQuotaResource"
          },
          "memoryRequests": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceQuotaResource"
          },
          "memoryLimits": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceQuotaResource"
          },
          "object": {
            "properties": {},
            "title": "Unstructured view of K8S object",
            "type": "object"
          }
        },
        "required": [
          "clusterId",
          "id",
          "name",
          "namespace",
          "object",
          "organizationId"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ResourceQuotaResource": {
        "properties": {
          "used": {
            "description": "The used amount of a resource. For memory - this is in MiB, for CPU - this is in cores.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "hard": {
            "description": "The quota value for a resource. For memory - this is in MiB, for CPU - this is in cores.",
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ResourceThreshold": {
        "properties": {
          "threshold": {
            "format": "double",
            "type": "number"
          },
          "reference": {
            "format": "double",
            "nullable": true,
            "type": "number"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.Resources": {
        "properties": {
          "limits": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceQuantity"
          },
          "requests": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceQuantity"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.RolloutBehaviorSettings": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RolloutBehaviorType"
          },
          "preferOneByOne": {
            "description": "If true, prefer rolling out recommendations one pod at a time.",
            "nullable": true,
            "type": "boolean"
          },
          "delaySeconds": {
            "description": "Number of seconds to delay before applying the recommendation rollout. Must be between 0 and 3600.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.RolloutBehaviorType": {
        "default": "UNSPECIFIED",
        "description": "Defines workload recommendation rollout types.\nNO_DISRUPTION - rollout shouldn't cause service disruption.",
        "enum": [
          "UNSPECIFIED",
          "NO_DISRUPTION"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.Runtime": {
        "default": "RUNTIME_UNSPECIFIED",
        "description": "Defines the application runtime.",
        "enum": [
          "RUNTIME_UNSPECIFIED",
          "JVM"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ScalingBehaviour": {
        "properties": {
          "stabilizationWindowSeconds": {
            "description": "Defines the minimum time to make a scaling decision after decision has been made.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ScalingPolicyAssigned": {
        "properties": {
          "policy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
          }
        },
        "required": [
          "policy"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ScalingPolicyAssignmentRule": {
        "properties": {
          "namespace": {
            "$ref": "#/components/schemas/workloadoptimization.v1.KubernetesNamespaceMatcher"
          },
          "workload": {
            "$ref": "#/components/schemas/workloadoptimization.v1.KubernetesWorkloadMatcher"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.ScalingPolicyConfig": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ScalingPolicyCreated": {
        "properties": {
          "policy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
          }
        },
        "required": [
          "policy"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ScalingPolicyDeleted": {
        "properties": {
          "policy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
          }
        },
        "required": [
          "policy"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ScalingPolicyHPASettings": {
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "nativeHpaSpec": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyNativeHPASpec"
          },
          "takeOwnership": {
            "title": "When true, CAST AI will take ownership of existing HPAs and manage them according to the policy settings.\nWarning: taking ownership will override existing HPAs with policy setting values\nNote: Ownership will be claimed only on eligible objects, for example existing HPAs with an owner reference will be skipped",
            "type": "boolean"
          }
        },
        "required": [
          "managementOption",
          "nativeHpaSpec",
          "takeOwnership"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ScalingPolicyNativeHPASpec": {
        "properties": {
          "minReplicas": {
            "description": "Min replicas a workload can have.",
            "format": "int32",
            "type": "integer"
          },
          "maxReplicas": {
            "description": "Max replicas a workload can have.",
            "format": "int32",
            "type": "integer"
          },
          "metrics": {
            "description": "Metrics list which is scaled on. Matches Kubernetes HPA spec.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.MetricSpec"
            },
            "type": "array"
          },
          "behavior": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HorizontalPodAutoscalerBehavior"
          }
        },
        "required": [
          "maxReplicas",
          "metrics",
          "minReplicas"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ScalingPolicyOrderUpdatedEvent": {
        "properties": {
          "previous": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyOrderUpdatedItem"
            },
            "type": "array"
          },
          "current": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyOrderUpdatedItem"
            },
            "type": "array"
          }
        },
        "required": [
          "current",
          "previous"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ScalingPolicyOrderUpdatedItem": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.ScalingPolicyOrigin": {
        "default": "ORIGIN_UNSET",
        "description": "ScalingPolicyOrigin explains what was the source of the selected scaling policy.",
        "enum": [
          "ORIGIN_UNSET",
          "ORIGIN_DEFAULT",
          "ORIGIN_ASSIGNMENT_RULES",
          "ORIGIN_ANNOTATIONS",
          "ORIGIN_API"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ScalingPolicySelect": {
        "default": "SCALING_POLICY_SELECT_UNSPECIFIED",
        "description": "ScalingPolicySelect is used to specify which policy should be used while scaling in a certain direction.\nMAX_CHANGE_POLICY_SELECT - Selects the policy with the highest possible change.\nMIN_CHANGE_POLICY_SELECT - Selects the policy with the lowest possible change.\nDISABLED_POLICY_SELECT - Disables the scaling in this direction.",
        "enum": [
          "SCALING_POLICY_SELECT_UNSPECIFIED",
          "MAX_CHANGE_POLICY_SELECT",
          "MIN_CHANGE_POLICY_SELECT",
          "DISABLED_POLICY_SELECT"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.ScalingPolicyUpdated": {
        "properties": {
          "previous": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
          },
          "current": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
          }
        },
        "required": [
          "current",
          "previous"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.SetScalingPoliciesOrderResponse": {
        "type": "object"
      },
      "workloadoptimization.v1.StartupFailureContainer": {
        "properties": {
          "name": {
            "type": "string"
          },
          "probeFailureIncrease": {
            "description": "The number of times the readiness or startup probe has failed in last observation period - default last 5 minutes.\nFor example, the value 10 means that the probe has failed 10 times in last 5 minutes.",
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "name",
          "probeFailureIncrease"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.StartupFailureEvent": {
        "properties": {
          "containers": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.StartupFailureContainer"
            },
            "type": "array"
          }
        },
        "required": [
          "containers"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.StartupSettings": {
        "properties": {
          "periodSeconds": {
            "description": "Defines the duration (in seconds) during which elevated resource usage is expected at startup.\nWhen set, recommendations will be adjusted to disregard resource spikes within this period.\nIf not specified, the workload will receive standard recommendations without startup considerations.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.SummaryConfidence": {
        "properties": {
          "threshold": {
            "format": "double",
            "type": "number"
          },
          "total": {
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.SurgeContainer": {
        "properties": {
          "name": {
            "type": "string"
          },
          "surge": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceQuantity"
          },
          "recommendedBefore": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceQuantity"
          }
        },
        "required": [
          "name",
          "recommendedBefore",
          "surge"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.SurgeEvent": {
        "properties": {
          "containers": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.SurgeContainer"
            },
            "type": "array"
          }
        },
        "required": [
          "containers"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.SystemOverrideOrigin": {
        "default": "SYSTEM_OVERRIDE_ORIGIN_UNSPECIFIED",
        "description": "SystemOverrideOrigin defines the reason why a system override was triggered.\n\n - SYSTEM_OVERRIDE_ORIGIN_CONTINUOUS_OOM_KILLED: Override triggered due to continuous OOM kills after multiple scaling attempts.\n - SYSTEM_OVERRIDE_ORIGIN_UNBOUND_MEMORY_GROWTH: Override triggered due to detected unbound memory growth.",
        "enum": [
          "SYSTEM_OVERRIDE_ORIGIN_UNSPECIFIED",
          "SYSTEM_OVERRIDE_ORIGIN_CONTINUOUS_OOM_KILLED",
          "SYSTEM_OVERRIDE_ORIGIN_UNBOUND_MEMORY_GROWTH"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.SystemOverrideResetEvent": {
        "description": "SystemOverrideResetEvent is emitted when a system override on a workload is deactivated.",
        "properties": {
          "target": {
            "$ref": "#/components/schemas/workloadoptimization.v1.SystemOverrideTarget"
          },
          "origin": {
            "$ref": "#/components/schemas/workloadoptimization.v1.SystemOverrideResetOrigin"
          }
        },
        "required": [
          "origin",
          "target"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.SystemOverrideResetOrigin": {
        "default": "SYSTEM_OVERRIDE_RESET_ORIGIN_UNSPECIFIED",
        "description": "SystemOverrideResetOrigin defines the reason why a system override was reset.\n\n - SYSTEM_OVERRIDE_RESET_ORIGIN_API_CALL: Override reset via API call by user or system.\n - SYSTEM_OVERRIDE_RESET_ORIGIN_EXPIRED: Override reset due to expiration after a configured time period.\n - SYSTEM_OVERRIDE_RESET_ORIGIN_ANNOTATIONS_OFF: Override reset because workload is no longer managed by CAST AI annotations.",
        "enum": [
          "SYSTEM_OVERRIDE_RESET_ORIGIN_UNSPECIFIED",
          "SYSTEM_OVERRIDE_RESET_ORIGIN_API_CALL",
          "SYSTEM_OVERRIDE_RESET_ORIGIN_EXPIRED",
          "SYSTEM_OVERRIDE_RESET_ORIGIN_ANNOTATIONS_OFF"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.SystemOverrideTarget": {
        "default": "SYSTEM_OVERRIDE_TARGET_UNSPECIFIED",
        "description": "SystemOverrideTarget defines which workload optimization features are affected by the system override.\n\n - SYSTEM_OVERRIDE_TARGET_ALL: Affects all system overrides properties.\n - SYSTEM_OVERRIDE_TARGET_VERTICAL_OPTIMIZATION: Affects only vertical optimization (resource recommendations).",
        "enum": [
          "SYSTEM_OVERRIDE_TARGET_UNSPECIFIED",
          "SYSTEM_OVERRIDE_TARGET_ALL",
          "SYSTEM_OVERRIDE_TARGET_VERTICAL_OPTIMIZATION"
        ],
        "type": "string"
      },
      "workloadoptimization.v1.SystemOverrideTriggeredEvent": {
        "description": "SystemOverrideTriggeredEvent is emitted when CAST AI activates a system override on a workload.",
        "properties": {
          "target": {
            "$ref": "#/components/schemas/workloadoptimization.v1.SystemOverrideTarget"
          },
          "origin": {
            "$ref": "#/components/schemas/workloadoptimization.v1.SystemOverrideOrigin"
          }
        },
        "required": [
          "origin",
          "target"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.TimeSeriesMetric": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "value": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "timestamp",
          "value"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.UnboundMemoryGrowthEvent": {
        "type": "object"
      },
      "workloadoptimization.v1.UpdateCustomMetricsDataSource": {
        "properties": {
          "name": {
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CustomMetricsDataSourceInput"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.UpdateWorkloadResponseV2": {
        "properties": {
          "workload": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Workload"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.UpdateWorkloadScalingPolicy": {
        "properties": {
          "name": {
            "title": "The scaling policy name must be unique within a cluster and adhere to the format guidelines of Kubernetes labels/annotations.\nIt should have a maximum length of 63 characters and begin and end with an alphanumeric character.\nAdditionally, it can include alphanumeric characters, periods (.), underscores (_), or hyphens (-). For reference on the formatting, please visit:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/labels/",
            "type": "string"
          },
          "recommendationPolicies": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationPolicies"
          },
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          },
          "assignmentRules": {
            "description": "AssignmentRules defines the ordered list of matching rules.\nBEWARE: If was defined on policy and not provided on update request, the assignment rules will be removed.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyAssignmentRule"
            },
            "type": "array"
          },
          "hpaSettings": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyHPASettings"
          },
          "isOpsPilot": {
            "description": "Indicates that this scaling policy was created by OpsPilot and can be updated by it in subsequent runs.",
            "type": "boolean"
          }
        },
        "required": [
          "applyType",
          "name",
          "recommendationPolicies"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.UpdateWorkloadScalingPolicyResponse": {
        "properties": {
          "policy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadScalingPolicy"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.UpdateWorkloadV2": {
        "properties": {
          "scalingPolicyId": {
            "description": "Defines the scaling policy ID assigned to the workload.",
            "type": "string"
          },
          "workloadConfig": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadConfigUpdateV2"
          }
        },
        "required": [
          "scalingPolicyId"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.VPAConfig": {
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          },
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceConfig"
          },
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceConfig"
          },
          "containerConstraints": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ContainerConstraints"
            },
            "title": "Deprecated (use ContainerConfig containers instead), applied container config constraints",
            "type": "array"
          },
          "memoryEvent": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MemoryEventSettings"
          },
          "antiAffinity": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AntiAffinitySettings"
          },
          "downscaling": {
            "$ref": "#/components/schemas/workloadoptimization.v1.DownscalingSettings"
          },
          "startup": {
            "$ref": "#/components/schemas/workloadoptimization.v1.StartupSettings"
          },
          "containers": {
            "description": "The containers configuration for the workload.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ContainerConfig"
            },
            "type": "array"
          },
          "jvm": {
            "$ref": "#/components/schemas/workloadoptimization.v1.JVMRuntimeConfiguration"
          },
          "predictiveScaling": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PredictiveScalingSettings"
          },
          "excludedContainers": {
            "items": {
              "type": "string"
            },
            "title": "Containers to exclude from optimization",
            "type": "array"
          },
          "anomalyDetection": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AnomalyDetectionSettings"
          },
          "hpaConverters": {
            "description": "Configuration for converting existing HPAs when VPA is the sole optimization.\nIf HPA management is enabled, it takes precedence over this setting.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.HPAConverters"
            },
            "type": "array"
          }
        },
        "required": [
          "antiAffinity",
          "applyType",
          "containerConstraints",
          "containers",
          "cpu",
          "managementOption",
          "memory"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.VPAConfigUpdate": {
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadResourceConfigUpdate"
          },
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadResourceConfigUpdate"
          },
          "containerConfig": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ContainerConfigUpdate"
            },
            "title": "Allows setting dedicated config (different form the workload) for a given container",
            "type": "array"
          },
          "memoryEvent": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MemoryEventSettings"
          },
          "antiAffinity": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AntiAffinitySettings"
          },
          "predictiveScaling": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PredictiveScalingSettings"
          },
          "jvm": {
            "$ref": "#/components/schemas/workloadoptimization.v1.JVMRuntimeConfigurationUpdate"
          },
          "excludedContainers": {
            "items": {
              "type": "string"
            },
            "title": "Containers to exclude from optimization",
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.VerticalOverrides": {
        "properties": {
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          },
          "downscaling": {
            "$ref": "#/components/schemas/workloadoptimization.v1.DownscalingSettings"
          },
          "memoryEvent": {
            "$ref": "#/components/schemas/workloadoptimization.v1.MemoryEventSettings"
          },
          "antiAffinity": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AntiAffinitySettings"
          },
          "startup": {
            "$ref": "#/components/schemas/workloadoptimization.v1.StartupSettings"
          },
          "confidence": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConfidenceSettings"
          },
          "containerConstraints": {
            "description": "Deprecated (use ContainerConfig containers instead), defines container specific overrides.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ContainerConstraintsV2"
            },
            "type": "array"
          },
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceConfigOverrides"
          },
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceConfigOverrides"
          },
          "containers": {
            "description": "The containers configuration for the workload.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ContainerConfig"
            },
            "type": "array"
          },
          "jvm": {
            "$ref": "#/components/schemas/workloadoptimization.v1.JVMRuntimeConfiguration"
          },
          "predictiveScaling": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PredictiveScalingSettings"
          },
          "excludedContainers": {
            "description": "Containers to exclude from optimization.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "anomalyDetection": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AnomalyDetectionSettings"
          },
          "hpaConverters": {
            "description": "Configuration for converting existing HPAs when VPA is the sole optimization.\nIf HPA management is enabled, it takes precedence over this setting.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.HPAConverters"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.Workload": {
        "properties": {
          "id": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "isCustom": {
            "type": "boolean"
          },
          "labels": {
            "description": "Labels as defined on the workload manifest. These are labels from the controller meta, not the pod meta.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.KeyValuePair"
            },
            "type": "array"
          },
          "annotations": {
            "description": "Annotations as defined on the workload manifest. These are annotations from the controller meta, not the pod meta.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.KeyValuePair"
            },
            "type": "array"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "workloadOverrides": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadOverrides"
          },
          "workloadConfigV2": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadConfigV2"
          },
          "containers": {
            "description": "Workload containers.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.Container"
            },
            "type": "array"
          },
          "podCount": {
            "description": "Pod count stores the *running* count of pods of the workload.",
            "format": "int32",
            "type": "integer"
          },
          "matchingPodCount": {
            "description": "Matching Pod count stores the number of pods that are already using the last deployed recommendation.",
            "format": "int32",
            "type": "integer"
          },
          "scaledPodCount": {
            "description": "Scaled Pod count stores the number of pods that have any recommendation applied, even outdated.",
            "format": "int32",
            "type": "integer"
          },
          "errorTitle": {
            "description": "Workload error title (if any).\nDifferent titles signify different actions being taken.",
            "nullable": true,
            "type": "string"
          },
          "error": {
            "description": "Workload error message (if any).",
            "nullable": true,
            "type": "string"
          },
          "scalingPolicyId": {
            "type": "string"
          },
          "scalingPolicyName": {
            "type": "string"
          },
          "scalingPolicyOrigin": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyOrigin"
          },
          "suggestedScalingPolicyId": {
            "nullable": true,
            "type": "string"
          },
          "suggestedScalingPolicyName": {
            "nullable": true,
            "type": "string"
          },
          "recommendation": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadRecommendation"
          },
          "replicas": {
            "description": "The number of replicas the workload should have, as defined on the workload spec.",
            "format": "int32",
            "type": "integer"
          },
          "managedBy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagedBy"
          },
          "hasNativeHpa": {
            "description": "Whether workload has native HPA configured.",
            "nullable": true,
            "type": "boolean"
          },
          "costsPerHour": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Costs"
          },
          "hpaSpec": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPASpec"
          },
          "woopHpaUnsupportedReason": {
            "description": "Reason for unsupported WOOP HPA.",
            "nullable": true,
            "type": "string"
          },
          "predictionInsights": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PredictiveInsights"
          },
          "systemOverrides": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadSystemOverrides"
          },
          "deployedRecommendation": {
            "$ref": "#/components/schemas/workloadoptimization.v1.DeployedRecommendation"
          },
          "recommendationStatus": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationStatus"
          },
          "nativeHpaUnsupportedReasonDetails": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAUnsupportedReason"
          },
          "hpaState": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAState"
          },
          "isJobLike": {
            "description": "Whether the workload runs to completion (as opposed to running continuously).\nTrue for native Jobs/CronJobs and workloads that exhibit equivalent behavior\n(e.g. bare pods or custom resources identified by kind, hierarchy, or annotations).",
            "type": "boolean"
          }
        },
        "required": [
          "annotations",
          "clusterId",
          "containers",
          "createdAt",
          "group",
          "id",
          "isCustom",
          "isJobLike",
          "kind",
          "labels",
          "managedBy",
          "matchingPodCount",
          "name",
          "namespace",
          "organizationId",
          "podCount",
          "predictionInsights",
          "recommendationStatus",
          "replicas",
          "scaledPodCount",
          "scalingPolicyId",
          "scalingPolicyName",
          "scalingPolicyOrigin",
          "systemOverrides",
          "updatedAt",
          "version",
          "workloadConfigV2"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadConfigUpdateV2": {
        "properties": {
          "hpaConfig": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAConfigUpdate"
          },
          "vpaConfig": {
            "$ref": "#/components/schemas/workloadoptimization.v1.VPAConfigUpdate"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadConfigV2": {
        "properties": {
          "hpaConfig": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPAConfig"
          },
          "vpaConfig": {
            "$ref": "#/components/schemas/workloadoptimization.v1.VPAConfig"
          },
          "rolloutBehavior": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RolloutBehaviorSettings"
          }
        },
        "required": [
          "hpaConfig",
          "vpaConfig"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadEvent": {
        "properties": {
          "id": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "workloads": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadEvent.Workload"
            },
            "type": "array"
          },
          "type": {
            "$ref": "#/components/schemas/workloadoptimization.v1.EventType"
          },
          "event": {
            "$ref": "#/components/schemas/workloadoptimization.v1.Event"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "initiatedBy": {
            "$ref": "#/components/schemas/workloadoptimization.v1.InitiatedBy"
          }
        },
        "required": [
          "clusterId",
          "createdAt",
          "event",
          "id",
          "organizationId",
          "type"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadEvent.Workload": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "name",
          "namespace"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadMetricContainer": {
        "properties": {
          "name": {
            "type": "string"
          },
          "cpuCores": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ResourceMetrics"
            },
            "type": "array"
          },
          "memoryGib": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ResourceMetrics"
            },
            "type": "array"
          },
          "cpuCoresAggregated": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AggregatedMetrics"
          },
          "memoryGibAggregated": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AggregatedMetrics"
          },
          "cpuCoresPredictionsAggregated": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AggregatedPredictionMetrics"
          },
          "cpuStallPctAggregated": {
            "$ref": "#/components/schemas/workloadoptimization.v1.AggregatedCPUStallMetrics"
          },
          "cpuStallPct": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ResourceMetrics"
            },
            "type": "array"
          },
          "jvm": {
            "$ref": "#/components/schemas/workloadoptimization.v1.JVMContainerMetrics"
          }
        },
        "required": [
          "cpuCores",
          "cpuCoresAggregated",
          "memoryGib",
          "memoryGibAggregated",
          "name"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadMetrics": {
        "properties": {
          "containers": {
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadMetricContainer"
            },
            "type": "array"
          },
          "pods": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PodMetrics"
          },
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.CpuMetrics"
          }
        },
        "required": [
          "containers",
          "cpu",
          "pods"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadOverrides": {
        "properties": {
          "horizontal": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HorizontalOverrides"
          },
          "vertical": {
            "$ref": "#/components/schemas/workloadoptimization.v1.VerticalOverrides"
          },
          "rolloutBehavior": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RolloutBehaviorSettings"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadRecommendation": {
        "properties": {
          "confidence": {
            "description": "Defines the confidence of the recommendation. Value between 0 and 1. 1 means max confidence, 0 means no confidence.\nThis value indicates how many metrics were collected versus expected for the workload, given the recommendation configuration.",
            "format": "double",
            "type": "number"
          },
          "estimatedThresholdReachedAt": {
            "description": "Estimated time in seconds to reach confidence threshold.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "replicas": {
            "description": "Number of recommended replicas. Available only when workload horizontal scaling is enabled and native HPA is disabled.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "hpaSpec": {
            "$ref": "#/components/schemas/workloadoptimization.v1.HPASpec"
          },
          "events": {
            "description": "Recommendation events.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationEvent"
            },
            "type": "array"
          },
          "deployed": {
            "title": "Is it the deployed recommendation?",
            "type": "boolean"
          },
          "origins": {
            "description": "The origin of workload's recommendation.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationOrigin"
            },
            "type": "array"
          }
        },
        "required": [
          "confidence",
          "deployed",
          "events"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadResourceConfigUpdate": {
        "properties": {
          "min": {
            "description": "Min values for the recommendation. For memory - this is in MiB, for CPU - this is in cores.\nIf not set, there will be no lower bound for the recommendation (default behaviour).",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "max": {
            "description": "Max values for the recommendation. For memory - this is in MiB, for CPU - this is in cores.\nIf not set, there will be no upper bound for the recommendation (default behaviour).",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "lookBackPeriodSeconds": {
            "description": "Period of time over which the resource recommendation is calculated (default value is 24 hours).",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "limit": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResourceLimitStrategy"
          },
          "managementOption": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ManagementOption"
          },
          "constraints": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ConstraintsV2"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadScalingPolicy": {
        "properties": {
          "id": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "recommendationPolicies": {
            "$ref": "#/components/schemas/workloadoptimization.v1.RecommendationPolicies"
          },
          "isDefault": {
            "type": "boolean"
          },
          "isReadonly": {
            "type": "boolean"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "applyType": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyType"
          },
          "hasWorkloadsConfiguredByAnnotations": {
            "type": "boolean"
          },
          "assignmentRules": {
            "description": "AssignmentRules defines the ordered list of matching rules.\nThe first matching rule is selected and assigned to workload.\nIf none are matching then the default cluster policy is assigned.",
            "items": {
              "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyAssignmentRule"
            },
            "type": "array"
          },
          "isCastware": {
            "description": "Indicates if policy is only for castware workloads. Such policy cannot be updated or assigned to non cast workloads.",
            "type": "boolean"
          },
          "hpaSettings": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ScalingPolicyHPASettings"
          },
          "isOpsPilot": {
            "description": "Indicates that this scaling policy was created by OpsPilot and can be updated by it in subsequent runs.",
            "type": "boolean"
          }
        },
        "required": [
          "applyType",
          "clusterId",
          "createdAt",
          "hasWorkloadsConfiguredByAnnotations",
          "id",
          "isCastware",
          "isDefault",
          "isOpsPilot",
          "isReadonly",
          "name",
          "organizationId",
          "recommendationPolicies",
          "updatedAt"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadSystemOverrides": {
        "properties": {
          "verticalOptimization": {
            "$ref": "#/components/schemas/workloadoptimization.v1.WorkloadSystemOverrides.VerticalOptimization"
          }
        },
        "required": [
          "verticalOptimization"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadSystemOverrides.VerticalOptimization": {
        "properties": {
          "active": {
            "description": "Indicates whether system overrides are enabled, for example, due to frequent OOM events.",
            "type": "boolean"
          }
        },
        "required": [
          "active"
        ],
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadThresholds": {
        "properties": {
          "cpu": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyThresholdStrategy"
          },
          "memory": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ApplyThresholdStrategy"
          }
        },
        "type": "object"
      },
      "workloadoptimization.v1.WorkloadsSummaryMetrics": {
        "properties": {
          "timestamp": {
            "format": "date-time",
            "type": "string"
          },
          "cpuRequestCores": {
            "format": "double",
            "type": "number"
          },
          "memoryRequestGibs": {
            "format": "double",
            "type": "number"
          },
          "cpuOriginalRequestCores": {
            "format": "double",
            "type": "number"
          },
          "memoryOriginalRequestGibs": {
            "format": "double",
            "type": "number"
          },
          "cpuRecommendationCores": {
            "format": "double",
            "type": "number"
          },
          "memoryRecommendationGibs": {
            "format": "double",
            "type": "number"
          },
          "cpuUsageCores": {
            "format": "double",
            "type": "number"
          },
          "memoryUsageGibs": {
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "cpuOriginalRequestCores",
          "cpuRecommendationCores",
          "cpuRequestCores",
          "cpuUsageCores",
          "memoryOriginalRequestGibs",
          "memoryRecommendationGibs",
          "memoryRequestGibs",
          "memoryUsageGibs",
          "timestamp"
        ],
        "type": "object"
      },
      "Cluster_pricing_": {
        "properties": {
          "id": {
            "description": "Cluster price id.",
            "readOnly": true,
            "type": "string"
          },
          "memoryGibHourlyPrice": {
            "description": "Hourly memory price per GiB.",
            "type": "string"
          },
          "cpuHourlyPrice": {
            "description": "Hourly cpu price per unit.",
            "type": "string"
          },
          "createTime": {
            "description": "Creation time of cluster price.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "updateTime": {
            "description": "Update time of cluster price.",
            "format": "date-time",
            "readOnly": true,
            "type": "string"
          },
          "default": {
            "description": "Default indicates if the default cluster price is used. The field is set to false if the cluster price is updated.",
            "readOnly": true,
            "type": "boolean"
          }
        },
        "required": [
          "cpuHourlyPrice",
          "memoryGibHourlyPrice"
        ],
        "title": "Cluster pricing.",
        "type": "object"
      },
      "CommitmentsAPI_BatchDeleteCommitments_request": {
        "properties": {
          "commitmentIds": {
            "description": "IDs of commitments to delete.  A maximum of 1000 commitments can be deleted in a batch.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "commitmentIds"
        ],
        "type": "object"
      },
      "CommitmentsAPI_BatchUpdateCommitments_request": {
        "properties": {
          "requests": {
            "description": "Commitments to update. A maximum of 1000 commitments can be modified in a batch.",
            "items": {
              "$ref": "#/components/schemas/castai.inventory.v1beta1.UpdateCommitmentRequest"
            },
            "type": "array"
          }
        },
        "required": [
          "requests"
        ],
        "type": "object"
      },
      "AutoscalerAPI_GenerateRebalancingPlan_request": {
        "description": "Defines the cluster rebalance request.",
        "properties": {
          "minNodes": {
            "default": 3,
            "description": "Minimum number of nodes that the cluster should have after rebalancing is done.",
            "format": "int32",
            "type": "integer"
          },
          "rebalancingNodes": {
            "description": "Subset of nodes to rebalance. If empty, it is considered to include all nodes (full rebalancing).",
            "items": {
              "$ref": "#/components/schemas/castai.autoscaler.v1beta1.RebalancingNode"
            },
            "type": "array"
          },
          "executionConditions": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.ExecutionConditions"
          },
          "keepDrainTimeoutNodes": {
            "nullable": true,
            "title": "Deprecated, use evictGracefully instead",
            "type": "boolean"
          },
          "evictGracefully": {
            "description": "Defines whether the nodes that failed to get drained until a predefined timeout, will be kept with a\nrebalancing.cast.ai/status=drain-failed annotation instead of forcefully drained.",
            "nullable": true,
            "type": "boolean"
          },
          "aggressiveMode": {
            "description": "When enabled will also consider rebalancing problematic pods (pods without controller, job pods, pods with removal-disabled annotation).\n\nDeprecated: use AggressiveModeConfig instead.\nWe still honor the behavior of this legacy option, but this field will be removed at some point in the future.",
            "nullable": true,
            "type": "boolean",
            "deprecated": true
          },
          "pausedDrainConfig": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.PausedDrainConfig"
          },
          "aggressiveModeConfig": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.AggressiveModeConfig"
          },
          "drainFailureConfig": {
            "$ref": "#/components/schemas/castai.autoscaler.v1beta1.DrainFailureConfig"
          }
        },
        "type": "object"
      },
      "AutoscalerAPI_SimulateNodeSpotInterruption_request": {
        "properties": {
          "nodeId": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "ExternalClusterAPI_GCPCreateSA_request": {
        "properties": {
          "gke": {
            "$ref": "#/components/schemas/externalcluster.v1.UpdateGKEClusterParams"
          },
          "aks": {
            "$ref": "#/components/schemas/externalcluster.v1.GCPCreateSARequest.AKSClusterParams"
          }
        },
        "type": "object"
      },
      "ExternalClusterAPI_GKECreateSA_request": {
        "properties": {
          "gke": {
            "$ref": "#/components/schemas/externalcluster.v1.UpdateGKEClusterParams"
          }
        },
        "type": "object"
      },
      "AIEnablerProvidersAPI_UpdateProvider_request": {
        "properties": {
          "models": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "apiKey": {
            "nullable": true,
            "type": "string"
          },
          "url": {
            "nullable": true,
            "type": "string"
          },
          "apiVersion": {
            "nullable": true,
            "type": "string"
          },
          "clusterId": {
            "nullable": true,
            "type": "string"
          },
          "workloadLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "workloadLabelsOperator": {
            "$ref": "#/components/schemas/aioptimizer.v1.WorkloadLabelsOperator"
          },
          "freeCredits": {
            "nullable": true,
            "type": "string"
          },
          "vertexConfig": {
            "$ref": "#/components/schemas/aioptimizer.v1.VertexConfig"
          },
          "awsBedrockConfig": {
            "$ref": "#/components/schemas/aioptimizer.v1.AWSBedrockConfig"
          },
          "includeInCli": {
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "Groups_is_the_groups_to_be_updated_": {
        "properties": {
          "name": {
            "description": "Name is the name of the group.",
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the group.",
            "type": "string"
          },
          "definition": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.UpdateGroupRequest.GroupDefinition"
          }
        },
        "required": [
          "definition",
          "name"
        ],
        "title": "Groups is the groups to be updated.",
        "type": "object"
      },
      "RoleBinding_is_the_role_binding_to_be_updated_": {
        "properties": {
          "name": {
            "description": "Name is the name of the role binding.",
            "type": "string"
          },
          "description": {
            "description": "Description is the description of the role binding.",
            "type": "string"
          },
          "definition": {
            "$ref": "#/components/schemas/castai.rbac.v1beta1.RoleBindingDefinition"
          }
        },
        "required": [
          "definition",
          "name"
        ],
        "title": "RoleBinding is the role binding to be updated.",
        "type": "object"
      },
      "ServiceAccountsAPI_UpdateServiceAccount_request": {
        "description": "UpdateServiceAccountRequest is the request for updating a service account.",
        "properties": {
          "serviceAccount": {
            "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.UpdateServiceAccountRequest.ServiceAccount"
          }
        },
        "required": [
          "serviceAccount"
        ],
        "type": "object"
      },
      "ServiceAccountsAPI_CreateServiceAccountKey_request": {
        "description": "CreateServiceAccountKeyRequest is the request for creating a service account key.",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/castai.serviceaccounts.v1beta1.CreateServiceAccountKeyRequest.Key"
          }
        },
        "required": [
          "key"
        ],
        "type": "object"
      },
      "Key_is_the_service_account_key_to_update_": {
        "properties": {
          "active": {
            "type": "boolean"
          }
        },
        "required": [
          "active"
        ],
        "title": "Key is the service account key to update.",
        "type": "object"
      },
      "InsightsAPI_EnforceCheckPolicy_request": {
        "properties": {
          "clusterIds": {
            "items": {
              "type": "string"
            },
            "title": "(required) clusters that should have this linting rule enforced",
            "type": "array"
          }
        },
        "type": "object"
      },
      "InsightsAPI_GetCheckResources_request": {
        "properties": {
          "page": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Page"
          },
          "sort": {
            "$ref": "#/components/schemas/castai.pagination.v1beta1.Sort"
          },
          "clusterIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "namespaces": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/insights.v1.CheckClusterResourceStatus"
          },
          "resourceName": {
            "nullable": true,
            "type": "string"
          },
          "resourceKinds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "standard": {
            "$ref": "#/components/schemas/insights.v1.BestPracticesStandard"
          },
          "labels": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "InsightsAPI_PostAgentTelemetry_request": {
        "properties": {
          "initialSync": {
            "title": "(required) is this an initial agent sync",
            "type": "boolean"
          },
          "policyEnforcement": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "InsightsAPI_CreateTicket_request": {
        "properties": {
          "summary": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "projectKey": {
            "type": "string"
          },
          "consoleUrl": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/insights.v1.CreateTicketRequest.Type"
          },
          "typeIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "consoleUrl",
          "description",
          "projectKey",
          "summary",
          "type",
          "typeIds"
        ],
        "type": "object"
      },
      "InsightsAPI_CreateVulnerabilityTicket_request": {
        "properties": {
          "summary": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "projectKey": {
            "type": "string"
          },
          "consoleUrl": {
            "type": "string"
          },
          "imageManifestDigest": {
            "description": "image_manifest_digest is the digest of the image which includes the vulnerability.",
            "type": "string"
          },
          "purl": {
            "description": "purl is the package URL of the package which includes the vulnerability.\n\nOnly name, type and version are supported.",
            "type": "string"
          },
          "cve": {
            "description": "cve is the CVE of the vulnerability.",
            "type": "string"
          }
        },
        "required": [
          "consoleUrl",
          "cve",
          "description",
          "imageManifestDigest",
          "projectKey",
          "purl",
          "summary"
        ],
        "type": "object"
      },
      "RuntimeSecurityAPI_AddListEntries_request": {
        "properties": {
          "entries": {
            "items": {
              "$ref": "#/components/schemas/runtime.v1.ListEntry"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "RuntimeSecurityAPI_EditRule_request": {
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "severity": {
            "$ref": "#/components/schemas/runtime.v1.Severity"
          },
          "resourceSelector": {
            "type": "string"
          },
          "ruleText": {
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          }
        },
        "required": [
          "enabled",
          "severity"
        ],
        "type": "object"
      },
      "InsightsAPI_ConfigureClusterSecuritySettings_request": {
        "properties": {
          "features": {
            "items": {
              "$ref": "#/components/schemas/insights.v1.SecurityFeature"
            },
            "title": "A list of security features to enable on the cluster",
            "type": "array"
          }
        },
        "type": "object"
      },
      "SSOAPI_SetSyncForSSOConnection_request": {
        "properties": {
          "sync": {
            "description": "Sync indicates if the sync should be turned on/off for that SSO connection.",
            "type": "boolean"
          }
        },
        "required": [
          "sync"
        ],
        "type": "object"
      },
      "WorkloadOptimizationAPI_UpdateCustomMetricsDataSource_request": {
        "properties": {
          "dataSource": {
            "$ref": "#/components/schemas/workloadoptimization.v1.UpdateCustomMetricsDataSource"
          },
          "updateMask": {
            "type": "string"
          }
        },
        "required": [
          "updateMask"
        ],
        "type": "object"
      },
      "WorkloadOptimizationAPI_SetScalingPoliciesOrder_request": {
        "properties": {
          "policyIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "WorkloadOptimizationAPI_AssignScalingPolicyWorkloads_request": {
        "properties": {
          "workloadIds": {
            "items": {
              "type": "string"
            },
            "title": "Workload IDs to assign the policy for",
            "type": "array"
          }
        },
        "type": "object"
      },
      "WorkloadOptimizationAPI_ResetSystemOverrides_request": {
        "properties": {
          "target": {
            "$ref": "#/components/schemas/workloadoptimization.v1.ResetSystemOverridesRequest.Target"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "WorkloadOptimizationAPI_PatchWorkloadV2_request": {
        "properties": {
          "updateMask": {
            "description": "The update mask specifying which fields to update.",
            "type": "string"
          },
          "workload": {
            "$ref": "#/components/schemas/workloadoptimization.v1.PatchWorkloadV2"
          }
        },
        "type": "object"
      },
      "castai.users.v1beta1.UpdateOrganizationUserRequest": {
        "properties": {
          "role": {
            "deprecated": true
          }
        }
      },
      "castai.users.v1beta1.GetRolePermissionsRequest": {
        "properties": {
          "role": {
            "deprecated": true
          }
        }
      }
    }
  }
}
